iio: adc: max1241: simplify using devm_regulator_get_enable()
authorMatti Vaittinen <mazziesaccount@gmail.com>
Fri, 19 Aug 2022 19:20:32 +0000 (22:20 +0300)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 23 Nov 2022 19:44:01 +0000 (19:44 +0000)
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@gmail.com>
Acked-by: Alexandru Lazar <alazar@startmail.com>
Link: https://lore.kernel.org/r/7c759bf6c06e72ae70bffeebc1939d9903427278.1660934107.git.mazziesaccount@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/max1241.c

index a815ad1f6913bab3c0077a3539b2bc24eb6c0d93..500bb09ab19bc98004fedb4164f8c636ee0483ed 100644 (file)
@@ -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))