Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: accel: bma400: Use devm_regulator_bulk_get_enable()

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

+4 -29
-4
drivers/iio/accel/bma400.h
··· 141 141 #define BMA400_SCALE_MIN 9577 142 142 #define BMA400_SCALE_MAX 76617 143 143 144 - #define BMA400_NUM_REGULATORS 2 145 - #define BMA400_VDD_REGULATOR 0 146 - #define BMA400_VDDIO_REGULATOR 1 147 - 148 144 extern const struct regmap_config bma400_regmap_config; 149 145 150 146 int bma400_probe(struct device *dev, struct regmap *regmap, int irq,
+4 -25
drivers/iio/accel/bma400_core.c
··· 98 98 struct bma400_data { 99 99 struct device *dev; 100 100 struct regmap *regmap; 101 - struct regulator_bulk_data regulators[BMA400_NUM_REGULATORS]; 102 101 struct mutex mutex; /* data register lock */ 103 102 struct iio_mount_matrix orientation; 104 103 enum bma400_power_mode power_mode; ··· 831 832 } 832 833 } 833 834 834 - static void bma400_regulators_disable(void *data_ptr) 835 - { 836 - struct bma400_data *data = data_ptr; 837 - 838 - regulator_bulk_disable(ARRAY_SIZE(data->regulators), data->regulators); 839 - } 840 - 841 835 static void bma400_power_disable(void *data_ptr) 842 836 { 843 837 struct bma400_data *data = data_ptr; ··· 860 868 861 869 static int bma400_init(struct bma400_data *data) 862 870 { 871 + static const char * const regulator_names[] = { "vdd", "vddio" }; 863 872 unsigned int val; 864 873 int ret; 865 874 866 - data->regulators[BMA400_VDD_REGULATOR].supply = "vdd"; 867 - data->regulators[BMA400_VDDIO_REGULATOR].supply = "vddio"; 868 - ret = devm_regulator_bulk_get(data->dev, 869 - ARRAY_SIZE(data->regulators), 870 - data->regulators); 875 + ret = devm_regulator_bulk_get_enable(data->dev, 876 + ARRAY_SIZE(regulator_names), 877 + regulator_names); 871 878 if (ret) 872 879 return dev_err_probe(data->dev, ret, "Failed to get regulators: %d\n", 873 880 ret); 874 - 875 - ret = regulator_bulk_enable(ARRAY_SIZE(data->regulators), 876 - data->regulators); 877 - if (ret) { 878 - dev_err(data->dev, "Failed to enable regulators: %d\n", 879 - ret); 880 - return ret; 881 - } 882 - 883 - ret = devm_add_action_or_reset(data->dev, bma400_regulators_disable, data); 884 - if (ret) 885 - return ret; 886 881 887 882 /* Try to read chip_id register. It must return 0x90. */ 888 883 ret = regmap_read(data->regmap, BMA400_CHIP_ID_REG, &val);