[PATCH 6/9] iio: buffer-dmaengine: Use dma_slave_caps bus width accessors
Nuno Sá via B4 Relay <[email protected]> Thu, 30 Jul 2026 15:23:13 +0100
| Newsgroups | org.kernel.vger.dmaengine,org.kernel.feeds.b4-sent,org.kernel.vger.linux-iio |
|---|---|
| Message-ID | <20260730-dmaengine-support-wider-dma-masks-v1-6-3732f1f9d9ca@analog.com> |
From: Nuno Sá <[email protected]> Query the minimum supported source and destination bus widths through the new dma_slave_caps_get_{src,dst}_width_min() helpers rather than decoding the raw legacy u32 width masks. This keeps the buffer working with DMA controllers that advertise bus widths via the new bitmap representation. Signed-off-by: Nuno Sá <[email protected]> --- drivers/iio/buffer/industrialio-buffer-dmaengine.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/iio/buffer/industrialio-buffer-dmaengine.c b/drivers/iio/buffer/industrialio-buffer-dmaengine.c index 98acce909854..855e3662cd3d 100644 --- a/drivers/iio/buffer/industrialio-buffer-dmaengine.c +++ b/drivers/iio/buffer/industrialio-buffer-dmaengine.c @@ -229,14 +229,13 @@ static struct iio_buffer *iio_dmaengine_buffer_alloc(struct dma_chan *chan) return ERR_PTR(-ENOMEM); /* Needs to be aligned to the maximum of the minimums */ - if (caps.src_addr_widths) - src_width = __ffs(caps.src_addr_widths); - else - src_width = 1; - if (caps.dst_addr_widths) - dest_width = __ffs(caps.dst_addr_widths); - else - dest_width = 1; + src_width = dma_slave_caps_get_src_width_min(&caps); + if (src_width == DMA_SLAVE_BUSWIDTH_UNDEFINED) + src_width = DMA_SLAVE_BUSWIDTH_1_BYTE; + dest_width = dma_slave_caps_get_dst_width_min(&caps); + if (dest_width == DMA_SLAVE_BUSWIDTH_UNDEFINED) + dest_width = DMA_SLAVE_BUSWIDTH_1_BYTE; + width = max(src_width, dest_width); INIT_LIST_HEAD(&dmaengine_buffer->active); -- 2.55.0