@@ -2503,13 +2503,13 @@ static int mmc_rescan_try_freq(struct mmc_host *host, unsigned freq)
mmc_send_if_cond(host, host->ocr_avail);
/* Order's important: probe SDIO, then SD, then MMC */
- if (!(host->caps2 & MMC_CAP2_NO_SDIO))
- if (!mmc_attach_sdio(host))
- return 0;
+ if (!(host->caps2 & MMC_CAP2_NO_SDIO) && !mmc_attach_sdio(host))
+ return 0;
- if (!mmc_attach_sd(host))
+ if (!(host->caps2 & MMC_CAP2_NO_SD) && !mmc_attach_sd(host))
return 0;
- if (!mmc_attach_mmc(host))
+
+ if (!(host->caps2 & MMC_CAP2_NO_MMC) && !mmc_attach_mmc(host))
return 0;
mmc_power_off(host);
We should skip sending some unnecessary cmds during initialization if we know that this controller can't support the claimed function. In this way, we provide the capabilities for DT to decide whether they need to reduce booting time if they know a slot is just only for one card type. We also don't want to break the backward compatibility if not assigning any one of these caps for existing dts or dtb. So this patch should be safe. Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> --- drivers/mmc/core/core.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)