hi Wolfgang, On Thu Oct 21, 2010 at 10:44:35PM +0200, Wolfgang Denk wrote: > Dear Sughosh Ganu, > > In message <[email protected]> you > wrote:
<snip> > > Signed-off-by: Sughosh Ganu <[email protected]> > > --- > > Makefile | 17 +++ > > arch/arm/cpu/arm926ejs/davinci/cpu.c | 2 + > > arch/arm/include/asm/arch-davinci/hardware.h | 5 +- > > board/davinci/common/misc.c | 2 + > > board/davinci/da8xxevm/Makefile | 1 + > > board/davinci/da8xxevm/config.mk | 3 + > > board/davinci/da8xxevm/hawkboard.c | 201 > > ++++++++++++++++++++++++++ > > drivers/mtd/nand/davinci_nand.c | 1 + > > include/configs/hawkboard.h | 200 > > +++++++++++++++++++++++++ > > nand_spl/board/davinci/da8xxevm/Makefile | 141 ++++++++++++++++++ > > nand_spl/board/davinci/da8xxevm/config.mk | 40 +++++ > > nand_spl/board/davinci/da8xxevm/u-boot.lds | 75 ++++++++++ > > nand_spl/nand_boot.c | 3 +- > > 13 files changed, 689 insertions(+), 2 deletions(-) > > create mode 100644 board/davinci/da8xxevm/hawkboard.c > > create mode 100644 include/configs/hawkboard.h > > create mode 100644 nand_spl/board/davinci/da8xxevm/Makefile > > create mode 100644 nand_spl/board/davinci/da8xxevm/config.mk > > create mode 100644 nand_spl/board/davinci/da8xxevm/u-boot.lds > > Entries to MAINTAINERS and boards.cfg missing. Will add. > > > diff --git a/Makefile b/Makefile > > index 06c71a2..7b8152c 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -911,6 +911,23 @@ cp922_XA10_config \ > > cp1026_config: unconfig > > @board/armltd/integrator/split_by_variant.sh cp $@ > > > > +hawkboard_config \ > > +hawkboard_uart_config \ > > +hawkboard_nand_config : unconfig > > + @mkdir -p $(obj)include > > + @mkdir -p $(obj)board/davinci/da8xxevm > > + @if [ -n "$(findstring _nand_,$@)" ]; then > > \ > > + echo "#define CONFIG_NAND_U_BOOT" >> $(obj)include/config.h; > > \ > > + echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk; > > \ > > + echo "CONFIG_SYS_TEXT_BASE = 0xc1080000" > > >$(obj)board/davinci/da8xxevm/config.tmp; \ > > + elif [ -n "$(findstring _uart_,$@)" ]; then > > \ > > + echo "CONFIG_SYS_TEXT_BASE = 0xc1080000" > > >$(obj)board/davinci/da8xxevm/config.tmp; \ > > + else > > \ > > + echo "CONFIG_SYS_TEXT_BASE = 0xc1180000" > > >$(obj)board/davinci/da8xxevm/config.tmp; \ > > + fi > > We don;t allow and don;t need any such scripting in the Makefile any > more. Please add your board to boards.cfg instead.. I had tried adding the entries in the boards.cfg file but could not get nand_spl to build. Will check this out and get back. > > diff --git a/arch/arm/cpu/arm926ejs/davinci/cpu.c > > b/arch/arm/cpu/arm926ejs/davinci/cpu.c > > index fc3551c..b4a7382 100644 > > --- a/arch/arm/cpu/arm926ejs/davinci/cpu.c > > +++ b/arch/arm/cpu/arm926ejs/davinci/cpu.c > > @@ -109,6 +109,7 @@ out: > > } > > #endif /* CONFIG_SOC_DA8XX */ > > > > +#if !defined(CONFIG_NAND_SPL) > > #ifdef CONFIG_DISPLAY_CPUINFO > > > > static unsigned pll_div(volatile void *pllbase, unsigned offset) > > @@ -189,3 +190,4 @@ int cpu_eth_init(bd_t *bis) > > #endif > > return 0; > > } > > +#endif /* !CONFIG_NAND_SPL */ > > Why exactly is this change needed? What happens if you just do not > define CONFIG_DISPLAY_CPUINFO in your NAND config? I was getting an error with the davinci_emac_initialize function. I guess i can also not define CONFIG_DRIVER_TI_EMAC for the nand spl case and get rid of the check completely. > > index 28750b1..546fd93 100644 > > --- a/board/davinci/common/misc.c > > +++ b/board/davinci/common/misc.c > > @@ -33,6 +33,7 @@ > > > > DECLARE_GLOBAL_DATA_PTR; > > > > +#if !defined(CONFIG_NAND_SPL) > > #if defined(CONFIG_SYS_ARM_WITHOUT_RELOC) > > int dram_init(void) > > { > > @@ -105,6 +106,7 @@ void davinci_sync_env_enetaddr(uint8_t *rom_enetaddr) > > } > > > > #endif /* DAVINCI_EMAC */ > > +#endif /* !CONFIG_NAND_SPL */ > > Is there not a better way than adding such a huge #ifdef block? Not sure about this one. I need the pinmux configuration functions from this file. > > > index e176f7d..9fc7ad9 100644 > > --- a/board/davinci/da8xxevm/config.mk > > +++ b/board/davinci/da8xxevm/config.mk > > @@ -38,6 +38,9 @@ > > # > > # we load ourself to C108 '0000 > > > > +sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp > > > > #Provide at least 16MB spacing between us and the Linux Kernel image > > +ifndef CONFIG_SYS_TEXT_BASE > > CONFIG_SYS_TEXT_BASE = 0xC1080000 > > +endif > > No. We don't need config.mk files for this any more. Please move > settings to board config file. This is currently being used by da830evm and da850evm too. If ok, i can cleanup for those files too, although i cannot test it on these boards. > > > diff --git a/board/davinci/da8xxevm/hawkboard.c > > b/board/davinci/da8xxevm/hawkboard.c > > new file mode 100644 > .... > > +#if !defined(CONFIG_NAND_SPL) > > +int board_init(void) > > Again: can we not avoid such a huge #ifdef block here? We need this initialisation for the nand spl part alone, and this is board specific. Can you please suggest any better way of handling this. > > > +int misc_init_r (void) > > +{ > > + printf ("ARM Clock : %d Hz\n", clk_get(DAVINCI_ARM_CLKID)); > > Would it make sense to use strmhz() here? Will check on this. > > > diff --git a/drivers/mtd/nand/davinci_nand.c > > b/drivers/mtd/nand/davinci_nand.c > > index d41579c..ad70dd9 100644 > > --- a/drivers/mtd/nand/davinci_nand.c > > +++ b/drivers/mtd/nand/davinci_nand.c > > @@ -635,6 +635,7 @@ void davinci_nand_init(struct nand_chip *nand) > > nand->write_buf = nand_davinci_write_buf; > > > > nand->dev_ready = nand_davinci_dev_ready; > > + nand->select_chip = NULL; > > Hm... maybe we should rather use memset() to set the whole struct > nand_chip to zero? Will initialise the nand chip structure. > > ... > > +#define CONFIG_SYS_NAND_ECCBYTES 10 > > +#define CONFIG_SYS_NAND_ECCSTEPS (CONFIG_SYS_NAND_PAGE_SIZE/ > > CONFIG_SYS_NAND_ECCSIZE) > > +#define CONFIG_SYS_NAND_OOBSIZE 64 > > +#define CONFIG_SYS_NAND_ECCTOTAL (CONFIG_SYS_NAND_ECCBYTES * > > CONFIG_SYS_NAND_ECCSTEPS) > > Lines too long; please fix globally. Ok, will check. > > > diff --git a/nand_spl/board/davinci/da8xxevm/config.mk > > b/nand_spl/board/davinci/da8xxevm/config.mk > > new file mode 100644 > > index 0000000..ea071eb > > --- /dev/null > > +++ b/nand_spl/board/davinci/da8xxevm/config.mk > ... > > +include $(TOPDIR)/board/$(BOARDDIR)/config.mk > > + > > +# PAD_TO used to generate a 4kByte binary needed for the combined image > > +# -> PAD_TO = TEXT_BASE + 4096 > > +PAD_TO := $(shell expr $$[$(CONFIG_SYS_TEXT_BASE) + 4096]) > > + > > +ifeq ($(debug),1) > > +PLATFORM_CPPFLAGS += -DDEBUG > > +endif > > Is this really needed? Please get rid of this file. Will check. > > > > diff --git a/nand_spl/nand_boot.c b/nand_spl/nand_boot.c > > index ccd0af2..3cda41c 100644 > > --- a/nand_spl/nand_boot.c > > +++ b/nand_spl/nand_boot.c > > @@ -222,11 +222,12 @@ static int nand_load(struct mtd_info *mtd, unsigned > > int offs, > > } > > > > #if defined(CONFIG_ARM) && !defined(CONFIG_SYS_ARM_WITHOUT_RELOC) > > -void board_init_f (ulong bootflag) > > +void __board_init_f (ulong bootflag) > > { > > relocate_code (CONFIG_SYS_TEXT_BASE - TOTAL_MALLOC_LEN, NULL, > > CONFIG_SYS_TEXT_BASE); > > } > > +void board_init_f (ulong bootflag)__attribute__((weak, > > alias("__board_init_f"))); > > #endif > > This is a global change that affects all NAND booting boards. This > must be submitted spearately, and you must explain in detail why you > think you need that. Also please mention on which systems this change > has been tested. For hawkboard, we need to do some board specific initialisation which can be included in board_init_f. The freescale boards which use the nand spl mechanism to boot define their board specific init functions, but we do not do this for the arm boards. I am afraid i cannot test this on any other boards, but i have compile tested this on the tx25 board. -sughosh _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

