r4108 - trunk/src/target/u-boot/patches
werner at sita.openmoko.org
werner at sita.openmoko.org
Sun Feb 24 23:26:30 CET 2008
Author: werner
Date: 2008-02-24 23:26:25 +0100 (Sun, 24 Feb 2008)
New Revision: 4108
Modified:
trunk/src/target/u-boot/patches/uboot-neo1973-resume.patch
trunk/src/target/u-boot/patches/uboot-s3c2440.patch
trunk/src/target/u-boot/patches/uboot-s3c2442.patch
trunk/src/target/u-boot/patches/uboot-s3c2443.patch
Log:
When booting from NOR, u-boot did not check whether we are resuming.
This patch moves this code to a common function which is called in the
NOR and NAND boot path (but not when booting from RAM).
cpu/arm920t/start.S is a very busy file, so a number of other patches
had to be refreshed.
uboot-neo1973-resume.patch:
- cpu/arm920t/start.S: moved resume detection from NAND-specific code to
general function
uboot-s3c2440.patch, uboot-s3c2442.patch, uboot-s3c2443.patch:
refreshed for above change
Modified: trunk/src/target/u-boot/patches/uboot-neo1973-resume.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-neo1973-resume.patch 2008-02-24 22:10:55 UTC (rev 4107)
+++ trunk/src/target/u-boot/patches/uboot-neo1973-resume.patch 2008-02-24 22:26:25 UTC (rev 4108)
@@ -6,7 +6,7 @@
===================================================================
--- u-boot.orig/cpu/arm920t/start.S
+++ u-boot/cpu/arm920t/start.S
-@@ -223,18 +223,68 @@
+@@ -181,18 +181,68 @@ copyex:
str r1, [r0]
# endif
@@ -75,12 +75,52 @@
#endif
-#endif
- #ifdef CONFIG_AT91RM9200
- #ifdef CONFIG_BOOTBINFUNC
-@@ -292,9 +342,33 @@
+ #if defined(CONFIG_AT91RM9200) || defined(CONFIG_S3C2410)
+@@ -210,10 +260,8 @@ copyex:
+ #endif /* CONFIG_S3C2410_NAND_BOOT */
+
+ relocate: /* relocate U-Boot to RAM */
+-#if !defined(CONFIG_SKIP_LOWLEVEL_INIT) && defined(CONFIG_LL_INIT_NAND_ONLY)
+ teq r0, #0 /* running at address 0 ? */
+- bleq cpu_init_crit /* yes -> do low-level setup */
+-#endif /* !CONFIG_SKIP_LOWLEVEL_INIT && CONFIG_LL_INIT_NAND_ONLY */
++ bleq may_resume /* yes -> do low-level setup */
+
+ adr r0, _start /* the above may have clobbered r0 */
+
+@@ -239,11 +287,7 @@ _done_relocate:
+
#ifdef CONFIG_S3C2410_NAND_BOOT
nand_load:
+-#if !defined(CONFIG_SKIP_LOWLEVEL_INIT) && defined(CONFIG_LL_INIT_NAND_ONLY)
+- bl cpu_init_crit
+-#endif
+-
+- /* mov r10, lr */
++ bl may_resume /* low-level setup and resume */
+
+ @ reset NAND
+ mov r1, #S3C2410_NAND_BASE
+@@ -398,6 +442,51 @@ cpu_init_crit:
+ mov pc, lr
+ #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
+
++
++/*
++ *************************************************************************
++ *
++ * may_resume
++ *
++ * Bring up memory and check if we're coming out of suspend.
++ *
++ *************************************************************************
++ */
++
++
++may_resume:
++ mov r10, lr /* we may call cpu_init_crit */
++
+ /* take sdram out of power down */
+ ldr r0, =0x56000080 /* misccr */
+ ldr r1, [ r0 ]
@@ -92,9 +132,9 @@
+1: subs r1, r1, #1
+ bpl 1b
+
- #if !defined(CONFIG_SKIP_LOWLEVEL_INIT) && defined(CONFIG_LL_INIT_NAND_ONLY)
- bl cpu_init_crit
- #endif
++#if !defined(CONFIG_SKIP_LOWLEVEL_INIT) && defined(CONFIG_LL_INIT_NAND_ONLY)
++ bl cpu_init_crit
++#endif
+#if defined(CONFIG_S3C2410)
+ /* ensure some refresh has happened */
+ ldr r1, =0xfffff
@@ -108,6 +148,9 @@
+ ldrne pc, [r1, #4] /* gstatus3 */
+#endif /* CONFIG_S3C2410 */
+#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
-
- /* mov r10, lr */
-
++
++ mov pc, r10
++
+ /*
+ *************************************************************************
+ *
Modified: trunk/src/target/u-boot/patches/uboot-s3c2440.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-s3c2440.patch 2008-02-24 22:10:55 UTC (rev 4107)
+++ trunk/src/target/u-boot/patches/uboot-s3c2440.patch 2008-02-24 22:26:25 UTC (rev 4108)
@@ -4,7 +4,7 @@
===================================================================
--- u-boot.orig/include/s3c24x0.h
+++ u-boot/include/s3c24x0.h
-@@ -82,7 +82,7 @@
+@@ -82,7 +82,7 @@ typedef struct {
S3C24X0_REG32 PRIORITY;
S3C24X0_REG32 INTPND;
S3C24X0_REG32 INTOFFSET;
@@ -13,7 +13,7 @@
S3C24X0_REG32 SUBSRCPND;
S3C24X0_REG32 INTSUBMSK;
#endif
-@@ -92,11 +92,11 @@
+@@ -92,11 +92,11 @@ typedef struct {
/* DMAS (see manual chapter 8) */
typedef struct {
S3C24X0_REG32 DISRC;
@@ -27,7 +27,7 @@
S3C24X0_REG32 DIDSTC;
#endif
S3C24X0_REG32 DCON;
-@@ -107,7 +107,7 @@
+@@ -107,7 +107,7 @@ typedef struct {
#ifdef CONFIG_S3C2400
S3C24X0_REG32 res[1];
#endif
@@ -36,7 +36,7 @@
S3C24X0_REG32 res[7];
#endif
} /*__attribute__((__packed__))*/ S3C24X0_DMA;
-@@ -126,6 +126,9 @@
+@@ -126,6 +126,9 @@ typedef struct {
S3C24X0_REG32 CLKCON;
S3C24X0_REG32 CLKSLOW;
S3C24X0_REG32 CLKDIVN;
@@ -46,7 +46,7 @@
} /*__attribute__((__packed__))*/ S3C24X0_CLOCK_POWER;
-@@ -145,7 +148,7 @@
+@@ -145,7 +148,7 @@ typedef struct {
S3C24X0_REG32 res[8];
S3C24X0_REG32 DITHMODE;
S3C24X0_REG32 TPAL;
@@ -55,7 +55,7 @@
S3C24X0_REG32 LCDINTPND;
S3C24X0_REG32 LCDSRCPND;
S3C24X0_REG32 LCDINTMSK;
-@@ -157,6 +160,9 @@
+@@ -157,6 +160,9 @@ typedef struct {
/* NAND FLASH (see S3C2410 manual chapter 6) */
typedef struct {
S3C24X0_REG32 NFCONF;
@@ -65,7 +65,7 @@
S3C24X0_REG32 NFCMD;
S3C24X0_REG32 NFADDR;
S3C24X0_REG32 NFDATA;
-@@ -164,6 +170,15 @@
+@@ -164,6 +170,15 @@ typedef struct {
S3C24X0_REG32 NFECC;
} /*__attribute__((__packed__))*/ S3C2410_NAND;
@@ -81,7 +81,7 @@
/* UART (see manual chapter 11) */
typedef struct {
-@@ -451,6 +466,65 @@
+@@ -451,6 +466,65 @@ typedef struct {
S3C24X0_REG32 GSTATUS3;
S3C24X0_REG32 GSTATUS4;
#endif
@@ -147,7 +147,7 @@
} /*__attribute__((__packed__))*/ S3C24X0_GPIO;
-@@ -637,8 +711,13 @@
+@@ -637,8 +711,13 @@ typedef struct {
S3C24X0_REG32 SDIDCNT;
S3C24X0_REG32 SDIDSTA;
S3C24X0_REG32 SDIFSTA;
@@ -164,7 +164,7 @@
Index: u-boot/drivers/rtc/s3c24x0_rtc.c
===================================================================
--- u-boot.orig/drivers/rtc/s3c24x0_rtc.c
-+++ u-boot/rtc/drivers/s3c24x0_rtc.c
++++ u-boot/drivers/rtc/s3c24x0_rtc.c
@@ -34,6 +34,8 @@
#include <s3c2400.h>
#elif defined(CONFIG_S3C2410)
@@ -483,7 +483,7 @@
===================================================================
--- u-boot.orig/include/common.h
+++ u-boot/include/common.h
-@@ -479,7 +479,7 @@
+@@ -481,7 +481,7 @@ int prt_mpc8220_clks (void);
ulong get_OPB_freq (void);
ulong get_PCI_freq (void);
#endif
@@ -526,7 +526,7 @@
#endif
#define MPLL 0
-@@ -66,8 +69,17 @@
+@@ -66,8 +69,17 @@ static ulong get_PLLCLK(int pllreg)
m = ((r & 0xFF000) >> 12) + 8;
p = ((r & 0x003F0) >> 4) + 2;
s = r & 0x3;
@@ -545,7 +545,7 @@
}
/* return FCLK frequency */
-@@ -81,7 +93,23 @@
+@@ -81,7 +93,23 @@ ulong get_HCLK(void)
{
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
@@ -569,7 +569,7 @@
}
/* return PCLK frequency */
-@@ -98,4 +126,5 @@
+@@ -98,4 +126,5 @@ ulong get_UCLK(void)
return(get_PLLCLK(UPLL));
}
@@ -598,7 +598,7 @@
#endif
int timer_load_val = 0;
-@@ -59,6 +62,7 @@
+@@ -59,6 +62,7 @@ int interrupt_init (void)
/* use PWM Timer 4 because it has no output */
/* prescaler for Timer 4 is 16 */
timers->TCFG0 = 0x0f00;
@@ -606,7 +606,7 @@
if (timer_load_val == 0)
{
/*
-@@ -68,6 +72,9 @@
+@@ -68,6 +72,9 @@ int interrupt_init (void)
*/
timer_load_val = get_PCLK()/(2 * 16 * 100);
}
@@ -616,7 +616,7 @@
/* load value for 10 ms timeout */
lastdec = timers->TCNTB4 = timer_load_val;
/* auto load, manual update of Timer 4 */
-@@ -178,6 +185,7 @@
+@@ -178,6 +185,7 @@ ulong get_tbclk (void)
tbclk = timer_load_val * 100;
#elif defined(CONFIG_SBC2410X) || \
defined(CONFIG_SMDK2410) || \
@@ -624,7 +624,7 @@
defined(CONFIG_VCMA9)
tbclk = CFG_HZ;
#else
-@@ -232,4 +240,5 @@
+@@ -232,4 +240,5 @@ void s3c2410_irq(void)
}
#endif /* USE_IRQ */
@@ -652,7 +652,7 @@
#endif
DECLARE_GLOBAL_DATA_PTR;
-@@ -302,4 +305,5 @@
+@@ -301,4 +304,5 @@ struct serial_device s3c24xx_serial2_dev
#endif /* CONFIG_SERIAL_MULTI */
@@ -672,7 +672,7 @@
#endif
#include <i2c.h>
-@@ -63,7 +65,7 @@
+@@ -63,7 +65,7 @@ static int GetI2CSDA(void)
{
S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
@@ -681,7 +681,7 @@
return (gpio->GPEDAT & 0x8000) >> 15;
#endif
#ifdef CONFIG_S3C2400
-@@ -82,7 +84,7 @@
+@@ -82,7 +84,7 @@ static void SetI2CSCL(int x)
{
S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
@@ -690,7 +690,7 @@
gpio->GPEDAT = (gpio->GPEDAT & ~0x4000) | (x&1) << 14;
#endif
#ifdef CONFIG_S3C2400
-@@ -139,7 +141,7 @@
+@@ -139,7 +141,7 @@ void i2c_init (int speed, int slaveadd)
}
if ((status & I2CSTAT_BSY) || GetI2CSDA () == 0) {
@@ -699,7 +699,7 @@
ulong old_gpecon = gpio->GPECON;
#endif
#ifdef CONFIG_S3C2400
-@@ -147,7 +149,7 @@
+@@ -147,7 +149,7 @@ void i2c_init (int speed, int slaveadd)
#endif
/* bus still busy probably by (most) previously interrupted transfer */
@@ -708,7 +708,7 @@
/* set I2CSDA and I2CSCL (GPE15, GPE14) to GPIO */
gpio->GPECON = (gpio->GPECON & ~0xF0000000) | 0x10000000;
#endif
-@@ -171,7 +173,7 @@
+@@ -171,7 +173,7 @@ void i2c_init (int speed, int slaveadd)
udelay (1000);
/* restore pin functions */
@@ -759,7 +759,7 @@
#include <status_led.h>
/*
-@@ -154,20 +158,38 @@
+@@ -166,20 +170,38 @@ copyex:
bne copyex
#endif
@@ -800,7 +800,7 @@
ldr r0, =pWTCON
mov r1, #0x0
str r1, [r0]
-@@ -178,24 +200,34 @@
+@@ -190,24 +212,34 @@ copyex:
mov r1, #0xffffffff
ldr r0, =INTMSK
str r1, [r0]
@@ -842,7 +842,7 @@
str r1, [r0]
/* Page 7-19, seven nops between UPLL and MPLL */
-@@ -207,12 +239,12 @@
+@@ -219,12 +251,12 @@ copyex:
nop
nop
@@ -857,7 +857,7 @@
str r1, [r0]
#if 1
-@@ -240,14 +272,15 @@
+@@ -252,14 +284,15 @@ copyex:
str r1, [r0, #0x28]
#endif
@@ -875,30 +875,15 @@
#ifndef CONFIG_SKIP_RELOCATE_UBOOT
adr r0, _start /* r0 <- current position of code */
-@@ -299,7 +332,7 @@
- #if !defined(CONFIG_SKIP_LOWLEVEL_INIT) && defined(CONFIG_LL_INIT_NAND_ONLY)
- bl cpu_init_crit
- #endif
--#if defined(CONFIG_S3C2410)
-+#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
- /* ensure some refresh has happened */
- ldr r1, =0xfffff
- 1: subs r1, r1, #1
-@@ -310,11 +343,12 @@
- ldr r0, [ r1 ]
- tst r0, #0x02 /* is this resume from power down */
- ldrne pc, [r1, #4] /* gstatus3 */
--#endif /* CONFIG_S3C2410 */
-+#endif /* CONFIG_S3C2410 || CONFIG_S3C2440 */
- #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
+@@ -305,6 +338,7 @@ nand_load:
+ bl may_resume /* low-level setup and resume */
- /* mov r10, lr */
-
+ @ reset NAND
+#if defined(CONFIG_S3C2410)
- @ reset NAND
mov r1, #S3C2410_NAND_BASE
ldr r2, =0xf842 @ initial value enable tacls=3,rph0=6,rph1=0
-@@ -334,6 +368,17 @@
+ str r2, [r1, #oNFCONF]
+@@ -323,6 +357,17 @@ nand_load:
ldr r2, [r1, #oNFCONF]
orr r2, r2, #0x800 @ disable chip
str r2, [r1, #oNFCONF]
@@ -912,11 +897,11 @@
+ ldr r3, [r1, #oNFCONT]
+ orr r3, r3, #1 @ enable nand controller
+ str r3, [r1, #oNFCONT]
-+#endif
++#endif /* CONFIG_S3C2440 */
- #if 0
- @ get ready to call C functions (for nand_read())
-@@ -402,7 +447,7 @@
+ ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */
+ sub r0, r0, #CFG_MALLOC_LEN /* malloc area */
+@@ -385,7 +430,7 @@ done_nand_read:
#endif /* CONFIG_S3C2410_NAND_BOOT */
done_relocate:
@@ -925,6 +910,24 @@
/* In the case of the S3C2410, if we've somehow magically (JTAG, ...)
ended up in RAM, then that ram is mapped to 0x30000000 and not 0.
So we need to copy the interrupt vectors, etc. */
+@@ -502,7 +547,7 @@ may_resume:
+ #if !defined(CONFIG_SKIP_LOWLEVEL_INIT) && defined(CONFIG_LL_INIT_NAND_ONLY)
+ bl cpu_init_crit
+ #endif
+-#if defined(CONFIG_S3C2410)
++#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
+ /* ensure some refresh has happened */
+ ldr r1, =0xfffff
+ 1: subs r1, r1, #1
+@@ -513,7 +558,7 @@ may_resume:
+ ldr r0, [ r1 ]
+ tst r0, #0x02 /* is this resume from power down */
+ ldrne pc, [r1, #4] /* gstatus3 */
+-#endif /* CONFIG_S3C2410 */
++#endif /* CONFIG_S3C2410 || CONFIG_S3C244 */
+ #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
+
+ mov pc, r10
Index: u-boot/cpu/arm920t/s3c24x0/nand_read.c
===================================================================
--- u-boot.orig/cpu/arm920t/s3c24x0/nand_read.c
@@ -1077,7 +1080,7 @@
/* low level nand read function */
int nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)
-@@ -50,47 +161,28 @@
+@@ -50,47 +161,28 @@ int nand_read_ll(unsigned char *buf, uns
return -1; /* invalid alignment */
/* chip Enable */
@@ -1199,7 +1202,7 @@
static void s3c2410_hwcontrol(struct mtd_info *mtd, int cmd)
{
struct nand_chip *chip = mtd->priv;
-@@ -62,23 +92,31 @@
+@@ -62,23 +92,31 @@ static void s3c2410_hwcontrol(struct mtd
switch (cmd) {
case NAND_CTL_SETNCE:
@@ -1236,7 +1239,7 @@
break;
}
return;
-@@ -180,15 +218,21 @@
+@@ -137,15 +175,21 @@ int __board_nand_init(struct nand_chip *
/* initialize hardware */
twrph0 = 3; twrph1 = 0; tacls = 0;
@@ -1259,7 +1262,7 @@
/* read_buf and write_buf are default */
/* read_byte and write_byte are default */
-@@ -213,12 +257,23 @@
+@@ -170,12 +214,23 @@ int __board_nand_init(struct nand_chip *
nand->options = 0;
#endif
@@ -1288,7 +1291,7 @@
===================================================================
--- u-boot.orig/cpu/arm920t/s3c24x0/mmc.c
+++ u-boot/cpu/arm920t/s3c24x0/mmc.c
-@@ -137,6 +137,9 @@
+@@ -137,6 +137,9 @@ static int mmc_block_read(uchar *dst, ul
dcon |= S3C2410_SDIDCON_RXAFTERCMD|S3C2410_SDIDCON_XFER_RXSTART;
if (wide)
dcon |= S3C2410_SDIDCON_WIDEBUS;
@@ -1298,7 +1301,7 @@
sdi->SDIDCON = dcon;
/* send read command */
-@@ -394,13 +397,18 @@
+@@ -394,13 +397,18 @@ int mmc_init(int verbose)
clk_power->CLKCON |= (1 << 9);
@@ -1340,7 +1343,7 @@
#endif
int usb_cpu_init (void)
-@@ -68,5 +70,5 @@
+@@ -68,5 +70,5 @@ int usb_cpu_init_fail (void)
return 0;
}
@@ -1351,7 +1354,7 @@
===================================================================
--- u-boot.orig/drivers/usb/usb_ohci.c
+++ u-boot/drivers/usb/usb_ohci.c
-@@ -62,6 +62,7 @@
+@@ -66,6 +66,7 @@
#if defined(CONFIG_ARM920T) || \
defined(CONFIG_S3C2400) || \
defined(CONFIG_S3C2410) || \
@@ -1375,7 +1378,7 @@
DECLARE_GLOBAL_DATA_PTR;
-@@ -46,6 +50,7 @@
+@@ -46,6 +50,7 @@ struct s3c24x0_pll_speed {
u_int16_t mhz;
u_int32_t mpllcon;
u_int32_t clkdivn;
@@ -1383,7 +1386,7 @@
};
#define CLKDIVN_1_1_1 0x00
-@@ -53,6 +58,11 @@
+@@ -53,6 +58,11 @@ struct s3c24x0_pll_speed {
#define CLKDIVN_1_2_4 0x03
#define CLKDIVN_1_4_4 0x04
@@ -1395,7 +1398,7 @@
#if defined(CONFIG_S3C2410)
static const u_int32_t upllcon = ((0x78 << 12) + (0x2 << 4) + 0x3);
static const struct s3c24x0_pll_speed pll_configs[] = {
-@@ -77,6 +87,61 @@
+@@ -77,6 +87,61 @@ static const struct s3c24x0_pll_speed pl
.clkdivn = CLKDIVN_1_2_4,
},
};
@@ -1457,7 +1460,7 @@
#else
#error "please define valid pll configurations for your cpu type"
#endif
-@@ -95,6 +160,10 @@
+@@ -95,6 +160,10 @@ static int reconfig_mpll(u_int16_t mhz)
for (i = 0; i < ARRAY_SIZE(pll_configs); i++) {
if (pll_configs[i].mhz == mhz) {
@@ -1472,7 +1475,7 @@
===================================================================
--- u-boot.orig/common/serial.c
+++ u-boot/common/serial.c
-@@ -59,7 +59,7 @@
+@@ -60,7 +60,7 @@ struct serial_device *__default_serial_c
#else
return &serial0_device;
#endif
@@ -1481,7 +1484,7 @@
#if defined(CONFIG_SERIAL1)
return &s3c24xx_serial0_device;
#elif defined(CONFIG_SERIAL2)
-@@ -129,7 +129,7 @@
+@@ -133,7 +133,7 @@ void serial_initialize (void)
#if defined (CONFIG_STUART)
serial_register(&serial_stuart_device);
#endif
@@ -1494,7 +1497,7 @@
===================================================================
--- u-boot.orig/include/serial.h
+++ u-boot/include/serial.h
-@@ -35,7 +35,7 @@
+@@ -36,7 +36,7 @@ extern struct serial_device eserial4_dev
#endif
Modified: trunk/src/target/u-boot/patches/uboot-s3c2442.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-s3c2442.patch 2008-02-24 22:10:55 UTC (rev 4107)
+++ trunk/src/target/u-boot/patches/uboot-s3c2442.patch 2008-02-24 22:26:25 UTC (rev 4108)
@@ -11,7 +11,7 @@
#include <s3c2440.h>
#endif
-@@ -58,7 +58,7 @@
+@@ -58,7 +58,7 @@ struct s3c24x0_pll_speed {
#define CLKDIVN_1_2_4 0x03
#define CLKDIVN_1_4_4 0x04
@@ -20,7 +20,7 @@
#define CLKDIVN_1_4_8 0x05
#define CLKDIVN_1_3_6 0x07
#endif
-@@ -142,6 +142,67 @@
+@@ -142,6 +142,67 @@ static const struct s3c24x0_pll_speed pl
#error "clock frequencies != 12MHz / 16.9344MHz not supported"
#endif
};
@@ -101,7 +101,7 @@
#include <s3c2440.h>
#endif
#include <i2c.h>
-@@ -65,7 +65,8 @@
+@@ -65,7 +65,8 @@ static int GetI2CSDA(void)
{
S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
@@ -111,7 +111,7 @@
return (gpio->GPEDAT & 0x8000) >> 15;
#endif
#ifdef CONFIG_S3C2400
-@@ -84,7 +85,8 @@
+@@ -84,7 +85,8 @@ static void SetI2CSCL(int x)
{
S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
@@ -121,7 +121,7 @@
gpio->GPEDAT = (gpio->GPEDAT & ~0x4000) | (x&1) << 14;
#endif
#ifdef CONFIG_S3C2400
-@@ -141,7 +143,8 @@
+@@ -141,7 +143,8 @@ void i2c_init (int speed, int slaveadd)
}
if ((status & I2CSTAT_BSY) || GetI2CSDA () == 0) {
@@ -131,7 +131,7 @@
ulong old_gpecon = gpio->GPECON;
#endif
#ifdef CONFIG_S3C2400
-@@ -149,7 +152,8 @@
+@@ -149,7 +152,8 @@ void i2c_init (int speed, int slaveadd)
#endif
/* bus still busy probably by (most) previously interrupted transfer */
@@ -141,7 +141,7 @@
/* set I2CSDA and I2CSCL (GPE15, GPE14) to GPIO */
gpio->GPECON = (gpio->GPECON & ~0xF0000000) | 0x10000000;
#endif
-@@ -173,7 +177,8 @@
+@@ -173,7 +177,8 @@ void i2c_init (int speed, int slaveadd)
udelay (1000);
/* restore pin functions */
@@ -173,7 +173,7 @@
#include <s3c2440.h>
#endif
-@@ -62,7 +63,7 @@
+@@ -62,7 +63,7 @@ int interrupt_init (void)
/* use PWM Timer 4 because it has no output */
/* prescaler for Timer 4 is 16 */
timers->TCFG0 = 0x0f00;
@@ -182,7 +182,7 @@
if (timer_load_val == 0)
{
/*
-@@ -241,4 +242,5 @@
+@@ -241,4 +242,5 @@ void s3c2410_irq(void)
#endif /* USE_IRQ */
#endif /* defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) ||
@@ -193,7 +193,7 @@
===================================================================
--- u-boot.orig/cpu/arm920t/s3c24x0/mmc.c
+++ u-boot/cpu/arm920t/s3c24x0/mmc.c
-@@ -137,7 +137,7 @@
+@@ -137,7 +137,7 @@ static int mmc_block_read(uchar *dst, ul
dcon |= S3C2410_SDIDCON_RXAFTERCMD|S3C2410_SDIDCON_XFER_RXSTART;
if (wide)
dcon |= S3C2410_SDIDCON_WIDEBUS;
@@ -202,7 +202,7 @@
dcon |= S3C2440_SDIDCON_DS_WORD | S3C2440_SDIDCON_DATSTART;
#endif
sdi->SDIDCON = dcon;
-@@ -403,7 +403,7 @@
+@@ -403,7 +403,7 @@ int mmc_init(int verbose)
//sdi->SDIPRE = 0x3e; /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
sdi->SDIPRE = 0x02; /* 2410: SDCLK = PCLK/2 / (SDIPRE+1) = 11MHz */
sdi->SDIDTIMER = 0xffff;
@@ -224,7 +224,7 @@
#define oNFCMD 0x8
#define oNFADDR 0xc
-@@ -147,7 +147,7 @@
+@@ -147,7 +147,7 @@ static void s3c2410_hwcontrol(struct mtd
case NAND_CTL_SETNCE:
#if defined(CONFIG_S3C2410)
NFCONF &= ~NFCONF_nFCE;
@@ -233,7 +233,7 @@
NFCONT &= ~NFCONF_nFCE;
#endif
DEBUGN("NFCONF=0x%08x\n", NFCONF);
-@@ -155,7 +155,7 @@
+@@ -155,7 +155,7 @@ static void s3c2410_hwcontrol(struct mtd
case NAND_CTL_CLRNCE:
#if defined(CONFIG_S3C2410)
NFCONF |= NFCONF_nFCE;
@@ -242,7 +242,7 @@
NFCONT &= ~NFCONF_nFCE;
#endif
DEBUGN("NFCONF=0x%08x\n", NFCONF);
-@@ -278,7 +278,7 @@
+@@ -235,7 +235,7 @@ int __board_nand_init(struct nand_chip *
cfg |= S3C2410_NFCONF_TWRPH1(twrph1 - 1);
NFCONF = cfg;
@@ -251,7 +251,7 @@
twrph0 = 7; twrph1 = 7; tacls = 7;
NFCONF = (tacls<<12)|(twrph0<<8)|(twrph1<<4)|(0<<0);
NFCONT = (0<<13)|(0<<12)|(0<<10)|(0<<9)|(0<<8)|(1<<6)|(1<<5)|(1<<4)|(1<<1)|(1<<0);
-@@ -315,7 +315,7 @@
+@@ -272,7 +272,7 @@ int __board_nand_init(struct nand_chip *
nand->options = 0;
#endif
@@ -273,7 +273,7 @@
#define NFCONF __REGi(NF_BASE + 0x0)
#define NFCONT __REGi(NF_BASE + 0x4)
#define NFCMD __REGb(NF_BASE + 0x8)
-@@ -142,7 +142,7 @@
+@@ -142,7 +142,7 @@ static int nand_read_page_ll(unsigned ch
*buf = (NFDATA & 0xff);
buf++;
}
@@ -303,7 +303,7 @@
#include <s3c2440.h>
#endif
-@@ -306,4 +307,5 @@
+@@ -305,4 +306,5 @@ struct serial_device s3c24xx_serial2_dev
#endif /* CONFIG_SERIAL_MULTI */
#endif /* defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) ||
@@ -330,7 +330,7 @@
#include <s3c2440.h>
#endif
-@@ -71,7 +71,7 @@
+@@ -71,7 +71,7 @@ static ulong get_PLLCLK(int pllreg)
s = r & 0x3;
#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)
return((CONFIG_SYS_CLK_FREQ * m) / (p << s));
@@ -339,7 +339,7 @@
/* To avoid integer overflow, changed the calc order */
if (pllreg == MPLL)
return ( 2 * m * (CONFIG_SYS_CLK_FREQ / (p << s )) );
-@@ -95,7 +95,7 @@
+@@ -95,7 +95,7 @@ ulong get_HCLK(void)
#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)
return((clk_power->CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK());
@@ -348,7 +348,7 @@
switch (clk_power->CLKDIVN & 0x6) {
case 0x0:
return get_FCLK();
-@@ -127,4 +127,5 @@
+@@ -127,4 +127,5 @@ ulong get_UCLK(void)
}
#endif /* defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) ||
@@ -376,7 +376,7 @@
# include <s3c2440.h>
#endif
-@@ -70,5 +71,6 @@
+@@ -70,5 +71,6 @@ int usb_cpu_init_fail (void)
return 0;
}
@@ -410,7 +410,7 @@
#include <s3c2440.h>
#endif
#include <status_led.h>
-@@ -163,14 +163,15 @@
+@@ -170,14 +170,15 @@ copyex:
bne copyex
#endif
@@ -428,7 +428,7 @@
# define pWTCON 0x53000000
# define INTMSK 0x4A000008 /* Interupt-Controller base addresses */
# define INTSUBMSK 0x4A00001C
-@@ -193,6 +194,17 @@
+@@ -200,6 +201,17 @@ copyex:
#endif
# define CLKDIVN_val 7 /* FCLK:HCLK:PCLK = 1:3:6 */
# define CAMDIVN 0x4C000018
@@ -446,7 +446,7 @@
#endif
ldr r0, =pWTCON
-@@ -205,13 +217,13 @@
+@@ -212,13 +224,13 @@ copyex:
mov r1, #0xffffffff
ldr r0, =INTMSK
str r1, [r0]
@@ -462,7 +462,7 @@
/* Make sure we get FCLK:HCLK:PCLK = 1:3:6 */
ldr r0, =CAMDIVN
mov r1, #0
-@@ -277,7 +289,7 @@
+@@ -284,7 +296,7 @@ copyex:
str r1, [r0, #0x28]
#endif
@@ -471,7 +471,7 @@
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
#ifndef CONFIG_LL_INIT_NAND_ONLY
-@@ -285,7 +297,7 @@
+@@ -292,7 +304,7 @@ copyex:
#endif
#if defined(CONFIG_AT91RM9200) || defined(CONFIG_S3C2410) || \
@@ -480,25 +480,7 @@
#ifndef CONFIG_SKIP_RELOCATE_UBOOT
adr r0, _start /* r0 <- current position of code */
-@@ -337,7 +349,7 @@
- #if !defined(CONFIG_SKIP_LOWLEVEL_INIT) && defined(CONFIG_LL_INIT_NAND_ONLY)
- bl cpu_init_crit
- #endif
--#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
-+#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || defined(CONFIG_S3C2442)
- /* ensure some refresh has happened */
- ldr r1, =0xfffff
- 1: subs r1, r1, #1
-@@ -348,7 +360,7 @@
- ldr r0, [ r1 ]
- tst r0, #0x02 /* is this resume from power down */
- ldrne pc, [r1, #4] /* gstatus3 */
--#endif /* CONFIG_S3C2410 || CONFIG_S3C2440 */
-+#endif /* CONFIG_S3C2410 || CONFIG_S3C2440 || CONFIG_S3C2442*/
- #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
-
- /* mov r10, lr */
-@@ -373,7 +385,7 @@
+@@ -357,7 +369,7 @@ nand_load:
ldr r2, [r1, #oNFCONF]
orr r2, r2, #0x800 @ disable chip
str r2, [r1, #oNFCONF]
@@ -507,17 +489,44 @@
mov r1, #S3C2440_NAND_BASE
ldr r2, =0xfff0 @ initial value tacls=3,rph0=7,rph1=7
ldr r3, [r1, #oNFCONF]
-@@ -452,7 +464,8 @@
+@@ -367,7 +379,7 @@ nand_load:
+ ldr r3, [r1, #oNFCONT]
+ orr r3, r3, #1 @ enable nand controller
+ str r3, [r1, #oNFCONT]
+-#endif /* CONFIG_S3C2440 */
++#endif /* CONFIG_S3C2440 || CONFIG_S3C2442 */
+
+ ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */
+ sub r0, r0, #CFG_MALLOC_LEN /* malloc area */
+@@ -430,7 +442,8 @@ done_nand_read:
#endif /* CONFIG_S3C2410_NAND_BOOT */
done_relocate:
-#if defined(CONFIG_USE_IRQ) && (defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440))
-+#if defined(CONFIG_USE_IRQ) && (defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || \
-+ defined(CONFIG_S3C2442))
++#if defined(CONFIG_USE_IRQ) && (defined(CONFIG_S3C2410) || \
++ defined(CONFIG_S3C2440) || defined(CONFIG_S3C2442))
/* In the case of the S3C2410, if we've somehow magically (JTAG, ...)
ended up in RAM, then that ram is mapped to 0x30000000 and not 0.
So we need to copy the interrupt vectors, etc. */
-Index: u-boot/drivers/usbdcore_s3c2410.c
+@@ -547,7 +560,7 @@ may_resume:
+ #if !defined(CONFIG_SKIP_LOWLEVEL_INIT) && defined(CONFIG_LL_INIT_NAND_ONLY)
+ bl cpu_init_crit
+ #endif
+-#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
++#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || defined(CONFIG_S3C2442)
+ /* ensure some refresh has happened */
+ ldr r1, =0xfffff
+ 1: subs r1, r1, #1
+@@ -558,7 +571,7 @@ may_resume:
+ ldr r0, [ r1 ]
+ tst r0, #0x02 /* is this resume from power down */
+ ldrne pc, [r1, #4] /* gstatus3 */
+-#endif /* CONFIG_S3C2410 || CONFIG_S3C244 */
++#endif /* CONFIG_S3C2410 || CONFIG_S3C244 || CONFIG_S3C2442 */
+ #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
+
+ mov pc, r10
+Index: u-boot/drivers/usb/usbdcore_s3c2410.c
===================================================================
--- u-boot.orig/drivers/usb/usbdcore_s3c2410.c
+++ u-boot/drivers/usb/usbdcore_s3c2410.c
@@ -531,7 +540,7 @@
#include <common.h>
-Index: u-boot/drivers/usbtty.h
+Index: u-boot/drivers/serial/usbtty.h
===================================================================
--- u-boot.orig/drivers/serial/usbtty.h
+++ u-boot/drivers/serial/usbtty.h
@@ -549,7 +558,7 @@
===================================================================
--- u-boot.orig/include/common.h
+++ u-boot/include/common.h
-@@ -479,7 +479,9 @@
+@@ -481,7 +481,9 @@ int prt_mpc8220_clks (void);
ulong get_OPB_freq (void);
ulong get_PCI_freq (void);
#endif
@@ -564,7 +573,7 @@
===================================================================
--- u-boot.orig/include/s3c24x0.h
+++ u-boot/include/s3c24x0.h
-@@ -82,7 +82,8 @@
+@@ -82,7 +82,8 @@ typedef struct {
S3C24X0_REG32 PRIORITY;
S3C24X0_REG32 INTPND;
S3C24X0_REG32 INTOFFSET;
@@ -574,7 +583,7 @@
S3C24X0_REG32 SUBSRCPND;
S3C24X0_REG32 INTSUBMSK;
#endif
-@@ -92,11 +93,13 @@
+@@ -92,11 +93,13 @@ typedef struct {
/* DMAS (see manual chapter 8) */
typedef struct {
S3C24X0_REG32 DISRC;
@@ -590,7 +599,7 @@
S3C24X0_REG32 DIDSTC;
#endif
S3C24X0_REG32 DCON;
-@@ -107,7 +110,8 @@
+@@ -107,7 +110,8 @@ typedef struct {
#ifdef CONFIG_S3C2400
S3C24X0_REG32 res[1];
#endif
@@ -600,7 +609,7 @@
S3C24X0_REG32 res[7];
#endif
} /*__attribute__((__packed__))*/ S3C24X0_DMA;
-@@ -126,7 +130,7 @@
+@@ -126,7 +130,7 @@ typedef struct {
S3C24X0_REG32 CLKCON;
S3C24X0_REG32 CLKSLOW;
S3C24X0_REG32 CLKDIVN;
@@ -609,7 +618,7 @@
S3C24X0_REG32 CAMDIVN;
#endif
} /*__attribute__((__packed__))*/ S3C24X0_CLOCK_POWER;
-@@ -148,7 +152,8 @@
+@@ -148,7 +152,8 @@ typedef struct {
S3C24X0_REG32 res[8];
S3C24X0_REG32 DITHMODE;
S3C24X0_REG32 TPAL;
@@ -619,7 +628,7 @@
S3C24X0_REG32 LCDINTPND;
S3C24X0_REG32 LCDSRCPND;
S3C24X0_REG32 LCDINTMSK;
-@@ -160,7 +165,7 @@
+@@ -160,7 +165,7 @@ typedef struct {
/* NAND FLASH (see S3C2410 manual chapter 6) */
typedef struct {
S3C24X0_REG32 NFCONF;
@@ -628,7 +637,7 @@
S3C24X0_REG32 NFCONT;
#endif
S3C24X0_REG32 NFCMD;
-@@ -466,7 +471,7 @@
+@@ -466,7 +471,7 @@ typedef struct {
S3C24X0_REG32 GSTATUS3;
S3C24X0_REG32 GSTATUS4;
#endif
@@ -637,7 +646,7 @@
S3C24X0_REG32 GPACON;
S3C24X0_REG32 GPADAT;
S3C24X0_REG32 res1[2];
-@@ -714,7 +719,7 @@
+@@ -714,7 +719,7 @@ typedef struct {
#if defined(CONFIG_S3C2410)
S3C24X0_REG32 SDIDAT;
S3C24X0_REG32 SDIIMSK;
@@ -663,7 +672,7 @@
===================================================================
--- u-boot.orig/common/serial.c
+++ u-boot/common/serial.c
-@@ -59,7 +59,8 @@
+@@ -60,7 +60,8 @@ struct serial_device *__default_serial_c
#else
return &serial0_device;
#endif
@@ -673,7 +682,7 @@
#if defined(CONFIG_SERIAL1)
return &s3c24xx_serial0_device;
#elif defined(CONFIG_SERIAL2)
-@@ -129,7 +130,8 @@
+@@ -133,7 +134,8 @@ void serial_initialize (void)
#if defined (CONFIG_STUART)
serial_register(&serial_stuart_device);
#endif
@@ -687,7 +696,7 @@
===================================================================
--- u-boot.orig/include/serial.h
+++ u-boot/include/serial.h
-@@ -35,7 +35,8 @@
+@@ -36,7 +36,8 @@ extern struct serial_device eserial4_dev
#endif
Modified: trunk/src/target/u-boot/patches/uboot-s3c2443.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-s3c2443.patch 2008-02-24 22:10:55 UTC (rev 4107)
+++ trunk/src/target/u-boot/patches/uboot-s3c2443.patch 2008-02-24 22:26:25 UTC (rev 4108)
@@ -11,7 +11,7 @@
#endif
#include <status_led.h>
-@@ -164,7 +166,7 @@
+@@ -171,7 +173,7 @@ copyex:
#endif
#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || \
@@ -20,7 +20,7 @@
/* turn off the watchdog */
# if defined(CONFIG_S3C2400)
-@@ -205,6 +207,11 @@
+@@ -212,6 +214,11 @@ copyex:
# endif
# define CLKDIVN_val 7 /* FCLK:HCLK:PCLK = 1:3:6 */
# define CAMDIVN 0x4C000018
@@ -32,7 +32,7 @@
#endif
ldr r0, =pWTCON
-@@ -217,7 +224,8 @@
+@@ -224,7 +231,8 @@ copyex:
mov r1, #0xffffffff
ldr r0, =INTMSK
str r1, [r0]
@@ -42,7 +42,7 @@
ldr r1, =INTSUBMSK_val
ldr r0, =INTSUBMSK
str r1, [r0]
-@@ -236,6 +244,43 @@
+@@ -243,6 +251,43 @@ copyex:
mcr p15, 0, r1, c1, c0, 0
@@ -86,7 +86,7 @@
#define LOCKTIME 0x4c000000
#define UPLLCON 0x4c000008
-@@ -263,6 +308,7 @@
+@@ -270,6 +315,7 @@ copyex:
ldr r0, =CLKDIVN
mov r1, #CLKDIVN_val
str r1, [r0]
@@ -94,7 +94,7 @@
#if 1
/* enable uart */
-@@ -289,7 +335,8 @@
+@@ -296,7 +342,8 @@ copyex:
str r1, [r0, #0x28]
#endif
@@ -104,7 +104,7 @@
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
#ifndef CONFIG_LL_INIT_NAND_ONLY
-@@ -297,7 +344,8 @@
+@@ -304,7 +351,8 @@ copyex:
#endif
#if defined(CONFIG_AT91RM9200) || defined(CONFIG_S3C2410) || \
@@ -136,7 +136,7 @@
#endif
int timer_load_val = 0;
-@@ -187,6 +189,7 @@
+@@ -187,6 +189,7 @@ ulong get_tbclk (void)
#elif defined(CONFIG_SBC2410X) || \
defined(CONFIG_SMDK2410) || \
defined(CONFIG_SMDK2440) || \
More information about the commitlog
mailing list