Re: [PATCH AUTOSEL 5.4 105/350] iio: chemical: atlas-ph-sensor: fix iio_triggered_buffer_predisable() position
From: Jonathan Cameron
Date: Sun Dec 15 2019 - 11:01:40 EST
On Tue, 10 Dec 2019 16:03:30 -0500
Sasha Levin <sashal@xxxxxxxxxx> wrote:
> From: Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx>
>
> [ Upstream commit 0c8a6e72f3c04bfe92a64e5e0791bfe006aabe08 ]
>
> The iio_triggered_buffer_{predisable,postenable} functions attach/detach
> the poll functions.
>
> The iio_triggered_buffer_predisable() should be called last, to detach the
> poll func after the devices has been suspended.
>
> The position of iio_triggered_buffer_postenable() is correct.
>
> Note this is not stable material. It's a fix in the logical
> model rather fixing an actual bug. These are being tidied up
> throughout the subsystem to allow more substantial rework that
> was blocked by variations in how things were done.
See comment. This is not what I would consider stable material.
>
> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx>
> Acked-by: Matt Ranostay <matt.ranostay@xxxxxxxxxxxx>
> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
> ---
> drivers/iio/chemical/atlas-ph-sensor.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/iio/chemical/atlas-ph-sensor.c b/drivers/iio/chemical/atlas-ph-sensor.c
> index 3a20cb5d9bffc..6c175eb1c7a7f 100644
> --- a/drivers/iio/chemical/atlas-ph-sensor.c
> +++ b/drivers/iio/chemical/atlas-ph-sensor.c
> @@ -323,16 +323,16 @@ static int atlas_buffer_predisable(struct iio_dev *indio_dev)
> struct atlas_data *data = iio_priv(indio_dev);
> int ret;
>
> - ret = iio_triggered_buffer_predisable(indio_dev);
> + ret = atlas_set_interrupt(data, false);
> if (ret)
> return ret;
>
> - ret = atlas_set_interrupt(data, false);
> + pm_runtime_mark_last_busy(&data->client->dev);
> + ret = pm_runtime_put_autosuspend(&data->client->dev);
> if (ret)
> return ret;
>
> - pm_runtime_mark_last_busy(&data->client->dev);
> - return pm_runtime_put_autosuspend(&data->client->dev);
> + return iio_triggered_buffer_predisable(indio_dev);
> }
>
> static const struct iio_trigger_ops atlas_interrupt_trigger_ops = {