Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc:
MMC: Do not set unsupported bits in OCR response
MMC: Poll card status after rescanning cards

+17 -2
+17 -2
drivers/mmc/mmc.c
··· 475 475 if (bit) { 476 476 bit -= 1; 477 477 478 - ocr = 3 << bit; 478 + ocr &= 3 << bit; 479 479 480 480 host->ios.vdd = bit; 481 481 mmc_set_ios(host); ··· 1178 1178 { 1179 1179 struct mmc_host *host = data; 1180 1180 struct list_head *l, *n; 1181 + unsigned char power_mode; 1181 1182 1182 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 1191 mmc_check_cards(host); 1186 1192 1187 1193 mmc_setup(host); 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); 1188 1203 1189 1204 if (!list_empty(&host->cards)) { 1190 1205 /*