[U-Boot] [PATCH v3 16/19] ARM: SPL: Convert davinci to CONFIG_SPL_FRAMEWORK

Christian Riesch christian.riesch at omicron.at
Thu Aug 23 15:14:12 CEST 2012


Hi Tom,

On Thu, Aug 23, 2012 at 1:19 AM, Tom Rini <trini at ti.com> wrote:
> - Convert the non-relocation part of board_init_f to spl_board_init,
>   turn on CONFIG_SPL_BOARD_INIT in the configs.
> - Remove duplicated code.
> - Add spl_boot_device() that returns the statically chosen boot device.
>
> Signed-off-by: Tom Rini <trini at ti.com>
[...]
> diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c b/arch/arm/cpu/arm926ejs/davinci/spl.c
> index 74632e5..46c0bfd 100644
> --- a/arch/arm/cpu/arm926ejs/davinci/spl.c
> +++ b/arch/arm/cpu/arm926ejs/davinci/spl.c
> @@ -21,6 +21,7 @@
>   * MA 02111-1307 USA
>   */
>  #include <common.h>
> +#include <spl.h>
>  #include <asm/u-boot.h>
>  #include <asm/utils.h>
>  #include <nand.h>
> @@ -29,14 +30,7 @@
>  #include <malloc.h>
>  #include <spi_flash.h>
>
> -#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
> -
> -DECLARE_GLOBAL_DATA_PTR;
> -/* Define global data structure pointer to it*/
> -static gd_t gdata __attribute__ ((section(".data")));
> -static bd_t bdata __attribute__ ((section(".data")));
> -
> -#else
> +#ifndef CONFIG_SPL_LIBCOMMON_SUPPORT
>
>  void puts(const char *str)
>  {
> @@ -54,43 +48,37 @@ void putc(char c)
>
>  #endif /* CONFIG_SPL_LIBCOMMON_SUPPORT */
>
> -inline void hang(void)
> -{
> -       puts("### ERROR ### Please RESET the board ###\n");
> -       for (;;)
> -               ;
> -}
> -
>  void board_init_f(ulong dummy)
>  {
> +       /* First, perform our low-level init. */
>  #ifdef CONFIG_SOC_DM365
>         dm36x_lowlevel_init(0);
>  #endif
>  #ifdef CONFIG_SOC_DA8XX
>         arch_cpu_init();
>  #endif
> -       relocate_code(CONFIG_SPL_STACK, NULL, CONFIG_SPL_TEXT_BASE);
> +
> +       /*
> +        * Next we call relocate_code() with relocation target same as the
> +        * CONFIG_SYS_SPL_TEXT_BASE. This will result in relocation getting
> +        * skipped. Instead, only .bss initialization will happen.
> +        */
> +       relocate_code(CONFIG_SPL_STACK, &gdata, CONFIG_SPL_TEXT_BASE);
>  }
>
> -void board_init_r(gd_t *id, ulong dummy)
> +void spl_board_init(void)
>  {
> -#ifdef CONFIG_SPL_NAND_LOAD
> -       nand_init();
> -       puts("Nand boot...\n");
> -       nand_boot();
> -#endif
> -#ifdef CONFIG_SPL_SPI_LOAD
> -       mem_malloc_init(CONFIG_SYS_TEXT_BASE - CONFIG_SYS_MALLOC_LEN,
> -                       CONFIG_SYS_MALLOC_LEN);
> -
> -       gd = &gdata;
> -       gd->bd = &bdata;
> -       gd->flags |= GD_FLG_RELOC;
> -       gd->baudrate = CONFIG_BAUDRATE;
> -       serial_init();          /* serial communications setup */
> -       gd->have_console = 1;
> +       preloader_console_init();
> +}
>
> -       puts("SPI boot...\n");
> -       spi_boot();
> +u32 spl_boot_device(void)
> +{
> +#ifdef CONFIG_SPL_NAND_LOAD
> +       return BOOT_DEVICE_NAND;
> +#elif defined(CONFIG_SPL_SPI_LOAD)
> +       return BOOT_DEVICE_SPI;
> +#else

This will not apply on u-boot-ti since it is missing the MMC-SPL
patches that have already been merged, right?
Regards, Christian

> +       puts("Unknown boot device\n");
> +       hang();
>  #endif
>  }


More information about the U-Boot mailing list