linux/drivers/dma
Nishad Saraf 73d5fc92a1 dmaengine: amd: qdma: Add AMD QDMA driver
Adds driver to enable PCIe board which uses AMD QDMA (the Queue-based
Direct Memory Access) subsystem. For example, Xilinx Alveo V70 AI
Accelerator devices.
    https://www.xilinx.com/applications/data-center/v70.html

The QDMA subsystem is used in conjunction with the PCI Express IP block
to provide high performance data transfer between host memory and the
card's DMA subsystem.

            +-------+       +-------+       +-----------+
   PCIe     |       |       |       |       |           |
   Tx/Rx    |       |       |       |  AXI  |           |
 <=======>  | PCIE  | <===> | QDMA  | <====>| User Logic|
            |       |       |       |       |           |
            +-------+       +-------+       +-----------+

The primary mechanism to transfer data using the QDMA is for the QDMA
engine to operate on instructions (descriptors) provided by the host
operating system. Using the descriptors, the QDMA can move data in both
the Host to Card (H2C) direction, or the Card to Host (C2H) direction.
The QDMA provides a per-queue basis option whether DMA traffic goes
to an AXI4 memory map (MM) interface or to an AXI4-Stream interface.

The hardware detail is provided by
    https://docs.xilinx.com/r/en-US/pg302-qdma

Implements dmaengine APIs to support MM DMA transfers.
- probe the available DMA channels
- use dma_slave_map for channel lookup
- use virtual channel to manage dmaengine tx descriptors
- implement device_prep_slave_sg callback to handle host scatter gather
  list

Signed-off-by: Nishad Saraf <nishads@amd.com>
Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
Link: https://lore.kernel.org/r/20240819211948.688786-2-lizhi.hou@amd.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2024-08-28 23:34:13 +05:30
..
amd dmaengine: amd: qdma: Add AMD QDMA driver 2024-08-28 23:34:13 +05:30
bestcomm dmaengine: bestcomm: Code cleanup for bcom_sram_init 2024-01-30 22:11:56 +05:30
dw dmaengine: dw: platform: Convert to platform remove callback returning void 2023-09-28 13:10:47 +05:30
dw-axi-dmac dma: dw-axi-dmac: support per channel interrupt 2024-04-07 17:18:14 +05:30
dw-edma dmaengine: dw-edma: eDMA: Add sync read before starting the DMA transfer in remote setup 2024-02-07 09:30:52 +01:00
fsl-dpaa2-qdma dmaengine: fsl-dpaa2-qdma: add missing MODULE_DESCRIPTION() macro 2024-06-28 13:05:14 +05:30
hsu dmaengine: hsu: Include headers we are direct user of 2022-09-04 22:49:35 +05:30
idxd dmaengine: idxd: Convert comma to semicolon 2024-08-05 22:29:39 +05:30
ioat dmaengine updates for v6.11 2024-07-24 12:34:47 -07:00
lgm dmaengine: lgm: Use builtin_platform_driver macro to simplify the code 2023-08-21 11:13:09 +05:30
mediatek dmaengine updates for v6.7 2023-11-03 18:56:51 -10:00
ppc4xx dmaengine: ppc4xx: adma: Convert to platform remove callback returning void 2023-09-28 13:10:52 +05:30
ptdma dmaengine: ptdma: use consistent DMA masks 2024-02-23 12:22:55 +05:30
qcom dmaengine: qcom: gpi: clean up the IRQ disable/enable in gpi_reset_chan() 2024-06-11 23:55:34 +05:30
sf-pdma dmaengine: sf-pdma: add mpfs-pdma compatible name 2023-12-11 16:33:22 +05:30
sh dmaengine: sh: rz-dmac: Fix lockdep assert warning 2024-06-28 12:49:27 +05:30
stm32 dmaengine: stm32-dma3: defer channel registration to specify channel name 2024-06-11 23:55:34 +05:30
ti dmaengine updates for v6.11 2024-07-24 12:34:47 -07:00
xilinx dmaengine: xilinx: dpdma: Add support for cyclic dma mode 2024-08-28 23:29:32 +05:30
acpi-dma.c dmaengine: acpi: Check for errors from acpi_register_gsi() separately 2021-08-06 21:48:11 +05:30
altera-msgdma.c dmaengine: altera-msgdma: properly free descriptor in msgdma_free_descriptor 2024-06-11 21:50:55 +05:30
amba-pl08x.c dmaengine: pl08x: Use kcalloc() instead of kzalloc() 2024-04-17 22:43:17 +05:30
apple-admac.c dmaengine: apple-admac: Keep upper bits of REG_BUS_WIDTH 2023-11-24 18:57:56 +05:30
at_hdmac.c dmaengine: at_hdmac: add missing kernel-doc style description 2024-02-02 17:16:55 +01:00
at_xdmac.c dmaengine: at_xdmac: Convert to platform remove callback returning void 2023-09-28 13:10:45 +05:30
bcm2835-dma.c dmaengine: bcm2835-dma: Convert to platform remove callback returning void 2023-09-28 13:10:46 +05:30
bcm-sba-raid.c dmaengine: bcm-sba-raid: Convert to platform remove callback returning void 2023-09-28 13:10:46 +05:30
dma-axi-dmac.c dmaengine: dma-axi-dmac: Implement device_prep_peripheral_dma_vec 2024-06-21 15:31:57 +05:30
dma-jz4780.c dmaengine: dma-jz4780: Convert to platform remove callback returning void 2023-09-28 13:10:47 +05:30
dmaengine.c dmaengine: add channel device name to channel registration 2024-06-11 23:55:34 +05:30
dmaengine.h dmaengine: dmaengine_desc_callback_valid(): Check for callback_result 2021-10-25 09:42:56 +05:30
dmatest.c dmaengine: dmatest: Explicitly cast divisor to u32 2024-08-05 22:30:55 +05:30
ep93xx_dma.c dmaengine: ep93xx_dma: Annotate struct ep93xx_dma_engine with __counted_by 2023-10-04 15:12:57 +05:30
fsl_raid.c dmaengine: fsl_raid: Convert to platform remove callback returning void 2023-09-28 13:10:48 +05:30
fsl_raid.h dmaengine: Driver support for FSL RaidEngine device. 2015-04-02 16:10:27 +05:30
fsl-edma-common.c dmaengine: fsl-edma: change the memory access from local into remote mode in i.MX 8QM 2024-06-11 23:55:34 +05:30
fsl-edma-common.h dmaengine: fsl-edma: change the memory access from local into remote mode in i.MX 8QM 2024-06-11 23:55:34 +05:30
fsl-edma-main.c dmaengine: fsl-edma: change the memory access from local into remote mode in i.MX 8QM 2024-06-11 23:55:34 +05:30
fsl-edma-trace.c dmaengine: fsl-edma: add trace event support 2024-05-04 18:00:16 +05:30
fsl-edma-trace.h dmaengine: fsl-edma: add trace event support 2024-05-04 18:00:16 +05:30
fsl-qdma.c dmaengine: fsl-qdma: add __iomem and struct in union to fix sparse warning 2024-02-23 12:20:39 +05:30
fsldma.c dmaengine: fsldma: Convert to platform remove callback returning void 2023-09-28 13:10:48 +05:30
fsldma.h fsldma: fix very broken 32-bit ppc ioread64 functionality 2020-08-29 13:50:56 -07:00
hisi_dma.c dmaengine: hisilicon: Annotate struct hisi_dma_dev with __counted_by 2023-09-28 16:42:14 +05:30
idma64.c dmaengine updates for v6.10 2024-05-21 11:15:56 -07:00
idma64.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
img-mdc-dma.c dmaengine: img-mdc-dma: Convert to platform remove callback returning void 2023-09-28 13:10:48 +05:30
imx-dma.c dmaengine: imx-dma: Convert to platform remove callback returning void 2023-09-28 13:10:49 +05:30
imx-sdma.c dmaengine: imx-sdma: don't print warning when firmware is absent 2024-06-07 23:14:45 +05:30
k3dma.c dmaengine: Drop unnecessary of_match_device() calls 2023-10-09 10:55:16 +05:30
Kconfig dmaengine: amd: qdma: Add AMD QDMA driver 2024-08-28 23:34:13 +05:30
lpc18xx-dmamux.c dmaengine: Explicitly include correct DT includes 2023-08-01 23:51:27 +05:30
ls2x-apb-dma.c dmaengine: ls2x-apb: New driver for the Loongson LS2X APB DMA controller 2023-12-21 21:35:13 +05:30
Makefile dmaengine: amd: qdma: Add AMD QDMA driver 2024-08-28 23:34:13 +05:30
mcf-edma-main.c dmaengine: fsl-edma: remove redundant "idle" field from fsl_chan 2024-06-11 23:55:34 +05:30
milbeaut-hdmac.c dmaengine: milbeaut-hdmac: Convert to platform remove callback returning void 2023-11-24 18:32:30 +05:30
milbeaut-xdmac.c dmaengine: milbeaut-xdmac: Convert to platform remove callback returning void 2023-11-24 18:32:30 +05:30
mmp_pdma.c dmaengine: Drop unnecessary of_match_device() calls 2023-10-09 10:55:16 +05:30
mmp_tdma.c dmaengine: mmp_tdma: drop unused variable 'of_id' 2023-10-10 23:30:52 +05:30
moxart-dma.c dmaengine: moxart-dma: remove unused struct 'moxart_filter_data' 2024-06-11 23:55:34 +05:30
mpc512x_dma.c dmaengine: mpc512x_dma: Convert to platform remove callback returning void 2023-09-28 13:10:51 +05:30
mv_xor_v2.c irqchip: Convert all platform MSI users to the new API 2024-02-15 17:55:40 +01:00
mv_xor.c dmaengine: Use device_get_match_data() 2023-10-09 10:54:48 +05:30
mv_xor.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
mxs-dma.c dmaengine: Explicitly include correct DT includes 2023-08-01 23:51:27 +05:30
nbpfaxi.c dmaengine: nbpfaxi: Convert to platform remove callback returning void 2023-09-28 13:10:52 +05:30
of-dma.c dmaengine: of: constify of_phandle_args in of_dma_find_controller() 2024-02-23 12:44:08 +05:30
owl-dma.c dmaengine: owl: fix register access functions 2024-03-28 12:29:36 +05:30
pch_dma.c dmaengine: pch_dma: remove unused function chan2parent 2024-04-07 18:36:58 +05:30
pl330.c ARM development updates for v6.10-rc1 2024-05-17 08:53:47 -07:00
plx_dma.c dmaengine: plx_dma: Don't set chancnt 2023-05-24 12:24:32 +05:30
pxa_dma.c dmaengine: Drop unnecessary of_match_device() calls 2023-10-09 10:55:16 +05:30
sa11x0-dma.c dmaengine: sa11x0: Annotate struct sa11x0_dma_desc with __counted_by 2023-09-28 16:42:14 +05:30
sprd-dma.c dmaengine: sprd: delete redundant parameter for dma driver function 2023-10-02 21:28:33 +05:30
st_fdma.c dmaengine: Use device_get_match_data() 2023-10-09 10:54:48 +05:30
st_fdma.h dmaengine: st_fdma: Annotate struct st_fdma_desc with __counted_by 2023-09-28 16:42:14 +05:30
ste_dma40_ll.c dmaengine: ste_dma40: Remove platform data 2023-05-16 23:00:19 +05:30
ste_dma40_ll.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
ste_dma40.c dmaengine: std_dma40: fix kernel-doc warnings and spelling 2023-12-21 21:31:30 +05:30
ste_dma40.h dmaengine: ste_dma40: Remove platform data 2023-05-16 23:00:19 +05:30
sun4i-dma.c dmaengine: sun4i-dma: Convert to platform remove callback returning void 2023-09-28 13:10:55 +05:30
sun6i-dma.c dmaengine: sun6i-dma: Convert to platform remove callback returning void 2023-09-28 13:10:56 +05:30
tegra20-apb-dma.c dmaengine: tegra20-apb-dma: Convert to platform remove callback returning void 2023-09-28 13:10:56 +05:30
tegra186-gpc-dma.c dmaengine: tegra186: Fix residual calculation 2024-03-28 12:31:42 +05:30
tegra210-adma.c dmaengine: tegra210-adma: Support dma-channel-mask property 2023-12-11 17:44:18 +05:30
timb_dma.c dmaengine: timb_dma: Convert to platform remove callback returning void 2023-09-28 13:10:58 +05:30
TODO dmaengine: dw: don't perform DMA when dmaengine_submit is called 2014-07-15 22:14:30 +05:30
txx9dmac.c dmaengine: txx9dmac: Convert to platform remove callback returning void 2023-09-28 13:10:58 +05:30
txx9dmac.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
uniphier-mdmac.c dmaengine: uniphier-mdmac: Convert to platform remove callback returning void 2023-11-24 18:32:30 +05:30
uniphier-xdmac.c dmaengine: uniphier-xdmac: Convert to platform remove callback returning void 2023-11-24 18:32:30 +05:30
virt-dma.c dmaengine: virt-dma: add missing MODULE_DESCRIPTION() macro 2024-06-28 13:03:13 +05:30
virt-dma.h dma: Add lockdep asserts to virt-dma 2024-04-07 17:08:19 +05:30
xgene-dma.c dmaengine: xgene-dma: Convert to platform remove callback returning void 2023-09-28 13:10:58 +05:30