iio: adc: max1241: simplify using devm_regulator_get_enable()
Drop open-coded pattern: 'devm_regulator_get(), regulator_enable(), add_action_or_reset(regulator_disable)' and use the devm_regulator_get_enable() and drop the pointer to the regulator. This simplifies code and makes it less tempting to add manual control for the regulator which is also controlled by devm. Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com> Acked-by: Alexandru Lazar <alazar@startmail.com> Link: https://lore.kernel.org/r/7c759bf6c06e72ae70bffeebc1939d9903427278.1660934107.git.mazziesaccount@gmail.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
fd5b6c48ec
commit
f55c8e6696
@ -22,7 +22,6 @@ enum max1241_id {
|
|||||||
struct max1241 {
|
struct max1241 {
|
||||||
struct spi_device *spi;
|
struct spi_device *spi;
|
||||||
struct mutex lock;
|
struct mutex lock;
|
||||||
struct regulator *vdd;
|
|
||||||
struct regulator *vref;
|
struct regulator *vref;
|
||||||
struct gpio_desc *shutdown;
|
struct gpio_desc *shutdown;
|
||||||
|
|
||||||
@ -110,17 +109,6 @@ static const struct iio_info max1241_info = {
|
|||||||
.read_raw = max1241_read_raw,
|
.read_raw = max1241_read_raw,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void max1241_disable_vdd_action(void *data)
|
|
||||||
{
|
|
||||||
struct max1241 *adc = data;
|
|
||||||
struct device *dev = &adc->spi->dev;
|
|
||||||
int err;
|
|
||||||
|
|
||||||
err = regulator_disable(adc->vdd);
|
|
||||||
if (err)
|
|
||||||
dev_err(dev, "could not disable vdd regulator.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void max1241_disable_vref_action(void *data)
|
static void max1241_disable_vref_action(void *data)
|
||||||
{
|
{
|
||||||
struct max1241 *adc = data;
|
struct max1241 *adc = data;
|
||||||
@ -147,20 +135,10 @@ static int max1241_probe(struct spi_device *spi)
|
|||||||
adc->spi = spi;
|
adc->spi = spi;
|
||||||
mutex_init(&adc->lock);
|
mutex_init(&adc->lock);
|
||||||
|
|
||||||
adc->vdd = devm_regulator_get(dev, "vdd");
|
ret = devm_regulator_get_enable(dev, "vdd");
|
||||||
if (IS_ERR(adc->vdd))
|
|
||||||
return dev_err_probe(dev, PTR_ERR(adc->vdd),
|
|
||||||
"failed to get vdd regulator\n");
|
|
||||||
|
|
||||||
ret = regulator_enable(adc->vdd);
|
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return dev_err_probe(dev, ret,
|
||||||
|
"failed to get/enable vdd regulator\n");
|
||||||
ret = devm_add_action_or_reset(dev, max1241_disable_vdd_action, adc);
|
|
||||||
if (ret) {
|
|
||||||
dev_err(dev, "could not set up vdd regulator cleanup action\n");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
adc->vref = devm_regulator_get(dev, "vref");
|
adc->vref = devm_regulator_get(dev, "vref");
|
||||||
if (IS_ERR(adc->vref))
|
if (IS_ERR(adc->vref))
|
||||||
|
Loading…
Reference in New Issue
Block a user