Skip to content
Snippets Groups Projects
Commit 7dbe63bc authored by Tom Rini's avatar Tom Rini Committed by Pantelis Antoniou
Browse files

SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK


We use the switch CONFIG_SUPPORT_EMMC_BOOT today to enable some
additional features of the eMMC boot partitions.  Add support for being
told that we have booted from one of these partitions to the spl
framework and implement this on TI OMAP/related.

Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
Signed-off-by: default avatarTom Rini <trini@ti.com>
Signed-off-by: default avatarPantelis Antoniou <panto@antoniou-consulting.com>
parent f9ec45d1
No related branches found
No related tags found
No related merge requests found
...@@ -66,7 +66,18 @@ u32 spl_boot_device(void) ...@@ -66,7 +66,18 @@ u32 spl_boot_device(void)
u32 spl_boot_mode(void) u32 spl_boot_mode(void)
{ {
return gd->arch.omap_boot_params.omap_bootmode; u32 val = gd->arch.omap_boot_params.omap_bootmode;
if (val == MMCSD_MODE_RAW)
return MMCSD_MODE_RAW;
else if (val == MMCSD_MODE_FAT)
return MMCSD_MODE_FAT;
else
#ifdef CONFIG_SUPPORT_EMMC_BOOT
return MMCSD_MODE_EMMCBOOT;
#else
return MMCSD_MODE_UNDEFINED;
#endif
} }
void spl_board_init(void) void spl_board_init(void)
......
...@@ -110,6 +110,30 @@ void spl_mmc_load_image(void) ...@@ -110,6 +110,30 @@ void spl_mmc_load_image(void)
err = spl_load_image_fat(&mmc->block_dev, err = spl_load_image_fat(&mmc->block_dev,
CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION, CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION,
CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME); CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME);
#endif
#ifdef CONFIG_SUPPORT_EMMC_BOOT
} else if (boot_mode == MMCSD_MODE_EMMCBOOT) {
/*
* We need to check what the partition is configured to.
* 1 and 2 match up to boot0 / boot1 and 7 is user data
* which is the first physical partition (0).
*/
int part = (mmc->part_config >> 3) & PART_ACCESS_MASK;
if (part == 7)
part = 0;
if (mmc_switch_part(0, part)) {
#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
puts("MMC partition switch failed\n");
#endif
hang();
}
#ifdef CONFIG_SPL_OS_BOOT
if (spl_start_uboot() || mmc_load_image_raw_os(mmc))
#endif
err = mmc_load_image_raw(mmc,
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR);
#endif #endif
} else { } else {
#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#define MMCSD_MODE_UNDEFINED 0 #define MMCSD_MODE_UNDEFINED 0
#define MMCSD_MODE_RAW 1 #define MMCSD_MODE_RAW 1
#define MMCSD_MODE_FAT 2 #define MMCSD_MODE_FAT 2
#define MMCSD_MODE_EMMCBOOT 3
struct spl_image_info { struct spl_image_info {
const char *name; const char *name;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment