diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mmc/core/sdio.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index c3ad1058cd31..42a949b723b8 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c | |||
@@ -560,6 +560,19 @@ static void mmc_sdio_detect(struct mmc_host *host) | |||
560 | 560 | ||
561 | mmc_release_host(host); | 561 | mmc_release_host(host); |
562 | 562 | ||
563 | /* | ||
564 | * Tell PM core it's OK to power off the card now. | ||
565 | * | ||
566 | * The _sync variant is used in order to ensure that the card | ||
567 | * is left powered off in case an error occurred, and the card | ||
568 | * is going to be removed. | ||
569 | * | ||
570 | * Since there is no specific reason to believe a new user | ||
571 | * is about to show up at this point, the _sync variant is | ||
572 | * desirable anyway. | ||
573 | */ | ||
574 | pm_runtime_put_sync(&host->card->dev); | ||
575 | |||
563 | out: | 576 | out: |
564 | if (err) { | 577 | if (err) { |
565 | mmc_sdio_remove(host); | 578 | mmc_sdio_remove(host); |
@@ -568,9 +581,6 @@ out: | |||
568 | mmc_detach_bus(host); | 581 | mmc_detach_bus(host); |
569 | mmc_release_host(host); | 582 | mmc_release_host(host); |
570 | } | 583 | } |
571 | |||
572 | /* Tell PM core that we're done */ | ||
573 | pm_runtime_put(&host->card->dev); | ||
574 | } | 584 | } |
575 | 585 | ||
576 | /* | 586 | /* |