[U-Boot] [PATCH 19/44] dm: mmc: Add a legacy block interface for MMC

Simon Glass
2016-04-10T02:45:11Z

Add a legacy block interface for MMC.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

drivers/mmc/mmc.c | 30 +++++++++++++++++++++++++++---
1 file changed, 27 insertions(+), 3 deletions(-)

diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index d3c22ab..024368c 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,
+};
--
2.8.0.rc3.226.g39d4020