diff options
-rw-r--r-- | drivers/mmc/host/sdhci.c | 10 | ||||
-rw-r--r-- | include/linux/mmc/sdhci.h | 2 |
2 files changed, 9 insertions, 3 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index aa03ca7d5226..da1547ffc9da 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -2661,9 +2661,13 @@ int sdhci_add_host(struct sdhci_host *host) mmc_card_is_removable(mmc) && !(host->ops->get_cd)) mmc->caps |= MMC_CAP_NEEDS_POLL; - /* UHS-I mode(s) supported by the host controller. */ - if (host->version >= SDHCI_SPEC_300) - mmc->caps |= MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25; + if (host->quirks & SDHCI_QUIRK2_NO_1_8_V) + caps[1] &= ~(SDHCI_SUPPORT_SDR104 | SDHCI_SUPPORT_SDR50 | + SDHCI_SUPPORT_DDR50); + else + /* UHS-I mode(s) supported by the host controller. */ + if (host->version >= SDHCI_SPEC_300) + mmc->caps |= MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25; /* SDR104 supports also implies SDR50 support */ if (caps[1] & SDHCI_SUPPORT_SDR104) diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h index 5ee48390decc..db86304e1c28 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h @@ -93,6 +93,8 @@ struct sdhci_host { #define SDHCI_QUIRK_NON_STANDARD_TUNING (1ULL<<33) /* Controller doesn't calculate max_discard_to */ #define SDHCI_QUIRK_NO_CALC_MAX_DISCARD_TO (1ULL<<34) +/* The system physically doesn't support 1.8v, even if the host does */ +#define SDHCI_QUIRK2_NO_1_8_V (1ULL<<35) int irq; /* Device IRQ */ void __iomem *ioaddr; /* Mapped address */ |