diff options
| -rw-r--r-- | drivers/mmc/mmc.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index ee8863c123e3..ec8168ac75b1 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c | |||
| @@ -1178,14 +1178,29 @@ static void mmc_rescan(void *data) | |||
| 1178 | { | 1178 | { |
| 1179 | struct mmc_host *host = data; | 1179 | struct mmc_host *host = data; |
| 1180 | struct list_head *l, *n; | 1180 | struct list_head *l, *n; |
| 1181 | unsigned char power_mode; | ||
| 1181 | 1182 | ||
| 1182 | mmc_claim_host(host); | 1183 | mmc_claim_host(host); |
| 1183 | 1184 | ||
| 1184 | if (host->ios.power_mode == MMC_POWER_ON) | 1185 | /* |
| 1186 | * Check for removed cards and newly inserted ones. We check for | ||
| 1187 | * removed cards first so we can intelligently re-select the VDD. | ||
| 1188 | */ | ||
| 1189 | power_mode = host->ios.power_mode; | ||
| 1190 | if (power_mode == MMC_POWER_ON) | ||
| 1185 | mmc_check_cards(host); | 1191 | mmc_check_cards(host); |
| 1186 | 1192 | ||
| 1187 | mmc_setup(host); | 1193 | mmc_setup(host); |
| 1188 | 1194 | ||
| 1195 | /* | ||
| 1196 | * Some broken cards process CMD1 even in stand-by state. There is | ||
| 1197 | * no reply, but an ILLEGAL_COMMAND error is cached and returned | ||
| 1198 | * after next command. We poll for card status here to clear any | ||
| 1199 | * possibly pending error. | ||
| 1200 | */ | ||
| 1201 | if (power_mode == MMC_POWER_ON) | ||
| 1202 | mmc_check_cards(host); | ||
| 1203 | |||
| 1189 | if (!list_empty(&host->cards)) { | 1204 | if (!list_empty(&host->cards)) { |
| 1190 | /* | 1205 | /* |
| 1191 | * (Re-)calculate the fastest clock rate which the | 1206 | * (Re-)calculate the fastest clock rate which the |
