aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/core/mmc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mmc/core/mmc.c')
-rw-r--r--drivers/mmc/core/mmc.c11
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
552static 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
554static const struct mmc_bus_ops mmc_ops = { 562static 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
561static void mmc_attach_bus_ops(struct mmc_host *host) 570static 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
575static const struct mmc_bus_ops mmc_ops_unsafe = { 585static 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
582static void mmc_attach_bus_ops(struct mmc_host *host) 593static void mmc_attach_bus_ops(struct mmc_host *host)