summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorPavan Kunapuli <pkunapuli@nvidia.com>2012-06-25 15:42:55 +0530
committerLokesh Pathak <lpathak@nvidia.com>2012-07-31 08:55:49 -0700
commit6308fd8ea1d7291835b3b689779a5b58ac0cf47a (patch)
tree63ed5c828b65db4483ace68890c550cfa34c3071 /drivers/mmc
parent1339ef85328052f13af1fcb6d16134949591c480 (diff)
Revert "mmc: host: Disable SDIO card clock when idle"
Without card clock, inband interrupt is not working on some wifi chips. Bug 981683 This reverts commit b31946b34507209f26c6d709e23fd1c0cedd25f8. Change-Id: I2dd86edb2445bd6db7917adf509b7a018d31aaed Reviewed-on: http://git-master/r/110839 Signed-off-by: Pavan Kunapuli <pkunapuli@nvidia.com> Change-Id: I6f2266ac5b6bd9585272958b4b8a89af1b3cdffb Reviewed-on: http://git-master/r/119009 Reviewed-by: Lokesh Pathak <lpathak@nvidia.com> Tested-by: Lokesh Pathak <lpathak@nvidia.com>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/sdhci.c29
1 files changed, 8 insertions, 21 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index f86bf746a6e6..3a440dcf0f24 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1851,19 +1851,13 @@ int sdhci_enable(struct mmc_host *mmc)
struct sdhci_host *host = mmc_priv(mmc);
u16 clk;
- if (!mmc->card)
+ if (!mmc->card || mmc->card->type == MMC_TYPE_SDIO)
return 0;
if (mmc->ios.clock) {
- if (mmc->card->type != MMC_TYPE_SDIO) {
- if (host->ops->set_clock)
- host->ops->set_clock(host, mmc->ios.clock);
- sdhci_set_clock(host, mmc->ios.clock);
- } else {
- clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL);
- clk |= SDHCI_CLOCK_CARD_EN;
- sdhci_writew(host, clk, SDHCI_CLOCK_CONTROL);
- }
+ if (host->ops->set_clock)
+ host->ops->set_clock(host, mmc->ios.clock);
+ sdhci_set_clock(host, mmc->ios.clock);
}
return 0;
@@ -1874,19 +1868,12 @@ int sdhci_disable(struct mmc_host *mmc, int lazy)
struct sdhci_host *host = mmc_priv(mmc);
u16 clk;
- if (!mmc->card)
+ if (!mmc->card || mmc->card->type == MMC_TYPE_SDIO)
return 0;
- /* For SDIO cards, only disable the card clock. */
- if (mmc->card->type != MMC_TYPE_SDIO) {
- sdhci_set_clock(host, 0);
- if (host->ops->set_clock)
- host->ops->set_clock(host, 0);
- } else {
- clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL);
- clk &= ~SDHCI_CLOCK_CARD_EN;
- sdhci_writew(host, clk, SDHCI_CLOCK_CONTROL);
- }
+ sdhci_set_clock(host, 0);
+ if (host->ops->set_clock)
+ host->ops->set_clock(host, 0);
return 0;
}