MLK-11685-4 mmc: sdhci: do not enable card cd wakeup for gpio case
authorDong Aisheng <b29396@freescale.com>
Mon, 13 Jan 2014 10:27:58 +0000 (18:27 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:48:50 +0000 (14:48 -0500)
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>
drivers/mmc/host/sdhci.c

index 890e37a..3ea3e9d 100644 (file)
@@ -2809,6 +2809,7 @@ static irqreturn_t sdhci_thread_irq(int irq, void *dev_id)
  */
 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;
@@ -2818,7 +2819,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);
                irq_val &= ~(SDHCI_INT_CARD_INSERT | SDHCI_INT_CARD_REMOVE);
        }