diff options
| -rw-r--r-- | board/samsung/smdk5250/Makefile | 2 | ||||
| -rw-r--r-- | board/samsung/smdk5250/spl_boot.c (renamed from board/samsung/smdk5250/mmc_boot.c) | 31 | ||||
| -rw-r--r-- | include/configs/smdk5250.h | 5 | 
3 files changed, 35 insertions, 3 deletions
| diff --git a/board/samsung/smdk5250/Makefile b/board/samsung/smdk5250/Makefile index 1474fa8a1..47c6a5a46 100644 --- a/board/samsung/smdk5250/Makefile +++ b/board/samsung/smdk5250/Makefile @@ -36,7 +36,7 @@ COBJS	+= smdk5250.o  endif  ifdef CONFIG_SPL_BUILD -COBJS	+= mmc_boot.o +COBJS	+= spl_boot.o  endif  SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c) diff --git a/board/samsung/smdk5250/mmc_boot.c b/board/samsung/smdk5250/spl_boot.c index 449a919d5..d8f3c1e18 100644 --- a/board/samsung/smdk5250/mmc_boot.c +++ b/board/samsung/smdk5250/spl_boot.c @@ -23,6 +23,16 @@  #include<common.h>  #include<config.h> +enum boot_mode { +	BOOT_MODE_MMC = 4, +	BOOT_MODE_SERIAL = 20, +	/* Boot based on Operating Mode pin settings */ +	BOOT_MODE_OM = 32, +	BOOT_MODE_USB,	/* Boot using USB download */ +}; + +	typedef u32 (*spi_copy_func_t)(u32 offset, u32 nblock, u32 dst); +  /*  * Copy U-boot from mmc to RAM:  * COPY_BL2_FNPTR_ADDR: Address in iRAM, which Contains @@ -30,9 +40,26 @@  */  void copy_uboot_to_ram(void)  { -	u32 (*copy_bl2)(u32, u32, u32) = (void *) *(u32 *)COPY_BL2_FNPTR_ADDR; +	spi_copy_func_t spi_copy; +	enum boot_mode bootmode; +	u32 (*copy_bl2)(u32, u32, u32); + +	bootmode = readl(EXYNOS5_POWER_BASE) & OM_STAT; -	copy_bl2(BL2_START_OFFSET, BL2_SIZE_BLOC_COUNT, CONFIG_SYS_TEXT_BASE); +	switch (bootmode) { +	case BOOT_MODE_SERIAL: +		spi_copy = *(spi_copy_func_t *)EXYNOS_COPY_SPI_FNPTR_ADDR; +		spi_copy(SPI_FLASH_UBOOT_POS, CONFIG_BL2_SIZE, +						CONFIG_SYS_TEXT_BASE); +		break; +	case BOOT_MODE_MMC: +		copy_bl2 = (void *) *(u32 *)COPY_BL2_FNPTR_ADDR; +		copy_bl2(BL2_START_OFFSET, BL2_SIZE_BLOC_COUNT, +						CONFIG_SYS_TEXT_BASE); +		break; +	default: +		break; +	}  }  void board_init_f(unsigned long bootflag) diff --git a/include/configs/smdk5250.h b/include/configs/smdk5250.h index 4973c330c..e412da8c9 100644 --- a/include/configs/smdk5250.h +++ b/include/configs/smdk5250.h @@ -187,6 +187,11 @@  /* U-boot copy size from boot Media to DRAM.*/  #define BL2_START_OFFSET	(CONFIG_BL2_OFFSET/512)  #define BL2_SIZE_BLOC_COUNT	(CONFIG_BL2_SIZE/512) + +#define OM_STAT				(0x1f << 1) +#define EXYNOS_COPY_SPI_FNPTR_ADDR	0x02020058 +#define SPI_FLASH_UBOOT_POS		(CONFIG_SEC_FW_SIZE + CONFIG_BL1_SIZE) +  #define CONFIG_DOS_PARTITION  #define CONFIG_IRAM_STACK	0x02050000 |