mmc: core: Retry instead of ignore at CRC errors when polling for busy
authorUlf Hansson <ulf.hansson@linaro.org>
Tue, 8 Nov 2016 12:53:36 +0000 (13:53 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 29 Nov 2016 08:05:22 +0000 (09:05 +0100)
commit437590a123b6617a52e0b136cd25fe3616e4d50f
treee69f2cf578655c93321ca5cfc0f1b68ace05eb71
parent8f743d03948db721dffbc1de53f0d9a5cd4cef05
mmc: core: Retry instead of ignore at CRC errors when polling for busy

After a CMD6 command has been sent, the __mmc_switch() function might be
advised to poll the card for busy by using CMD13 and also by ignoring CRC
errors.

In the case of ignoring CRC errors, the mmc core tells the mmc host to also
ignore these errors via masking the MMC_RSP_CRC response flag. This seems
wrong, as it leads to that the mmc host could propagate an unreliable
response, instead of a proper error code.

What we really want, is not to ignore CRC errors but instead retry the
polling attempt. So, let's change this by treating a CRC error as the card
is still being busy and thus continue to run the polling loop.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Tested-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
drivers/mmc/core/mmc_ops.c