dmaengine: Add API function dmaengine_prep_peripheral_dma_vec()
authorPaul Cercueil <paul@crapouillou.net>
Thu, 20 Jun 2024 12:27:20 +0000 (14:27 +0200)
committerVinod Koul <vkoul@kernel.org>
Fri, 21 Jun 2024 10:01:56 +0000 (15:31 +0530)
commit5878853fc9389e7d0988d4b465a415cf96fd14fa
treeca373d013a259df20fddeb213e48ded1f61ab869
parent1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
dmaengine: Add API function dmaengine_prep_peripheral_dma_vec()

This function can be used to initiate a scatter-gather DMA transfer,
where the address and size of each segment is located in one entry of
the dma_vec array.

The major difference with dmaengine_prep_slave_sg() is that it supports
specifying the lengths of each DMA transfer; as trying to override the
length of the transfer with dmaengine_prep_slave_sg() is a very tedious
process. The introduction of a new API function is also justified by the
fact that scatterlists are on their way out.

Note that dmaengine_prep_interleaved_dma() is not helpful either in that
case, as it assumes that the address of each segment will be higher than
the one of the previous segment, which we just cannot guarantee in case
of a scatter-gather transfer.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Co-developed-by: Nuno Sa <nuno.sa@analog.com>
Signed-off-by: Nuno Sa <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20240620122726.41232-2-paul@crapouillou.net
Signed-off-by: Vinod Koul <vkoul@kernel.org>
include/linux/dmaengine.h