From: Colin Cross Date: Fri, 10 Jun 2011 00:48:27 +0000 (-0700) Subject: Merge branch 'android-2.6.36' into android-tegra-2.6.36 X-Git-Tag: firefly_0821_release~9833^2~1 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=321fc8e64a54be22308bee68eaafd81672eb6c45;p=firefly-linux-kernel-4.4.55.git Merge branch 'android-2.6.36' into android-tegra-2.6.36 Conflicts: drivers/mmc/host/sdhci.c Change-Id: I9a048b52a7f82631caf222c5f273265bb9927675 --- 321fc8e64a54be22308bee68eaafd81672eb6c45 diff --cc drivers/mmc/host/sdhci.c index 7577da76fbb2,a76aaf1debf1..ba32a2ef93a1 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@@ -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;