mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 15:14:18 +08:00
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
This commit is contained in:
parent
f9e51aacc7
commit
4da9438d29
@ -141,10 +141,6 @@
|
||||
#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,
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user