mmc: sdhci-esdhc-imx: Changes the order of how clocks are being re-enabled
authorMichael Trimarchi <michael@amarulasolutions.com>
Thu, 4 Jan 2018 15:30:58 +0000 (16:30 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 9 Jan 2018 08:21:18 +0000 (09:21 +0100)
runtime_resume() should re-enable the clocks in reverse order comparing with
runtime_suspend()

Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-esdhc-imx.c

index d08c21e..6d4e323 100644 (file)
@@ -1411,31 +1411,33 @@ static int sdhci_esdhc_runtime_resume(struct device *dev)
        struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host);
        int err;
 
+       err = clk_prepare_enable(imx_data->clk_ahb);
+       if (err)
+               return err;
+
        if (!sdhci_sdio_irq_enabled(host)) {
                err = clk_prepare_enable(imx_data->clk_per);
                if (err)
-                       return err;
+                       goto disable_ahb_clk;
                err = clk_prepare_enable(imx_data->clk_ipg);
                if (err)
                        goto disable_per_clk;
        }
-       err = clk_prepare_enable(imx_data->clk_ahb);
-       if (err)
-               goto disable_ipg_clk;
+
        err = sdhci_runtime_resume_host(host);
        if (err)
-               goto disable_ahb_clk;
+               goto disable_ipg_clk;
 
        return 0;
 
-disable_ahb_clk:
-       clk_disable_unprepare(imx_data->clk_ahb);
 disable_ipg_clk:
        if (!sdhci_sdio_irq_enabled(host))
                clk_disable_unprepare(imx_data->clk_ipg);
 disable_per_clk:
        if (!sdhci_sdio_irq_enabled(host))
                clk_disable_unprepare(imx_data->clk_per);
+disable_ahb_clk:
+       clk_disable_unprepare(imx_data->clk_ahb);
        return err;
 }
 #endif