From: Ohad Ben-Cohen Date: Sun, 28 Nov 2010 05:21:28 +0000 (+0200) Subject: mmc: skip detection of nonremovable cards on rescan X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=30201e7f3ac639fe98fcd25d40346b65dde9ecba;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git mmc: skip detection of nonremovable cards on rescan mmc_rescan() checks whether registered cards are still present before skipping them, by calling the bus-specific ->detect() handler. With buses that support runtime PM, the card may be powered off at this point, so they need to be powered on and fully reinitialized before ->detect() executes. This whole process is redundant with nonremovable cards; in those cases, we can safely skip calling ->detect() and implicitly assume its success. Signed-off-by: Ohad Ben-Cohen Reviewed-by: Chris Ball Signed-off-by: Chris Ball --- diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 722af2dce3bb..9683d4d3fced 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -1506,8 +1506,12 @@ void mmc_rescan(struct work_struct *work) mmc_bus_get(host); - /* if there is a card registered, check whether it is still present */ - if ((host->bus_ops != NULL) && host->bus_ops->detect && !host->bus_dead) + /* + * if there is a _removable_ card registered, check whether it is + * still present + */ + if (host->bus_ops && host->bus_ops->detect && !host->bus_dead + && mmc_card_is_removable(host)) host->bus_ops->detect(host); mmc_bus_put(host);