diff options
Diffstat (limited to 'drivers/mmc/core/mmc.c')
-rw-r--r-- | drivers/mmc/core/mmc.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 995db1853a8..27e842df6a6 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c | |||
@@ -549,6 +549,14 @@ static void mmc_resume(struct mmc_host *host) | |||
549 | 549 | ||
550 | } | 550 | } |
551 | 551 | ||
552 | static void mmc_power_restore(struct mmc_host *host) | ||
553 | { | ||
554 | host->card->state &= ~MMC_STATE_HIGHSPEED; | ||
555 | mmc_claim_host(host); | ||
556 | mmc_init_card(host, host->ocr, host->card); | ||
557 | mmc_release_host(host); | ||
558 | } | ||
559 | |||
552 | #ifdef CONFIG_MMC_UNSAFE_RESUME | 560 | #ifdef CONFIG_MMC_UNSAFE_RESUME |
553 | 561 | ||
554 | static const struct mmc_bus_ops mmc_ops = { | 562 | static const struct mmc_bus_ops mmc_ops = { |
@@ -556,6 +564,7 @@ static const struct mmc_bus_ops mmc_ops = { | |||
556 | .detect = mmc_detect, | 564 | .detect = mmc_detect, |
557 | .suspend = mmc_suspend, | 565 | .suspend = mmc_suspend, |
558 | .resume = mmc_resume, | 566 | .resume = mmc_resume, |
567 | .power_restore = mmc_power_restore, | ||
559 | }; | 568 | }; |
560 | 569 | ||
561 | static void mmc_attach_bus_ops(struct mmc_host *host) | 570 | static void mmc_attach_bus_ops(struct mmc_host *host) |
@@ -570,6 +579,7 @@ static const struct mmc_bus_ops mmc_ops = { | |||
570 | .detect = mmc_detect, | 579 | .detect = mmc_detect, |
571 | .suspend = NULL, | 580 | .suspend = NULL, |
572 | .resume = NULL, | 581 | .resume = NULL, |
582 | .power_restore = mmc_power_restore, | ||
573 | }; | 583 | }; |
574 | 584 | ||
575 | static const struct mmc_bus_ops mmc_ops_unsafe = { | 585 | static const struct mmc_bus_ops mmc_ops_unsafe = { |
@@ -577,6 +587,7 @@ static const struct mmc_bus_ops mmc_ops_unsafe = { | |||
577 | .detect = mmc_detect, | 587 | .detect = mmc_detect, |
578 | .suspend = mmc_suspend, | 588 | .suspend = mmc_suspend, |
579 | .resume = mmc_resume, | 589 | .resume = mmc_resume, |
590 | .power_restore = mmc_power_restore, | ||
580 | }; | 591 | }; |
581 | 592 | ||
582 | static void mmc_attach_bus_ops(struct mmc_host *host) | 593 | static void mmc_attach_bus_ops(struct mmc_host *host) |