iio: accel: fxls8962af: Use devm_regulator_get_enable()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 16 Oct 2022 16:33:58 +0000 (17:33 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 23 Nov 2022 19:44:01 +0000 (19:44 +0000)
This driver only turns the power on at probe and off via a custom
devm_add_action_or_reset() callback. The new devm_regulator_get_enable()
replaces this boilerplate code.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Sean Nyekjaer <sean@geanix.com>
Reviewed-by: Sean Nyekjaer <sean@geanix.com>
Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20221016163409.320197-4-jic23@kernel.org
drivers/iio/accel/fxls8962af-core.c

index bf259db..0d672b1 100644 (file)
@@ -159,7 +159,6 @@ struct fxls8962af_chip_info {
 struct fxls8962af_data {
        struct regmap *regmap;
        const struct fxls8962af_chip_info *chip_info;
-       struct regulator *vdd_reg;
        struct {
                __le16 channels[3];
                s64 ts __aligned(8);
@@ -1051,13 +1050,6 @@ static irqreturn_t fxls8962af_interrupt(int irq, void *p)
        return IRQ_NONE;
 }
 
-static void fxls8962af_regulator_disable(void *data_ptr)
-{
-       struct fxls8962af_data *data = data_ptr;
-
-       regulator_disable(data->vdd_reg);
-}
-
 static void fxls8962af_pm_disable(void *dev_ptr)
 {
        struct device *dev = dev_ptr;
@@ -1171,20 +1163,10 @@ int fxls8962af_core_probe(struct device *dev, struct regmap *regmap, int irq)
        if (ret)
                return ret;
 
-       data->vdd_reg = devm_regulator_get(dev, "vdd");
-       if (IS_ERR(data->vdd_reg))
-               return dev_err_probe(dev, PTR_ERR(data->vdd_reg),
-                                    "Failed to get vdd regulator\n");
-
-       ret = regulator_enable(data->vdd_reg);
-       if (ret) {
-               dev_err(dev, "Failed to enable vdd regulator: %d\n", ret);
-               return ret;
-       }
-
-       ret = devm_add_action_or_reset(dev, fxls8962af_regulator_disable, data);
+       ret = devm_regulator_get_enable(dev, "vdd");
        if (ret)
-               return ret;
+               return dev_err_probe(dev, ret,
+                                    "Failed to get vdd regulator\n");
 
        ret = regmap_read(data->regmap, FXLS8962AF_WHO_AM_I, &reg);
        if (ret)