|
@@ -589,6 +589,13 @@ static void atmci_timeout_timer(unsigned long data)
|
|
|
if (host->mrq->cmd->data) {
|
|
|
host->mrq->cmd->data->error = -ETIMEDOUT;
|
|
|
host->data = NULL;
|
|
|
+ /*
|
|
|
+ * With some SDIO modules, sometimes DMA transfer hangs. If
|
|
|
+ * stop_transfer() is not called then the DMA request is not
|
|
|
+ * removed, following ones are queued and never computed.
|
|
|
+ */
|
|
|
+ if (host->state == STATE_DATA_XFER)
|
|
|
+ host->stop_transfer(host);
|
|
|
} else {
|
|
|
host->mrq->cmd->error = -ETIMEDOUT;
|
|
|
host->cmd = NULL;
|