• Ulf Hansson's avatar
    mmc: core: Check SWITCH_ERROR bit from each CMD13 response when polling · 5ec32f84
    Ulf Hansson authored
    According to the JEDEC specification, the SWITCH_ERROR bit in the device
    status from a R1 response, is an error bit which may be cleared as soon as
    the response that reports the error is sent.
    
    When polling with CMD13 to find out when the card stops signaling busy
    after a CMD6 has been sent, we currently parse only the last CMD13 response
    for the SWITCH_ERROR bit. Consequentially we could loose important
    information about the card.
    
    In worst case if the card stops signaling busy within the allowed timeout,
    we could end up believing that the CMD6 command completed successfully,
    when in fact it didn't.
    
    To improve the behaviour, let's parse each CMD13 response to see if the
    SWITCH_ERROR bit is set in the device status. In such case, we abort the
    polling loop and report the error.
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Tested-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    5ec32f84
mmc_ops.c 18.4 KB