Continuing from: https://lore.kernel.org/linux-iio/20201117162340.43924-1-alexandru.ardelean@xxxxxxxxxx/ Changelog v1 -> v2: * 'iio: buffer: rework buffer & scan_elements dir creation' add more doc-strings detailing the reasoning for this change * 'iio: buffer: re-route scan_elements via it's kobj_type' move list_del() before the kfree()'s in the list destruction * 'iio: buffer: introduce support for attaching more IIO buffers' - changed to 'cnt' variable vs re-using the 'i' for unwinding in iio_buffer_alloc_sysfs_and_mask() - removed kfree(old) in iio_device_attach_buffer() - made iio_device_attach_buffer() an int return; this means that some follow up patches are needed to make this return value be used; * 'iio: buffer: add ioctl() to support opening extra buffers for IIO device' - tested ioctl() with a simple C program; attached to comment; - changed 'i' variable usage to 'sz' for alloc - changed logic for buffer0; returning FD 0; userspace should know that the IIO_BUFFER_GET_FD_IOCTL call returns 0 for buffer0; this is because I can't find a way to determine the FD of the ioctl() in the kernel; duplicating an ioctl() for buffer0 is also bad; Alexandru Ardelean (12): iio: core: register chardev only if needed iio: buffer: add back-ref from iio_buffer to iio_dev iio: buffer: rework buffer & scan_elements dir creation iio: buffer: add index to the first IIO buffer dir and symlink it back iio: core: split __iio_device_attr_init() to init only the attr object iio: buffer: re-route scan_elements via it's kobj_type iio: buffer: re-route core buffer attributes via it's new kobj_type iio: buffer: add helper to get the IIO device to which a buffer belongs iio: re-route all buffer attributes through new buffer kobj_type 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 drivers/iio/accel/adxl372.c | 36 +- drivers/iio/accel/bmc150-accel-core.c | 34 +- drivers/iio/adc/at91-sama5d2_adc.c | 30 +- .../buffer/industrialio-buffer-dmaengine.c | 13 +- .../cros_ec_sensors/cros_ec_sensors_core.c | 30 +- .../common/hid-sensors/hid-sensor-trigger.c | 32 +- drivers/iio/iio_core.h | 11 + drivers/iio/industrialio-buffer.c | 647 ++++++++++++++---- drivers/iio/industrialio-core.c | 117 ++-- include/linux/iio/buffer.h | 6 +- include/linux/iio/buffer_impl.h | 25 +- include/linux/iio/iio-opaque.h | 6 + include/linux/iio/iio.h | 2 +- include/linux/iio/sysfs.h | 50 ++ include/uapi/linux/iio/buffer.h | 10 + 15 files changed, 790 insertions(+), 259 deletions(-) create mode 100644 include/uapi/linux/iio/buffer.h -- 2.17.1