Skip to content

Commit

Permalink
iio: frequency: ad9523: Use devm_regulator_get_enable()
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Michael Hennerich <[email protected]>
Reviewed-by: Matti Vaittinen <[email protected]>
Reviewed-by: Nuno Sá <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
  • Loading branch information
jic23 committed Nov 23, 2022
1 parent 9e855d7 commit d86186a
Showing 1 changed file with 3 additions and 19 deletions.
22 changes: 3 additions & 19 deletions drivers/iio/frequency/ad9523.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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);
Expand Down

0 comments on commit d86186a

Please sign in to comment.