aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDong Aisheng <aisheng.dong@freescale.com>2015-05-27 06:13:31 -0400
committerUlf Hansson <ulf.hansson@linaro.org>2015-06-01 03:07:18 -0400
commit4245afff8b241426792d60b5b9078583f52d4029 (patch)
treee58cc587371e6ad3f0a1a3c72dd4261cac873abb
parent913d4951a50fba6acd96491c5b2f089a69308a60 (diff)
mmc: sdhci-esdhc-imx: add quirk SDHCI_QUIRK2_BROKEN_HS200 for imx6qdl
The iMX6Q/DL can not support HS200 mode while iMX6SL and iMX6SX can, so introduce a new flag to distinguish them. Signed-off-by: Dong Aisheng <aisheng.dong@freescale.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
-rw-r--r--drivers/mmc/host/sdhci-esdhc-imx.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index bcb56734e92f..faf0cb910c96 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -118,6 +118,8 @@
118 * when reading data from the card 118 * when reading data from the card
119 */ 119 */
120#define ESDHC_FLAG_ERR004536 BIT(7) 120#define ESDHC_FLAG_ERR004536 BIT(7)
121/* The IP supports HS200 mode */
122#define ESDHC_FLAG_HS200 BIT(8)
121 123
122struct esdhc_soc_data { 124struct esdhc_soc_data {
123 u32 flags; 125 u32 flags;
@@ -145,12 +147,13 @@ static struct esdhc_soc_data usdhc_imx6q_data = {
145 147
146static struct esdhc_soc_data usdhc_imx6sl_data = { 148static struct esdhc_soc_data usdhc_imx6sl_data = {
147 .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING 149 .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING
148 | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_ERR004536, 150 | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_ERR004536
151 | ESDHC_FLAG_HS200,
149}; 152};
150 153
151static struct esdhc_soc_data usdhc_imx6sx_data = { 154static struct esdhc_soc_data usdhc_imx6sx_data = {
152 .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING 155 .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING
153 | ESDHC_FLAG_HAVE_CAP1, 156 | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200,
154}; 157};
155 158
156struct pltfm_imx_data { 159struct pltfm_imx_data {
@@ -1004,6 +1007,9 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
1004 host->quirks2 |= SDHCI_QUIRK2_PRESET_VALUE_BROKEN; 1007 host->quirks2 |= SDHCI_QUIRK2_PRESET_VALUE_BROKEN;
1005 host->mmc->caps |= MMC_CAP_1_8V_DDR; 1008 host->mmc->caps |= MMC_CAP_1_8V_DDR;
1006 1009
1010 if (!(imx_data->socdata->flags & ESDHC_FLAG_HS200))
1011 host->quirks2 |= SDHCI_QUIRK2_BROKEN_HS200;
1012
1007 /* 1013 /*
1008 * errata ESDHC_FLAG_ERR004536 fix for MX6Q TO1.2 and MX6DL 1014 * errata ESDHC_FLAG_ERR004536 fix for MX6Q TO1.2 and MX6DL
1009 * TO1.1, it's harmless for MX6SL 1015 * TO1.1, it's harmless for MX6SL