On Fri, 2024-05-24 at 12:00 +0300, Ramona Gradinariu wrote: > Add new API called devm_adis_setup_buffer_and_trigger_with_attrs() which > also takes buffer attributes as a parameter. > Rewrite devm_adis_setup_buffer_and_trigger() implementation such that it > calls devm_adis_setup_buffer_and_trigger_with_attrs() with buffer > attributes parameter NULL > > Signed-off-by: Ramona Gradinariu <ramona.bolboaca13@xxxxxxxxx> > --- Reviewed-by: Nuno Sa <nuno.sa@xxxxxxxxxx> > no changes in v4 > drivers/iio/imu/adis_buffer.c | 32 ++++++++++++++++++-------------- > include/linux/iio/imu/adis.h | 19 +++++++++++++++---- > 2 files changed, 33 insertions(+), 18 deletions(-) > > diff --git a/drivers/iio/imu/adis_buffer.c b/drivers/iio/imu/adis_buffer.c > index 928933027ae3..871b78b225e2 100644 > --- a/drivers/iio/imu/adis_buffer.c > +++ b/drivers/iio/imu/adis_buffer.c > @@ -175,31 +175,36 @@ static void adis_buffer_cleanup(void *arg) > } > > /** > - * devm_adis_setup_buffer_and_trigger() - Sets up buffer and trigger for > - * the managed adis device > + * devm_adis_setup_buffer_and_trigger_with_attrs() - Sets up buffer and trigger > + * for the managed adis device with buffer attributes. > * @adis: The adis device > * @indio_dev: The IIO device > - * @trigger_handler: Optional trigger handler, may be NULL. > + * @trigger_handler: Trigger handler: should handle the buffer readings. > + * @ops: Optional buffer setup functions, may be NULL. > + * @buffer_attrs: Extra buffer attributes. > * > * Returns 0 on success, a negative error code otherwise. > * > - * This function sets up the buffer and trigger for a adis devices. If > - * 'trigger_handler' is NULL the default trigger handler will be used. The > - * default trigger handler will simply read the registers assigned to the > - * currently active channels. > + * This function sets up the buffer (with buffer setup functions and extra > + * buffer attributes) and trigger for a adis devices with buffer attributes. > */ > int > -devm_adis_setup_buffer_and_trigger(struct adis *adis, struct iio_dev *indio_dev, > - irq_handler_t trigger_handler) > +devm_adis_setup_buffer_and_trigger_with_attrs(struct adis *adis, struct iio_dev > *indio_dev, > + irq_handler_t trigger_handler, > + const struct iio_buffer_setup_ops > *ops, > + const struct iio_dev_attr > **buffer_attrs) > { > int ret; > > if (!trigger_handler) > trigger_handler = adis_trigger_handler; > > - ret = devm_iio_triggered_buffer_setup(&adis->spi->dev, indio_dev, > - &iio_pollfunc_store_time, > - trigger_handler, NULL); > + ret = devm_iio_triggered_buffer_setup_ext(&adis->spi->dev, indio_dev, > + &iio_pollfunc_store_time, > + trigger_handler, > + IIO_BUFFER_DIRECTION_IN, > + ops, > + buffer_attrs); > if (ret) > return ret; > > @@ -212,5 +217,4 @@ devm_adis_setup_buffer_and_trigger(struct adis *adis, struct > iio_dev *indio_dev, > return devm_add_action_or_reset(&adis->spi->dev, adis_buffer_cleanup, > adis); > } > -EXPORT_SYMBOL_NS_GPL(devm_adis_setup_buffer_and_trigger, IIO_ADISLIB); > - > +EXPORT_SYMBOL_NS_GPL(devm_adis_setup_buffer_and_trigger_with_attrs, IIO_ADISLIB); > diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h > index 8898966bc0f0..8dda3cfa5773 100644 > --- a/include/linux/iio/imu/adis.h > +++ b/include/linux/iio/imu/adis.h > @@ -21,6 +21,7 @@ > #define ADIS_REG_PAGE_ID 0x00 > > struct adis; > +struct iio_dev_attr; > > /** > * struct adis_timeouts - ADIS chip variant timeouts > @@ -515,11 +516,19 @@ int adis_single_conversion(struct iio_dev *indio_dev, > #define ADIS_ROT_CHAN(mod, addr, si, info_sep, info_all, bits) \ > ADIS_MOD_CHAN(IIO_ROT, mod, addr, si, info_sep, info_all, bits) > > +#define devm_adis_setup_buffer_and_trigger(adis, indio_dev, trigger_handler) \ > + devm_adis_setup_buffer_and_trigger_with_attrs((adis), (indio_dev), \ > + (trigger_handler), NULL, \ > + NULL) > + > #ifdef CONFIG_IIO_ADIS_LIB_BUFFER > > int > -devm_adis_setup_buffer_and_trigger(struct adis *adis, struct iio_dev *indio_dev, > - irq_handler_t trigger_handler); > +devm_adis_setup_buffer_and_trigger_with_attrs(struct adis *adis, > + struct iio_dev *indio_dev, > + irq_handler_t trigger_handler, > + const struct iio_buffer_setup_ops > *ops, > + const struct iio_dev_attr > **buffer_attrs); > > int devm_adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev); > > @@ -529,8 +538,10 @@ int adis_update_scan_mode(struct iio_dev *indio_dev, > #else /* CONFIG_IIO_BUFFER */ > > static inline int > -devm_adis_setup_buffer_and_trigger(struct adis *adis, struct iio_dev *indio_dev, > - irq_handler_t trigger_handler) > +devm_adis_setup_buffer_and_trigger_with_attrs(struct adis *adis, struct iio_dev > *indio_dev, > + irq_handler_t trigger_handler, > + const struct iio_buffer_setup_ops > *ops, > + const struct iio_dev_attr > **buffer_attrs) > { > return 0; > } > -- > 2.34.1 >