From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Lin Subject: [PATCH 4/9] mmc: dw_mmc-rockchip: disable biu clk if possible Date: Sun, 9 Oct 2016 21:49:05 +0800 Message-ID: <1476020951-31292-4-git-send-email-shawn.lin@rock-chips.com> References: <1476020951-31292-1-git-send-email-shawn.lin@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1476020951-31292-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Jaehoon Chung , Ulf Hansson Cc: linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Shawn Lin , linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Doug Anderson List-Id: linux-mmc@vger.kernel.org We could disable biu clk and power-off genpd if gpio card detect available. Signed-off-by: Shawn Lin --- drivers/mmc/host/dw_mmc-rockchip.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c index 28e0220..7528720 100644 --- a/drivers/mmc/host/dw_mmc-rockchip.c +++ b/drivers/mmc/host/dw_mmc-rockchip.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -366,14 +367,29 @@ static int dw_mci_rockchip_remove(struct platform_device *pdev) static int dw_mci_rockchip_runtime_suspend(struct device *dev) { struct dw_mci *host = dev_get_drvdata(dev); + int ret; + + ret = dw_mci_runtime_suspend(host); + if (ret) + return ret; - return dw_mci_runtime_suspend(host); + if (host->cur_slot && + (mmc_can_gpio_cd(host->cur_slot->mmc) || + !mmc_card_is_removable(host->cur_slot->mmc))) + clk_disable_unprepare(host->biu_clk); + + return 0; } static int dw_mci_rockchip_runtime_resume(struct device *dev) { struct dw_mci *host = dev_get_drvdata(dev); + if (host->cur_slot && + (mmc_can_gpio_cd(host->cur_slot->mmc) || + !mmc_card_is_removable(host->cur_slot->mmc))) + clk_prepare_enable(host->biu_clk); + return dw_mci_runtime_resume(host); } #endif /* CONFIG_PM */ -- 2.3.7