On Wed, 4 Mar 2020 13:17:36 -0800 Matt Ranostay <mranostay@xxxxxxxxx> wrote: > 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> I'm not going to rush this one in as it's been like this for a while Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it, Thanks, Jonathan > > > --- > > > > 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 > >