From: Jonathan Cameron <jic23@kernel.org>
To: Rodrigo Alencar via B4 Relay
<devnull+rodrigo.alencar.analog.com@kernel.org>
Cc: rodrigo.alencar@analog.com,
Michael Auchter <michael.auchter@ni.com>,
linux@analog.com, linux-iio@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-hardening@vger.kernel.org,
Michael Hennerich <Michael.Hennerich@analog.com>,
David Lechner <dlechner@baylibre.com>,
Andy Shevchenko <andy@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Philipp Zabel <p.zabel@pengutronix.de>,
Kees Cook <kees@kernel.org>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>
Subject: Re: [PATCH v2 05/12] iio: dac: ad5686: add support for missing power supplies
Date: Sun, 14 Jun 2026 18:29:30 +0100 [thread overview]
Message-ID: <20260614182930.51e35566@jic23-huawei> (raw)
In-Reply-To: <20260609-ad5686-new-features-v2-5-70b423f5c76d@analog.com>
On Tue, 09 Jun 2026 11:13:00 +0100
Rodrigo Alencar via B4 Relay <devnull+rodrigo.alencar.analog.com@kernel.org> wrote:
> From: Rodrigo Alencar <rodrigo.alencar@analog.com>
>
> Get and enable regulators for vdd, vlogic and vref input power pins. Vdd
> is the input power supply, while vlogic powers the digital side. vref is
> replacing vcc, which is being deprecated, but still supported. The value
> of vref_mv is checked so that a device without internal voltage reference
> cannot proceed without an explicit supply. For correct operation, vdd and
> vlogic are required, then devm_regulator_get_enable() is used so the
> driver can still work without them by using the stub/dummy regulators.
> Error report uses dev_err_probe(), which helps debugging an init issue.
>
> Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
Possibly the comment below falls into the bikeshed colour category.
I'm not really that fussed either way.
> ---
> drivers/iio/dac/ad5686.c | 21 +++++++++++++++++++--
> 1 file changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/dac/ad5686.c b/drivers/iio/dac/ad5686.c
> index 5840fda4b011..fc3863274b29 100644
> --- a/drivers/iio/dac/ad5686.c
> +++ b/drivers/iio/dac/ad5686.c
> @@ -8,6 +8,8 @@
> #include <linux/array_size.h>
> #include <linux/bitfield.h>
> #include <linux/bitops.h>
> +#include <linux/delay.h>
> +#include <linux/dev_printk.h>
> #include <linux/errno.h>
> #include <linux/export.h>
> #include <linux/kstrtox.h>
> @@ -484,12 +486,27 @@ int ad5686_probe(struct device *dev,
> st->ops = ops;
> st->chip_info = chip_info;
>
> - ret = devm_regulator_get_enable_read_voltage(dev, "vcc");
> + ret = devm_regulator_get_enable(dev, "vdd");
> + if (ret)
> + return dev_err_probe(dev, ret, "failed to enable vdd supply\n");
> +
> + ret = devm_regulator_get_enable(dev, "vlogic");
> + if (ret)
> + return dev_err_probe(dev, ret, "failed to enable vlogic supply\n");
> +
> + ret = devm_regulator_get_enable_read_voltage(dev, "vref");
> + if (ret == -ENODEV) /* vcc-supply is deprecated, but supported still */
> + ret = devm_regulator_get_enable_read_voltage(dev, "vcc");
> if (ret < 0 && ret != -ENODEV)
> - return ret;
> + return dev_err_probe(dev, ret, "failed to read vref voltage\n");
>
> st->use_internal_vref = ret == -ENODEV;
I think I'd slightly prefer this as
ret = devm_regulator_get_enable_read_voltage(dev, "vref");
if (ret == -ENODEV) /* vcc-supply is deprecated, but supported still */
ret = devm_regulator_get_enable_read_voltage(dev, "vcc");
if (ret == -ENODEV)
st->use_internal_vref = true;
else if (ret < 0)
return dev_err_probe()...
(which I think is functionally the same).
But if you strongly prefer yours I guess it is readable enough.
> st->vref_mv = st->use_internal_vref ? st->chip_info->int_vref_mv : ret / 1000;
> + if (!st->vref_mv)
> + return dev_err_probe(dev, -EINVAL,
> + "invalid or not provided vref voltage\n");
> +
> + fsleep(5); /* power-up time */
>
> /* Initialize masks to all ones */
> st->pwr_down_mask = ~0;
>
next prev parent reply other threads:[~2026-06-14 17:29 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-09 10:12 [PATCH v2 00/12] New features for the AD5686 IIO driver Rodrigo Alencar
2026-06-09 10:12 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:12 ` [PATCH v2 01/12] dt-bindings: iio: dac: ad5696: add reset/ldac/gain gpio support Rodrigo Alencar
2026-06-09 10:12 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:12 ` [PATCH v2 02/12] dt-bindings: iio: dac: ad5696: rework on power supplies Rodrigo Alencar
2026-06-09 10:12 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:28 ` sashiko-bot
2026-06-09 11:40 ` Rodrigo Alencar
2026-06-09 16:12 ` Conor Dooley
2026-06-14 17:24 ` Jonathan Cameron
2026-06-09 10:12 ` [PATCH v2 03/12] dt-bindings: iio: dac: ad5686: add reset/ldac/gain gpio support Rodrigo Alencar
2026-06-09 10:12 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:12 ` [PATCH v2 04/12] dt-bindings: iio: dac: ad5686: rework on power supplies Rodrigo Alencar
2026-06-09 10:12 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:22 ` sashiko-bot
2026-06-09 10:13 ` [PATCH v2 05/12] iio: dac: ad5686: add support for missing " Rodrigo Alencar
2026-06-09 10:13 ` Rodrigo Alencar via B4 Relay
2026-06-14 17:29 ` Jonathan Cameron [this message]
2026-06-09 10:13 ` [PATCH v2 06/12] iio: dac: ad5686: consume optional reset signal Rodrigo Alencar
2026-06-09 10:13 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:29 ` sashiko-bot
2026-06-09 11:17 ` Rodrigo Alencar
2026-06-14 17:33 ` Jonathan Cameron
2026-06-09 10:13 ` [PATCH v2 07/12] iio: dac: ad5686: add ldac gpio Rodrigo Alencar
2026-06-09 10:13 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:13 ` [PATCH v2 08/12] iio: dac: ad5686: introduce sync operation Rodrigo Alencar
2026-06-09 10:13 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:13 ` [PATCH v2 09/12] iio: dac: ad5686: implement new sync() op for the spi bus Rodrigo Alencar
2026-06-09 10:13 ` Rodrigo Alencar via B4 Relay
2026-06-09 18:10 ` Andy Shevchenko
2026-06-09 10:13 ` [PATCH v2 10/12] iio: dac: ad5686: add triggered buffer support Rodrigo Alencar
2026-06-09 10:13 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:13 ` [PATCH v2 11/12] iio: dac: ad5686: write_raw: use guard(mutex)() Rodrigo Alencar
2026-06-09 10:13 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:26 ` Joshua Crofts
2026-06-09 11:46 ` Nuno Sá
2026-06-09 22:13 ` Maxwell Doose
2026-06-09 22:17 ` Maxwell Doose
2026-06-14 17:38 ` Jonathan Cameron
2026-06-09 10:13 ` [PATCH v2 12/12] iio: dac: ad5686: add gain control support Rodrigo Alencar
2026-06-09 10:13 ` Rodrigo Alencar via B4 Relay
2026-06-09 10:37 ` sashiko-bot
2026-06-09 11:10 ` Rodrigo Alencar
2026-06-14 17:49 ` Jonathan Cameron
2026-06-09 18:15 ` Andy Shevchenko
2026-06-10 8:25 ` Rodrigo Alencar
2026-06-10 10:44 ` Andy Shevchenko
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=20260614182930.51e35566@jic23-huawei \
--to=jic23@kernel.org \
--cc=Michael.Hennerich@analog.com \
--cc=andy@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=devnull+rodrigo.alencar.analog.com@kernel.org \
--cc=dlechner@baylibre.com \
--cc=gustavoars@kernel.org \
--cc=kees@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@analog.com \
--cc=michael.auchter@ni.com \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=rodrigo.alencar@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.