mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-19 20:34:20 +08:00
iio: frequency: ad9523: Use devm_regulator_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_get_enable() replaces this boilerplate code. Note that in event of an error on the devm_regulator_get() the driver would have continued without enabling the regulator which is probably not a good idea. So here we handle any error as a reason to fail the probe(). In theory this may expose breakage on a platform that was previously papered over but it seems low risk. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Cc: Michael Hennerich <michael.hennerich@analog.com> Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com> Reviewed-by: Nuno Sá <nuno.sa@analog.com> Link: https://lore.kernel.org/r/20221016163409.320197-9-jic23@kernel.org
This commit is contained in:
parent
9e855d77b1
commit
d86186a6e0
@ -265,7 +265,6 @@ enum {
|
||||
|
||||
struct ad9523_state {
|
||||
struct spi_device *spi;
|
||||
struct regulator *reg;
|
||||
struct ad9523_platform_data *pdata;
|
||||
struct iio_chan_spec ad9523_channels[AD9523_NUM_CHAN];
|
||||
struct gpio_desc *pwrdown_gpio;
|
||||
@ -969,13 +968,6 @@ static int ad9523_setup(struct iio_dev *indio_dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ad9523_reg_disable(void *data)
|
||||
{
|
||||
struct regulator *reg = data;
|
||||
|
||||
regulator_disable(reg);
|
||||
}
|
||||
|
||||
static int ad9523_probe(struct spi_device *spi)
|
||||
{
|
||||
struct ad9523_platform_data *pdata = spi->dev.platform_data;
|
||||
@ -996,17 +988,9 @@ static int ad9523_probe(struct spi_device *spi)
|
||||
|
||||
mutex_init(&st->lock);
|
||||
|
||||
st->reg = devm_regulator_get(&spi->dev, "vcc");
|
||||
if (!IS_ERR(st->reg)) {
|
||||
ret = regulator_enable(st->reg);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = devm_add_action_or_reset(&spi->dev, ad9523_reg_disable,
|
||||
st->reg);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
ret = devm_regulator_get_enable(&spi->dev, "vcc");
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
st->pwrdown_gpio = devm_gpiod_get_optional(&spi->dev, "powerdown",
|
||||
GPIOD_OUT_HIGH);
|
||||
|
Loading…
Reference in New Issue
Block a user