diff options
Diffstat (limited to 'arch/arm/cpu/arm926ejs/davinci/spl.c')
| -rw-r--r-- | arch/arm/cpu/arm926ejs/davinci/spl.c | 72 | 
1 files changed, 32 insertions, 40 deletions
| diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c b/arch/arm/cpu/arm926ejs/davinci/spl.c index 03c85c87f..714fa9284 100644 --- a/arch/arm/cpu/arm926ejs/davinci/spl.c +++ b/arch/arm/cpu/arm926ejs/davinci/spl.c @@ -21,6 +21,8 @@   * MA 02111-1307 USA   */  #include <common.h> +#include <config.h> +#include <spl.h>  #include <asm/u-boot.h>  #include <asm/utils.h>  #include <nand.h> @@ -30,15 +32,9 @@  #include <spi_flash.h>  #include <mmc.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)  {  	while (*str) @@ -52,53 +48,49 @@ void putc(char c)  	NS16550_putc((NS16550_t)(CONFIG_SYS_NS16550_COM1), 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, setup our stack pointer. */ +	asm volatile("mov sp, %0\n" : : "r"(CONFIG_SPL_STACK)); + +	/* Second, 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); -} -void board_init_r(gd_t *id, ulong dummy) -{ -#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT -	mem_malloc_init(CONFIG_SYS_TEXT_BASE - CONFIG_SYS_MALLOC_LEN, -			CONFIG_SYS_MALLOC_LEN); +	/* Third, we clear the BSS. */ +	memset(__bss_start, 0, __bss_end__ - __bss_start); +	/* Finally, setup gd and move to the next step. */  	gd = &gdata; -	gd->bd = &bdata; -	gd->flags |= GD_FLG_RELOC; -	gd->baudrate = CONFIG_BAUDRATE; -	serial_init();          /* serial communications setup */ -	gd->have_console = 1; +	board_init_r(NULL, 0); +} -#endif +void spl_board_init(void) +{ +	preloader_console_init(); +} -#ifdef CONFIG_SPL_NAND_LOAD -	nand_init(); -	puts("Nand boot...\n"); -	nand_boot(); -#endif -#ifdef CONFIG_SPL_SPI_LOAD -	puts("SPI boot...\n"); -	spi_boot(); -#endif -#ifdef CONFIG_SPL_MMC_LOAD -	puts("MMC boot...\n"); -	spl_mmc_load(); +u32 spl_boot_mode(void) +{ +	return MMCSD_MODE_RAW; +} + +u32 spl_boot_device(void) +{ +#ifdef CONFIG_SPL_NAND_SIMPLE +	return BOOT_DEVICE_NAND; +#elif defined(CONFIG_SPL_SPI_LOAD) +	return BOOT_DEVICE_SPI; +#elif defined(CONFIG_SPL_MMC_LOAD) +	return BOOT_DEVICE_MMC1; +#else +	puts("Unknown boot device\n"); +	hang();  #endif  } |