Even though HLE interrupt is enabled, there is no touch.
This patch clears HLE interrupt which is not unhandled.

Signed-off-by: Seungwon Jeon <[email protected]>
---
 drivers/mmc/host/dw_mmc.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 6785d62..b6db0ae 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1009,6 +1009,11 @@ static void dw_mci_tasklet_func(unsigned long priv)
        state = host->state;
        data = host->data;
 
+       if (host->cmd_status & SDMMC_INT_HLE) {
+               dev_err(host->dev, "hardware locked write error\n");
+               goto unlock;
+       }
+
        do {
                prev_state = state;
 
@@ -1577,6 +1582,12 @@ static irqreturn_t dw_mci_interrupt(int irq, void 
*dev_id)
                if (!pending)
                        break;
 
+               if (pending & SDMMC_INT_HLE) {
+                       mci_writel(host, RINTSTS, SDMMC_INT_HLE);
+                       host->cmd_status = pending;
+                       tasklet_schedule(&host->tasklet);
+               }
+
                if (pending & DW_MCI_CMD_ERROR_FLAGS) {
                        mci_writel(host, RINTSTS, DW_MCI_CMD_ERROR_FLAGS);
                        host->cmd_status = pending;
-- 
1.7.0.4


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

Reply via email to