sdhci: make isr tolerant of read errors
authorMark Lord <lkml@rtr.ca>
Tue, 6 Mar 2007 12:30:13 +0000 (13:30 +0100)
committerPierre Ossman <drzeus@drzeus.cx>
Tue, 6 Mar 2007 12:30:13 +0000 (13:30 +0100)
The interrupt is shared with another device, which resumes earlier than the
sdhci controller, and generates an interrupt.

The sdhci interrupt handler runs, sees 0xffffffff in its own device's
interrupt status, and tries to handle it..  The reason for the 0xffffffff
is that the device is still suspended, and *all* regs are reading back
0xffffffff.

Signed-off-by: Mark Lord <mlord@pobox.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
drivers/mmc/sdhci.c

index c52b167e85854e303bd32124fd68355c0d96bb25..f3260ec61fe9036452f2bda79add03ab932d9fdb 100644 (file)
@@ -993,7 +993,7 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
 
        intmask = readl(host->ioaddr + SDHCI_INT_STATUS);
 
-       if (!intmask) {
+       if (!intmask || intmask == 0xffffffff) {
                result = IRQ_NONE;
                goto out;
        }