From: Heikki Krogerus Date: Thu, 10 Jan 2013 08:53:06 +0000 (+0200) Subject: dma: dw_dmac: clear suspend bit during termination X-Git-Tag: v3.9-rc1~80^2~33 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=a5dbff111cacecd2e79843a51cc86d21d3648af5;p=~emulex%2Finfiniband.git dma: dw_dmac: clear suspend bit during termination The DMA transfer could not be established if previously it was paused and terminated. In that case the channel's suspend bit remains set that prevents to transfer anything until channel is resumed. The patch adds the dwc_chan_resume() call instead of a plain flag assignment. That clears the DWC_CFGL_CH_SUSP bit as well during termination. Signed-off-by: Heikki Krogerus Signed-off-by: Andy Shevchenko Acked-by: Viresh Kumar Signed-off-by: Vinod Koul --- diff --git a/drivers/dma/dw_dmac.c b/drivers/dma/dw_dmac.c index 154952abc2e..28d5f01c350 100644 --- a/drivers/dma/dw_dmac.c +++ b/drivers/dma/dw_dmac.c @@ -1059,7 +1059,7 @@ static int dwc_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd, dwc_chan_disable(dw, dwc); - dwc->paused = false; + dwc_chan_resume(dwc); /* active_list entries will end up before queued entries */ list_splice_init(&dwc->queue, &list);