From b0b23fee0c630e00e5a117a1fc48cf11de356822 Mon Sep 17 00:00:00 2001 From: Valentine Barshak Date: Fri, 25 Oct 2019 00:59:49 +0300 Subject: [PATCH] mmc: core: mmc: Try other timings if the higher one fails Do not bail out in case the higher supported timing setup fails. Try other supported timings as well. Signed-off-by: Valentine Barshak --- drivers/mmc/core/mmc.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index bad5c1b..c7c1c54 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -1473,12 +1473,21 @@ static int mmc_select_timing(struct mmc_card *card) if (!mmc_can_ext_csd(card)) goto bus_speed; - if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS400ES) + if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS400ES) { err = mmc_select_hs400es(card); - else if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200) + if (!err) + goto bus_speed; + } + if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200) { err = mmc_select_hs200(card); - else if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS) + if (!err) + goto bus_speed; + } + if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS) { err = mmc_select_hs(card); + if (!err) + goto bus_speed; + } if (err && err != -EBADMSG) return err; -- 2.7.4