summaryrefslogtreecommitdiffstats
path: root/drivers/dma/qcom/hidma.h
diff options
context:
space:
mode:
authorSinan Kaya <okaya@codeaurora.org>2017-06-30 16:43:05 +0200
committerVinod Koul <vinod.koul@intel.com>2017-07-03 07:09:51 +0200
commit99efdb3e48fb2fa84addb3102946d3eca341192b (patch)
tree5d9d7116af71e62aeff4a8e2d52d4b1f88376395 /drivers/dma/qcom/hidma.h
parentdmaengine: zynqmp_dma: Remove max len check in zynqmp_dma_prep_memcpy (diff)
downloadlinux-99efdb3e48fb2fa84addb3102946d3eca341192b.tar.xz
linux-99efdb3e48fb2fa84addb3102946d3eca341192b.zip
dmaengine: qcom_hidma: correct API violation for submit
Current code is violating the DMA Engine API by putting the submitted requests directly into the HW queue. This causes queued transactions to be started by another thread as soon as the first one finishes. The DMA Engine document clearly states this. "dmaengine_submit() will not start the DMA operation". Move HW queuing of the requests into the issue_pending() routine to comply with API requirements also create a new queued state for temporarily holding the requests. A descriptor goes through these transitions now. free->prepared->queued->active->completed->free as opposed to free->prepared->active->completed->free Signed-off-by: Sinan Kaya <okaya@codeaurora.org> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers/dma/qcom/hidma.h')
-rw-r--r--drivers/dma/qcom/hidma.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/dma/qcom/hidma.h b/drivers/dma/qcom/hidma.h
index c7d014235c32..41e0aa283828 100644
--- a/drivers/dma/qcom/hidma.h
+++ b/drivers/dma/qcom/hidma.h
@@ -104,6 +104,7 @@ struct hidma_chan {
struct dma_chan chan;
struct list_head free;
struct list_head prepared;
+ struct list_head queued;
struct list_head active;
struct list_head completed;