mmc: core: Improve fallback to speed modes if eMMC HS200 fails
authorUlf Hansson <ulf.hansson@linaro.org>
Thu, 3 Mar 2022 16:45:22 +0000 (17:45 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 15 Mar 2022 09:24:55 +0000 (10:24 +0100)
commit3b6c472822f8bdeaa3cea8290f5b4a210dca5585
tree95486b9df599c8b02b2589f64eb256fcc493196e
parente23b2f54db1dcdde8302e4ada41805c8297fac27
mmc: core: Improve fallback to speed modes if eMMC HS200 fails

In the error path of mmc_select_hs200() we are trying our best to restore
the card/host into a valid state. This makes sense, especially if we
encounter a simple switch error (-EBADMSG). However, rather than then
continue with using the legacy speed mode, let's try the other better speed
modes first. Additionally, let's update the card->mmc_avail_type to avoid
us from trying a broken HS200 mode again.

In an Amlogic S905W based TV box where the switch to HS200 mode fails for
the eMMC, this allows us to use the eMMC in DDR mode in favor of the legacy
mode, which greatly improves the performance.

Suggested-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Tested-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/20220303164522.129583-1-ulf.hansson@linaro.org
drivers/mmc/core/mmc.c