summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDong Aisheng <b29396@freescale.com>2013-11-15 17:54:36 +0800
committerDong Aisheng <b29396@freescale.com>2013-11-22 14:59:08 +0800
commit2ced65a11885ea84c6d3cd2ec8832d489bb0c3f7 (patch)
treebd022df250db0d12cfe455f9f01988b83eaf8437
parentcec6ed97f09ee97efb32f395e5546b3b39822892 (diff)
ENGR00289279 mmc: sdhci: get runtime pm when sdio irq is enabled
SDIO cards may need clock to send the card interrupt to host. Thus, we get runtime pm when sdio irq is enabled to prevent the clock resource is released and put it when sdio irq is disabled. Signed-off-by: Dong Aisheng <b29396@freescale.com>
-rw-r--r--drivers/mmc/host/sdhci.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index c229bb5f76e4..fc63c23a1d6b 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1697,6 +1697,9 @@ static int sdhci_get_ro(struct mmc_host *mmc)
static void sdhci_enable_sdio_irq_nolock(struct sdhci_host *host, int enable)
{
+ if (enable)
+ sdhci_runtime_pm_get(host);
+
if (host->flags & SDHCI_DEVICE_DEAD)
goto out;
@@ -1715,6 +1718,9 @@ static void sdhci_enable_sdio_irq_nolock(struct sdhci_host *host, int enable)
sdhci_mask_irqs(host, SDHCI_INT_CARD_INT);
out:
mmiowb();
+
+ if (!enable)
+ sdhci_runtime_pm_put(host);
}
static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)