Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3602785b authored by Michael Trimarchi's avatar Michael Trimarchi Committed by Ulf Hansson
Browse files

mmc: sdhci-esdhc-imx: Enable/Disable mmc clock during runtime suspend



mmc clock can be stopped during runtime suspend and restart during runtime
resume if the sdio irq is not enabled. Stop sdio clock reduce EMI of
the device when the bus is not in use.

Signed-off-by: default avatarMichael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent a0ad3087
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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);