[U-Boot] [PATCH v6 05/11] arm, davinci: add support for new spl framework

Scott Wood scottwood at freescale.com
Wed Nov 2 23:53:20 CET 2011


On 11/02/2011 01:00 AM, Heiko Schocher wrote:
> +inline void hang(void)
> +{
> +	puts("### ERROR ### Please RESET the board ###\n");
> +	for (;;)
> +		;
> +}

Why is this inline?

> diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S
> index 86a0dc2..339c5ed 100644
> --- a/arch/arm/cpu/arm926ejs/start.S
> +++ b/arch/arm/cpu/arm926ejs/start.S
> @@ -126,7 +126,15 @@ _fiq:
>  
>  .globl _TEXT_BASE
>  _TEXT_BASE:
> +#ifdef CONFIG_NAND_SPL /* deprecated, use instead CONFIG_SPL_BUILD */
>  	.word	CONFIG_SYS_TEXT_BASE
> +#else
> +#ifdef CONFIG_SPL_BUILD
> +	.word	CONFIG_SPL_TEXT_BASE
> +#else
> +	.word	CONFIG_SYS_TEXT_BASE
> +#endif
> +#endif
>  
>  /*
>   * These are defined in the board-specific linker script.
> @@ -192,7 +200,15 @@ reset:
>  
>  /* Set stackpointer in internal RAM to call board_init_f */
>  call_board_init_f:
> +#ifdef CONFIG_NAND_SPL /* deprecated, use instead CONFIG_SPL_BUILD */
> +	ldr	sp, =(CONFIG_SYS_INIT_SP_ADDR)
> +#else
> +#ifdef CONFIG_SPL_BUILD
> +	ldr	sp, =(CONFIG_SPL_STACK)
> +#else
>  	ldr	sp, =(CONFIG_SYS_INIT_SP_ADDR)
> +#endif
> +#endif

Why does CONFIG_NAND_SPL need its own ifdef, if it's going to produce
the same code as any other !CONFIG_SPL_BUILD build?

If your concerned with making it obvious what happens with the legacy
NAND SPL, Just have a comment after #ifdef CONFIG_SPL_BUILD that says:
/* not set with legacy CONFIG_NAND_SPL */

> diff --git a/doc/README.SPL b/doc/README.SPL
> index b460e84..89d24a7 100644
> --- a/doc/README.SPL
> +++ b/doc/README.SPL
> @@ -64,3 +64,4 @@ CONFIG_SPL_POWER_SUPPORT (drivers/power/libpower.o)
>  CONFIG_SPL_NAND_SUPPORT (drivers/mtd/nand/libnand.o)
>  CONFIG_SPL_DMA_SUPPORT (drivers/dma/libdma.o)
>  CONFIG_SPL_POST_MEM_SUPPORT (post/drivers/memory.o)
> +CONFIG_SPL_NAND_LOAD (drivers/mtd/nand/nand_spl_load.o)
> diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
> index 1eeba5c..28bd350 100644
> --- a/drivers/mtd/nand/Makefile
> +++ b/drivers/mtd/nand/Makefile
> @@ -30,6 +30,9 @@ ifdef CONFIG_SPL_BUILD
>  ifdef CONFIG_SPL_NAND_SIMPLE
>  COBJS-y += nand_spl_simple.o
>  endif
> +ifdef CONFIG_SPL_NAND_LOAD
> +COBJS-y	+= nand_spl_load.o
> +endif
>  else
>  COBJS-y += nand.o
>  COBJS-y += nand_bbt.o

Space, not tab, to match the rest of the file.

> +/*
> + * The main entry for NAND booting. It's necessary that SDRAM is already
> + * configured and available since this code loads the main U-Boot image
> + * from NAND into SDRAM and starts it from there.
> + */
> +void nand_boot(void)
> +{
> +	int ret;
> +	__attribute__((noreturn)) void (*uboot)(void);
> +
> +	/*
> +	 * Load U-Boot image from NAND into RAM
> +	 */
> +	ret =  nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
> +			CONFIG_SYS_NAND_U_BOOT_SIZE,
> +		(void *)CONFIG_SYS_NAND_U_BOOT_DST);

The indent/alignment of continuation lines here looks odd...

-Scott



More information about the U-Boot mailing list