public inbox for linux-iio@vger.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: linux-iio@vger.kernel.org
Cc: Alexandru Ardelean <aardelean@deviqon.com>,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>,
	Matt Ranostay <matt.ranostay@konsulko.com>
Subject: [PATCH 8/8] iio: adc: ti-adc161s626: Use devm managed functions for all of probe.
Date: Sun, 16 May 2021 18:25:20 +0100	[thread overview]
Message-ID: <20210516172520.1398835-9-jic23@kernel.org> (raw)
In-Reply-To: <20210516172520.1398835-1-jic23@kernel.org>

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Simplifies error handling and allows us to drop remove entirely.

The regulator handling in this driver was unusual as it would try to
acquire the regulator, but if that failed with an error would continue.

We should get a stub regulator if one isn't provided in DT and an error
could indicate an actual problem preventing the device being powered
(perhaps a need to defer). So this handling is cleaned up (arguably
that might be a fix but given no one has run into it, I haven't broken
it out separately.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Matt Ranostay <matt.ranostay@konsulko.com>
---
 drivers/iio/adc/ti-adc161s626.c | 50 ++++++++++++---------------------
 1 file changed, 18 insertions(+), 32 deletions(-)

diff --git a/drivers/iio/adc/ti-adc161s626.c b/drivers/iio/adc/ti-adc161s626.c
index 607791ffe7f0..9f2f25cf9a49 100644
--- a/drivers/iio/adc/ti-adc161s626.c
+++ b/drivers/iio/adc/ti-adc161s626.c
@@ -169,6 +169,11 @@ static const struct iio_info ti_adc_info = {
 	.read_raw = ti_adc_read_raw,
 };
 
+static void ti_adc_reg_disable(void *reg)
+{
+	regulator_disable(reg);
+}
+
 static int ti_adc_probe(struct spi_device *spi)
 {
 	struct iio_dev *indio_dev;
@@ -203,42 +208,24 @@ static int ti_adc_probe(struct spi_device *spi)
 	}
 
 	data->ref = devm_regulator_get(&spi->dev, "vdda");
-	if (!IS_ERR(data->ref)) {
-		ret = regulator_enable(data->ref);
-		if (ret < 0)
-			return ret;
-	}
+	if (IS_ERR(data->ref))
+		return PTR_ERR(data->ref);
 
-	ret = iio_triggered_buffer_setup(indio_dev, NULL,
-					 ti_adc_trigger_handler, NULL);
-	if (ret)
-		goto error_regulator_disable;
+	ret = regulator_enable(data->ref);
+	if (ret < 0)
+		return ret;
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_add_action_or_reset(&spi->dev, ti_adc_reg_disable,
+				       data->ref);
 	if (ret)
-		goto error_unreg_buffer;
-
-	return 0;
+		return ret;
 
-error_unreg_buffer:
-	iio_triggered_buffer_cleanup(indio_dev);
-
-error_regulator_disable:
-	regulator_disable(data->ref);
-
-	return ret;
-}
-
-static int ti_adc_remove(struct spi_device *spi)
-{
-	struct iio_dev *indio_dev = spi_get_drvdata(spi);
-	struct ti_adc_data *data = iio_priv(indio_dev);
-
-	iio_device_unregister(indio_dev);
-	iio_triggered_buffer_cleanup(indio_dev);
-	regulator_disable(data->ref);
+	ret = devm_iio_triggered_buffer_setup(&spi->dev, indio_dev, NULL,
+					      ti_adc_trigger_handler, NULL);
+	if (ret)
+		return ret;
 
-	return 0;
+	return devm_iio_device_register(&spi->dev, indio_dev);
 }
 
 static const struct of_device_id ti_adc_dt_ids[] = {
@@ -261,7 +248,6 @@ static struct spi_driver ti_adc_driver = {
 		.of_match_table = ti_adc_dt_ids,
 	},
 	.probe		= ti_adc_probe,
-	.remove		= ti_adc_remove,
 	.id_table	= ti_adc_id,
 };
 module_spi_driver(ti_adc_driver);
-- 
2.31.1


  parent reply	other threads:[~2021-05-16 17:26 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-16 17:25 [PATCH 0/8] iio: adc: Maxim and TI ADC driver cleanups Jonathan Cameron
2021-05-16 17:25 ` [PATCH 1/8] iio: adc: max11100: Use get_unaligned_be16() rather than opencoding Jonathan Cameron
2021-05-17  6:59   ` Alexandru Ardelean
2021-05-16 17:25 ` [PATCH 2/8] iio: adc: max11100: Use devm_ functions for rest of probe() Jonathan Cameron
2021-05-17  7:08   ` Alexandru Ardelean
2021-05-17  7:22     ` Alexandru Ardelean
2021-05-16 17:25 ` [PATCH 3/8] iio: adc: max1118: Use devm_ managed functions for all of probe Jonathan Cameron
2021-05-17  7:18   ` Alexandru Ardelean
2021-05-16 17:25 ` [PATCH 4/8] iio: adc: max1118: Avoid jumping back and forth between spi and iio structures Jonathan Cameron
2021-05-17  7:24   ` Alexandru Ardelean
2021-05-16 17:25 ` [PATCH 5/8] iio: adc: ti-adc081c: Use devm managed functions for all of probe() Jonathan Cameron
2021-05-17  7:26   ` Alexandru Ardelean
2021-05-16 17:25 ` [PATCH 6/8] iio: adc: ti-adc0832: " Jonathan Cameron
2021-05-17  7:28   ` Alexandru Ardelean
2021-05-16 17:25 ` [PATCH 7/8] iio: adc: ti-adc108s102: " Jonathan Cameron
2021-05-17  7:31   ` Alexandru Ardelean
2021-05-17  7:37     ` Alexandru Ardelean
2021-05-22 18:29       ` Jonathan Cameron
2021-05-16 17:25 ` Jonathan Cameron [this message]
2021-05-16 20:04   ` [PATCH 8/8] iio: adc: ti-adc161s626: Use devm managed functions for all of probe Matt Ranostay
2021-05-17  7:35   ` Alexandru Ardelean
2021-05-22 18:31 ` [PATCH 0/8] iio: adc: Maxim and TI ADC driver cleanups Jonathan Cameron

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=20210516172520.1398835-9-jic23@kernel.org \
    --to=jic23@kernel.org \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=aardelean@deviqon.com \
    --cc=linux-iio@vger.kernel.org \
    --cc=matt.ranostay@konsulko.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