Skip to content

Commit ddf3ad5

Browse files
committed
iio: amplifiers: ad8366: simplify resource management
Device resource managed simplified with: - voltage regulator managed internally. - IIO device registration handled with devm_iio_device_register(). - removal of goto's from the probe function. - ad8366_remove() removed as it is not needed anymore. Also, dev_err_probe() is used to report probe errors. Signed-off-by: Rodrigo Alencar <[email protected]>
1 parent 81c6e2e commit ddf3ad5

File tree

1 file changed

+15
-44
lines changed

1 file changed

+15
-44
lines changed

drivers/iio/amplifiers/ad8366.c

Lines changed: 15 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ struct ad8366_info {
5353

5454
struct ad8366_state {
5555
struct spi_device *spi;
56-
struct regulator *reg;
5756
struct mutex lock; /* protect sensor state */
5857
struct gpio_desc *reset_gpio;
5958
struct gpio_desc *enable_gpio;
@@ -328,17 +327,13 @@ static int ad8366_probe(struct spi_device *spi)
328327
return -ENOMEM;
329328

330329
st = iio_priv(indio_dev);
331-
332-
st->reg = devm_regulator_get(&spi->dev, "vcc");
333-
if (!IS_ERR(st->reg)) {
334-
ret = regulator_enable(st->reg);
335-
if (ret)
336-
return ret;
337-
}
338-
339-
spi_set_drvdata(spi, indio_dev);
340330
st->spi = spi;
341331
st->type = spi_get_device_id(spi)->driver_data;
332+
spi_set_drvdata(spi, indio_dev);
333+
334+
ret = devm_regulator_get_enable(&spi->dev, "vcc");
335+
if (ret)
336+
return dev_err_probe(&spi->dev, ret, "Failed to get regulator\n");
342337

343338
ret = devm_mutex_init(&spi->dev, &st->lock);
344339
if (ret)
@@ -360,21 +355,20 @@ static int ad8366_probe(struct spi_device *spi)
360355
case ID_HMC1018:
361356
case ID_HMC1019:
362357
st->reset_gpio = devm_gpiod_get_optional(&spi->dev, "reset", GPIOD_OUT_HIGH);
363-
if (IS_ERR(st->reset_gpio)) {
364-
ret = PTR_ERR(st->reset_gpio);
365-
goto error_disable_reg;
366-
}
358+
if (IS_ERR(st->reset_gpio))
359+
return dev_err_probe(&spi->dev, PTR_ERR(st->reset_gpio),
360+
"Failed to get reset GPIO\n");
367361

368-
st->enable_gpio = devm_gpiod_get(&spi->dev, "enable",
369-
GPIOD_OUT_HIGH);
362+
st->enable_gpio = devm_gpiod_get_optional(&spi->dev, "enable", GPIOD_OUT_HIGH);
363+
if (IS_ERR(st->enable_gpio))
364+
return dev_err_probe(&spi->dev, PTR_ERR(st->enable_gpio),
365+
"Failed to get enable GPIO\n");
370366

371367
indio_dev->channels = ada4961_channels;
372368
indio_dev->num_channels = ARRAY_SIZE(ada4961_channels);
373369
break;
374370
default:
375-
dev_err(&spi->dev, "Invalid device ID\n");
376-
ret = -EINVAL;
377-
goto error_disable_reg;
371+
return dev_err_probe(&spi->dev, -EINVAL, "Invalid device ID\n");
378372
}
379373

380374
st->info = &ad8366_infos[st->type];
@@ -384,31 +378,9 @@ static int ad8366_probe(struct spi_device *spi)
384378

385379
ret = ad8366_write(indio_dev, 0, 0);
386380
if (ret < 0)
387-
goto error_disable_reg;
388-
389-
ret = iio_device_register(indio_dev);
390-
if (ret)
391-
goto error_disable_reg;
392-
393-
return 0;
394-
395-
error_disable_reg:
396-
if (!IS_ERR(st->reg))
397-
regulator_disable(st->reg);
398-
399-
return ret;
400-
}
401-
402-
static void ad8366_remove(struct spi_device *spi)
403-
{
404-
struct iio_dev *indio_dev = spi_get_drvdata(spi);
405-
struct ad8366_state *st = iio_priv(indio_dev);
406-
struct regulator *reg = st->reg;
407-
408-
iio_device_unregister(indio_dev);
381+
return dev_err_probe(&spi->dev, ret, "failed to write initial gain\n");
409382

410-
if (!IS_ERR(reg))
411-
regulator_disable(reg);
383+
return devm_iio_device_register(&spi->dev, indio_dev);
412384
}
413385

414386
static const struct spi_device_id ad8366_id[] = {
@@ -432,7 +404,6 @@ static struct spi_driver ad8366_driver = {
432404
.name = KBUILD_MODNAME,
433405
},
434406
.probe = ad8366_probe,
435-
.remove = ad8366_remove,
436407
.id_table = ad8366_id,
437408
};
438409

0 commit comments

Comments
 (0)