[RFC PATCH 0/5] iio: buffer: add output buffer and cyclic mode

From: Alexandru Ardelean
Date: Fri Feb 12 2021 - 05:19:59 EST


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