summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/mmc.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index d3c22abfd5..024368c727 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1582,14 +1582,31 @@ void mmc_destroy(struct mmc *mmc)
free(mmc);
}
+static int mmc_get_devp(int dev, struct blk_desc **descp)
+{
+ struct mmc *mmc = find_mmc_device(dev);
+ int ret;
+
+ if (!mmc)
+ return -ENODEV;
+ ret = mmc_init(mmc);
+ if (ret)
+ return ret;
+
+ *descp = &mmc->block_dev;
+
+ return 0;
+}
+
#ifdef CONFIG_PARTITIONS
struct blk_desc *mmc_get_dev(int dev)
{
- struct mmc *mmc = find_mmc_device(dev);
- if (!mmc || mmc_init(mmc))
+ struct blk_desc *desc;
+
+ if (mmc_get_devp(dev, &desc))
return NULL;
- return &mmc->block_dev;
+ return desc;
}
#endif
@@ -1965,3 +1982,10 @@ int mmc_set_rst_n_function(struct mmc *mmc, u8 enable)
enable);
}
#endif
+
+U_BOOT_LEGACY_BLK(mmc) = {
+ .if_typename = "mmc",
+ .if_type = IF_TYPE_MMC,
+ .max_devs = -1,
+ .get_dev = mmc_get_devp,
+};