diff mbox series

iio: hi8435: Drop hi8435_remove()

Message ID 20190811054545.6922-1-andrew.smirnov@gmail.com (mailing list archive)
State New, archived
Headers show
Series iio: hi8435: Drop hi8435_remove() | expand

Commit Message

Andrey Smirnov Aug. 11, 2019, 5:45 a.m. UTC
Convert the remainder of hi8435_probe() to use devres and get rid of
hi8435_remove().

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Cc: linux-kernel@vger.kernel.org
Cc: linux-iio@vger.kernel.org
Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Chris Healy <cphealy@gmail.com>
---
 drivers/iio/adc/hi8435.c | 30 +++++++++++++-----------------
 1 file changed, 13 insertions(+), 17 deletions(-)

Comments

Jonathan Cameron Aug. 11, 2019, 9 a.m. UTC | #1
On Sat, 10 Aug 2019 22:45:45 -0700
Andrey Smirnov <andrew.smirnov@gmail.com> wrote:

> Convert the remainder of hi8435_probe() to use devres and get rid of
> hi8435_remove().
> 
> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-iio@vger.kernel.org
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: Chris Healy <cphealy@gmail.com>
+CC as before.

I've tweaked things a little bit (see below)

Applied to the togreg branch of iio.git and pushed out as testing
for the autobuilders to play with it.

Still time for others to comment btw!

Thanks,

Jonathan

> ---
>  drivers/iio/adc/hi8435.c | 30 +++++++++++++-----------------
>  1 file changed, 13 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/iio/adc/hi8435.c b/drivers/iio/adc/hi8435.c
> index c15f0e154e4d..fe1341383d30 100644
> --- a/drivers/iio/adc/hi8435.c
> +++ b/drivers/iio/adc/hi8435.c
> @@ -456,6 +456,11 @@ static irqreturn_t hi8435_trigger_handler(int irq, void *private)
>  	return IRQ_HANDLED;
>  }
>  
> +static void hi8435_triggered_event_cleanup(void *data)
> +{
> +	iio_triggered_event_cleanup(data);
> +}

Hmm. I wonder if we should do a full devm_iio_triggered_event_setup()
but given we have very few callers that can be a job for another day.

> +
>  static int hi8435_probe(struct spi_device *spi)
>  {
>  	struct iio_dev *idev;
> @@ -513,26 +518,18 @@ static int hi8435_probe(struct spi_device *spi)
>  	if (ret)
>  		return ret;
>  
> -	ret = iio_device_register(idev);
> +	ret = devm_add_action_or_reset(&spi->dev,
> +				       hi8435_triggered_event_cleanup,
> +				       idev);
> +	if (ret)
> +		return ret;
> +
> +	ret = devm_iio_device_register(&spi->dev, idev);
>  	if (ret < 0) {
>  		dev_err(&spi->dev, "unable to register device\n");
> -		goto unregister_triggered_event;
> +		return ret;

We could tidy up a little more and do
	if (ret)
		dev_err...

	return ret;

Or, given all the likely paths in iio_device_register() have 
error prints anyway, can just do
	return devm_iio_device_register();

I'll change it to this last one whilst applying.

>  	}
>  
> -	return 0;
> -
> -unregister_triggered_event:
> -	iio_triggered_event_cleanup(idev);
> -	return ret;
> -}
> -
> -static int hi8435_remove(struct spi_device *spi)
> -{
> -	struct iio_dev *idev = spi_get_drvdata(spi);
> -
> -	iio_device_unregister(idev);
> -	iio_triggered_event_cleanup(idev);
> -
>  	return 0;
>  }
>  
> @@ -554,7 +551,6 @@ static struct spi_driver hi8435_driver = {
>  		.of_match_table	= of_match_ptr(hi8435_dt_ids),
>  	},
>  	.probe		= hi8435_probe,
> -	.remove		= hi8435_remove,
>  	.id_table	= hi8435_id,
>  };
>  module_spi_driver(hi8435_driver);
diff mbox series

Patch

diff --git a/drivers/iio/adc/hi8435.c b/drivers/iio/adc/hi8435.c
index c15f0e154e4d..fe1341383d30 100644
--- a/drivers/iio/adc/hi8435.c
+++ b/drivers/iio/adc/hi8435.c
@@ -456,6 +456,11 @@  static irqreturn_t hi8435_trigger_handler(int irq, void *private)
 	return IRQ_HANDLED;
 }
 
+static void hi8435_triggered_event_cleanup(void *data)
+{
+	iio_triggered_event_cleanup(data);
+}
+
 static int hi8435_probe(struct spi_device *spi)
 {
 	struct iio_dev *idev;
@@ -513,26 +518,18 @@  static int hi8435_probe(struct spi_device *spi)
 	if (ret)
 		return ret;
 
-	ret = iio_device_register(idev);
+	ret = devm_add_action_or_reset(&spi->dev,
+				       hi8435_triggered_event_cleanup,
+				       idev);
+	if (ret)
+		return ret;
+
+	ret = devm_iio_device_register(&spi->dev, idev);
 	if (ret < 0) {
 		dev_err(&spi->dev, "unable to register device\n");
-		goto unregister_triggered_event;
+		return ret;
 	}
 
-	return 0;
-
-unregister_triggered_event:
-	iio_triggered_event_cleanup(idev);
-	return ret;
-}
-
-static int hi8435_remove(struct spi_device *spi)
-{
-	struct iio_dev *idev = spi_get_drvdata(spi);
-
-	iio_device_unregister(idev);
-	iio_triggered_event_cleanup(idev);
-
 	return 0;
 }
 
@@ -554,7 +551,6 @@  static struct spi_driver hi8435_driver = {
 		.of_match_table	= of_match_ptr(hi8435_dt_ids),
 	},
 	.probe		= hi8435_probe,
-	.remove		= hi8435_remove,
 	.id_table	= hi8435_id,
 };
 module_spi_driver(hi8435_driver);