dmaengine: sun6i: Set the maximum segment size
The sun6i DMA engine supports segment sizes up to 2^25-1 bytes. This is explicitly stated in newer SoC documentation (H6, D1), and it is implied in older documentation by the 25-bit width of the "bytes left in the current segment" register field. Exposing the real segment size limit (instead of the 64k default) reduces the number of SG list segments needed for a transaction. Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com> Signed-off-by: Samuel Holland <samuel@sholland.org> Link: https://lore.kernel.org/r/20230101193605.50285-1-samuel@sholland.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
committed by
Vinod Koul
parent
ad4ce07890
commit
3dfaa68fa8
@@ -9,6 +9,7 @@
|
||||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/dmaengine.h>
|
||||
#include <linux/dmapool.h>
|
||||
#include <linux/interrupt.h>
|
||||
@@ -1334,6 +1335,8 @@ static int sun6i_dma_probe(struct platform_device *pdev)
|
||||
INIT_LIST_HEAD(&sdc->pending);
|
||||
spin_lock_init(&sdc->lock);
|
||||
|
||||
dma_set_max_seg_size(&pdev->dev, SZ_32M - 1);
|
||||
|
||||
dma_cap_set(DMA_PRIVATE, sdc->slave.cap_mask);
|
||||
dma_cap_set(DMA_MEMCPY, sdc->slave.cap_mask);
|
||||
dma_cap_set(DMA_SLAVE, sdc->slave.cap_mask);
|
||||
|
||||
Reference in New Issue
Block a user