From: Andrew Gabbasov Date: Thu, 25 Dec 2014 16:22:25 +0000 (-0600) Subject: mmc: Skip changing bus width for MMC cards earlier than version 4.0 X-Git-Tag: v2015.04-rc1~69^2 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=fc5b32fbf3bd43dabaf409e424e0bfb9a1b4df26;p=oweals%2Fu-boot.git mmc: Skip changing bus width for MMC cards earlier than version 4.0 Wider bus widths (larger than default 1 bit) appeared in MMC standard version 4.0. So, for MMC cards of any earlier version trying to change the bus width (including ext_csd comparison) does not make any sense. It may work incorrectly and at least cause unnecessary timeouts. So, just skip the entire bus width related activity for earlier versions. Signed-off-by: Andrew Gabbasov Tested-by: Alexey Brodkin --- diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index bdd7894231..b8039cd092 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -486,7 +486,7 @@ static int mmc_change_freq(struct mmc *mmc) char cardtype; int err; - mmc->card_caps = MMC_MODE_4BIT | MMC_MODE_8BIT; + mmc->card_caps = 0; if (mmc_host_is_spi(mmc)) return 0; @@ -495,6 +495,8 @@ static int mmc_change_freq(struct mmc *mmc) if (mmc->version < MMC_VERSION_4) return 0; + mmc->card_caps |= MMC_MODE_4BIT | MMC_MODE_8BIT; + err = mmc_send_ext_csd(mmc, ext_csd); if (err) @@ -1349,7 +1351,8 @@ static int mmc_startup(struct mmc *mmc) mmc->tran_speed = 50000000; else mmc->tran_speed = 25000000; - } else { + } else if (mmc->version >= MMC_VERSION_4) { + /* Only version 4 of MMC supports wider bus widths */ int idx; /* An array of possible bus widths in order of preference */