On Fri, 10 Apr 2020 17:17:26 +0300 Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx> wrote: > An IIO device will have multiple buffers, but it shouldn't be allowed that > an IIO buffer should belong to more than 1 IIO device. > > Once things get moved more from IIO device to the IIO buffer, and an IIO > device will be able to have more than 1 buffer attached, there will be a > need for a back-ref to the IIO device [from the IIO buffer]. > > This change adds that. > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx> Much as I hate circular references, I can't see a way around this one... > --- > drivers/iio/industrialio-buffer.c | 2 ++ > include/linux/iio/buffer_impl.h | 3 +++ > 2 files changed, 5 insertions(+) > > diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c > index e6fa1a4e135d..f9ffc7762f6c 100644 > --- a/drivers/iio/industrialio-buffer.c > +++ b/drivers/iio/industrialio-buffer.c > @@ -1478,5 +1478,7 @@ void iio_device_attach_buffer(struct iio_dev *indio_dev, > struct iio_buffer *buffer) > { > indio_dev->buffer = iio_buffer_get(buffer); > + > + indio_dev->buffer->indio_dev = indio_dev; > } > EXPORT_SYMBOL_GPL(iio_device_attach_buffer); > diff --git a/include/linux/iio/buffer_impl.h b/include/linux/iio/buffer_impl.h > index 1e7edf6bed96..8fb92250a190 100644 > --- a/include/linux/iio/buffer_impl.h > +++ b/include/linux/iio/buffer_impl.h > @@ -69,6 +69,9 @@ struct iio_buffer_access_funcs { > * those writing new buffer implementations. > */ > struct iio_buffer { > + /** @indio_dev: IIO device to which this buffer belongs to. */ > + struct iio_dev *indio_dev; > + > /** @length: Number of datums in buffer. */ > unsigned int length; >