From: Archit Anant <architanant5@gmail.com>
To: jic23@kernel.org, lars@metafoo.de, Michael.Hennerich@analog.com
Cc: dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org,
linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
Archit Anant <architanant5@gmail.com>
Subject: [PATCH v3 3/4] iio: adc: ad799x: use devm_add_action_or_reset for regulators
Date: Mon, 2 Mar 2026 18:36:31 +0530 [thread overview]
Message-ID: <20260302130632.29144-4-architanant5@gmail.com> (raw)
In-Reply-To: <20260302130632.29144-1-architanant5@gmail.com>
Convert the manual regulator_disable() handling to use
devm_add_action_or_reset(). This guarantees that the regulators are
disabled in the correct reverse order of allocation during device
teardown or probe failure.
This removes the need to manually disable the regulators in the
remove() function.
Suggested-by: David Lechner <dlechner@baylibre.com>
Signed-off-by: Archit Anant <architanant5@gmail.com>
---
drivers/iio/adc/ad799x.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c
index 35e0589428d0..1a96b5417ecf 100644
--- a/drivers/iio/adc/ad799x.c
+++ b/drivers/iio/adc/ad799x.c
@@ -781,6 +781,13 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
},
};
+static void ad799x_reg_disable(void *data)
+{
+ struct regulator *reg = data;
+
+ regulator_disable(reg);
+}
+
static int ad799x_probe(struct i2c_client *client)
{
const struct i2c_device_id *id = i2c_client_get_device_id(client);
@@ -818,6 +825,10 @@ static int ad799x_probe(struct i2c_client *client)
goto error_disable_reg;
st->vcc_uv = ret;
+ ret = devm_add_action_or_reset(&client->dev, ad799x_reg_disable, st->reg);
+ if (ret)
+ return ret;
+
/* check if an external reference is supplied */
if (chip_info->has_vref) {
st->vref = devm_regulator_get_optional(&client->dev, "vref");
@@ -840,6 +851,11 @@ static int ad799x_probe(struct i2c_client *client)
if (ret < 0)
goto error_disable_vref;
st->vref_uv = ret;
+
+ ret = devm_add_action_or_reset(&client->dev, ad799x_reg_disable,
+ st->vref);
+ if (ret)
+ goto error_disable_reg;
}
}
@@ -901,9 +917,6 @@ static void ad799x_remove(struct i2c_client *client)
iio_device_unregister(indio_dev);
iio_triggered_buffer_cleanup(indio_dev);
- if (st->vref)
- regulator_disable(st->vref);
- regulator_disable(st->reg);
}
static int ad799x_suspend(struct device *dev)
--
2.39.5
next prev parent reply other threads:[~2026-03-02 13:07 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
2026-03-02 13:06 ` Archit Anant [this message]
2026-03-02 13:16 ` [PATCH v3 3/4] iio: adc: ad799x: use devm_add_action_or_reset for regulators 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=20260302130632.29144-4-architanant5@gmail.com \
--to=architanant5@gmail.com \
--cc=Michael.Hennerich@analog.com \
--cc=andy@kernel.org \
--cc=dlechner@baylibre.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