summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Lord <lkml@rtr.ca>2007-03-06 13:30:13 +0100
committerPierre Ossman <drzeus@drzeus.cx>2007-03-06 13:30:13 +0100
commit62df67a523acd7a22d936bf946b1889dbd60ca98 (patch)
tree74f915f9a1c716d2efdb55bdf485df4b145e1a2e
parentcd9277c011a99769fa371521b460ed57f6d280b1 (diff)
downloadlinux-62df67a523acd7a22d936bf946b1889dbd60ca98.tar.gz
linux-62df67a523acd7a22d936bf946b1889dbd60ca98.tar.bz2
linux-62df67a523acd7a22d936bf946b1889dbd60ca98.zip
sdhci: make isr tolerant of read errors
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>
-rw-r--r--drivers/mmc/sdhci.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
index c52b167e8585..f3260ec61fe9 100644
--- a/drivers/mmc/sdhci.c
+++ b/drivers/mmc/sdhci.c
@@ -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;
}