This is useful for drivers that may have a reference to an IIO buffer, to be able to get a reference back to the IIO device. Signed-off-by: Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx> --- drivers/iio/industrialio-buffer.c | 14 ++++++++++++++ include/linux/iio/buffer.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c index 8470921cf2fa..a2dd30567072 100644 --- a/drivers/iio/industrialio-buffer.c +++ b/drivers/iio/industrialio-buffer.c @@ -1778,6 +1778,20 @@ void iio_buffer_put(struct iio_buffer *buffer) } EXPORT_SYMBOL_GPL(iio_buffer_put); +/** + * iio_buffer_get_iio_dev - Get the IIO device to which this buffer belongs to + * @buffer: The buffer for which to retrieve the IIO device + * + * This function retrieves the IIO device to which this IIO buffer is attached + * to. Given that an IIO device may have multiple IIO buffers, it's useful + * for some drivers to obtain a reference back to the IIO device. + */ +struct iio_dev *iio_buffer_get_iio_dev(struct iio_buffer *buffer) +{ + return buffer->indio_dev; +} +EXPORT_SYMBOL_GPL(iio_buffer_get_iio_dev); + /** * iio_device_attach_buffer - Attach a buffer to a IIO device * @indio_dev: The device the buffer should be attached to diff --git a/include/linux/iio/buffer.h b/include/linux/iio/buffer.h index 8febc23f5f26..b27d8c81f32c 100644 --- a/include/linux/iio/buffer.h +++ b/include/linux/iio/buffer.h @@ -11,6 +11,8 @@ struct iio_buffer; +struct iio_dev *iio_buffer_get_iio_dev(struct iio_buffer *buffer); + int iio_push_to_buffers(struct iio_dev *indio_dev, const void *data); /** -- 2.17.1