aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorNicolas Pitre <nico@cam.org>2009-05-14 21:28:05 -0400
committerPierre Ossman <pierre@ossman.eu>2009-06-03 15:50:33 -0400
commit9ca6944cbfad11f2368cf10292e7f3eb036386c2 (patch)
tree34ccddcff0f07166da9d053d5ee02181797a27d3 /drivers
parente749c6f21fd7dc618f61dd178b4ee739c3cb1c31 (diff)
mvsdio: ignore high speed timing requests from the core
Empirical evidences show that this is causing far more problems than it solves when this mode is enabled in the host hardware. Amongst those cards that are known to be non functional when this bit is set are: A-Data "Speedy" 2GB SD card Kodak 512MB SD card Ativa 1GB MicroSD card Marvell 8688 (WIFI/Bluetooth) SDIO card Since those cards do work on other host controllers which do honnor the hs timing, the issue must be with this particular host hardware. Signed-off-by: Nicolas Pitre <nico@marvell.com> Signed-off-by: Pierre Ossman <pierre@ossman.eu>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/host/mvsdio.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
index 1783043a26af..9d3cfa9909c9 100644
--- a/drivers/mmc/host/mvsdio.c
+++ b/drivers/mmc/host/mvsdio.c
@@ -620,9 +620,18 @@ static void mvsd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
620 if (ios->bus_width == MMC_BUS_WIDTH_4) 620 if (ios->bus_width == MMC_BUS_WIDTH_4)
621 ctrl_reg |= MVSD_HOST_CTRL_DATA_WIDTH_4_BITS; 621 ctrl_reg |= MVSD_HOST_CTRL_DATA_WIDTH_4_BITS;
622 622
623 /*
624 * The HI_SPEED_EN bit is causing trouble with many (but not all)
625 * high speed SD, SDHC and SDIO cards. Not enabling that bit
626 * makes all cards work. So let's just ignore that bit for now
627 * and revisit this issue if problems for not enabling this bit
628 * are ever reported.
629 */
630#if 0
623 if (ios->timing == MMC_TIMING_MMC_HS || 631 if (ios->timing == MMC_TIMING_MMC_HS ||
624 ios->timing == MMC_TIMING_SD_HS) 632 ios->timing == MMC_TIMING_SD_HS)
625 ctrl_reg |= MVSD_HOST_CTRL_HI_SPEED_EN; 633 ctrl_reg |= MVSD_HOST_CTRL_HI_SPEED_EN;
634#endif
626 635
627 host->ctrl = ctrl_reg; 636 host->ctrl = ctrl_reg;
628 mvsd_write(MVSD_HOST_CTRL, ctrl_reg); 637 mvsd_write(MVSD_HOST_CTRL, ctrl_reg);