mmc: host: Disable SDIO card clock when idle for Tegra 3 only
[linux-2.6.git] / drivers / mmc / host / sdhci.c
index 6c60458..4955869 100644 (file)
@@ -1849,7 +1849,6 @@ static void sdhci_enable_preset_value(struct mmc_host *mmc, bool enable)
 int sdhci_enable(struct mmc_host *mmc)
 {
        struct sdhci_host *host = mmc_priv(mmc);
-       u16 clk;
 
        if (!mmc->card)
                return 0;
@@ -1860,9 +1859,8 @@ int sdhci_enable(struct mmc_host *mmc)
                                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_card_clock)
+                               host->ops->set_card_clock(host, mmc->ios.clock);
                }
        }
 
@@ -1872,7 +1870,6 @@ int sdhci_enable(struct mmc_host *mmc)
 int sdhci_disable(struct mmc_host *mmc, int lazy)
 {
        struct sdhci_host *host = mmc_priv(mmc);
-       u16 clk;
 
        if (!mmc->card)
                return 0;
@@ -1883,9 +1880,8 @@ int sdhci_disable(struct mmc_host *mmc, int lazy)
                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);
+               if (host->ops->set_card_clock)
+                       host->ops->set_card_clock(host, 0);
        }
 
        return 0;