aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mmc/host/dw_mmc.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 7716a08675fc..e7be4023382c 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1573,11 +1573,11 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
1573{ 1573{
1574 struct dw_mci *host = dev_id; 1574 struct dw_mci *host = dev_id;
1575 u32 pending; 1575 u32 pending;
1576 unsigned int pass_count = 0;
1577 int i; 1576 int i;
1578 1577
1579 do { 1578 pending = mci_readl(host, MINTSTS); /* read-only mask reg */
1580 pending = mci_readl(host, MINTSTS); /* read-only mask reg */ 1579
1580 if (pending) {
1581 1581
1582 /* 1582 /*
1583 * DTO fix - version 2.10a and below, and only if internal DMA 1583 * DTO fix - version 2.10a and below, and only if internal DMA
@@ -1589,9 +1589,6 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
1589 pending |= SDMMC_INT_DATA_OVER; 1589 pending |= SDMMC_INT_DATA_OVER;
1590 } 1590 }
1591 1591
1592 if (!pending)
1593 break;
1594
1595 if (pending & DW_MCI_CMD_ERROR_FLAGS) { 1592 if (pending & DW_MCI_CMD_ERROR_FLAGS) {
1596 mci_writel(host, RINTSTS, DW_MCI_CMD_ERROR_FLAGS); 1593 mci_writel(host, RINTSTS, DW_MCI_CMD_ERROR_FLAGS);
1597 host->cmd_status = pending; 1594 host->cmd_status = pending;
@@ -1652,7 +1649,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
1652 } 1649 }
1653 } 1650 }
1654 1651
1655 } while (pass_count++ < 5); 1652 }
1656 1653
1657#ifdef CONFIG_MMC_DW_IDMAC 1654#ifdef CONFIG_MMC_DW_IDMAC
1658 /* Handle DMA interrupts */ 1655 /* Handle DMA interrupts */