Files
linux/drivers
Jiada Wang ffe59b2930 dmaengine: imx: correct sdmac->status for cyclic dma tx
In cyclic dma tx's handler sdma_handle_channel_loop(),
SDMA channel statue is set to either DMA_ERROR or DMA_IN_PROGRESS
based on each period's status. This has the following issues:

1) If one period's status is BD_RROR, then channel status
   will be set to DMA_ERROR, but it will be overwritten to DMA_IN_PROGRESS
   if the following periods are OK.
2) DMA client may call sdma_control(DMA_TERMINATE_ALL) to stop the cyclic dma
   operation, sdma channel status will be set to DMA_ERROR,
   but if after this handler is called, then again the channel status will be overwritten
   to DMA_IN_PROGRESS. Then the following dmaengine_prep_dma_cyclic() will always fail,
   as channel status is DMA_IN_PROGRESS.

As in cyclic dma tx, channel status will be initially set to DMA_IN_PROGRESS,
driver only needs to change it to DMA_ERROR, when something wrong happens
(one period status is wrong, or stoped by client explicitly).

Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2014-06-01 22:22:26 +05:30
..
2014-04-08 21:34:51 +02:00
2014-04-08 13:28:02 +02:00
2014-04-08 13:27:40 +02:00
2014-04-18 16:40:08 -07:00
2014-04-08 13:27:40 +02:00
2014-04-18 16:40:08 -07:00
2014-04-16 12:28:47 -07:00
2014-04-18 16:40:08 -07:00
2014-04-15 15:21:22 -05:00
2014-04-18 16:40:08 -07:00
2014-04-16 14:04:59 -07:00
2014-04-16 14:03:40 -07:00
2014-04-16 14:07:51 -07:00