From: David Lechner <dlechner@baylibre.com>
To: Archit Anant <architanant5@gmail.com>,
jic23@kernel.org, lars@metafoo.de, Michael.Hennerich@analog.com
Cc: nuno.sa@analog.com, andy@kernel.org, linux-iio@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 2/4] iio: adc: ad799x: cache regulator voltages during probe
Date: Mon, 2 Mar 2026 10:37:46 -0600 [thread overview]
Message-ID: <6b6684d8-180c-49c2-9bce-e9b9f246fae4@baylibre.com> (raw)
In-Reply-To: <20260302130632.29144-3-architanant5@gmail.com>
On 3/2/26 7:06 AM, Archit Anant wrote:
> Reading the regulator voltage via regulator_get_voltage() can be a slow
> operation. Since the reference voltages for this ADC are not expected to
> change at runtime, it is inefficient to query the regulator API every
> time userspace reads the IIO_CHAN_INFO_SCALE attribute.
>
> Cache the VCC and VREF voltages in the state structure during probe().
> This improves the performance of ad799x_read_raw() and removes the
> dependency on the regulator pointers during fast-path reads.
>
> Suggested-by: Jonathan Cameron <jic23@kernel.org>
> Signed-off-by: Archit Anant <architanant5@gmail.com>
> ---
> drivers/iio/adc/ad799x.c | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c
> index 7775be874081..35e0589428d0 100644
> --- a/drivers/iio/adc/ad799x.c
> +++ b/drivers/iio/adc/ad799x.c
> @@ -135,6 +135,10 @@ struct ad799x_state {
> u16 config;
>
> unsigned int transfer_size;
> +
> + int vcc_uv;
> + int vref_uv;
> +
> IIO_DECLARE_DMA_BUFFER_WITH_TS(__be16, rx_buf, AD799X_MAX_CHANNELS);
> };
>
> @@ -303,9 +307,9 @@ static int ad799x_read_raw(struct iio_dev *indio_dev,
> return IIO_VAL_INT;
> case IIO_CHAN_INFO_SCALE:
> if (st->vref)
> - ret = regulator_get_voltage(st->vref);
> + ret = st->vref_uv;
> else
> - ret = regulator_get_voltage(st->reg);
> + ret = st->vcc_uv;
>
> if (ret < 0)
> return ret;
This can be simplified even more. See reply to v2.
We could even move the if statement to probe and only
add one state variable.
next prev parent reply other threads:[~2026-03-02 16:37 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-02 13:06 [PATCH v3 0/4] iio: adc: ad799x: modernize resource management Archit Anant
2026-03-02 13:06 ` [PATCH v3 1/4] iio: adc: ad799x: make rx_buf static and DMA-safe Archit Anant
2026-03-02 16:29 ` David Lechner
2026-03-02 16:31 ` David Lechner
2026-03-02 13:06 ` [PATCH v3 2/4] iio: adc: ad799x: cache regulator voltages during probe Archit Anant
2026-03-02 13:13 ` Andy Shevchenko
2026-03-02 16:37 ` David Lechner [this message]
2026-03-02 13:06 ` [PATCH v3 3/4] iio: adc: ad799x: use devm_add_action_or_reset for regulators Archit Anant
2026-03-02 13:16 ` Andy Shevchenko
2026-03-02 16:35 ` David Lechner
2026-03-02 13:06 ` [PATCH v3 4/4] iio: adc: ad799x: use devm_iio_device_register and drop remove Archit Anant
2026-03-02 13:17 ` Andy Shevchenko
2026-03-02 16:28 ` [PATCH v3 0/4] iio: adc: ad799x: modernize resource management David Lechner
2026-03-03 5:11 ` Archit Anant
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=6b6684d8-180c-49c2-9bce-e9b9f246fae4@baylibre.com \
--to=dlechner@baylibre.com \
--cc=Michael.Hennerich@analog.com \
--cc=andy@kernel.org \
--cc=architanant5@gmail.com \
--cc=jic23@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.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