All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] dmaengine: sun6i: Set the maximum segment size
@ 2022-06-17  3:42 ` Samuel Holland
  0 siblings, 0 replies; 10+ messages in thread
From: Samuel Holland @ 2022-06-17  3:42 UTC (permalink / raw)
  To: Chen-Yu Tsai, Jernej Skrabec, Vinod Koul
  Cc: Samuel Holland, dmaengine, linux-arm-kernel, linux-kernel,
	linux-sunxi

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.

Signed-off-by: Samuel Holland <samuel@sholland.org>
---
Tested on A64, verified that the maximum ALSA PCM period increased, and
that audio playback still worked.

 drivers/dma/sun6i-dma.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c
index b7557f437936..1425f87d97b7 100644
--- a/drivers/dma/sun6i-dma.c
+++ b/drivers/dma/sun6i-dma.c
@@ -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, DMA_BIT_MASK(25));
+
 	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);
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-06-21 12:54 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-17  3:42 [PATCH] dmaengine: sun6i: Set the maximum segment size Samuel Holland
2022-06-17  3:42 ` Samuel Holland
2022-06-20 18:28 ` Jernej Škrabec
2022-06-20 18:28   ` Jernej Škrabec
2022-06-21  0:20   ` Samuel Holland
2022-06-21  0:20     ` Samuel Holland
2022-06-21  4:12     ` Jernej Škrabec
2022-06-21  4:12       ` Jernej Škrabec
2022-06-21 12:53 ` Robin Murphy
2022-06-21 12:53   ` Robin Murphy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.