drivers/iio/adc/ti-ads1119.c | 3 +++ 1 file changed, 3 insertions(+)
The completion is not reinit before wait_for_completion_timeout(),
so wait_for_completion_timeout() will return immediately after
the first successful completion.
Fixes: a9306887eba4 ("iio: adc: ti-ads1119: Add driver")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
---
drivers/iio/adc/ti-ads1119.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/iio/adc/ti-ads1119.c b/drivers/iio/adc/ti-ads1119.c
index c9cedc59cdcd..75dbb469fa27 100644
--- a/drivers/iio/adc/ti-ads1119.c
+++ b/drivers/iio/adc/ti-ads1119.c
@@ -276,6 +276,9 @@ static int ads1119_single_conversion(struct ads1119_state *st,
if (ret)
goto pdown;
+ if (st->client->irq)
+ reinit_completion(&st->completion);
+
ret = ads1119_configure_channel(st, mux, gain, datarate);
if (ret)
goto pdown;
---
base-commit: 3fa5e5702a82d259897bd7e209469bc06368bf31
change-id: 20260303-ti-ads1119-1-cc68e3c01783
Best regards,
--
Felix Gu <ustc.gu@gmail.com>
On Tue, 03 Mar 2026 00:48:45 +0800
Felix Gu <ustc.gu@gmail.com> wrote:
> The completion is not reinit before wait_for_completion_timeout(),
> so wait_for_completion_timeout() will return immediately after
> the first successful completion.
>
> Fixes: a9306887eba4 ("iio: adc: ti-ads1119: Add driver")
> Signed-off-by: Felix Gu <ustc.gu@gmail.com>
I agree there is a bug here but a question inline.
> ---
> drivers/iio/adc/ti-ads1119.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/iio/adc/ti-ads1119.c b/drivers/iio/adc/ti-ads1119.c
> index c9cedc59cdcd..75dbb469fa27 100644
> --- a/drivers/iio/adc/ti-ads1119.c
> +++ b/drivers/iio/adc/ti-ads1119.c
> @@ -276,6 +276,9 @@ static int ads1119_single_conversion(struct ads1119_state *st,
> if (ret)
> goto pdown;
>
> + if (st->client->irq)
> + reinit_completion(&st->completion);
> +
What's the reason for doing here rather than a few lines later.
That is before this
ret = i2c_smbus_write_byte(st->client, ADS1119_CMD_START_SYNC);
which the naming suggests kicks of the actual channel capture?
Jonathan
> ret = ads1119_configure_channel(st, mux, gain, datarate);
> if (ret)
> goto pdown;
>
> ---
> base-commit: 3fa5e5702a82d259897bd7e209469bc06368bf31
> change-id: 20260303-ti-ads1119-1-cc68e3c01783
>
> Best regards,
> What's the reason for doing here rather than a few lines later. > That is before this > ret = i2c_smbus_write_byte(st->client, ADS1119_CMD_START_SYNC); > which the naming suggests kicks of the actual channel capture? > > Jonathan > Hi Jonathan, I think both positions are fine, but the one you mentioned is more precise. I will update it in V2. Best regards, Felix
© 2016 - 2026 Red Hat, Inc.