Commit a3ee0bf2 authored by Michael Hennerich's avatar Michael Hennerich Committed by Vinod Koul

dmaengine: axi-dmac: Enable TLAST handling

The TLAST flag is used by the DMAC HDL controller to signal to the
controller that the following segment (to be submitted) is the last one (in
a series of segments).

A receiver DMA (typically another DMAC) can read this parameter (from the
transfer), and terminate the transfer earlier. A typical use-case for this,
is when the receiver expects a certain amount of segments, but for some
reason (e.g. an ADC capture which can have an unknown number of digital
samples) the number of actual segments is smaller. The receiver would read
this flag, and then the DMAC would finish.
Signed-off-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
Signed-off-by: default avatarAlexandru Ardelean <alexandru.ardelean@analog.com>
Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 8add6cce
...@@ -71,6 +71,7 @@ ...@@ -71,6 +71,7 @@
#define AXI_DMAC_IRQ_EOT BIT(1) #define AXI_DMAC_IRQ_EOT BIT(1)
#define AXI_DMAC_FLAG_CYCLIC BIT(0) #define AXI_DMAC_FLAG_CYCLIC BIT(0)
#define AXI_DMAC_FLAG_LAST BIT(1)
/* The maximum ID allocated by the hardware is 31 */ /* The maximum ID allocated by the hardware is 31 */
#define AXI_DMAC_SG_UNUSED 32U #define AXI_DMAC_SG_UNUSED 32U
...@@ -216,6 +217,7 @@ static void axi_dmac_start_transfer(struct axi_dmac_chan *chan) ...@@ -216,6 +217,7 @@ static void axi_dmac_start_transfer(struct axi_dmac_chan *chan)
desc->num_submitted = 0; /* Start again */ desc->num_submitted = 0; /* Start again */
else else
chan->next_desc = NULL; chan->next_desc = NULL;
flags |= AXI_DMAC_FLAG_LAST;
} else { } else {
chan->next_desc = desc; chan->next_desc = desc;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment