summaryrefslogtreecommitdiff
path: root/drivers/mmc/host
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2014-06-24 13:47:49 +0200
committerStefan Agner <stefan.agner@toradex.com>2014-07-21 14:26:21 +0200
commit29b19ff42a7d4c609f824c13ca139eef7332ff1f (patch)
treeb23a3d8879cc473d9804582ceee93e24452119f6 /drivers/mmc/host
parentff09771639a39c834f364a75faa49bc44bac901e (diff)
mmc: tegra: use 1.8V quirk only on affected instances
The 1.8V quirk also affected the internal eMMC which disabled newer modes such as SDR50, SDR104 and DDR50. This in turn lead to an out of spec usage since the clock was still 50MHz. By creating a no_1v8 field in the platform data we can now enable this work around on a per-instance basis. Hence we enable the quirk only on the controllers which are connected to the external SD-slots.
Diffstat (limited to 'drivers/mmc/host')
-rw-r--r--drivers/mmc/host/sdhci-tegra.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
index 73b65ce3089e..8b79ae82793e 100644
--- a/drivers/mmc/host/sdhci-tegra.c
+++ b/drivers/mmc/host/sdhci-tegra.c
@@ -943,11 +943,6 @@ static struct sdhci_pltfm_data sdhci_tegra_pdata = {
SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC |
SDHCI_QUIRK_NO_CALC_MAX_DISCARD_TO |
SDHCI_QUIRK_BROKEN_CARD_DETECTION |
-#if defined(CONFIG_MACH_APALIS_T30) || defined(CONFIG_MACH_COLIBRI_T30)
-/* Hack: SDR12, SDR25, SDR50, SDR104 and DDR50 all require 1.8V signalling which
- our current T30 designs can't do. */
- SDHCI_QUIRK2_NO_1_8_V |
-#endif
0,
.ops = &tegra_sdhci_ops,
};
@@ -982,6 +977,13 @@ static int __devinit sdhci_tegra_probe(struct platform_device *pdev)
goto err_no_mem;
}
+ /*
+ * Hack: SDR12, SDR25, SDR50, SDR104 and DDR50 all require 1.8V
+ * signalling which our current T30 designs can't do.
+ */
+ if (plat->no_1v8)
+ host->quirks |= SDHCI_QUIRK2_NO_1_8_V;
+
#ifdef CONFIG_MMC_EMBEDDED_SDIO
if (plat->mmc_data.embedded_sdio)
mmc_set_embedded_sdio_data(host->mmc,