Documentation: dmaengine: Add DMA_CTRL_REUSE documentation
authorVinod Koul <vinod.koul@intel.com>
Wed, 5 Aug 2015 03:12:06 +0000 (08:42 +0530)
committerVinod Koul <vinod.koul@intel.com>
Mon, 17 Aug 2015 08:16:22 +0000 (13:46 +0530)
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Acked-by:Robert Jarzmik <robert.jarzmik@free.fr>

Documentation/dmaengine/provider.txt

index 243889ec5c5aa29ecde537a7f834fd4a4b600df7..67d4ce4df1096efab9c027f026af22a46ea43809 100644 (file)
@@ -351,6 +351,23 @@ where to put them)
     - This can be acked by invoking async_tx_ack()
     - If set, does not mean descriptor can be reused
 
+  * DMA_CTRL_REUSE
+    - If set, the descriptor can be reused after being completed. It should
+      not be freed by provider if this flag is set.
+    - The descriptor should be prepared for reuse by invoking
+      dmaengine_desc_set_reuse() which will set DMA_CTRL_REUSE.
+    - dmaengine_desc_set_reuse() will succeed only when channel support
+      reusable descriptor as exhibited by capablities
+    - As a consequence, if a device driver wants to skip the dma_map_sg() and
+      dma_unmap_sg() in between 2 transfers, because the DMA'd data wasn't used,
+      it can resubmit the transfer right after its completion.
+    - Descriptor can be freed in few ways
+       - Clearing DMA_CTRL_REUSE by invoking dmaengine_desc_clear_reuse()
+         and submitting for last txn
+       - Explicitly invoking dmaengine_desc_free(), this can succeed only
+         when DMA_CTRL_REUSE is already set
+       - Terminating the channel
+
 
 General Design Notes
 --------------------