diff options
Diffstat (limited to 'arch/arm/cpu/arm926ejs')
| -rw-r--r-- | arch/arm/cpu/arm926ejs/davinci/Makefile | 2 | ||||
| -rw-r--r-- | arch/arm/cpu/arm926ejs/davinci/config.mk | 16 | ||||
| -rw-r--r-- | arch/arm/cpu/arm926ejs/davinci/spl.c | 72 | ||||
| -rw-r--r-- | arch/arm/cpu/arm926ejs/start.S | 2 | 
4 files changed, 51 insertions, 41 deletions
| diff --git a/arch/arm/cpu/arm926ejs/davinci/Makefile b/arch/arm/cpu/arm926ejs/davinci/Makefile index c91928e71..dec7bfbfa 100644 --- a/arch/arm/cpu/arm926ejs/davinci/Makefile +++ b/arch/arm/cpu/arm926ejs/davinci/Makefile @@ -37,7 +37,7 @@ COBJS-$(CONFIG_SOC_DA850)	+= da850_pinmux.o  COBJS-$(CONFIG_DRIVER_TI_EMAC)	+= lxt972.o dp83848.o et1011c.o ksz8873.o  ifdef CONFIG_SPL_BUILD -COBJS-y	+= spl.o +COBJS-$(CONFIG_SPL_FRAMEWORK)	+= spl.o  COBJS-$(CONFIG_SOC_DM365)	+= dm365_lowlevel.o  COBJS-$(CONFIG_SOC_DA8XX)	+= da850_lowlevel.o  endif diff --git a/arch/arm/cpu/arm926ejs/davinci/config.mk b/arch/arm/cpu/arm926ejs/davinci/config.mk new file mode 100644 index 000000000..745231547 --- /dev/null +++ b/arch/arm/cpu/arm926ejs/davinci/config.mk @@ -0,0 +1,16 @@ +# +# Copyright (C) 2012, Texas Instruments, Incorporated - http://www.ti.com/ +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed "as is" WITHOUT ANY WARRANTY of any +# kind, whether express or implied; without even the implied warranty +# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +ifndef CONFIG_SPL_BUILD +ALL-$(CONFIG_SPL_FRAMEWORK)	+= $(obj)u-boot.ais +endif 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  } diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S index 6f05f1ac4..521d46290 100644 --- a/arch/arm/cpu/arm926ejs/start.S +++ b/arch/arm/cpu/arm926ejs/start.S @@ -215,6 +215,7 @@ call_board_init_f:  /*------------------------------------------------------------------------------*/ +#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_NAND_SPL)  /*   * void relocate_code (addr_sp, gd, addr_moni)   * @@ -344,6 +345,7 @@ _rel_dyn_end_ofs:  	.word __rel_dyn_end - _start  _dynsym_start_ofs:  	.word __dynsym_start - _start +#endif  /*   ************************************************************************* |