diff mbox

[v2,23/26] mmc: sdhci: panic write: resume suspended host

Message ID 1352379984-18381-24-git-send-email-dragos.tatulea@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

dragos.tatulea@intel.com Nov. 8, 2012, 1:06 p.m. UTC
From: Adrian Hunter <adrian.hunter@intel.com>

Resume host when entering panic mode.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
---
 drivers/mmc/host/sdhci.c |   14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
diff mbox

Patch

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index ab3f5ce..496adc8 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2231,6 +2231,10 @@  static void sdhci_panic_begin(struct mmc_host *mmc)
 {
 	struct sdhci_host *host = mmc_priv(mmc);
 
+	if (host->runtime_suspended)
+		sdhci_runtime_resume_host(host);
+	else if (mmc->ios.vdd == 0)
+		sdhci_resume_host(host);
 	sdhci_writel(host, 0, SDHCI_SIGNAL_ENABLE);
 }
 
@@ -2741,10 +2745,12 @@  int sdhci_resume_host(struct sdhci_host *host)
 			host->ops->enable_dma(host);
 	}
 
-	ret = request_irq(host->irq, sdhci_irq, IRQF_SHARED,
-			  mmc_hostname(host->mmc), host);
-	if (ret)
-		return ret;
+	if (!mmc_am_panic_task(host->mmc)) {
+		ret = request_irq(host->irq, sdhci_irq, IRQF_SHARED,
+				  mmc_hostname(host->mmc), host);
+		if (ret)
+			return ret;
+	}
 
 	if ((host->mmc->pm_flags & MMC_PM_KEEP_POWER) &&
 	    (host->quirks2 & SDHCI_QUIRK2_HOST_OFF_CARD_ON)) {