dmaengine/dw_dmac: set residue as total len in dwc_tx_status if status is !DMA_SUCCESS
authorViresh Kumar <viresh.kumar@st.com>
Fri, 15 Apr 2011 10:33:35 +0000 (16:03 +0530)
committerVinod Koul <vinod.koul@intel.com>
Fri, 13 May 2011 14:09:55 +0000 (19:39 +0530)
If transfer status is !=DMA_SUCCESS, return total transfer len as residue,
instead of zero.

Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/dw_dmac.c

index 265d43c..f209ff8 100644 (file)
@@ -860,7 +860,11 @@ dwc_tx_status(struct dma_chan *chan,
                ret = dma_async_is_complete(cookie, last_complete, last_used);
        }
 
-       dma_set_tx_state(txstate, last_complete, last_used, 0);
+       if (ret != DMA_SUCCESS)
+               dma_set_tx_state(txstate, last_complete, last_used,
+                               dwc_first_active(dwc)->len);
+       else
+               dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        return ret;
 }