[U-Boot] [PATCH 2/2] spl: spl_mmc: MMC boot mode provisions checks

This allows using only one of either raw or fs mode for SPL mmc boot, without the need to have provisions for the other. In particular, a device may have U-Boot installed on a file system on the mmc, without ever needing to read U-Boot from raw memory. Thus, there is no reason to provide a sector or partition for raw mode. This allows this behaviour and still provides a robust fallback mechanism in case provisions for both modes are defined.
Signed-off-by: Paul Kocialkowski contact@paulk.fr --- common/spl/spl_mmc.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c index f5ac844..552f80d 100644 --- a/common/spl/spl_mmc.c +++ b/common/spl/spl_mmc.c @@ -130,19 +130,21 @@ void spl_mmc_load_image(void) return; } #endif -#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION +#if defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION) err = mmc_load_image_raw_partition(mmc, CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION); -#else + if (!err) + return; +#elif defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR) err = mmc_load_image_raw_sector(mmc, CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR); -#endif if (!err) return; -#if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT) +#endif case MMCSD_MODE_FS: debug("spl: mmc boot mode: fs\n");
+#ifdef CONFIG_SYS_MMCSD_FS_BOOT_PARTITION #ifdef CONFIG_SPL_FAT_SUPPORT #ifdef CONFIG_SPL_OS_BOOT if (!spl_start_uboot()) { @@ -152,12 +154,14 @@ void spl_mmc_load_image(void) return; } #endif +#ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME err = spl_load_image_fat(&mmc->block_dev, CONFIG_SYS_MMCSD_FS_BOOT_PARTITION, CONFIG_SPL_FS_LOAD_PAYLOAD_NAME); if (!err) return; #endif +#endif #ifdef CONFIG_SPL_EXT_SUPPORT #ifdef CONFIG_SPL_OS_BOOT if (!spl_start_uboot()) { @@ -167,6 +171,7 @@ void spl_mmc_load_image(void) return; } #endif +#ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME err = spl_load_image_ext(&mmc->block_dev, CONFIG_SYS_MMCSD_FS_BOOT_PARTITION, CONFIG_SPL_FS_LOAD_PAYLOAD_NAME); @@ -174,6 +179,7 @@ void spl_mmc_load_image(void) return; #endif #endif +#endif #ifdef CONFIG_SUPPORT_EMMC_BOOT case MMCSD_MODE_EMMCBOOT: /* @@ -200,16 +206,18 @@ void spl_mmc_load_image(void) return; } #endif -#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION +#if defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION) err = mmc_load_image_raw_partition(mmc, CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION); -#else + if (!err) + return; +#elif defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR) err = mmc_load_image_raw_sector(mmc, CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR); -#endif if (!err) return; #endif +#endif case MMCSD_MODE_UNDEFINED: default: #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT

Le lundi 08 juin 2015 à 23:05 +0200, Paul Kocialkowski a écrit :
This allows using only one of either raw or fs mode for SPL mmc boot, without the need to have provisions for the other. In particular, a device may have U-Boot installed on a file system on the mmc, without ever needing to read U-Boot from raw memory. Thus, there is no reason to provide a sector or partition for raw mode. This allows this behaviour and still provides a robust fallback mechanism in case provisions for both modes are defined.
For reference, PATCH 1/2 is spl: spl_mmc: Minor cosmetics, that I sent last week. This one goes on top of it.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
common/spl/spl_mmc.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c index f5ac844..552f80d 100644 --- a/common/spl/spl_mmc.c +++ b/common/spl/spl_mmc.c @@ -130,19 +130,21 @@ void spl_mmc_load_image(void) return; } #endif -#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION +#if defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION) err = mmc_load_image_raw_partition(mmc, CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION); -#else
if (!err)
return;
+#elif defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR) err = mmc_load_image_raw_sector(mmc, CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR); -#endif if (!err) return; -#if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT) +#endif case MMCSD_MODE_FS: debug("spl: mmc boot mode: fs\n");
+#ifdef CONFIG_SYS_MMCSD_FS_BOOT_PARTITION #ifdef CONFIG_SPL_FAT_SUPPORT #ifdef CONFIG_SPL_OS_BOOT if (!spl_start_uboot()) { @@ -152,12 +154,14 @@ void spl_mmc_load_image(void) return; } #endif +#ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME err = spl_load_image_fat(&mmc->block_dev, CONFIG_SYS_MMCSD_FS_BOOT_PARTITION, CONFIG_SPL_FS_LOAD_PAYLOAD_NAME); if (!err) return; #endif +#endif #ifdef CONFIG_SPL_EXT_SUPPORT #ifdef CONFIG_SPL_OS_BOOT if (!spl_start_uboot()) { @@ -167,6 +171,7 @@ void spl_mmc_load_image(void) return; } #endif +#ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME err = spl_load_image_ext(&mmc->block_dev, CONFIG_SYS_MMCSD_FS_BOOT_PARTITION, CONFIG_SPL_FS_LOAD_PAYLOAD_NAME); @@ -174,6 +179,7 @@ void spl_mmc_load_image(void) return; #endif #endif +#endif #ifdef CONFIG_SUPPORT_EMMC_BOOT case MMCSD_MODE_EMMCBOOT: /* @@ -200,16 +206,18 @@ void spl_mmc_load_image(void) return; } #endif -#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION +#if defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION) err = mmc_load_image_raw_partition(mmc, CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION); -#else
if (!err)
return;
+#elif defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR) err = mmc_load_image_raw_sector(mmc, CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR); -#endif if (!err) return; #endif +#endif case MMCSD_MODE_UNDEFINED: default: #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT

On Mon, Jun 08, 2015 at 11:05:09PM +0200, Paul Kocialkowski wrote:
This allows using only one of either raw or fs mode for SPL mmc boot, without the need to have provisions for the other. In particular, a device may have U-Boot installed on a file system on the mmc, without ever needing to read U-Boot from raw memory. Thus, there is no reason to provide a sector or partition for raw mode. This allows this behaviour and still provides a robust fallback mechanism in case provisions for both modes are defined.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Applied to u-boot/master, thanks!
participants (2)
-
Paul Kocialkowski
-
Tom Rini