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

Signed-off-by: Faiz Abbas <faiz_ab...@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvu...@ti.com>
---
 drivers/mmc/mmc.c | 13 ++++++-------
 include/mmc.h     |  7 +++++++
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index d43983d4a6..50df8c8626 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -2787,14 +2787,13 @@ 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;
+       struct dm_mmc_ops *ops = mmc_get_ops(mmc->dev);
+       if (ops->init) {
+               err = ops->init(mmc->dev);
+               if (err)
+                       return err;
+       }
 #endif
        mmc->ddr_mode = 0;
 
diff --git a/include/mmc.h b/include/mmc.h
index 2f21dbf1b7..6aef125f25 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

Reply via email to