Merge branch 'android-2.6.36' into android-tegra-2.6.36
authorColin Cross <ccross@android.com>
Fri, 10 Jun 2011 00:48:27 +0000 (17:48 -0700)
committerColin Cross <ccross@android.com>
Fri, 10 Jun 2011 00:48:27 +0000 (17:48 -0700)
Conflicts:
drivers/mmc/host/sdhci.c

Change-Id: I9a048b52a7f82631caf222c5f273265bb9927675

1  2 
drivers/mmc/host/sdhci.c
drivers/mmc/host/sdhci.h

index 7577da76fbb2f192f4b1118ba49296e328ee1656,a76aaf1debf1244cc41633f5b8fd8b8821c897ad..ba32a2ef93a1a8804fbb5c0595c08449f0949b3b
@@@ -1226,9 -1220,34 +1226,34 @@@ static int sdhci_get_ro(struct mmc_hos
  
        if (host->quirks & SDHCI_QUIRK_INVERTED_WRITE_PROTECT)
                return !!(present & SDHCI_WRITE_PROTECT);
 -      return !(present & SDHCI_WRITE_PROTECT);
 +      return present;
  }
  
+ static int sdhci_enable(struct mmc_host *mmc)
+ {
+        struct sdhci_host *host = mmc_priv(mmc);
+        if (!mmc->card || mmc->card->type == MMC_TYPE_SDIO)
+                return 0;
+        if (mmc->ios.clock)
+                sdhci_set_clock(host, mmc->ios.clock);
+        return 0;
+ }
+ static int sdhci_disable(struct mmc_host *mmc, int lazy)
+ {
+        struct sdhci_host *host = mmc_priv(mmc);
+        if (!mmc->card || mmc->card->type == MMC_TYPE_SDIO)
+                return 0;
+        sdhci_set_clock(host, 0);
+        return 0;
+ }
  static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)
  {
        struct sdhci_host *host;
@@@ -1871,8 -1856,11 +1898,13 @@@ int sdhci_add_host(struct sdhci_host *h
        if (host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION)
                mmc->caps |= MMC_CAP_NEEDS_POLL;
  
+       if (host->quirks & SDHCI_QUIRK_RUNTIME_DISABLE) {
+               mmc->caps |= MMC_CAP_DISABLE;
+               mmc_set_disable_delay(mmc, 50);
+       }
 +      mmc->caps |= MMC_CAP_ERASE;
 +
        mmc->ocr_avail = 0;
        if (caps & SDHCI_CAN_VDD_330)
                mmc->ocr_avail |= MMC_VDD_32_33|MMC_VDD_33_34;
Simple merge