@@ -255,6 +255,27 @@ Currently, the types available are:
255255 identifier for each descriptor sent to the DMA device in order to
256256 properly track the completion.
257257
258+ - DMA_REPEAT
259+
260+ - The device supports repeated transfers. A repeated transfer, indicated by
261+ the DMA_PREP_REPEAT transfer flag, is similar to a cyclic transfer in that
262+ it gets automatically repeated when it ends, but can additionally be
263+ replaced by the client.
264+
265+ - This feature is limited to interleaved transfers, this flag should thus not
266+ be set if the DMA_INTERLEAVE flag isn't set. This limitation is based on
267+ the current needs of DMA clients, support for additional transfer types
268+ should be added in the future if and when the need arises.
269+
270+ - DMA_LOAD_EOT
271+
272+ - The device supports replacing repeated transfers at end of transfer (EOT)
273+ by queuing a new transfer with the DMA_PREP_LOAD_EOT flag set.
274+
275+ - Support for replacing a currently running transfer at another point (such
276+ as end of burst instead of end of transfer) will be added in the future
277+ based on DMA clients needs, if and when the need arises.
278+
258279These various types will also affect how the source and destination
259280addresses change over time.
260281
@@ -550,6 +571,34 @@ DMA_CTRL_REUSE
550571 writes for which the descriptor should be in different format from
551572 normal data descriptors.
552573
574+ - DMA_PREP_REPEAT
575+
576+ - If set, the transfer will be automatically repeated when it ends until a
577+ new transfer is queued on the same channel with the DMA_PREP_LOAD_EOT flag.
578+ If the next transfer to be queued on the channel does not have the
579+ DMA_PREP_LOAD_EOT flag set, the current transfer will be repeated until the
580+ client terminates all transfers.
581+
582+ - This flag is only supported if the channel reports the DMA_REPEAT
583+ capability.
584+
585+ - DMA_PREP_LOAD_EOT
586+
587+ - If set, the transfer will replace the transfer currently being executed at
588+ the end of the transfer.
589+
590+ - This is the default behaviour for non-repeated transfers, specifying
591+ DMA_PREP_LOAD_EOT for non-repeated transfers will thus make no difference.
592+
593+ - When using repeated transfers, DMA clients will usually need to set the
594+ DMA_PREP_LOAD_EOT flag on all transfers, otherwise the channel will keep
595+ repeating the last repeated transfer and ignore the new transfers being
596+ queued. Failure to set DMA_PREP_LOAD_EOT will appear as if the channel was
597+ stuck on the previous transfer.
598+
599+ - This flag is only supported if the channel reports the DMA_LOAD_EOT
600+ capability.
601+
553602General Design Notes
554603====================
555604
0 commit comments