[PATCH v3 00/11] iio: core,buffer: add support for multiple IIO buffers per IIO device

From: Alexandru Ardelean
Date: Mon Feb 01 2021 - 10:31:12 EST


Changelog v2 -> v3:
* added commit 'docs: ioctl-number.rst: reserve IIO subsystem ioctl() space'
reserving 'i' 0x90-0x9F ioctls for IIO
I did not see any conflicts with others (in the doc)
- related to this, the new IIO_BUFFER_GET_FD_IOCTL is now at 'i' 0x91
* changed approach for creating sysfs buffer directories;
- they are now created as groups on the IIO device; that also means
that the groups array needs to be krealloc-ed and assign later in
the registration
- merged bufferX/ and scan_elementsX/ directories into a single
bufferX/ directory
- for legacy the buffer/ & scan_elements/ directories are kept; but
they're groups objects have been moved on the iio_dev_opaque object
- internally, the iio_dev_attr type is being extended to hold a
reference for an IIO buffer;
= this is great for scan_elements attributes
= and for the rest of the iio_buffer attributes, it means we need to
wrap them into iio_dev_attr

One thing to be determined: if IIO_BUFFER_GET_FD_IOCTL for buffer0 should
return an FD or not.
Right now, it's returning 0.

Alexandru Ardelean (11):
docs: ioctl-number.rst: reserve IIO subsystem ioctl() space
iio: core: register chardev only if needed
iio: core-trigger: make iio_device_register_trigger_consumer() an int
return
iio: core: rework iio device group creation
iio: buffer: group attr count and attr alloc
iio: core: merge buffer/ & scan_elements/ attributes
iio: add reference to iio buffer on iio_dev_attr
iio: buffer: wrap all buffer attributes into iio_dev_attr
iio: core: wrap iio device & buffer into struct for character devices
iio: buffer: introduce support for attaching more IIO buffers
iio: buffer: add ioctl() to support opening extra buffers for IIO
device

.../userspace-api/ioctl/ioctl-number.rst | 1 +
drivers/iio/iio_core.h | 10 +
drivers/iio/iio_core_trigger.h | 4 +-
drivers/iio/industrialio-buffer.c | 420 +++++++++++++++---
drivers/iio/industrialio-core.c | 87 +++-
drivers/iio/industrialio-event.c | 6 +-
drivers/iio/industrialio-trigger.c | 6 +-
include/linux/iio/buffer.h | 4 +-
include/linux/iio/buffer_impl.h | 21 +-
include/linux/iio/iio-opaque.h | 14 +
include/linux/iio/iio.h | 5 -
include/linux/iio/sysfs.h | 3 +
include/uapi/linux/iio/buffer.h | 10 +
13 files changed, 487 insertions(+), 104 deletions(-)
create mode 100644 include/uapi/linux/iio/buffer.h

--
2.17.1