Interconnect bandwidth scaling support is now added as a
part of OPP [1]. So, make sure interconnect driver is ready
before handling interconnect scaling.

This change is based on
[1] [Patch v8] Introduce OPP bandwidth bindings
(https://lkml.org/lkml/2020/5/12/493)

[2] [Patch v3] mmc: sdhci-msm: Fix error handling
for dev_pm_opp_of_add_table()
(https://lkml.org/lkml/2020/5/5/491)

Signed-off-by: Pradeep P V K <p...@codeaurora.org>
---
 drivers/mmc/host/sdhci-msm.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
index b277dd7..a945e84 100644
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
@@ -14,6 +14,7 @@
 #include <linux/slab.h>
 #include <linux/iopoll.h>
 #include <linux/regulator/consumer.h>
+#include <linux/interconnect.h>
 
 #include "sdhci-pltfm.h"
 #include "cqhci.h"
@@ -2070,6 +2071,13 @@ static int sdhci_msm_probe(struct platform_device *pdev)
        }
        msm_host->bulk_clks[0].clk = clk;
 
+       /* Make sure that ICC driver is ready for interconnect bandwdith
+        * scaling before registering the device for OPP.
+        */
+       ret = dev_pm_opp_of_find_icc_paths(&pdev->dev, NULL);
+       if (ret)
+               goto bus_clk_disable;
+
        msm_host->opp_table = dev_pm_opp_set_clkname(&pdev->dev, "core");
        if (IS_ERR(msm_host->opp_table)) {
                ret = PTR_ERR(msm_host->opp_table);
-- 
1.9.1

Reply via email to