On Wed, Mar 4, 2020 at 1:38 AM Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx> wrote: > > The iio_triggered_buffer_{predisable,postenable} functions attach/detach > the poll functions. > > For the predisable hook, the disable code should occur before detaching > the poll func, and for the postenable hook, the poll func should be > attached before the enable code. > > The lmp9100 was attaching a poll function but never detaching it via any > IIO disable hook. > > This change adds the detaching of the poll function, and moves/renames > lmp91000_buffer_preenable() function to lmp91000_buffer_postenable(). > The idea is to make it more symmetrical, so that when the > iio_triggered_buffer_{predisable,postenable} functions get removed, it's > easier to see. > > Fixes: 67e17300dc1d7 ("iio: potentiostat: add LMP91000 support") > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx> Acked-by: Matt Ranostay <matt.ranostay@xxxxxxxxxxxx> > --- > > Changelog v1 -> v2: > * forgot to call iio_triggered_buffer_postenable() in > lmp91000_buffer_postenable() in v1 > > drivers/iio/potentiostat/lmp91000.c | 18 +++++++++++++----- > 1 file changed, 13 insertions(+), 5 deletions(-) > > diff --git a/drivers/iio/potentiostat/lmp91000.c b/drivers/iio/potentiostat/lmp91000.c > index a0e5f530faa9..2cb11da18e0f 100644 > --- a/drivers/iio/potentiostat/lmp91000.c > +++ b/drivers/iio/potentiostat/lmp91000.c > @@ -275,11 +275,20 @@ static int lmp91000_buffer_cb(const void *val, void *private) > static const struct iio_trigger_ops lmp91000_trigger_ops = { > }; > > -static int lmp91000_buffer_preenable(struct iio_dev *indio_dev) > +static int lmp91000_buffer_postenable(struct iio_dev *indio_dev) > { > struct lmp91000_data *data = iio_priv(indio_dev); > + int err; > > - return iio_channel_start_all_cb(data->cb_buffer); > + err = iio_triggered_buffer_postenable(indio_dev); > + if (err) > + return err; > + > + err = iio_channel_start_all_cb(data->cb_buffer); > + if (err) > + iio_triggered_buffer_predisable(indio_dev); > + > + return err; > } > > static int lmp91000_buffer_predisable(struct iio_dev *indio_dev) > @@ -288,12 +297,11 @@ static int lmp91000_buffer_predisable(struct iio_dev *indio_dev) > > iio_channel_stop_all_cb(data->cb_buffer); > > - return 0; > + return iio_triggered_buffer_predisable(indio_dev); > } > > static const struct iio_buffer_setup_ops lmp91000_buffer_setup_ops = { > - .preenable = lmp91000_buffer_preenable, > - .postenable = iio_triggered_buffer_postenable, > + .postenable = lmp91000_buffer_postenable, > .predisable = lmp91000_buffer_predisable, > }; > > -- > 2.20.1 >