diff options
| author | Jan Kuliga <[email protected]> | 2023-12-18 11:39:43 +0000 |
|---|---|---|
| committer | Vinod Koul <[email protected]> | 2023-12-22 06:49:41 +0000 |
| commit | 2f8f90cd2f8d237c51c2775a53ef0d8c8acaa707 (patch) | |
| tree | 8ed14ab62ec14583403fcfe5a49c86fc4e1ee011 /drivers/gpu/drm/amd/amdgpu/atom.c | |
| parent | dmaengine: xilinx: xdma: Prepare the introduction of interleaved DMA transfers (diff) | |
| download | kernel-2f8f90cd2f8d237c51c2775a53ef0d8c8acaa707.tar.gz kernel-2f8f90cd2f8d237c51c2775a53ef0d8c8acaa707.zip | |
dmaengine: xilinx: xdma: Implement interleaved DMA transfers
Interleaved DMA functionality allows dmaengine clients' to express
DMA transfers in an arbitrary way. This is extremely useful in FPGA
environments, where a greater transfer flexibility is needed. For
instance, in one FPGA design there may be need to do DMA to/from a FIFO
at a fixed address, and also to do DMA to/from a (non)contiguous RAM
memory.
Introduce separate tx preparation callback and add tx-flags handling
logic. Their behavior is based on the description of interleaved DMA
transfers in both source code and the DMAEngine's documentation.
Since XDMA is a fully-fledged scatter-gather dma engine, the logic of
xdma_prep_interleaved_dma() is fairly simple and similar to the other
tx preparation callbacks. The whole tx-flags handling logic resides in
xdma_channel_isr(). Transfer of a single frame from a interleaved DMA
transfer template is pretty similar to the single sg transaction.
Therefore, the transaction of the whole interleaved DMA transfer
template is basically a cyclic dma transaction with finite cycles/periods
(equal to the frame of count) of a single sg transfers.
Signed-off-by: Jan Kuliga <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Vinod Koul <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/atom.c')
0 files changed, 0 insertions, 0 deletions
