diff options
author | Adrian Larumbe <adrianml@alumnos.upm.es> | 2021-11-01 18:08:24 +0000 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2021-11-22 11:38:05 +0530 |
commit | 3218910fd5858842a1dd98ce92b602f0878f8210 (patch) | |
tree | 2490bc6c3812b72a3038b2a04ee9b55a73ef6958 /drivers/dma/dmaengine.c | |
parent | 58fe107660483138a7a77acd673b911016e4ad31 (diff) | |
download | linux-stable-3218910fd5858842a1dd98ce92b602f0878f8210.tar.gz linux-stable-3218910fd5858842a1dd98ce92b602f0878f8210.tar.bz2 linux-stable-3218910fd5858842a1dd98ce92b602f0878f8210.zip |
dmaengine: Add core function and capability check for DMA_MEMCPY_SG
This is the old DMA_SG interface that was removed in commit
c678fa66341c ("dmaengine: remove DMA_SG as it is dead code in kernel"). It
has been renamed to DMA_MEMCPY_SG to better match the MEMSET and MEMSET_SG
naming convention.
It should only be used for mem2mem copies, either main system memory or
CPU-addressable device memory (like video memory on a PCI graphics card).
Bringing back this interface was prompted by the need to use the Xilinx
CDMA device for mem2mem SG transfers.
Signed-off-by: Adrian Larumbe <adrianml@alumnos.upm.es>
Link: https://lore.kernel.org/r/20211101180825.241048-3-adrianml@alumnos.upm.es
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma/dmaengine.c')
-rw-r--r-- | drivers/dma/dmaengine.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index d9f7c097cfd6..2cfa8458b51b 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c @@ -1159,6 +1159,13 @@ int dma_async_device_register(struct dma_device *device) return -EIO; } + if (dma_has_cap(DMA_MEMCPY_SG, device->cap_mask) && !device->device_prep_dma_memcpy_sg) { + dev_err(device->dev, + "Device claims capability %s, but op is not defined\n", + "DMA_MEMCPY_SG"); + return -EIO; + } + if (dma_has_cap(DMA_XOR, device->cap_mask) && !device->device_prep_dma_xor) { dev_err(device->dev, "Device claims capability %s, but op is not defined\n", |