}
 #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;
        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: