pluto_hdl_adi/library/axi_dmac
Ionut Podgoreanu f41391fa93 axi_dmac: Add support for DMA Scatter-Gather
This commit introduces a different interface to submit transfers, using
DMA descriptors.

The structure of the DMA descriptor is as follows:

struct dma_desc {
    u32 flags,
    u32 id,
    u64 dest_addr,
    u64 src_addr,
    u64 next_sg_addr,
    u32 y_len,
    u32 x_len,
    u32 src_stride,
    u32 dst_stride,
};

The 'flags' field currently offers two control bits:
- bit 0: if set, the transfer will complete after this last descriptor
  is processed, and the DMA core will go back to idle state; if cleared,
  the next DMA descriptor pointed to by 'next_sg_addr' will be loaded.
- bit 1: if set, an end-of-transfer interrupt will be raised after the
  memory segment pointed to by this descriptor has been transferred.

The 'id' field corresponds to an identifier of the descriptor.

The 'dest_addr' and 'src_addr' contain the destination and source
addresses to use for the transfer, respectively.

The 'x_len' field contains the number of bytes to transfer,
minus one.

The 'y_len', 'src_stride' and 'dst_stride' fields are only useful for
2D transfers, and should be set to zero if 2D transfers are not
required.

To start a transfer, the address of the first DMA descriptor must be
written to register 0x47c and the HWDESC bit of CONTROL register must
be set. The Scatter-Gather transfer is queued similarly to the simple
transfers, by writing 1 in TRANSFER_SUBMIT.

The Scatter-Gather interface has a dedicated AXI-MM bus configured for
read transfers, with its own dedicated clock, which can be asynchronous.

The Scatter-Gather reset is generated by the reset manager to reset the
logic after completing any pending transactions on the bus.

When the Scatter-Gather is enabled during runtime, the legacy cyclic
functionality of the DMA is disabled.

Signed-off-by: Ionut Podgoreanu <ionut.podgoreanu@analog.com>
2023-12-04 14:34:33 +02:00
..
bd axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
tb Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
Makefile axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
address_generator.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
axi_dmac.v axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
axi_dmac_burst_memory.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
axi_dmac_constr.sdc Add copyright and license to .sdc files 2023-07-25 10:41:40 +03:00
axi_dmac_constr.ttcl axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
axi_dmac_hw.tcl axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
axi_dmac_ip.tcl axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
axi_dmac_pkg_sv.ttcl axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
axi_dmac_regmap.v axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
axi_dmac_regmap_request.v axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
axi_dmac_reset_manager.v axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
axi_dmac_resize_dest.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
axi_dmac_resize_src.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
axi_dmac_response_manager.v axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
axi_dmac_transfer.v axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
axi_register_slice.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
data_mover.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
dest_axi_mm.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
dest_axi_stream.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
dest_fifo_inf.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
dmac_2d_transfer.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
dmac_sg.v axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
inc_id.vh axi_dmac: renamed .h files to .vh 2018-07-11 11:30:22 +03:00
request_arb.v axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
request_generator.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
resp.vh axi_dmac: renamed .h files to .vh 2018-07-11 11:30:22 +03:00
response_generator.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
response_handler.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
splitter.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
src_axi_mm.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
src_axi_stream.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00
src_fifo_inf.v Add/edit copyright and license for .v, .sv files 2023-07-11 15:17:41 +03:00