Message ID | 20210903073707.46892-1-aardelean@deviqon.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | iio: adc: ti-ads8344: convert probe to device-managed | expand |
On Fri, 3 Sep 2021 10:37:07 +0300 Alexandru Ardelean <aardelean@deviqon.com> wrote: > This change converts the driver to register via devm_iio_device_register(). > The regulator disable is moved on a devm_add_action_or_reset() hook. > > And the spi_set_drvdata() isn't required anymore. > And finally, the ads8344_remove() can be removed as well. > > Signed-off-by: Alexandru Ardelean <aardelean@deviqon.com> Applied to the togreg branch of iio.git and pushed out as testing for 0-day to see if it can find anything we missed. > --- > drivers/iio/adc/ti-ads8344.c | 27 ++++++++------------------- > 1 file changed, 8 insertions(+), 19 deletions(-) > > diff --git a/drivers/iio/adc/ti-ads8344.c b/drivers/iio/adc/ti-ads8344.c > index a345a30d74fa..c96d2a9ba924 100644 > --- a/drivers/iio/adc/ti-ads8344.c > +++ b/drivers/iio/adc/ti-ads8344.c > @@ -133,6 +133,11 @@ static const struct iio_info ads8344_info = { > .read_raw = ads8344_read_raw, > }; > > +static void ads8344_reg_disable(void *data) > +{ > + regulator_disable(data); > +} > + > static int ads8344_probe(struct spi_device *spi) > { > struct iio_dev *indio_dev; > @@ -161,26 +166,11 @@ static int ads8344_probe(struct spi_device *spi) > if (ret) > return ret; > > - spi_set_drvdata(spi, indio_dev); > - > - ret = iio_device_register(indio_dev); > - if (ret) { > - regulator_disable(adc->reg); > + ret = devm_add_action_or_reset(&spi->dev, ads8344_reg_disable, adc->reg); > + if (ret) > return ret; > - } > - > - return 0; > -} > - > -static int ads8344_remove(struct spi_device *spi) > -{ > - struct iio_dev *indio_dev = spi_get_drvdata(spi); > - struct ads8344 *adc = iio_priv(indio_dev); > - > - iio_device_unregister(indio_dev); > - regulator_disable(adc->reg); > > - return 0; > + return devm_iio_device_register(&spi->dev, indio_dev); > } > > static const struct of_device_id ads8344_of_match[] = { > @@ -195,7 +185,6 @@ static struct spi_driver ads8344_driver = { > .of_match_table = ads8344_of_match, > }, > .probe = ads8344_probe, > - .remove = ads8344_remove, > }; > module_spi_driver(ads8344_driver); >
diff --git a/drivers/iio/adc/ti-ads8344.c b/drivers/iio/adc/ti-ads8344.c index a345a30d74fa..c96d2a9ba924 100644 --- a/drivers/iio/adc/ti-ads8344.c +++ b/drivers/iio/adc/ti-ads8344.c @@ -133,6 +133,11 @@ static const struct iio_info ads8344_info = { .read_raw = ads8344_read_raw, }; +static void ads8344_reg_disable(void *data) +{ + regulator_disable(data); +} + static int ads8344_probe(struct spi_device *spi) { struct iio_dev *indio_dev; @@ -161,26 +166,11 @@ static int ads8344_probe(struct spi_device *spi) if (ret) return ret; - spi_set_drvdata(spi, indio_dev); - - ret = iio_device_register(indio_dev); - if (ret) { - regulator_disable(adc->reg); + ret = devm_add_action_or_reset(&spi->dev, ads8344_reg_disable, adc->reg); + if (ret) return ret; - } - - return 0; -} - -static int ads8344_remove(struct spi_device *spi) -{ - struct iio_dev *indio_dev = spi_get_drvdata(spi); - struct ads8344 *adc = iio_priv(indio_dev); - - iio_device_unregister(indio_dev); - regulator_disable(adc->reg); - return 0; + return devm_iio_device_register(&spi->dev, indio_dev); } static const struct of_device_id ads8344_of_match[] = { @@ -195,7 +185,6 @@ static struct spi_driver ads8344_driver = { .of_match_table = ads8344_of_match, }, .probe = ads8344_probe, - .remove = ads8344_remove, }; module_spi_driver(ads8344_driver);
This change converts the driver to register via devm_iio_device_register(). The regulator disable is moved on a devm_add_action_or_reset() hook. And the spi_set_drvdata() isn't required anymore. And finally, the ads8344_remove() can be removed as well. Signed-off-by: Alexandru Ardelean <aardelean@deviqon.com> --- drivers/iio/adc/ti-ads8344.c | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-)