Index: drivers/mmc/host/sdhci.c |
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c |
index 3c6358f0d0524275116840e11ca9f4709dba04db..68d2e3635cb1b70d7ec8e7fe6c4173ad7e5ac3d0 100644 |
--- a/drivers/mmc/host/sdhci.c |
+++ b/drivers/mmc/host/sdhci.c |
@@ -1654,6 +1654,8 @@ 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); |
+ /* Save the original intmask to restore later */ |
+ host->save_intmask = sdhci_readl(host, SDHCI_INT_ENABLE); |
sdhci_mask_irqs(host, SDHCI_INT_ALL_MASK); |
if (host->vmmc) |
@@ -1695,6 +1697,9 @@ int sdhci_resume_host(struct sdhci_host *host) |
sdhci_enable_card_detection(host); |
+ /* Restore the original intmask */ |
+ sdhci_unmask_irqs(host, host->save_intmask); |
+ |
return ret; |
} |