Merge branch 'fixes' into next
dmaengine: amd: qdma: make read-only arrays h2c_types and c2h_types static constDon't populate the read-only arrays h2c_types and c2h_types on thestack at run time, instead make them static const.
dmaengine: amd: qdma: make read-only arrays h2c_types and c2h_types static constDon't populate the read-only arrays h2c_types and c2h_types on thestack at run time, instead make them static const.Signed-off-by: Colin Ian King <colin.i.king@gmail.com>Link: https://lore.kernel.org/r/20240912131017.588141-1-colin.i.king@gmail.comSigned-off-by: Vinod Koul <vkoul@kernel.org>
show more ...
dmaengine: amd: qdma: Remove using the private get and set dma_ops APIsThe get_dma_ops and set_dma_ops APIs were never for driver to use. Removethese calls from QDMA driver. Instead, pass the DMA
dmaengine: amd: qdma: Remove using the private get and set dma_ops APIsThe get_dma_ops and set_dma_ops APIs were never for driver to use. Removethese calls from QDMA driver. Instead, pass the DMA device pointer from theqdma_platdata structure.Fixes: 73d5fc92a11c ("dmaengine: amd: qdma: Add AMD QDMA driver")Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>Reviewed-by: Christoph Hellwig <hch@lst.de>Link: https://lore.kernel.org/r/20240918181022.2155715-1-lizhi.hou@amd.comSigned-off-by: Vinod Koul <vkoul@kernel.org>
dmaengine: Switch back to struct platform_driver::remove()After commit 0edb555a65d1 ("platform: Make platform_driver::remove()return void") .remove() is (again) the right callback to implement for
dmaengine: Switch back to struct platform_driver::remove()After commit 0edb555a65d1 ("platform: Make platform_driver::remove()return void") .remove() is (again) the right callback to implement forplatform drivers.Convert all platform drivers below drivers/dma after the previousconversion commits apart from the wireless drivers to use .remove(),with the eventual goal to drop struct platform_driver::remove_new(). As.remove() and .remove_new() have the same prototypes, conversion is doneby just changing the structure member name in the driver initializer.Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>Link: https://lore.kernel.org/r/20241004062227.187726-2-u.kleine-koenig@baylibre.comSigned-off-by: Vinod Koul <vkoul@kernel.org>
dmaengine: amd: qdma: Add AMD QDMA driverAdds driver to enable PCIe board which uses AMD QDMA (the Queue-basedDirect Memory Access) subsystem. For example, Xilinx Alveo V70 AIAccelerator devices.
dmaengine: amd: qdma: Add AMD QDMA driverAdds driver to enable PCIe board which uses AMD QDMA (the Queue-basedDirect Memory Access) subsystem. For example, Xilinx Alveo V70 AIAccelerator devices. https://www.xilinx.com/applications/data-center/v70.htmlThe QDMA subsystem is used in conjunction with the PCI Express IP blockto provide high performance data transfer between host memory and thecard's DMA subsystem. +-------+ +-------+ +-----------+ PCIe | | | | | | Tx/Rx | | | | AXI | | <=======> | PCIE | <===> | QDMA | <====>| User Logic| | | | | | | +-------+ +-------+ +-----------+The primary mechanism to transfer data using the QDMA is for the QDMAengine to operate on instructions (descriptors) provided by the hostoperating system. Using the descriptors, the QDMA can move data in boththe Host to Card (H2C) direction, or the Card to Host (C2H) direction.The QDMA provides a per-queue basis option whether DMA traffic goesto 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-qdmaImplements 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 listSigned-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.comSigned-off-by: Vinod Koul <vkoul@kernel.org>