Largely, an adaptation of Lars' work, applied on the IIO multi-buffer support + high-speed/mmap support [1]. Found here: https://github.com/larsclausen/linux/commits/iio-high-speed-5.10 But this isn't tested. [1] Requires that these sets be applied (in this order): * https://lore.kernel.org/linux-iio/20210211122452.78106-1-alexandru.ardelean@xxxxxxxxxx/T/#t * https://lore.kernel.org/linux-iio/20210212101143.18993-1-alexandru.ardelean@xxxxxxxxxx/T/#t Some of the variation from the original work are: 1. It's applied on top of the multibuffer support; so the direction of the data is set per iio_buffer, and not iio_dev 2. Cyclic mode is a separate patch 3. devm_iio_dmaengine_buffer_alloc() requires the definition of 'enum iio_buffer_direction'; which means that 'linux/iio/buffer.h' needs to be included in buffer-dma.h; Lars tried to use a bool, but using the enum seems a bit more consistent and allows us to maybe go down the route of both I/O buffers (some day); not sure if that's sane or not (you never know) 4. Various re-formatting; and added some docstrings where I remembered to so so Lars-Peter Clausen (5): iio: Add output buffer support iio: kfifo-buffer: Add output buffer support iio: buffer-dma: Allow to provide custom buffer ops iio: buffer-dma: Add output buffer support iio: buffer-dma: add support for cyclic DMA transfers drivers/iio/adc/adi-axi-adc.c | 5 +- drivers/iio/buffer/industrialio-buffer-dma.c | 120 ++++++++++++++++-- .../buffer/industrialio-buffer-dmaengine.c | 57 +++++++-- drivers/iio/buffer/kfifo_buf.c | 50 ++++++++ drivers/iio/industrialio-buffer.c | 110 +++++++++++++++- include/linux/iio/buffer-dma.h | 11 +- include/linux/iio/buffer-dmaengine.h | 7 +- include/linux/iio/buffer.h | 7 + include/linux/iio/buffer_impl.h | 11 ++ include/uapi/linux/iio/buffer.h | 1 + 10 files changed, 348 insertions(+), 31 deletions(-) -- 2.17.1