[PATCH 08/10] mmc: Add init() API

Faiz Abbas faiz_abbas at ti.com
Thu Jan 23 16:24:33 CET 2020


Add an init() API for platform specific init() operations.

Signed-off-by: Faiz Abbas <faiz_abbas at ti.com>
---
 drivers/mmc/mmc.c | 15 +++++++--------
 include/mmc.h     |  7 +++++++
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 364d39bf3b..a055ecbc9d 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -2752,6 +2752,7 @@ static int mmc_power_cycle(struct mmc *mmc)
 
 int mmc_get_op_cond(struct mmc *mmc)
 {
+	struct dm_mmc_ops *ops = mmc_get_ops(mmc->dev);
 	bool uhs_en = supports_uhs(mmc->cfg->host_caps);
 	int err;
 
@@ -2786,14 +2787,12 @@ int mmc_get_op_cond(struct mmc *mmc)
 	if (err)
 		return err;
 
-#if CONFIG_IS_ENABLED(DM_MMC)
-	/* The device has already been probed ready for use */
-#else
-	/* made sure it's not NULL earlier */
-	err = mmc->cfg->ops->init(mmc);
-	if (err)
-		return err;
-#endif
+	if (ops->init) {
+		err = ops->init(mmc->dev);
+		if (err)
+			return err;
+	}
+
 	mmc->ddr_mode = 0;
 
 retry:
diff --git a/include/mmc.h b/include/mmc.h
index 3c763670f2..a96833c1ca 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -406,6 +406,13 @@ struct mmc;
 
 #if CONFIG_IS_ENABLED(DM_MMC)
 struct dm_mmc_ops {
+	/**
+	 * init() - platform specific initialization for the host controller
+	 *
+	 * @dev:	Device to init
+	 * @return 0 if Ok, -ve if error
+	 */
+	int (*init)(struct udevice *dev);
 	/**
 	 * send_cmd() - Send a command to the MMC device
 	 *
-- 
2.19.2



More information about the U-Boot mailing list