diff options
| -rw-r--r-- | arch/arm/cpu/armv7/omap3/board.c | 11 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-omap3/spl.h | 1 | ||||
| -rw-r--r-- | common/spl/spl.c | 13 | ||||
| -rw-r--r-- | config.mk | 3 | ||||
| -rw-r--r-- | include/configs/omap3_h1.h | 11 | ||||
| -rw-r--r-- | spl/Makefile | 6 | 
6 files changed, 42 insertions, 3 deletions
| diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c index 29228160c..2cd2df519 100644 --- a/arch/arm/cpu/armv7/omap3/board.c +++ b/arch/arm/cpu/armv7/omap3/board.c @@ -56,7 +56,18 @@ const struct gpio_bank *const omap_gpio_bank = gpio_bank_34xx;  * We would not typically need to save these parameters in regular  * U-Boot. This is needed only in SPL at the moment.  */ + +/*  + * We need two different builds, one for UART and one for NAND.  + * In the future, consider changing this to make NAND the default, + * and if it isn't there or isn't working, try UART. + */ + +#ifdef SPL_BOOT_DEVICE_UART +u32 omap3_boot_device = BOOT_DEVICE_UART; +#else  u32 omap3_boot_device = BOOT_DEVICE_NAND; +#endif  /* auto boot mode detection is not possible for OMAP3 - hard code */  u32 spl_boot_mode(void) diff --git a/arch/arm/include/asm/arch-omap3/spl.h b/arch/arm/include/asm/arch-omap3/spl.h index 2ec319c08..e9c33d981 100644 --- a/arch/arm/include/asm/arch-omap3/spl.h +++ b/arch/arm/include/asm/arch-omap3/spl.h @@ -14,6 +14,7 @@  #define BOOT_DEVICE_MMC2	5 /*emmc*/  #define BOOT_DEVICE_MMC1	6  #define BOOT_DEVICE_XIPWAIT	7 +#define BOOT_DEVICE_UART    8  #define BOOT_DEVICE_MMC2_2      0xFF  #define MMC_BOOT_DEVICES_START	BOOT_DEVICE_MMC2 diff --git a/common/spl/spl.c b/common/spl/spl.c index 2c7ca16dc..c294b1ef4 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -129,6 +129,7 @@ static void spl_ram_load_image(void)  }  #endif +  void board_init_r(gd_t *dummy1, ulong dummy2)  {  	u32 boot_device; @@ -151,7 +152,17 @@ void board_init_r(gd_t *dummy1, ulong dummy2)  	spl_board_init();  #endif +    /* If we want to boot from UART, for OMAP3630, we hardcode boot_device  +     * to BOOT_DEVICE_UART. Same thing in  +     * arch/arm/cpu/armv7/omap3/board.c. --mfj +     */ + +#ifdef SPL_BOOT_DEVICE_UART +	boot_device = BOOT_DEVICE_UART; /* spl_boot_device(); */ +#else  	boot_device = spl_boot_device(); +#endif /* SPL_BOOT_DEVICE_UART */ +  	debug("boot device - %d\n", boot_device);  	switch (boot_device) {  #ifdef CONFIG_SPL_RAM_DEVICE @@ -210,7 +221,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)  #endif  #ifdef CONFIG_SPL_USBETH_SUPPORT  	case BOOT_DEVICE_USBETH: -		debug("Booting from USB ETHER\"); +		debug("Booting from USB ETHER\n");  		spl_net_load_image("usb_ether");  		break;  #endif @@ -240,6 +240,9 @@ CPPFLAGS += -DCONFIG_SPL_BUILD  ifeq ($(CONFIG_TPL_BUILD),y)  CPPFLAGS += -DCONFIG_TPL_BUILD  endif +ifeq ($(CONFIG_SPL_BOOT_DEVICE),uart) +CPPFLAGS += -DSPL_BOOT_DEVICE_UART +endif  endif  # Does this architecture support generic board init? diff --git a/include/configs/omap3_h1.h b/include/configs/omap3_h1.h index dfc2783e4..f1d852bfe 100644 --- a/include/configs/omap3_h1.h +++ b/include/configs/omap3_h1.h @@ -218,6 +218,7 @@  /* Boot Argument Buffer Size */  #define CONFIG_SYS_BARGSIZE		(CONFIG_SYS_CBSIZE) +#define CONFIG_CMD_MEMTEST          1          /* needed for memtest */  #define CONFIG_SYS_ALT_MEMTEST		1  #define CONFIG_SYS_MEMTEST_START	(0x82000000)		/* memtest */  								/* defaults */ @@ -284,7 +285,12 @@  #define CONFIG_SPL  #define CONFIG_SPL_FRAMEWORK  #define CONFIG_SPL_NAND_SIMPLE -#define CONFIG_SPL_TEXT_BASE		0x40200800 + +/* SPL TEXT BASE needs to be 0x40200000 for booting from bootrom.  + * If you're using the debugger other values are possible. + */ + +#define CONFIG_SPL_TEXT_BASE		0x40200000  #define CONFIG_SPL_MAX_SIZE		(54 * 1024)	/* 8 KB for stack */  #define CONFIG_SPL_STACK		LOW_LEVEL_SRAM_STACK @@ -305,6 +311,7 @@  #define CONFIG_SPL_POWER_SUPPORT  #define CONFIG_SPL_OMAP3_ID_NAND  #define CONFIG_SPL_LDSCRIPT		"$(CPUDIR)/omap-common/u-boot-spl.lds" +#define CONFIG_SPL_YMODEM_SUPPORT  /* NAND boot config */  #define CONFIG_SYS_NAND_5_ADDR_CYCLE @@ -317,7 +324,7 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 -#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_SW +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_HW  #define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000 diff --git a/spl/Makefile b/spl/Makefile index 5e5472d97..f94931102 100644 --- a/spl/Makefile +++ b/spl/Makefile @@ -22,6 +22,12 @@ export CONFIG_TPL_BUILD  SPL_BIN := u-boot-tpl  else  SPL_BIN := u-boot-spl +# SPL_BIN_UART := u-boot-spl-uart TODO - build NAND and UART at once. +endif + +ifdef BOOT_DEVICE_UART +CONFIG_SPL_BOOT_DEVICE=uart +export CONFIG_SPL_BOOT_DEVICE  endif  include $(TOPDIR)/config.mk |