Re: [PATCH v3 12/14] iio: max1241: simplify using devm_regulator_get_enable()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Heya,

I don't have the hardware at hand (long story, lots of smoke), so all I can do for this patch at the moment is:

Acked-by: Alexandru Lazar <alazar@xxxxxxxxxxxxx>

That being said, IIRC the MAX1241 has no special requirements in this regard, so if other SPI devices work, this one ought to work as well. If anyone's concerned, I can test it, but probably not sooner than a week or so :-(.

FWIW I really like this, the straightforward regulator boilerplate always felt a tad wrong.

All the best,
Alex

On 8/19/2022 10:20 PM, Matti Vaittinen wrote:
Drop open-coded pattern: 'devm_regulator_get(), regulator_enable(),
add_action_or_reset(regulator_disable)' and use the
devm_regulator_get_enable() and drop the pointer to the regulator.
This simplifies code and makes it less tempting to add manual control
for the regulator which is also controlled by devm.

Signed-off-by: Matti Vaittinen <mazziesaccount@xxxxxxxxx>

---
v2 => v3:
New patch
---
  drivers/iio/adc/max1241.c | 28 +++-------------------------
  1 file changed, 3 insertions(+), 25 deletions(-)

diff --git a/drivers/iio/adc/max1241.c b/drivers/iio/adc/max1241.c
index a815ad1f6913..500bb09ab19b 100644
--- a/drivers/iio/adc/max1241.c
+++ b/drivers/iio/adc/max1241.c
@@ -22,7 +22,6 @@ enum max1241_id {
  struct max1241 {
  	struct spi_device *spi;
  	struct mutex lock;
-	struct regulator *vdd;
  	struct regulator *vref;
  	struct gpio_desc *shutdown;
@@ -110,17 +109,6 @@ static const struct iio_info max1241_info = {
  	.read_raw = max1241_read_raw,
  };
-static void max1241_disable_vdd_action(void *data)
-{
-	struct max1241 *adc = data;
-	struct device *dev = &adc->spi->dev;
-	int err;
-
-	err = regulator_disable(adc->vdd);
-	if (err)
-		dev_err(dev, "could not disable vdd regulator.\n");
-}
-
  static void max1241_disable_vref_action(void *data)
  {
  	struct max1241 *adc = data;
@@ -147,20 +135,10 @@ static int max1241_probe(struct spi_device *spi)
  	adc->spi = spi;
  	mutex_init(&adc->lock);
- adc->vdd = devm_regulator_get(dev, "vdd");
-	if (IS_ERR(adc->vdd))
-		return dev_err_probe(dev, PTR_ERR(adc->vdd),
-				     "failed to get vdd regulator\n");
-
-	ret = regulator_enable(adc->vdd);
+	ret = devm_regulator_get_enable(dev, "vdd");
  	if (ret)
-		return ret;
-
-	ret = devm_add_action_or_reset(dev, max1241_disable_vdd_action, adc);
-	if (ret) {
-		dev_err(dev, "could not set up vdd regulator cleanup action\n");
-		return ret;
-	}
+		return dev_err_probe(dev, ret,
+				     "failed to get/enable vdd regulator\n");
adc->vref = devm_regulator_get(dev, "vref");
  	if (IS_ERR(adc->vref))



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux