Re: [U-Boot] [PATCH 8/8 V2] EXYNOS5: Enable SPI booting.

+original CC list
Hi,
On Tue, Oct 16, 2012 at 10:23 PM, Hatim Rv rv.hatimali@gmail.com wrote:
Hello,
On Tue, Oct 2, 2012 at 11:40 AM, Simon Glass sjg@chromium.org wrote:
Hi,
On Tue, Jul 31, 2012 at 4:01 AM, Rajeshwari Shinde rajeshwari.s@samsung.com wrote:
This patch enables SPI Booting for EXYNOS5
Signed-off-by: Rajeshwari Shinde rajeshwari.s@samsung.com
Changes in V2: - None. board/samsung/smdk5250/Makefile | 2 +- board/samsung/smdk5250/{mmc_boot.c => spl_boot.c} | 31 +++++++++++++++++++- include/configs/smdk5250.h | 5 +++ 3 files changed, 35 insertions(+), 3 deletions(-) rename board/samsung/smdk5250/{mmc_boot.c => spl_boot.c} (66%)
diff --git a/board/samsung/smdk5250/Makefile b/board/samsung/smdk5250/Makefile index 1474fa8..47c6a5a 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 similarity index 66% rename from board/samsung/smdk5250/mmc_boot.c rename to board/samsung/smdk5250/spl_boot.c index 449a919..d8f3c1e 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 29b7ac6..4b9093c 100644 --- a/include/configs/smdk5250.h +++ b/include/configs/smdk5250.h @@ -192,6 +192,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
Would these two be better in exynos5.h or similar? They don't seem like a board feature?
Since the other SoC related defines like EXYNOS_COPY_SPI_FNPTR_ADDR and CONFIG_IRAM_STACK are also in the smdk5250.h it would be better if we keep the above defines there. Once we have code for mulitple boards based on Exynos5, we can segregate the board and SoC specific defines later.
That's fine with me for now.
Regards, Simon
+#define SPI_FLASH_UBOOT_POS (CONFIG_SEC_FW_SIZE + CONFIG_BL1_SIZE)
#define CONFIG_DOS_PARTITION
#define CONFIG_IRAM_STACK 0x02050000
1.7.4.4
Regards, Simon
Regards, Hatim Ali
participants (1)
-
Simon Glass