From: Jonathan Cameron <jic23@kernel.org>
To: Oleksij Rempel <o.rempel@pengutronix.de>
Cc: "Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
kernel@pengutronix.de, linux-kernel@vger.kernel.org,
linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
"Andy Shevchenko" <andy@kernel.org>,
"David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"David Jander" <david@protonic.nl>
Subject: Re: [PATCH v1 6/8] iio: dac: ds4424: clear outputs on probe
Date: Fri, 23 Jan 2026 09:38:04 +0000 [thread overview]
Message-ID: <20260123093804.139f0409@jic23-huawei> (raw)
In-Reply-To: <20260119182424.1660601-7-o.rempel@pengutronix.de>
On Mon, 19 Jan 2026 19:24:22 +0100
Oleksij Rempel <o.rempel@pengutronix.de> wrote:
> The DS44xx devices have no reset pin or reset bit, so output registers
> may retain preconfigured values across reboot or warm reset.
>
> Also, the driver suspend/resume path restores from data->raw. When the
> device is first probed, data->raw is zero-initialized and may not match
> the actual hardware state. A later suspend/resume can therefore change an
> output from a preconfigured non-zero value to 0 mA.
For DACs we often want to retain settings from before kernel load (or
on exit of the driver). Can we just read them back from the device to
fill in the cached versions? If we can I think that would be preferred
option.
Jonathan
>
> Initialize all channels to 0 output current during probe to ensure a
> deterministic baseline and consistent suspend/resume behavior.
>
> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
> ---
> drivers/iio/dac/ds4424.c | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/drivers/iio/dac/ds4424.c b/drivers/iio/dac/ds4424.c
> index a0c60eb89717..2d299a52cede 100644
> --- a/drivers/iio/dac/ds4424.c
> +++ b/drivers/iio/dac/ds4424.c
> @@ -220,6 +220,20 @@ static int ds4424_verify_chip(struct iio_dev *indio_dev)
> return ret;
> }
>
> +static int ds4424_init(struct iio_dev *indio_dev)
> +{
> + int i, ret;
> +
> + /* Set all channels to 0 current. */
> + for (i = 0; i < indio_dev->num_channels; i++) {
> + ret = ds4424_set_value(indio_dev, 0, &indio_dev->channels[i]);
> + if (ret < 0)
> + return ret;
> + }
> +
> + return 0;
> +}
> +
> static int ds4424_setup_channels(struct i2c_client *client,
> struct ds4424_data *data,
> struct iio_dev *indio_dev)
> @@ -397,6 +411,11 @@ static int ds4424_probe(struct i2c_client *client)
> if (ret)
> goto fail;
>
> + /* No reset pin/bit: clear any preconfigured output on probe. */
> + ret = ds4424_init(indio_dev);
> + if (ret)
> + goto fail;
> +
> indio_dev->modes = INDIO_DIRECT_MODE;
> indio_dev->info = &ds4424_iio_info;
>
next prev parent reply other threads:[~2026-01-23 9:38 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-19 18:24 [PATCH v1 0/8] iio: dac: ds4424: add DS4402/DS4404 support and scale Oleksij Rempel
2026-01-19 18:24 ` [PATCH v1 1/8] dt-bindings: iio: dac: maxim,ds4424: add ds4402/ds4404 Oleksij Rempel
2026-01-19 18:28 ` Conor Dooley
2026-01-19 18:24 ` [PATCH v1 2/8] dt-bindings: iio: dac: maxim,ds4424: add maxim,rfs-ohms property Oleksij Rempel
2026-01-19 18:27 ` Conor Dooley
2026-01-23 9:28 ` Jonathan Cameron
2026-01-23 10:03 ` Oleksij Rempel
2026-01-25 10:22 ` Jonathan Cameron
2026-01-26 9:54 ` Oleksij Rempel
2026-01-20 10:39 ` Krzysztof Kozlowski
2026-01-19 18:24 ` [PATCH v1 3/8] iio: dac: ds4424: add DS4402/DS4404 device IDs Oleksij Rempel
2026-01-19 18:24 ` [PATCH v1 4/8] iio: dac: ds4424: reject -128 RAW value Oleksij Rempel
2026-01-19 19:03 ` Andy Shevchenko
2026-01-23 9:33 ` Jonathan Cameron
2026-01-26 9:52 ` Oleksij Rempel
2026-01-19 18:24 ` [PATCH v1 5/8] iio: dac: ds4424: add Rfs-based scale and per-variant limits Oleksij Rempel
2026-01-19 19:11 ` Andy Shevchenko
2026-01-19 18:24 ` [PATCH v1 6/8] iio: dac: ds4424: clear outputs on probe Oleksij Rempel
2026-01-19 19:12 ` Andy Shevchenko
2026-01-23 9:38 ` Jonathan Cameron [this message]
2026-01-23 9:59 ` Oleksij Rempel
2026-01-19 18:24 ` [PATCH v1 7/8] iio: dac: ds4424: ratelimit read errors and use device context Oleksij Rempel
2026-01-19 19:14 ` Andy Shevchenko
2026-01-19 18:24 ` [PATCH v1 8/8] iio: dac: ds4424: document output sign and probe verification Oleksij Rempel
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=20260123093804.139f0409@jic23-huawei \
--to=jic23@kernel.org \
--cc=andy@kernel.org \
--cc=conor+dt@kernel.org \
--cc=david@protonic.nl \
--cc=devicetree@vger.kernel.org \
--cc=dlechner@baylibre.com \
--cc=kernel@pengutronix.de \
--cc=krzk+dt@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=o.rempel@pengutronix.de \
--cc=robh@kernel.org \
/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