|
@@ -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)
|