Hi Jean-Christophe, comments below: Also, see note at the end regarding re-structuring of the existing s3c24x0 and Embest SBC2440-II Board patches.
On 20/06/2009 18:36, Jean-Christophe PLAGNIOL-VILLARD wrote: > On 17:42 Fri 19 Jun , kevin.morf...@fearnside-systems.co.uk wrote: > >> This is the first of two patches that will add support for the Embest >> SBC2440-II Board. This one adds generic support for the S3C2440 CPU. Tested >> by >> running MAKEALL for ARM9 boards - no new warnings or errors were found. >> >> This patch set assumes that the following patches have already been applied: >> >> - Clean-up of ARM920T S3C24x0 code, submitted on 5th June >> - Clean-up of ARM920T S3C24x0 drivers code, submitted on 5th June >> - Bug-fix in drivers mtd nand Makefile, submitted on 18th June >> >> Signed-off-by: Kevin Morfitt <kevin.morf...@fearnside-systems.co.uk> >> --- >> common/serial.c | 4 +- >> cpu/arm920t/s3c24x0/speed.c | 38 ++++++- >> cpu/arm920t/s3c24x0/timer.c | 8 +- >> cpu/arm920t/s3c24x0/usb.c | 9 +- >> cpu/arm920t/start.S | 29 ++++- >> drivers/i2c/s3c24x0_i2c.c | 12 +- >> drivers/mtd/nand/Makefile | 1 + >> drivers/mtd/nand/s3c2410_nand.c | 8 +- >> drivers/mtd/nand/s3c2440_nand.c | 241 >> +++++++++++++++++++++++++++++++++++++++ >> drivers/rtc/s3c24x0_rtc.c | 2 + >> drivers/serial/serial_s3c24x0.c | 2 + >> include/common.h | 3 +- >> include/s3c2440.h | 232 +++++++++++++++++++++++++++++++++++++ >> include/s3c24x0.h | 186 +++++++++++++++++++++++++++++- >> 14 files changed, 745 insertions(+), 30 deletions(-) >> create mode 100644 drivers/mtd/nand/s3c2440_nand.c >> create mode 100644 include/s3c2440.h >> > first general comment > > Please split this patch as something like this > patch 1 add the s3c24x0 support > patch 2 add the nand > patch 3 your boards > s3c24x0 refers to the Samsung s3c type of cpu's - s3c2400, s3c2410 and s3c2440. Support for the s3c2400 and s3c2410 cpu's already exists in the current u-boot code base in cpu/arm920t/s3c24x0 but there is currently no support for the s3c2440 cpu. However, the format of the current s3c24x0 code doesn't meet the u-boot coding style so I've already submitted 2 patches to clean up the current s3c24x0 code - see reference at the top of this patch to the patches "Clean-up of ARM920T S3C24x0 code, submitted on 5th June" and "Clean-up of ARM920T S3C24x0 drivers code, submitted on 5th June". This patch, 1/2, just adds support for the s3c2440 cpu (including the new s3c2440 NAND driver) to the current s3c24x0 code - it doesn't actually add the Embest SBC2440-II Board support. Patch 2/2 is the one that adds the support for the Embest SBC2440-II Board itself. So, the patches are already structured as you requested. It's getting a bit complicated because I initially sent a patch to add all of the Embest SBC2440-II Board changes in one go. Wolfgang and yourself asked me to create patches to clean up the existing code base first and to add the s3c2440 support separately to the Embest SBC2440-II Board so I now have 4 patches all dependent on one another and it's not too clear how they fit together. >> diff --git a/common/serial.c b/common/serial.c >> index dd80e7c..6548b8b 100644 >> --- a/common/serial.c >> +++ b/common/serial.c >> @@ -58,7 +58,7 @@ struct serial_device *__default_serial_console (void) >> #else >> return &serial0_device; >> #endif >> -#elif defined(CONFIG_S3C2410) >> +#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) >> > if it's really s3c24x0 please use a correspondig macro IIRC yes > Could you explain a bit more about how the macro would work please? >> #if defined(CONFIG_SERIAL1) >> return &s3c24xx_serial0_device; >> #elif defined(CONFIG_SERIAL2) >> @@ -133,7 +133,7 @@ void serial_initialize (void) >> #if defined (CONFIG_STUART) >> serial_register(&serial_stuart_device); >> #endif >> -#if defined(CONFIG_S3C2410) >> +#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) >> > ditto > >> serial_register(&s3c24xx_serial0_device); >> serial_register(&s3c24xx_serial1_device); >> serial_register(&s3c24xx_serial2_device); >> diff --git a/cpu/arm920t/s3c24x0/speed.c b/cpu/arm920t/s3c24x0/speed.c >> index 3d7c8cf..b8b183e 100644 >> --- a/cpu/arm920t/s3c24x0/speed.c >> +++ b/cpu/arm920t/s3c24x0/speed.c >> @@ -30,7 +30,8 @@ >> */ >> >> #include <common.h> >> -#if defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) || defined >> (CONFIG_TRAB) >> +#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || \ >> + defined(CONFIG_S3C2440) || defined(CONFIG_TRAB) >> >> #include <asm/io.h> >> >> @@ -38,6 +39,8 @@ >> #include <s3c2400.h> >> #elif defined(CONFIG_S3C2410) >> #include <s3c2410.h> >> +#elif defined(CONFIG_S3C2440) >> +#include <s3c2440.h> >> #endif >> > please create a cpu.h file to avoid those ifdef > OK. There is already an s3c24x0.h header file so I could modify it to include the correct s3c2400.h, s3c2410.h or s3c2440.h header file. >> >> #define MPLL 0 >> @@ -69,6 +72,11 @@ static ulong get_PLLCLK(int pllreg) >> p = ((r & 0x003F0) >> 4) + 2; >> s = r & 0x3; >> >> +#ifdef CONFIG_S3C2440 >> + if (pllreg == MPLL) >> + return (2 * CONFIG_SYS_CLK_FREQ * m) / (p << s); >> + else >> +#endif >> return (CONFIG_SYS_CLK_FREQ * m) / (p << s); >> } >> >> @@ -83,7 +91,23 @@ ulong get_HCLK(void) >> { >> S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER(); >> >> +#ifdef CONFIG_S3C2440 >> + switch (clk_power->CLKDIVN & 0x6) { >> + default: >> + case 0: >> + return get_FCLK(); >> + case 2: >> + return get_FCLK() / 2; >> + case 4: >> + return (readl(&clk_power->CAMDIVN) & (1 << 9)) ? >> + get_FCLK() / 8 : get_FCLK() / 4; >> + case 6: >> + return (readl(&clk_power->CAMDIVN) & (1 << 8)) ? >> + get_FCLK() / 6 : get_FCLK() / 3; >> + } >> +#else >> return (readl(&clk_power->CLKDIVN) & 2) ? get_FCLK() / 2 : get_FCLK(); >> +#endif >> } >> >> > > > >> diff --git a/cpu/arm920t/start.S b/cpu/arm920t/start.S >> index 810d402..5f7aa33 100644 >> --- a/cpu/arm920t/start.S >> +++ b/cpu/arm920t/start.S >> @@ -132,8 +132,9 @@ copyex: >> bne copyex >> #endif >> >> -#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) >> - /* turn off the watchdog */ >> +#if defined(CONFIG_S3C2400) || \ >> + defined(CONFIG_S3C2410) || \ >> + defined(CONFIG_S3C2440) >> >> > please move this code to cpu/arm920t/s3c24x0/ > > the start.S need to generic but you can call arch code from it > a branch or if not possible a assembly macro > > please call it arch_pre_lowlevel_init > tks > OK. I can do something similar to the existing arch-specific 'lowlevel_init' function call. > >> # if defined(CONFIG_S3C2400) >> # define pWTCON 0x15300000 >> @@ -146,6 +147,15 @@ copyex: >> # define CLKDIVN 0x4C000014 /* clock divisor register */ >> # endif >> >> +# if defined(CONFIG_S3C2440) >> +# define INTSMASK 0xffff >> +# define CLKDIVVAL 0x5 >> +#else >> +# define INTSMASK 0x3ff >> +# define CLKDIVVAL 0x3 >> +# endif >> + >> + /* turn off the watchdog */ >> ldr r0, =pWTCON >> mov r1, #0x0 >> str r1, [r0] >> > > >> @@ -156,8 +166,8 @@ copyex: >> > <snip> > >> + >> +/* AC97 INTERFACE (see S3C2440 manual chapter 24) */ >> +typedef struct { >> + S3C24X0_REG32 ACGLBCTRL; >> + S3C24X0_REG32 ACGLBSTAT; >> + S3C24X0_REG32 AC_CODEC_CMD; >> + S3C24X0_REG32 AC_CODEC_STAT; >> + S3C24X0_REG32 AC_PCMADDR; >> + S3C24X0_REG32 AC_MICADDR; >> + S3C24X0_REG32 AC_PCMDATA; >> + S3C24X0_REG32 AC_MICDATA; >> +} /*__attribute__((__packed__))*/ S3C2440_AC97; >> > if no need please remove > OK. The ADC isn't used either so I'll remove that as well. Wolfgang has also asked me to make the CONFIG_SYS_HZ change in the current s3c2400 and s3c2410 boards before I add support for the s3c2440. I've already submitted 5 patches as part of the s3c24x0 clean up and Embest SBC2440-II Board so this would make a 6th and it's getting difficult to track them all. If you agree, I'd like to withdraw the following patches for now as they all need changes: - [U-Boot] [PATCH-ARM] Clean-up of ARM920T S3C24x0 code, submitted on 5th June - [U-Boot] [PATCH-ARM] Clean-up of ARM920T S3C24x0 drivers code, submitted on 5th June - [U-Boot] [PATCH-ARM 1/2] Add support for the Embest SBC2440-II Board (ie this patch) - [U-Boot] [PATCH-ARM 2/2] Add support for the Embest SBC2440-II Board, submitted on 19th June I'll create the new CONFIG_SYS_HZ patch and submit it, then make the required changes to the 4 patches above, then re-submit these 4 together, probably marked 1/4, 2/4, 3/4 and 4/4, all version 2. However, the following patch doesn't need any changes so I'd like to leave it out for comment: - [U-Boot] [PATCH-ARM] Bug-fix in drivers mtd nand Makefile, submitted on 18th June Best Regards Kevin > Best Regards, > J. > > __________ Information from ESET NOD32 Antivirus, version of virus signature > database 4173 (20090620) __________ > > The message was checked by ESET NOD32 Antivirus. > > http://www.eset.com > > > > > __________ Information from ESET NOD32 Antivirus, version of virus signature database 4174 (20090620) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot