diff options
Diffstat (limited to 'drivers/mmc/host/sdhci.c')
-rw-r--r-- | drivers/mmc/host/sdhci.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 0291ab37b4b9..05dde5f46ac0 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -2307,6 +2307,10 @@ int sdhci_suspend_host(struct sdhci_host *host, pm_message_t state) if (mmc->card && (mmc->card->type != MMC_TYPE_SDIO)) ret = mmc_suspend_host(host->mmc); + if (host->flags & MMC_PM_KEEP_POWER) + host->card_int_set = sdhci_readl(host, SDHCI_INT_ENABLE) & + SDHCI_INT_CARD_INT; + sdhci_mask_irqs(host, SDHCI_INT_ALL_MASK); if (host->vmmc) @@ -2350,7 +2354,8 @@ int sdhci_resume_host(struct sdhci_host *host) /* Enable card interrupt as it is overwritten in sdhci_init */ if ((mmc->caps & MMC_CAP_SDIO_IRQ) && (mmc->pm_flags & MMC_PM_KEEP_POWER)) - mmc->ops->enable_sdio_irq(mmc, true); + if (host->card_int_set) + mmc->ops->enable_sdio_irq(mmc, true); } } |