|
@@ -193,6 +193,7 @@ struct pltfm_imx_data {
|
|
|
struct clk *clk_ipg;
|
|
|
struct clk *clk_ahb;
|
|
|
struct clk *clk_per;
|
|
|
+ unsigned int actual_clock;
|
|
|
enum {
|
|
|
NO_CMD_PENDING, /* no multiblock command pending */
|
|
|
MULTIBLK_IN_PROCESS, /* exact multiblock cmd in process */
|
|
@@ -1396,6 +1397,8 @@ static int sdhci_esdhc_runtime_suspend(struct device *dev)
|
|
|
mmc_retune_needed(host->mmc);
|
|
|
|
|
|
if (!sdhci_sdio_irq_enabled(host)) {
|
|
|
+ imx_data->actual_clock = host->mmc->actual_clock;
|
|
|
+ esdhc_pltfm_set_clock(host, 0);
|
|
|
clk_disable_unprepare(imx_data->clk_per);
|
|
|
clk_disable_unprepare(imx_data->clk_ipg);
|
|
|
}
|
|
@@ -1422,6 +1425,7 @@ static int sdhci_esdhc_runtime_resume(struct device *dev)
|
|
|
err = clk_prepare_enable(imx_data->clk_ipg);
|
|
|
if (err)
|
|
|
goto disable_per_clk;
|
|
|
+ esdhc_pltfm_set_clock(host, imx_data->actual_clock);
|
|
|
}
|
|
|
|
|
|
err = sdhci_runtime_resume_host(host);
|