summaryrefslogtreecommitdiff
path: root/drivers/mmc/host/sdhci.c
diff options
context:
space:
mode:
authorDong Aisheng <b29396@freescale.com>2014-01-13 18:27:58 +0800
committerNitin Garg <nitin.garg@nxp.com>2016-01-14 11:01:48 -0600
commitcb5c4a5f85bb0236c90aa82df68b1dc38470436f (patch)
treee3856beb6f23a2443d720cb6923f8cff091ef114 /drivers/mmc/host/sdhci.c
parentd20625655ba1226d55d2508015e8930d80227deb (diff)
MLK-11685-4 mmc: sdhci: do not enable card cd wakeup for gpio case
Do not need to enable the controller card cd interrupt wakeup if using GPIO as card detect since it's meaningless. Signed-off-by: Dong Aisheng <b29396@freescale.com> (cherry picked from commit e66bb4978fe4b4fb96e81a1a083c16f84f5aa710) Signed-off-by: Haibo Chen <haibo.chen@freescale.com>
Diffstat (limited to 'drivers/mmc/host/sdhci.c')
-rw-r--r--drivers/mmc/host/sdhci.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index b4a3b5de1246..f9f65945da5f 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2664,6 +2664,7 @@ static irqreturn_t sdhci_thread_irq(int irq, void *dev_id)
#ifdef CONFIG_PM
void sdhci_enable_irq_wakeups(struct sdhci_host *host)
{
+ int gpio_cd = mmc_gpio_get_cd(host->mmc);
u8 val;
u8 mask = SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE
| SDHCI_WAKE_ON_INT;
@@ -2671,7 +2672,8 @@ void sdhci_enable_irq_wakeups(struct sdhci_host *host)
val = sdhci_readb(host, SDHCI_WAKE_UP_CONTROL);
val |= mask ;
/* Avoid fake wake up */
- if (host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION)
+ if (host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION ||
+ !IS_ERR_VALUE(gpio_cd))
val &= ~(SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE);
sdhci_writeb(host, val, SDHCI_WAKE_UP_CONTROL);
}