From: David Lechner <dlechner@baylibre.com>
To: Paul Geurts <paul.geurts@prodrive-technologies.com>,
jic23@kernel.org, nuno.sa@analog.com, andy@kernel.org,
linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
tobias.sperling@softing.com
Subject: Re: [PATCH v2] iio: ti-ads7138: Disable STATS_EN bit while reading conversion results
Date: Fri, 19 Jun 2026 09:42:08 -0500 [thread overview]
Message-ID: <af4dd7a8-4823-4f84-bc88-4b5d8d35237e@baylibre.com> (raw)
In-Reply-To: <20260619090004.355053-1-paul.geurts@prodrive-technologies.com>
On 6/19/26 4:00 AM, Paul Geurts wrote:
> The device might update channel data while it's read by the host,
> providing a data race. Disable the update of the channel stats before
> reading the values.
This description seems a bit short on details. It looks like this
driver doesn't support buffered reads. So if we disable statistics
during a direct read, why would we want to enable statistics in
the first place?
(This driver suffers from the comments say "what" rather than "why"
/* Enable statistics and digital window comparator */ so it is hard
to say what the original intention was.)
Can you explain more what this race condition is about and what
happens before the fix vs. after the fix? People generally do this
with two columns showing concurrent function calls.
It seems to me like disabling statistics would break IIO_CHAN_INFO_PEAK.
>
> Signed-off-by: Paul Geurts <paul.geurts@prodrive-technologies.com>
> Fixes: 93a39542d3c3 ("iio: adc: Add driver for ADS7128 / ADS7138")
> ---
>
> V1 -> V2: Checked return values and prefixed iio: in commit msg
>
> v1: https://lore.kernel.org/all/20260619075646.4100193-1-paul.geurts@prodrive-technologies.com/
> ---
> drivers/iio/adc/ti-ads7138.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/iio/adc/ti-ads7138.c b/drivers/iio/adc/ti-ads7138.c
> index ee5c1b8e3a8e..81380fd2badc 100644
> --- a/drivers/iio/adc/ti-ads7138.c
> +++ b/drivers/iio/adc/ti-ads7138.c
> @@ -237,11 +237,21 @@ static int ads7138_read_raw(struct iio_dev *indio_dev,
>
> switch (mask) {
> case IIO_CHAN_INFO_RAW:
> + /* Disable statistics update so the value is not updated mid read */
> + ret = ads7138_i2c_clear_bit(data->client, ADS7138_REG_GENERAL_CFG,
> + ADS7138_GENERAL_CFG_STATS_EN);
> + if (ret)
> + return ret;
> ret = ads7138_i2c_read_block(data->client,
> ADS7138_REG_RECENT_LSB_CH(chan->channel),
> values, ARRAY_SIZE(values));
> if (ret)
> return ret;
> + /* Enable statistics update after read */
> + ret = ads7138_i2c_set_bit(data->client, ADS7138_REG_GENERAL_CFG,
> + ADS7138_GENERAL_CFG_STATS_EN);
> + if (ret)
> + return ret;
>
> *val = get_unaligned_le16(values);
> return IIO_VAL_INT;
next prev parent reply other threads:[~2026-06-19 14:42 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-19 9:00 Paul Geurts
2026-06-19 14:42 ` David Lechner [this message]
2026-06-20 6:36 ` Andy Shevchenko
2026-06-23 12:52 ` Paul Geurts
2026-06-23 14:56 ` David Lechner
2026-06-24 7:24 ` Paul Geurts
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=af4dd7a8-4823-4f84-bc88-4b5d8d35237e@baylibre.com \
--to=dlechner@baylibre.com \
--cc=andy@kernel.org \
--cc=jic23@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=paul.geurts@prodrive-technologies.com \
--cc=tobias.sperling@softing.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®