Use devm_* APIs to enable regulator and to register in IIO infrastructure. Signed-off-by: Arturas Moskvinas <arturas.moskvinas@xxxxxxxxx> --- drivers/iio/adc/mcp320x.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/drivers/iio/adc/mcp320x.c b/drivers/iio/adc/mcp320x.c index f3b81798b3c9..4685eed35271 100644 --- a/drivers/iio/adc/mcp320x.c +++ b/drivers/iio/adc/mcp320x.c @@ -388,7 +388,6 @@ static int mcp320x_probe(struct spi_device *spi) indio_dev->name = spi_get_device_id(spi)->name; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->info = &mcp320x_info; - spi_set_drvdata(spi, indio_dev); device_index = spi_get_device_id(spi)->driver_data; chip_info = &mcp320x_chip_infos[device_index]; @@ -441,31 +440,17 @@ static int mcp320x_probe(struct spi_device *spi) if (IS_ERR(adc->reg)) return PTR_ERR(adc->reg); - ret = regulator_enable(adc->reg); + ret = devm_regulator_get_enable(&spi->dev, "vref"); if (ret < 0) return ret; mutex_init(&adc->lock); - ret = iio_device_register(indio_dev); - if (ret < 0) - goto reg_disable; - - return 0; - -reg_disable: - regulator_disable(adc->reg); - - return ret; + return devm_iio_device_register(&spi->dev, indio_dev); } static void mcp320x_remove(struct spi_device *spi) { - struct iio_dev *indio_dev = spi_get_drvdata(spi); - struct mcp320x *adc = iio_priv(indio_dev); - - iio_device_unregister(indio_dev); - regulator_disable(adc->reg); } static const struct of_device_id mcp320x_dt_ids[] = { base-commit: 047371968ffc470769f541d6933e262dc7085456 -- 2.43.0