> -----Original Message----- > From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > Sent: Tuesday, September 15, 2020 12:10 PM > To: Sa, Nuno <Nuno.Sa@xxxxxxxxxx> > Cc: linux-iio@xxxxxxxxxxxxxxx; devel@xxxxxxxxxxxxxxxxxxxx; Lars-Peter > Clausen <lars@xxxxxxxxxx>; Hennerich, Michael > <Michael.Hennerich@xxxxxxxxxx>; Jonathan Cameron <jic23@xxxxxxxxxx>; > Hartmut Knaack <knaack.h@xxxxxx>; Peter Meerwald-Stadler > <pmeerw@xxxxxxxxxx>; Bogdan, Dragos <Dragos.Bogdan@xxxxxxxxxx>; > Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>; Ardelean, Alexandru > <alexandru.Ardelean@xxxxxxxxxx> > Subject: Re: [PATCH 10/10] iio: adis: Drop non Managed device functions > > [External] > > On Tue, 15 Sep 2020 11:33:45 +0200 > Nuno Sá <nuno.sa@xxxxxxxxxx> wrote: > > > Drop `adis_setup_buffer_and_trigger()`. All users were updated to use > > the devm version of this function. This avoids having almost the same > > code repeated. > > > > Signed-off-by: Nuno Sá <nuno.sa@xxxxxxxxxx> > > Good to see this cleanup, as long as we tidy up the few issues in the > earlier patches. > > Note I think I only commented on first instance of each thing to fix. > Please carry them through all the patches. > > Thanks, > > Jonathan So, I did thought about further cleaning the probe functions in order to get rid of the remove function but it felt like a different series to me. Anyways, since it's fine with you to include those changes here I will send a v2. - Nuno Sá > > --- > > drivers/iio/imu/adis_buffer.c | 64 +++------------------------------- > > drivers/iio/imu/adis_trigger.c | 60 ------------------------------- > > include/linux/iio/imu/adis.h | 27 -------------- > > 3 files changed, 4 insertions(+), 147 deletions(-) > > > > diff --git a/drivers/iio/imu/adis_buffer.c b/drivers/iio/imu/adis_buffer.c > > index 5b4225ee09b9..df6144285470 100644 > > --- a/drivers/iio/imu/adis_buffer.c > > +++ b/drivers/iio/imu/adis_buffer.c > > @@ -169,48 +169,6 @@ static void adis_buffer_cleanup(void *arg) > > kfree(adis->xfer); > > } > > > > -/** > > - * adis_setup_buffer_and_trigger() - Sets up buffer and trigger for the > adis device > > - * @adis: The adis device. > > - * @indio_dev: The IIO device. > > - * @trigger_handler: Optional trigger handler, may be NULL. > > - * > > - * 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. > > - * > > - * adis_cleanup_buffer_and_trigger() should be called to free the > resources > > - * allocated by this function. > > - */ > > -int adis_setup_buffer_and_trigger(struct adis *adis, struct iio_dev > *indio_dev, > > - irqreturn_t (*trigger_handler)(int, void *)) > > -{ > > - int ret; > > - > > - if (!trigger_handler) > > - trigger_handler = adis_trigger_handler; > > - > > - ret = iio_triggered_buffer_setup(indio_dev, > &iio_pollfunc_store_time, > > - trigger_handler, NULL); > > - if (ret) > > - return ret; > > - > > - if (adis->spi->irq) { > > - ret = adis_probe_trigger(adis, indio_dev); > > - if (ret) > > - goto error_buffer_cleanup; > > - } > > - return 0; > > - > > -error_buffer_cleanup: > > - iio_triggered_buffer_cleanup(indio_dev); > > - return ret; > > -} > > -EXPORT_SYMBOL_GPL(adis_setup_buffer_and_trigger); > > - > > /** > > * devm_adis_setup_buffer_and_trigger() - Sets up buffer and trigger for > > * the managed adis device > > @@ -220,7 +178,10 @@ > EXPORT_SYMBOL_GPL(adis_setup_buffer_and_trigger); > > * > > * Returns 0 on success, a negative error code otherwise. > > * > > - * This function perfoms exactly the same as > adis_setup_buffer_and_trigger() > > + * 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. > > */ > > int > > devm_adis_setup_buffer_and_trigger(struct adis *adis, struct iio_dev > *indio_dev, > > @@ -248,20 +209,3 @@ devm_adis_setup_buffer_and_trigger(struct adis > *adis, struct iio_dev *indio_dev, > > } > > EXPORT_SYMBOL_GPL(devm_adis_setup_buffer_and_trigger); > > > > -/** > > - * adis_cleanup_buffer_and_trigger() - Free buffer and trigger resources > > - * @adis: The adis device. > > - * @indio_dev: The IIO device. > > - * > > - * Frees resources allocated by adis_setup_buffer_and_trigger() > > - */ > > -void adis_cleanup_buffer_and_trigger(struct adis *adis, > > - struct iio_dev *indio_dev) > > -{ > > - if (adis->spi->irq) > > - adis_remove_trigger(adis); > > - kfree(adis->buffer); > > - kfree(adis->xfer); > > - iio_triggered_buffer_cleanup(indio_dev); > > -} > > -EXPORT_SYMBOL_GPL(adis_cleanup_buffer_and_trigger); > > diff --git a/drivers/iio/imu/adis_trigger.c b/drivers/iio/imu/adis_trigger.c > > index 8afe71947c00..64e0ba51cb18 100644 > > --- a/drivers/iio/imu/adis_trigger.c > > +++ b/drivers/iio/imu/adis_trigger.c > > @@ -55,53 +55,6 @@ static int adis_validate_irq_flag(struct adis *adis) > > > > return 0; > > } > > -/** > > - * adis_probe_trigger() - Sets up trigger for a adis device > > - * @adis: The adis device > > - * @indio_dev: The IIO device > > - * > > - * Returns 0 on success or a negative error code > > - * > > - * adis_remove_trigger() should be used to free the trigger. > > - */ > > -int adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev) > > -{ > > - int ret; > > - > > - adis->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name, > > - indio_dev->id); > > - if (adis->trig == NULL) > > - return -ENOMEM; > > - > > - adis_trigger_setup(adis); > > - > > - ret = adis_validate_irq_flag(adis); > > - if (ret) > > - return ret; > > - > > - ret = request_irq(adis->spi->irq, > > - &iio_trigger_generic_data_rdy_poll, > > - adis->irq_flag, > > - indio_dev->name, > > - adis->trig); > > - if (ret) > > - goto error_free_trig; > > - > > - ret = iio_trigger_register(adis->trig); > > - > > - indio_dev->trig = iio_trigger_get(adis->trig); > > - if (ret) > > - goto error_free_irq; > > - > > - return 0; > > - > > -error_free_irq: > > - free_irq(adis->spi->irq, adis->trig); > > -error_free_trig: > > - iio_trigger_free(adis->trig); > > - return ret; > > -} > > -EXPORT_SYMBOL_GPL(adis_probe_trigger); > > > > /** > > * devm_adis_probe_trigger() - Sets up trigger for a managed adis device > > @@ -137,16 +90,3 @@ int devm_adis_probe_trigger(struct adis *adis, > struct iio_dev *indio_dev) > > } > > EXPORT_SYMBOL_GPL(devm_adis_probe_trigger); > > > > -/** > > - * adis_remove_trigger() - Remove trigger for a adis devices > > - * @adis: The adis device > > - * > > - * Removes the trigger previously registered with adis_probe_trigger(). > > - */ > > -void adis_remove_trigger(struct adis *adis) > > -{ > > - iio_trigger_unregister(adis->trig); > > - free_irq(adis->spi->irq, adis->trig); > > - iio_trigger_free(adis->trig); > > -} > > -EXPORT_SYMBOL_GPL(adis_remove_trigger); > > diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h > > index 2df67448f0d1..01ba691da2f3 100644 > > --- a/include/linux/iio/imu/adis.h > > +++ b/include/linux/iio/imu/adis.h > > @@ -517,14 +517,8 @@ struct adis_burst { > > int > > devm_adis_setup_buffer_and_trigger(struct adis *adis, struct iio_dev > *indio_dev, > > irq_handler_t trigger_handler); > > -int adis_setup_buffer_and_trigger(struct adis *adis, > > - struct iio_dev *indio_dev, irqreturn_t (*trigger_handler)(int, void > *)); > > -void adis_cleanup_buffer_and_trigger(struct adis *adis, > > - struct iio_dev *indio_dev); > > > > int devm_adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev); > > -int adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev); > > -void adis_remove_trigger(struct adis *adis); > > > > int adis_update_scan_mode(struct iio_dev *indio_dev, > > const unsigned long *scan_mask); > > @@ -538,33 +532,12 @@ devm_adis_setup_buffer_and_trigger(struct adis > *adis, struct iio_dev *indio_dev, > > return 0; > > } > > > > -static inline int adis_setup_buffer_and_trigger(struct adis *adis, > > - struct iio_dev *indio_dev, irqreturn_t (*trigger_handler)(int, void *)) > > -{ > > - return 0; > > -} > > - > > -static inline void adis_cleanup_buffer_and_trigger(struct adis *adis, > > - struct iio_dev *indio_dev) > > -{ > > -} > > - > > static inline int devm_adis_probe_trigger(struct adis *adis, > > struct iio_dev *indio_dev) > > { > > return 0; > > } > > > > -static inline int adis_probe_trigger(struct adis *adis, > > - struct iio_dev *indio_dev) > > -{ > > - return 0; > > -} > > - > > -static inline void adis_remove_trigger(struct adis *adis) > > -{ > > -} > > - > > #define adis_update_scan_mode NULL > > > > #endif /* CONFIG_IIO_BUFFER */ >