drivers/iio/adc/ti-ads1298.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
At the lowest supported data rate of 250Hz, one conversion period is
4ms, not 40ms. The 50ms timeout is deliberately conservative to allow
for kernel scheduling latency, which can be significant under load or
on slow machines.
Fix the comment to state the correct conversion time, use "lowest sample
rate" for clarity, and explain that the extra margin exists to absorb
scheduling latency so that no one is tempted to shrink the timeout to
match the conversion period.
Signed-off-by: Md Shofiqul Islam <shofiqtest@gmail.com>
---
drivers/iio/adc/ti-ads1298.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/adc/ti-ads1298.c b/drivers/iio/adc/ti-ads1298.c
index cf5f954206..128b45a301 100644
--- a/drivers/iio/adc/ti-ads1298.c
+++ b/drivers/iio/adc/ti-ads1298.c
@@ -210,7 +210,11 @@ static int ads1298_read_one(struct ads1298_private *priv, int chan_index)
return ret;
}
- /* Cannot take longer than 40ms (250Hz) */
+ /*
+ * One conversion takes at most 4ms at the lowest sample rate (250Hz).
+ * Use 50ms to allow for kernel scheduling latency.
+ */
ret = wait_for_completion_timeout(&priv->completion, msecs_to_jiffies(50));
if (!ret)
return -ETIMEDOUT;
--
2.54.0.windows.1
On Sun, May 10, 2026 at 03:38:01PM +0300, Md Shofiqul Islam wrote: > At the lowest supported data rate of 250Hz, one conversion period is > 4ms, not 40ms. The 50ms timeout is deliberately conservative to allow > for kernel scheduling latency, which can be significant under load or > on slow machines. > > Fix the comment to state the correct conversion time, use "lowest sample > rate" for clarity, and explain that the extra margin exists to absorb > scheduling latency so that no one is tempted to shrink the timeout to > match the conversion period. > > Signed-off-by: Md Shofiqul Islam <shofiqtest@gmail.com> > --- Here should be a changelog. What's different to v2 to v1? > - /* Cannot take longer than 40ms (250Hz) */ > + /* > + * One conversion takes at most 4ms at the lowest sample rate (250Hz). > + * Use 50ms to allow for kernel scheduling latency. > + */ > ret = wait_for_completion_timeout(&priv->completion, msecs_to_jiffies(50)); > if (!ret) > return -ETIMEDOUT; It's also better to drop a ret assignment here as it's counter intuitive. if (!wait_for_completion_timeout(&priv->completion, msecs_to_jiffies(50))) return -ETIMEDOUT; (This might require more changes related to this ret drop.) -- With Best Regards, Andy Shevchenko
© 2016 - 2026 Red Hat, Inc.