After cleared the handled irq status, sdhci_irq will check the interrupt
status again at end. And it will loop back to handle the irq if any new
interrupts happened.
But card int will keep active all the time since its status is readonly
and can't be cleared at that time. So in case card int happend, the
function will be looped with max_loops (16 times).

Signed-off-by: Kevin Liu <kl...@marvell.com>
Signed-off-by: Jialing Fu <j...@marvell.com>
---
 drivers/mmc/host/sdhci.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 3bb9b88..664650b 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2431,6 +2431,8 @@ again:
        result = IRQ_HANDLED;
 
        intmask = sdhci_readl(host, SDHCI_INT_STATUS);
+       if (cardint)
+               intmask &= ~SDHCI_INT_CARD_INT;
        if (intmask && --max_loops)
                goto again;
 out:
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to