]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - Documentation/dmaengine/provider.txt
Merge tag 'xfs-for-linus-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc...
[karo-tx-linux.git] / Documentation / dmaengine / provider.txt
index ca67b0f04c6e75ee7c8e9976b8a48d8f64b63092..67d4ce4df1096efab9c027f026af22a46ea43809 100644 (file)
@@ -345,12 +345,29 @@ where to put them)
       that abstracts it away.
 
   * DMA_CTRL_ACK
-    - If set, the transfer can be reused after being completed.
-    - There is a guarantee the transfer won't be freed until it is acked
-      by async_tx_ack().
+    - If clear, the descriptor cannot be reused by provider until the
+      client acknowledges receipt, i.e. has has a chance to establish any
+      dependency chains
+    - 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
 --------------------