diff options
author | Alexey Neyman <stilor@att.net> | 2013-11-05 19:40:36 -0800 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2013-11-08 14:14:09 -0500 |
commit | 0a8fd09ca9d4564a1f906b530ea08415a61cff58 (patch) | |
tree | 63c938b268beb01c2d866aac322a60d142f931af /drivers/mmc | |
parent | 4d22378221bd0ed69c2e99408d31c108d72aeb80 (diff) | |
download | op-kernel-dev-0a8fd09ca9d4564a1f906b530ea08415a61cff58.zip op-kernel-dev-0a8fd09ca9d4564a1f906b530ea08415a61cff58.tar.gz |
mmc: sdhci: Avoid needless loop while handling SDIO interrupts in sdhci_irq
Ignore Card Interrupt bit in the interrupt status if we already
know that mmc_signal_sdio_irq() is going to be called at the end of
sdhci_irq(). This avoids a needless loop in sdhci_irq() repeatedly
reading interrupt status and doing nothing.
Signed-off-by: Alexey Neyman <stilor@att.net>
Acked-by: Dong Aisheng <b29396@freescale.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/sdhci.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 6785fb1..bd8a098 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -2501,6 +2501,14 @@ again: result = IRQ_HANDLED; intmask = sdhci_readl(host, SDHCI_INT_STATUS); + + /* + * If we know we'll call the driver to signal SDIO IRQ, disregard + * further indications of Card Interrupt in the status to avoid a + * needless loop. + */ + if (cardint) + intmask &= ~SDHCI_INT_CARD_INT; if (intmask && --max_loops) goto again; out: |