]> git.sur5r.net Git - u-boot/commitdiff
mmc: add host_caps checking avoid switch card improperly
authorMacpaul Lin <macpaul@andestech.com>
Mon, 28 Nov 2011 16:31:09 +0000 (16:31 +0000)
committerAndy Fleming <afleming@freescale.com>
Mon, 9 Jan 2012 03:28:16 +0000 (21:28 -0600)
Add a host capability checking to avoid the mmc stack
switch the card to HIGHSPEED mode when the card supports
HIGHSPEED while the host doesn't.

This patch avoid furthur transaction problem when the
mmc/sd card runs different mode to the host.

Signed-off-by: Macpaul Lin <macpaul@andestech.com>
drivers/mmc/mmc.c

index 21665ecc5b9288356becf9f0269494b1748374f3..98abf1c8e8d70eba58cb028c1c95161111197822 100644 (file)
@@ -785,6 +785,16 @@ retry_scr:
        if (!(__be32_to_cpu(switch_status[3]) & SD_HIGHSPEED_SUPPORTED))
                return 0;
 
+       /*
+        * If the host doesn't support SD_HIGHSPEED, do not switch card to
+        * HIGHSPEED mode even if the card support SD_HIGHSPPED.
+        * This can avoid furthur problem when the card runs in different
+        * mode between the host.
+        */
+       if (!((mmc->host_caps & MMC_MODE_HS_52MHz) &&
+               (mmc->host_caps & MMC_MODE_HS)))
+               return 0;
+
        err = sd_switch(mmc, SD_SWITCH_SWITCH, 0, 1, (u8 *)switch_status);
 
        if (err)