aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc
diff options
context:
space:
mode:
authorAlexey Neyman <stilor@att.net>2013-11-05 22:40:36 -0500
committerChris Ball <cjb@laptop.org>2013-11-08 14:14:09 -0500
commit0a8fd09ca9d4564a1f906b530ea08415a61cff58 (patch)
tree63c938b268beb01c2d866aac322a60d142f931af /drivers/mmc
parent4d22378221bd0ed69c2e99408d31c108d72aeb80 (diff)
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.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 6785fb1dc5c6..bd8a0982aec3 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2501,6 +2501,14 @@ again:
2501 result = IRQ_HANDLED; 2501 result = IRQ_HANDLED;
2502 2502
2503 intmask = sdhci_readl(host, SDHCI_INT_STATUS); 2503 intmask = sdhci_readl(host, SDHCI_INT_STATUS);
2504
2505 /*
2506 * If we know we'll call the driver to signal SDIO IRQ, disregard
2507 * further indications of Card Interrupt in the status to avoid a
2508 * needless loop.
2509 */
2510 if (cardint)
2511 intmask &= ~SDHCI_INT_CARD_INT;
2504 if (intmask && --max_loops) 2512 if (intmask && --max_loops)
2505 goto again; 2513 goto again;
2506out: 2514out: