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 <ohad@wizery.com> Reviewed-by: Chris Ball <cjb@laptop.org> Signed-off-by: Chris Ball <cjb@laptop.org>
This commit is contained in:
Родитель
8f230f454f
Коммит
30201e7f3a
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче