• Ulf Hansson's avatar
    mmc: core: Allow CMD13 polling when switching to HS mode for mmc · 53e60650
    Ulf Hansson authored
    In cases when the mmc host doesn't support HW busy detection, polling for a
    card being busy by using CMD13 is beneficial. That is because, instead of
    waiting a fixed amount of time, 500ms or the generic CMD6 time from
    EXT_CSD, we find out a lot sooner when the card stops signaling busy. This
    leads to a significant decreased total initialization time for the mmc
    card.
    
    However, to allow polling with CMD13 during a bus timing change operation,
    such as switching to HS mode, we first need to update the mmc host's bus
    timing before starting to poll. Deal with that, simply by providing
    MMC_TIMING_MMC_HS as the timing parameter to __mmc_switch() from
    mmc_select_hs().
    
    By telling __mmc_switch() to allow polling with CMD13, also makes it
    validate the CMD6 status, thus we can remove the corresponding checks.
    
    When switching to HS400ES, the mmc_select_hs() function is called in one of
    the intermediate steps. To still prevent CMD13 polling for HS400ES, let's
    call the __mmc_switch() function in this path as it enables us to keep
    using the existing method.
    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>
    53e60650
mmc.c 55.8 KB