diff options
Diffstat (limited to 'drivers/mmc/host/sh_mmcif.c')
-rw-r--r-- | drivers/mmc/host/sh_mmcif.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c index 5d8142773fac..11d2bc3b51d5 100644 --- a/drivers/mmc/host/sh_mmcif.c +++ b/drivers/mmc/host/sh_mmcif.c | |||
@@ -1213,7 +1213,9 @@ static irqreturn_t sh_mmcif_intr(int irq, void *dev_id) | |||
1213 | sh_mmcif_writel(host->addr, MMCIF_CE_INT, ~INT_BUFRE); | 1213 | sh_mmcif_writel(host->addr, MMCIF_CE_INT, ~INT_BUFRE); |
1214 | sh_mmcif_bitclr(host, MMCIF_CE_INT_MASK, MASK_MBUFRE); | 1214 | sh_mmcif_bitclr(host, MMCIF_CE_INT_MASK, MASK_MBUFRE); |
1215 | } else if (state & INT_DTRANE) { | 1215 | } else if (state & INT_DTRANE) { |
1216 | sh_mmcif_writel(host->addr, MMCIF_CE_INT, ~INT_DTRANE); | 1216 | sh_mmcif_writel(host->addr, MMCIF_CE_INT, |
1217 | ~(INT_CMD12DRE | INT_CMD12RBE | | ||
1218 | INT_CMD12CRE | INT_DTRANE)); | ||
1217 | sh_mmcif_bitclr(host, MMCIF_CE_INT_MASK, MASK_MDTRANE); | 1219 | sh_mmcif_bitclr(host, MMCIF_CE_INT_MASK, MASK_MDTRANE); |
1218 | } else if (state & INT_CMD12RBE) { | 1220 | } else if (state & INT_CMD12RBE) { |
1219 | sh_mmcif_writel(host->addr, MMCIF_CE_INT, | 1221 | sh_mmcif_writel(host->addr, MMCIF_CE_INT, |
@@ -1229,6 +1231,10 @@ static irqreturn_t sh_mmcif_intr(int irq, void *dev_id) | |||
1229 | host->sd_error = true; | 1231 | host->sd_error = true; |
1230 | dev_dbg(&host->pd->dev, "int err state = %08x\n", state); | 1232 | dev_dbg(&host->pd->dev, "int err state = %08x\n", state); |
1231 | } | 1233 | } |
1234 | if (host->state == STATE_IDLE) { | ||
1235 | dev_info(&host->pd->dev, "Spurious IRQ status 0x%x", state); | ||
1236 | return IRQ_HANDLED; | ||
1237 | } | ||
1232 | if (state & ~(INT_CMD12RBE | INT_CMD12CRE)) { | 1238 | if (state & ~(INT_CMD12RBE | INT_CMD12CRE)) { |
1233 | if (!host->dma_active) | 1239 | if (!host->dma_active) |
1234 | return IRQ_WAKE_THREAD; | 1240 | return IRQ_WAKE_THREAD; |