iio: accel: bma400: Use devm_regulator_bulk_get_enable()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 16 Oct 2022 16:33:57 +0000 (17:33 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 28 Dec 2022 17:19:45 +0000 (17:19 +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_bulk_get_enable() replaces this boilerplate code.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Jagath Jog J <jagathjog1996@gmail.com>
Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
Link: https://lore.kernel.org/r/20221016163409.320197-3-jic23@kernel.org
drivers/iio/accel/bma400.h
drivers/iio/accel/bma400_core.c

index 36edbaff4f7f140ab67ad2588dcdfa0cc55cafbe..932358b45f171d86eedbf2055dc6d1e2889c48c9 100644 (file)
 #define BMA400_SCALE_MIN            9577
 #define BMA400_SCALE_MAX            76617
 
-#define BMA400_NUM_REGULATORS       2
-#define BMA400_VDD_REGULATOR        0
-#define BMA400_VDDIO_REGULATOR      1
-
 extern const struct regmap_config bma400_regmap_config;
 
 int bma400_probe(struct device *dev, struct regmap *regmap, int irq,
index b612d0146d4dbb1892338025a75994df667424e8..623f37cbaf50e1d66d8206eab7ab77ea587101a9 100644 (file)
@@ -98,7 +98,6 @@ enum bma400_activity {
 struct bma400_data {
        struct device *dev;
        struct regmap *regmap;
-       struct regulator_bulk_data regulators[BMA400_NUM_REGULATORS];
        struct mutex mutex; /* data register lock */
        struct iio_mount_matrix orientation;
        enum bma400_power_mode power_mode;
@@ -832,13 +831,6 @@ static void bma400_init_tables(void)
        }
 }
 
-static void bma400_regulators_disable(void *data_ptr)
-{
-       struct bma400_data *data = data_ptr;
-
-       regulator_bulk_disable(ARRAY_SIZE(data->regulators), data->regulators);
-}
-
 static void bma400_power_disable(void *data_ptr)
 {
        struct bma400_data *data = data_ptr;
@@ -868,30 +860,17 @@ static enum iio_modifier bma400_act_to_mod(enum bma400_activity activity)
 
 static int bma400_init(struct bma400_data *data)
 {
+       static const char * const regulator_names[] = { "vdd", "vddio" };
        unsigned int val;
        int ret;
 
-       data->regulators[BMA400_VDD_REGULATOR].supply = "vdd";
-       data->regulators[BMA400_VDDIO_REGULATOR].supply = "vddio";
-       ret = devm_regulator_bulk_get(data->dev,
-                                     ARRAY_SIZE(data->regulators),
-                                     data->regulators);
+       ret = devm_regulator_bulk_get_enable(data->dev,
+                                            ARRAY_SIZE(regulator_names),
+                                            regulator_names);
        if (ret)
                return dev_err_probe(data->dev, ret, "Failed to get regulators: %d\n",
                                     ret);
 
-       ret = regulator_bulk_enable(ARRAY_SIZE(data->regulators),
-                                   data->regulators);
-       if (ret) {
-               dev_err(data->dev, "Failed to enable regulators: %d\n",
-                       ret);
-               return ret;
-       }
-
-       ret = devm_add_action_or_reset(data->dev, bma400_regulators_disable, data);
-       if (ret)
-               return ret;
-
        /* Try to read chip_id register. It must return 0x90. */
        ret = regmap_read(data->regmap, BMA400_CHIP_ID_REG, &val);
        if (ret) {