diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 64abe5b1c8597a396eb3d877926e328f7466b88f..a60cfe1cb0d181be890bc2a8a2de9d209b3e99b3 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1286,10 +1286,9 @@ int mmc_register(struct mmc *mmc)
 block_dev_desc_t *mmc_get_dev(int dev)
 {
 	struct mmc *mmc = find_mmc_device(dev);
-	if (!mmc)
+	if (!mmc || mmc_init(mmc))
 		return NULL;
 
-	mmc_init(mmc);
 	return &mmc->block_dev;
 }
 #endif