summaryrefslogtreecommitdiff
path: root/common/spl/spl_mmc.c
diff options
context:
space:
mode:
authorNikita Kiryanov <nikita@compulab.co.il>2015-11-08 17:11:47 +0200
committerTom Rini <trini@konsulko.com>2015-11-18 14:50:01 -0500
commitf52b729393c4ec2af22f3a51a193362fc4f55e4f (patch)
treea365b8317fdce5c3d0129d68ef70353f06683f01 /common/spl/spl_mmc.c
parentd074ebb9361f0cd23146ed9e0f443c1b0ab3c249 (diff)
downloadu-boot-imx-f52b729393c4ec2af22f3a51a193362fc4f55e4f.zip
u-boot-imx-f52b729393c4ec2af22f3a51a193362fc4f55e4f.tar.gz
u-boot-imx-f52b729393c4ec2af22f3a51a193362fc4f55e4f.tar.bz2
spl: mmc: move fs boot into its own function
Move the code that handles fs boot out of spl_mmc_load_image() and into its own function to reduce the #ifdef complexity of spl_mmc_load_image(). No functional changes. Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il> Cc: Igor Grinberg <grinberg@compulab.co.il> Cc: Paul Kocialkowski <contact@paulk.fr> Cc: Pantelis Antoniou <panto@antoniou-consulting.com> Cc: Tom Rini <trini@konsulko.com> Cc: Simon Glass <sjg@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'common/spl/spl_mmc.c')
-rw-r--r--common/spl/spl_mmc.c81
1 files changed, 51 insertions, 30 deletions
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index d646dc8..5dc576b 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -171,6 +171,55 @@ static int mmc_load_image_raw_os(struct mmc *mmc)
}
#endif
+#ifdef CONFIG_SYS_MMCSD_FS_BOOT_PARTITION
+int spl_mmc_do_fs_boot(struct mmc *mmc)
+{
+ int err = -ENOSYS;
+
+#ifdef CONFIG_SPL_FAT_SUPPORT
+ if (!spl_start_uboot()) {
+ err = spl_load_image_fat_os(&mmc->block_dev,
+ CONFIG_SYS_MMCSD_FS_BOOT_PARTITION);
+ if (!err)
+ return err;
+ }
+#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 err;
+#endif
+#endif
+#ifdef CONFIG_SPL_EXT_SUPPORT
+ if (!spl_start_uboot()) {
+ err = spl_load_image_ext_os(&mmc->block_dev,
+ CONFIG_SYS_MMCSD_FS_BOOT_PARTITION);
+ if (!err)
+ return err;
+ }
+#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);
+ if (!err)
+ return err;
+#endif
+#endif
+
+#if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT)
+ err = -ENOENT;
+#endif
+
+ return err;
+}
+#else
+int spl_mmc_do_fs_boot(struct mmc *mmc)
+{
+ return -ENOSYS;
+}
+#endif
+
void spl_mmc_load_image(void)
{
struct mmc *mmc;
@@ -214,38 +263,10 @@ void spl_mmc_load_image(void)
case MMCSD_MODE_FS:
debug("spl: mmc boot mode: fs\n");
-#ifdef CONFIG_SYS_MMCSD_FS_BOOT_PARTITION
-#ifdef CONFIG_SPL_FAT_SUPPORT
- if (!spl_start_uboot()) {
- err = spl_load_image_fat_os(&mmc->block_dev,
- CONFIG_SYS_MMCSD_FS_BOOT_PARTITION);
- if (!err)
- return;
- }
-#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
- if (!spl_start_uboot()) {
- err = spl_load_image_ext_os(&mmc->block_dev,
- CONFIG_SYS_MMCSD_FS_BOOT_PARTITION);
- if (!err)
- return;
- }
-#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);
+ err = spl_mmc_do_fs_boot(mmc);
if (!err)
return;
-#endif
-#endif
-#endif
+
break;
#ifdef CONFIG_SUPPORT_EMMC_BOOT
case MMCSD_MODE_EMMCBOOT: