diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index d8b514eac73629aec5056b3d6625efe4b94d1b26..f2c1af5d35e807fb3bc45e274b34cdeae27f5073 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -78,10 +78,11 @@ int spl_mmc_get_device_index(u32 boot_device)
 	return -ENODEV;
 }
 
-#ifdef CONFIG_DM_MMC
 static int spl_mmc_find_device(struct mmc **mmcp, u32 boot_device)
 {
+#ifdef CONFIG_DM_MMC
 	struct udevice *dev;
+#endif
 	int err, mmc_dev;
 
 	mmc_dev = spl_mmc_get_device_index(boot_device);
@@ -96,47 +97,23 @@ static int spl_mmc_find_device(struct mmc **mmcp, u32 boot_device)
 		return err;
 	}
 
+#ifdef CONFIG_DM_MMC
 	err = uclass_get_device(UCLASS_MMC, mmc_dev, &dev);
-	if (err) {
-#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
-		printf("spl: could not find mmc device. error: %d\n", err);
-#endif
-		return err;
-	}
-
-	*mmcp = NULL;
-	*mmcp = mmc_get_mmc_dev(dev);
-	return *mmcp != NULL ? 0 : -ENODEV;
-}
+	if (!err)
+		*mmcp = mmc_get_mmc_dev(dev);
 #else
-static int spl_mmc_find_device(struct mmc **mmcp, u32 boot_device)
-{
-	int err, mmc_dev;
-
-	mmc_dev = spl_mmc_get_device_index(boot_device);
-	if (mmc_dev < 0)
-		return mmc_dev;
-
-	err = mmc_initialize(gd->bd);
+	*mmcp = find_mmc_device(mmc_dev);
+	err = *mmcp ? 0 : -ENODEV;
+#endif
 	if (err) {
 #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
-		printf("spl: could not initialize mmc. error: %d\n", err);
+		printf("spl: could not find mmc device. error: %d\n", err);
 #endif
 		return err;
 	}
 
-	/* We register only one device. So, the dev id is always 0 */
-	*mmcp = find_mmc_device(mmc_dev);
-	if (!*mmcp) {
-#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
-		puts("spl: mmc device not found\n");
-#endif
-		return -ENODEV;
-	}
-
 	return 0;
 }
-#endif
 
 #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
 static int mmc_load_image_raw_partition(struct mmc *mmc, int partition)