dmaengine: qcom_hidma: report transfer errors with new interface
Pass the DMA errors to the client by passing a result argument. The HW only supports a generic error when something goes wrong. That's why, using DMA_TRANS_ABORTED all the time. Signed-off-by: Sinan Kaya <okaya@codeaurora.org> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
8a31f8b5db
commit
55c370e519
1 changed files with 8 additions and 2 deletions
|
@ -126,6 +126,7 @@ static void hidma_process_completed(struct hidma_chan *mchan)
|
|||
list_for_each_entry_safe(mdesc, next, &list, node) {
|
||||
enum dma_status llstat;
|
||||
struct dmaengine_desc_callback cb;
|
||||
struct dmaengine_result result;
|
||||
|
||||
desc = &mdesc->desc;
|
||||
|
||||
|
@ -141,10 +142,15 @@ static void hidma_process_completed(struct hidma_chan *mchan)
|
|||
|
||||
spin_lock_irqsave(&mchan->lock, irqflags);
|
||||
list_move(&mdesc->node, &mchan->free);
|
||||
spin_unlock_irqrestore(&mchan->lock, irqflags);
|
||||
|
||||
if (llstat == DMA_COMPLETE)
|
||||
dmaengine_desc_callback_invoke(&cb, NULL);
|
||||
result.result = DMA_TRANS_NOERROR;
|
||||
else
|
||||
result.result = DMA_TRANS_ABORTED;
|
||||
|
||||
spin_unlock_irqrestore(&mchan->lock, irqflags);
|
||||
|
||||
dmaengine_desc_callback_invoke(&cb, &result);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue