On Fri, 12 Feb 2021 12:20:16 +0200 Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx> wrote: > 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 Just thinking about how this is different from input buffers. For now at least I guess we can assume there is no equivalent of multiple consumers and the mux logic needed to support them. However I can definitely see we may get inkernel 'consumers' of these output buffers. Come to think of it, we probably need to rework the inkern logic anyway to deal with multiple buffer input devices. Hopefully it just continues working with the single buffer cases so there won't be any regressions on that front. Largest issue with this series is lack of users. It all seems good in principal but until drivers are making use of it, I'm not keen on merging this extra infrastructure. Jonathan > > 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(-) >