All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Rodrigo Alencar via B4 Relay"
	<devnull+rodrigo.alencar.analog.com@kernel.org>
Cc: conor+dt@kernel.org, devicetree@vger.kernel.org, robh@kernel.org
Subject: Re: [PATCH v3 06/12] iio: dac: ad5686: consume optional reset signal
Date: Tue, 16 Jun 2026 08:30:24 +0000	[thread overview]
Message-ID: <20260616083024.E851F1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260616-ad5686-new-features-v3-6-f829fb7e9262@analog.com>

Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [High] Missing return value checks for `reset_control_assert()` and `reset_control_deassert()`.
- [High] The reset pin is left in a deasserted (driven) state on probe failure or device unbind, leading to potential back-powering of the DAC.
- [Medium] Acquiring the reset control after enabling regulators causes unnecessary power toggling on `-EPROBE_DEFER` and leaves the reset pin floating during power-up.
- [Medium] Missing recovery delay after deasserting the hardware reset may cause subsequent device communications to fail on fast CPUs.
--

commit c3eb5fda0704f698d1f8b2f76769857300b80132
Author: Rodrigo Alencar <rodrigo.alencar@analog.com>

iio: dac: ad5686: consume optional reset signal
    
This commit adds GPIO support for the RESET pin using an optional
reset control local to the probe function. It manually generates
a reset pulse after the device is powered up.

> diff --git a/drivers/iio/dac/ad5686.c b/drivers/iio/dac/ad5686.c
> index fc3863274b291..a48acedff51c1 100644
> --- a/drivers/iio/dac/ad5686.c
> +++ b/drivers/iio/dac/ad5686.c
[ ... ]
> @@ -508,6 +510,15 @@ int ad5686_probe(struct device *dev,
>  
>  	fsleep(5); /* power-up time */
>  
> +	rstc = devm_reset_control_get_optional_exclusive(dev, NULL);

[Severity: Medium]
Is it intentional to fetch the reset control after the regulators are
enabled and the 5µs power-up delay has occurred?

If devm_reset_control_get_optional_exclusive() returns -EPROBE_DEFER,
the driver will disable the regulators and have to retry the sequence
later. Fetching the reset control before enabling regulators might also
prevent the reset pin from floating during power-up.

> +	if (IS_ERR(rstc))
> +		return dev_err_probe(dev, PTR_ERR(rstc),
> +				     "Failed to get reset control\n");
> +
> +	reset_control_assert(rstc);

[Severity: High]
Do we need to check the return value of reset_control_assert() and
reset_control_deassert()?

These functions can fail and return error codes, particularly if the
reset controller is behind a slow bus. Proceeding without checking
could cause the driver to communicate with a device that is still held
in reset.

> +	fsleep(1); /* reset pulse: comfortably bigger than the spec */
> +	reset_control_deassert(rstc);

[Severity: Medium]
Does the device need a guaranteed recovery delay after the reset is
deasserted?

Exiting the hardware reset initiates an internal power-on reset
sequence. On faster CPUs, the execution time before the first SPI/I2C
command might be shorter than the device's required reset recovery time.

[Severity: High]
Should there be a registered devm action to assert the reset pin on
driver removal or probe failure?

Currently, the reset pin is deasserted here but never asserted again on
cleanup. Since devm_regulator_get_enable() automatically disables the
VDD and VLOGIC regulators during cleanup, leaving this pin driven HIGH
while the device is unpowered could forward-bias ESD protection diodes
and back-power or damage the DAC.

> +
>  	/* Initialize masks to all ones */
>  	st->pwr_down_mask = ~0;
>  	st->pwr_down_mode = ~0;

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260616-ad5686-new-features-v3-0-f829fb7e9262@analog.com?part=6

  reply	other threads:[~2026-06-16  8:30 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-16  8:21 [PATCH v3 00/12] New features for the AD5686 IIO driver Rodrigo Alencar via B4 Relay
2026-06-16  8:21 ` Rodrigo Alencar
2026-06-16  8:21 ` [PATCH v3 01/12] dt-bindings: iio: dac: ad5696: add reset/ldac/gain support Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16  8:32   ` sashiko-bot
2026-06-16 12:48   ` Rob Herring
2026-06-16  8:21 ` [PATCH v3 02/12] dt-bindings: iio: dac: ad5696: rework on power supplies Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16 12:50   ` Rob Herring
2026-06-16  8:21 ` [PATCH v3 03/12] dt-bindings: iio: dac: ad5686: add reset/ldac/gain support Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16  8:35   ` sashiko-bot
2026-06-16  8:21 ` [PATCH v3 04/12] dt-bindings: iio: dac: ad5686: rework on power supplies Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16  8:33   ` sashiko-bot
2026-06-16  8:21 ` [PATCH v3 05/12] iio: dac: ad5686: add support for missing " Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16  9:33   ` Joshua Crofts
2026-06-16 10:29     ` Andy Shevchenko
2026-06-16  8:21 ` [PATCH v3 06/12] iio: dac: ad5686: consume optional reset signal Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16  8:30   ` sashiko-bot [this message]
2026-06-16 10:30   ` Andy Shevchenko
2026-06-16  8:21 ` [PATCH v3 07/12] iio: dac: ad5686: add ldac gpio Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16 10:32   ` Andy Shevchenko
2026-06-16  8:21 ` [PATCH v3 08/12] iio: dac: ad5686: introduce sync operation Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16  8:21 ` [PATCH v3 09/12] iio: dac: ad5686: implement new sync() op for the spi bus Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16 10:35   ` Andy Shevchenko
2026-06-16  8:21 ` [PATCH v3 10/12] iio: dac: ad5686: add triggered buffer support Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16 10:42   ` Andy Shevchenko
2026-06-16  8:21 ` [PATCH v3 11/12] iio: dac: ad5686: read_raw/write_raw: use guard(mutex)() Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16 10:43   ` Andy Shevchenko
2026-06-16 10:50     ` Rodrigo Alencar
2026-06-16 10:52       ` Andy Shevchenko
2026-06-16 11:00         ` Rodrigo Alencar
2026-06-16  8:21 ` [PATCH v3 12/12] iio: dac: ad5686: add gain control support Rodrigo Alencar via B4 Relay
2026-06-16  8:21   ` Rodrigo Alencar
2026-06-16  8:34   ` sashiko-bot
2026-06-16 10:47   ` 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=20260616083024.E851F1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=devnull+rodrigo.alencar.analog.com@kernel.org \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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.