Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55c370e5 authored by Sinan Kaya's avatar Sinan Kaya Committed by Vinod Koul
Browse files

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: default avatarSinan Kaya <okaya@codeaurora.org>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
parent 8a31f8b5
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -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);
	}
}