Since commit 7ef9651e9792 ("clk: Provide new devm_clk helpers for prepared and enabled clocks"), devm_clk_get() and clk_prepare_enable() can now be replaced by devm_clk_get_enabled() when the driver enables (and possibly prepares) the clocks for the whole lifetime of the device. Moreover, it is no longer necessary to unprepare and disable the clocks explicitly. Signed-off-by: Yi Yang <yiyang13@xxxxxxxxxx> --- v2: Remove clk_disable_unprepare in dwcmshc_remove() --- drivers/mmc/host/sdhci-of-dwcmshc.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c index 31c1892f4ecd..08b566984733 100644 --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c @@ -495,19 +495,19 @@ static int dwcmshc_probe(struct platform_device *pdev) priv = sdhci_pltfm_priv(pltfm_host); if (dev->of_node) { - pltfm_host->clk = devm_clk_get(dev, "core"); + pltfm_host->clk = devm_clk_get_enabled(dev, "core"); if (IS_ERR(pltfm_host->clk)) { err = PTR_ERR(pltfm_host->clk); - dev_err(dev, "failed to get core clk: %d\n", err); + dev_err(dev, "failed to get or enable core clk: %d\n", err); goto free_pltfm; } - err = clk_prepare_enable(pltfm_host->clk); - if (err) - goto free_pltfm; - priv->bus_clk = devm_clk_get(dev, "bus"); - if (!IS_ERR(priv->bus_clk)) - clk_prepare_enable(priv->bus_clk); + priv->bus_clk = devm_clk_get_enabled(dev, "bus"); + if (!IS_ERR(priv->bus_clk)) { + err = PTR_ERR(priv->bus_clk); + dev_err(dev, "failed to get or enable bus clk: %d\n", err); + goto free_pltfm; + } } err = mmc_of_parse(host->mmc); @@ -564,8 +564,6 @@ static int dwcmshc_probe(struct platform_device *pdev) err_setup_host: sdhci_cleanup_host(host); err_clk: - clk_disable_unprepare(pltfm_host->clk); - clk_disable_unprepare(priv->bus_clk); if (rk_priv) clk_bulk_disable_unprepare(RK35xx_MAX_CLKS, rk_priv->rockchip_clks); @@ -583,8 +581,6 @@ static void dwcmshc_remove(struct platform_device *pdev) sdhci_remove_host(host, 0); - clk_disable_unprepare(pltfm_host->clk); - clk_disable_unprepare(priv->bus_clk); if (rk_priv) clk_bulk_disable_unprepare(RK35xx_MAX_CLKS, rk_priv->rockchip_clks); -- 2.17.1