mmc: sdhci-of-dwcmshc: Add error handling in dwcmshc_resume
authorLiming Sun <limings@nvidia.com>
Tue, 22 Aug 2023 19:59:28 +0000 (15:59 -0400)
committerUlf Hansson <ulf.hansson@linaro.org>
Thu, 24 Aug 2023 10:56:46 +0000 (12:56 +0200)
This commit adds handling in dwcmshc_resume() for different error
cases.

Signed-off-by: Liming Sun <limings@nvidia.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20230822195929.168552-1-limings@nvidia.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-of-dwcmshc.c

index 31c1892..bc332a0 100644 (file)
@@ -630,17 +630,32 @@ static int dwcmshc_resume(struct device *dev)
        if (!IS_ERR(priv->bus_clk)) {
                ret = clk_prepare_enable(priv->bus_clk);
                if (ret)
-                       return ret;
+                       goto disable_clk;
        }
 
        if (rk_priv) {
                ret = clk_bulk_prepare_enable(RK35xx_MAX_CLKS,
                                              rk_priv->rockchip_clks);
                if (ret)
-                       return ret;
+                       goto disable_bus_clk;
        }
 
-       return sdhci_resume_host(host);
+       ret = sdhci_resume_host(host);
+       if (ret)
+               goto disable_rockchip_clks;
+
+       return 0;
+
+disable_rockchip_clks:
+       if (rk_priv)
+               clk_bulk_disable_unprepare(RK35xx_MAX_CLKS,
+                                          rk_priv->rockchip_clks);
+disable_bus_clk:
+       if (!IS_ERR(priv->bus_clk))
+               clk_disable_unprepare(priv->bus_clk);
+disable_clk:
+       clk_disable_unprepare(pltfm_host->clk);
+       return ret;
 }
 #endif