From e66979ea8b28f4dbcbcad445ade0e1547890a2ad Mon Sep 17 00:00:00 2001 From: Shawn Lin Date: Wed, 16 Dec 2020 11:38:38 +0800 Subject: [PATCH] mmc: sdhci-of-dwcmshc: Don't gate bus clock for RPM Gate bus clock will make DLL module lost tuning value. Change-Id: I3af2d7c6601acbdeb4eb732e597d7d5725e0354b Signed-off-by: Shawn Lin --- drivers/mmc/host/sdhci-of-dwcmshc.c | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c index a22c8935da3f..736913e555e1 100644 --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c @@ -61,6 +61,7 @@ struct dwcmshc_priv { /* Rockchip specified optional clocks */ struct clk_bulk_data rockchip_clks[ROCKCHIP_MAX_CLKS]; int txclk_tapnum; + unsigned int actual_clk; }; /* @@ -417,16 +418,11 @@ static int dwcmshc_runtime_suspend(struct device *dev) struct sdhci_host *host = dev_get_drvdata(dev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct dwcmshc_priv *priv = sdhci_pltfm_priv(pltfm_host); - int ret; - ret = sdhci_runtime_suspend_host(host); + priv->actual_clk = host->mmc->actual_clock; + sdhci_set_clock(host, 0); - clk_disable_unprepare(pltfm_host->clk); - if (!IS_ERR(priv->bus_clk)) - clk_disable_unprepare(priv->bus_clk); - clk_bulk_disable_unprepare(ROCKCHIP_MAX_CLKS, priv->rockchip_clks); - - return ret; + return 0; } static int dwcmshc_runtime_resume(struct device *dev) @@ -434,23 +430,10 @@ static int dwcmshc_runtime_resume(struct device *dev) struct sdhci_host *host = dev_get_drvdata(dev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct dwcmshc_priv *priv = sdhci_pltfm_priv(pltfm_host); - int ret; - ret = clk_prepare_enable(pltfm_host->clk); - if (ret) - return ret; + sdhci_set_clock(host, priv->actual_clk); - if (!IS_ERR(priv->bus_clk)) { - ret = clk_prepare_enable(priv->bus_clk); - if (ret) - return ret; - } - - ret = clk_bulk_prepare_enable(ROCKCHIP_MAX_CLKS, priv->rockchip_clks); - if (ret) - return ret; - - return sdhci_runtime_resume_host(host); + return 0; } #endif