diff options
| author | Tom Rini <trini@ti.com> | 2012-08-14 14:34:10 -0700 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2012-09-27 11:20:27 -0700 | 
| commit | a4cc1c487757fe71ee13adead888c8010191c961 (patch) | |
| tree | 0d90de362ee96dae3b252bfa70d22ecf67a3fe7b | |
| parent | 022b4975c8dd304fa9f949594784f78601ae07c2 (diff) | |
| download | olio-uboot-2014.01-a4cc1c487757fe71ee13adead888c8010191c961.tar.xz olio-uboot-2014.01-a4cc1c487757fe71ee13adead888c8010191c961.zip | |
SPL: SPI: Enhance spi_spl_load to match the other load functions
Signed-off-by: Tom Rini <trini@ti.com>
| -rw-r--r-- | common/spl/spl.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/spi/spi_spl_load.c | 23 | ||||
| -rw-r--r-- | include/spl.h | 2 | 
3 files changed, 15 insertions, 14 deletions
| diff --git a/common/spl/spl.c b/common/spl/spl.c index 95dd9d50c..40de45491 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -167,8 +167,8 @@ void board_init_r(gd_t *dummy1, ulong dummy2)  #endif  #ifdef CONFIG_SPL_SPI_SUPPORT  	case BOOT_DEVICE_SPI: -		spi_boot(); -	break; +		spl_spi_load_image(); +		break;  #endif  	default:  		puts("SPL: Un-supported Boot Device\n"); diff --git a/drivers/mtd/spi/spi_spl_load.c b/drivers/mtd/spi/spi_spl_load.c index 1aa30aca7..d4f81f24a 100644 --- a/drivers/mtd/spi/spi_spl_load.c +++ b/drivers/mtd/spi/spi_spl_load.c @@ -24,16 +24,17 @@  #include <common.h>  #include <spi_flash.h> +#include <spl.h>  /*   * The main entry for SPI booting. It's necessary that SDRAM is already   * configured and available since this code loads the main U-Boot image   * from SPI into SDRAM and starts it from there.   */ -void spi_boot(void) +void spl_spi_load_image(void)  {  	struct spi_flash *flash; -	void (*uboot)(void) __noreturn; +	struct image_header *header;  	/*  	 * Load U-Boot image from SPI flash into RAM @@ -42,17 +43,17 @@ void spi_boot(void)  	flash = spi_flash_probe(CONFIG_SPL_SPI_BUS, CONFIG_SPL_SPI_CS,  				CONFIG_SF_DEFAULT_SPEED, SPI_MODE_3);  	if (!flash) { -		puts("failed.\n"); +		puts("SPI probe failed.\n");  		hang();  	} -	spi_flash_read(flash, CONFIG_SYS_SPI_U_BOOT_OFFS, -		       CONFIG_SYS_SPI_U_BOOT_SIZE, -		       (void *) CONFIG_SYS_TEXT_BASE); +	/* use CONFIG_SYS_TEXT_BASE as temporary storage area */ +	header = (struct image_header *)(CONFIG_SYS_TEXT_BASE); -	/* -	 * Jump to U-Boot image -	 */ -	uboot = (void *) CONFIG_SYS_TEXT_BASE; -	(*uboot)(); +	/* Load u-boot, mkimage header is 64 bytes. */ +	spi_flash_read(flash, CONFIG_SYS_SPI_U_BOOT_OFFS, 0x40, +			(void *) header); +	spl_parse_image_header(header); +	spi_flash_read(flash, CONFIG_SYS_SPI_U_BOOT_OFFS, +		       spl_image.size, (void *)spl_image.load_addr);  } diff --git a/include/spl.h b/include/spl.h index cf441a16b..af94a8238 100644 --- a/include/spl.h +++ b/include/spl.h @@ -69,7 +69,7 @@ void spl_mmc_load_image(void);  void spl_ymodem_load_image(void);  /* SPI SPL functions */ -void spi_boot(void); +void spl_spi_load_image(void);  #ifdef CONFIG_SPL_BOARD_INIT  void spl_board_init(void); |