From d19acf44b561b166c9ac2cfd7f84fe145004d917 Mon Sep 17 00:00:00 2001 From: Bitan Biswas Date: Fri, 9 May 2014 12:41:47 +0530 Subject: mmc: sdhci: set_ios: delayed clock gate flush Before sdhci set_ios call we need to flush outstanding delayed clock gate work. Else, it could cause unintended clock gate resulting in hard hang. - unconditionally cancel delayed clock gate work since sometimes mmc->card->type is uninitialized. bug 200000303 Change-Id: I208a8a15dfd4f8d8ae1614d0fadee6deb5a55bb0 Signed-off-by: Bitan Biswas Reviewed-on: http://git-master/r/407407 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Naveen Kumar Arepalli Reviewed-by: Pavan Kunapuli Reviewed-by: Venu Byravarasu --- drivers/mmc/host/sdhci.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'drivers/mmc') diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 2bf4f3d83df6..9168f676ec2c 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1760,6 +1760,9 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios) int vdd_bit = -1; u8 ctrl; + /* cancel delayed clk gate work */ + cancel_delayed_work_sync(&host->delayed_clk_gate_wrk); + /* Do any required preparations prior to setting ios */ if (host->ops->platform_ios_config_enter) host->ops->platform_ios_config_enter(host, ios); @@ -2469,9 +2472,8 @@ int sdhci_enable(struct mmc_host *mmc) if (!mmc->card || !(mmc->caps2 & MMC_CAP2_CLOCK_GATING)) return 0; - if (IS_DELAYED_CLK_GATE(host)) - /* cancel sdio clk gate work */ - cancel_delayed_work_sync(&host->delayed_clk_gate_wrk); + /* cancel delayed clk gate work */ + cancel_delayed_work_sync(&host->delayed_clk_gate_wrk); sysedp_set_state(host->sysedpc, 1); @@ -3130,7 +3132,7 @@ int sdhci_suspend_host(struct sdhci_host *host) host->card_int_set = sdhci_readl(host, SDHCI_INT_ENABLE) & SDHCI_INT_CARD_INT; - /* cancel sdio clk gate work */ + /* cancel delayed clk gate work */ cancel_delayed_work_sync(&host->delayed_clk_gate_wrk); if (!device_may_wakeup(mmc_dev(host->mmc))) { -- cgit v1.2.3