linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister}
@ 2013-09-25 10:49 Sachin Kamat
  2013-09-25 10:49 ` [PATCH 01/32] iio: core: Implement devm_iio_device_{register,unregister} Sachin Kamat
                   ` (32 more replies)
  0 siblings, 33 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

With the conversion of iio drivers to use device managed APIs, several
drivers now have a remove function with only the iio_device_unregister()
call. Thus introduce device managed version of iio_device_register() to
clean up lot of such code. 3 patches also removes the unregister call in drivers
where it happens to be the last call before return statement.

This is only compile tested as I do not have any actual hardware to test ATM.

Sachin Kamat (32):
  iio: core: Implement devm_iio_device_{register,unregister}
  iio: accel: kxsd9: Use devm_iio_device_register
  iio: adc: mcp3422: Use devm_iio_device_register
  iio: adc: twl6030-gpadc: Use devm_iio_device_register
  iio: adc: viperboard: Use devm_iio_device_register
  iio: dac: ad5421: Use devm_iio_device_register
  iio: dac: ad5755: Use devm_iio_device_register
  iio: dac: max517: Use devm_iio_device_register
  iio: dac: mcp4725: Use devm_iio_device_register
  iio: gyro: adis16130: Use devm_iio_device_register
  iio: gyro: adxrs450: Use devm_iio_device_register
  iio: light: vcnl4000: Use devm_iio_device_register
  staging: iio: adis16220: Use devm_iio_device_register
  staging: iio: ad7816: Use devm_iio_device_register
  staging: iio: lpc32xx_adc: Use devm_iio_device_register
  staging: iio: addac: Use devm_iio_device_register
  staging: iio: ad7150: Use devm_iio_device_register
  staging: iio: ad7746: Use devm_iio_device_register
  staging: iio: ad5930: Use devm_iio_device_register
  staging: iio: ad9850: Use devm_iio_device_register
  staging: iio: ad9852: Use devm_iio_device_register
  staging: iio: ad9910: Use devm_iio_device_register
  staging: iio: ad9951: Use devm_iio_device_register
  staging: iio: adis16060: Use devm_iio_device_register
  staging: iio: isl29018: Use devm_iio_device_register
  staging: iio: isl29028: Use devm_iio_device_register
  staging: iio: tsl2583: Use devm_iio_device_register
  staging: iio: tsl2x7x_core: Use devm_iio_device_register
  staging: iio: ade7854: Use devm_iio_device_register
  staging: iio: ad2s1200: Use devm_iio_device_register
  staging: iio: ad2s90: Use devm_iio_device_register
  staging: iio: ad7152: Use devm_iio_device_register

 Documentation/driver-model/devres.txt      |    2 ++
 drivers/iio/accel/kxsd9.c                  |   10 +-------
 drivers/iio/adc/mcp3422.c                  |    9 +------
 drivers/iio/adc/twl6030-gpadc.c            |    5 +---
 drivers/iio/adc/viperboard_adc.c           |   12 +---------
 drivers/iio/dac/ad5421.c                   |   12 +---------
 drivers/iio/dac/ad5755.c                   |   12 +---------
 drivers/iio/dac/max517.c                   |    9 +------
 drivers/iio/dac/mcp4725.c                  |    9 +------
 drivers/iio/gyro/adis16130.c               |    9 +------
 drivers/iio/gyro/adxrs450.c                |   14 ++---------
 drivers/iio/industrialio-core.c            |   35 ++++++++++++++++++++++++++++
 drivers/iio/light/vcnl4000.c               |    9 +------
 drivers/staging/iio/accel/adis16220_core.c |    7 ++----
 drivers/staging/iio/adc/ad7816.c           |   12 +---------
 drivers/staging/iio/adc/lpc32xx_adc.c      |   12 +---------
 drivers/staging/iio/addac/adt7316-i2c.c    |    6 -----
 drivers/staging/iio/addac/adt7316-spi.c    |    6 -----
 drivers/staging/iio/addac/adt7316.c        |   12 +---------
 drivers/staging/iio/addac/adt7316.h        |    1 -
 drivers/staging/iio/cdc/ad7150.c           |   12 +---------
 drivers/staging/iio/cdc/ad7152.c           |   12 +---------
 drivers/staging/iio/cdc/ad7746.c           |   12 +---------
 drivers/staging/iio/frequency/ad5930.c     |   10 +-------
 drivers/staging/iio/frequency/ad9850.c     |   10 +-------
 drivers/staging/iio/frequency/ad9852.c     |   10 +-------
 drivers/staging/iio/frequency/ad9910.c     |   10 +-------
 drivers/staging/iio/frequency/ad9951.c     |   10 +-------
 drivers/staging/iio/gyro/adis16060_core.c  |   10 +-------
 drivers/staging/iio/light/isl29018.c       |   13 +----------
 drivers/staging/iio/light/isl29028.c       |   11 +--------
 drivers/staging/iio/light/tsl2583.c        |   10 +-------
 drivers/staging/iio/light/tsl2x7x_core.c   |    4 +---
 drivers/staging/iio/meter/ade7854-i2c.c    |    6 -----
 drivers/staging/iio/meter/ade7854-spi.c    |    7 ------
 drivers/staging/iio/meter/ade7854.c        |   14 +----------
 drivers/staging/iio/meter/ade7854.h        |    1 -
 drivers/staging/iio/resolver/ad2s1200.c    |   10 +-------
 drivers/staging/iio/resolver/ad2s90.c      |   10 +-------
 include/linux/iio/iio.h                    |   25 ++++++++++++++++++++
 40 files changed, 95 insertions(+), 315 deletions(-)

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH 01/32] iio: core: Implement devm_iio_device_{register,unregister}
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-26 20:31   ` Lars-Peter Clausen
  2013-09-25 10:49 ` [PATCH 02/32] iio: accel: kxsd9: Use devm_iio_device_register Sachin Kamat
                   ` (31 subsequent siblings)
  32 siblings, 1 reply; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

Add device managed devm_iio_device_{register,unregister}()
to automatically unregister IIO drivers thus leading to
simplified IIO driver code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Cc: Lars-Peter Clausen <lars@metafoo.de>
---
 Documentation/driver-model/devres.txt |    2 ++
 drivers/iio/industrialio-core.c       |   35 +++++++++++++++++++++++++++++++++
 include/linux/iio/iio.h               |   25 +++++++++++++++++++++++
 3 files changed, 62 insertions(+)

diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
index fcb34a5..ffeab1d 100644
--- a/Documentation/driver-model/devres.txt
+++ b/Documentation/driver-model/devres.txt
@@ -242,6 +242,8 @@ IIO
   devm_iio_device_free()
   devm_iio_trigger_alloc()
   devm_iio_trigger_free()
+  devm_iio_device_register()
+  devm_iio_device_unregister()
 
 IO region
   devm_request_region()
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 24db185..58f494b 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -1125,6 +1125,41 @@ void iio_device_unregister(struct iio_dev *indio_dev)
 	device_del(&indio_dev->dev);
 }
 EXPORT_SYMBOL(iio_device_unregister);
+
+static void devm_iio_device_unreg(struct device *dev, void *res)
+{
+	iio_device_unregister(*(struct iio_dev **)res);
+}
+
+int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev)
+{
+	void *ptr;
+	int iio_dev;
+
+	ptr = devres_alloc(devm_iio_device_unreg, 0, GFP_KERNEL);
+	if (!ptr)
+		return -ENOMEM;
+
+	iio_dev = iio_device_register(indio_dev);
+	if (!iio_dev)
+		devres_add(dev, ptr);
+	else
+		devres_free(ptr);
+
+	return iio_dev;
+}
+EXPORT_SYMBOL_GPL(devm_iio_device_register);
+
+void devm_iio_device_unregister(struct device *dev, struct iio_dev *iio_dev)
+{
+	int rc;
+
+	rc = devres_release(dev, devm_iio_device_unreg,
+			    devm_iio_device_match, iio_dev);
+	WARN_ON(rc);
+}
+EXPORT_SYMBOL_GPL(devm_iio_device_unregister);
+
 subsys_initcall(iio_init);
 module_exit(iio_exit);
 
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
index ac1cb8f..be16dd6 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -453,6 +453,31 @@ int iio_device_register(struct iio_dev *indio_dev);
 void iio_device_unregister(struct iio_dev *indio_dev);
 
 /**
+ * devm_iio_device_register - Resource-managed iio_device_register()
+ * @dev:	Device to allocate iio_dev for
+ * @indio_dev:	Device structure filled by the device driver
+ *
+ * Managed iio_device_register.  iio_dev registered with this function is
+ * automatically unregistered on driver detach.
+ *
+ * If an iio_dev registered with this function needs to be unregistered
+ * separately, devm_iio_device_unregister() must be used.
+ *
+ * RETURNS:
+ * 0 on success, negative error number on failure.
+ */
+int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev);
+
+/**
+ * devm_iio_device_unregister - Resource-managed iio_device_unregister()
+ * @dev:	Device this iio_dev belongs to
+ * @indio_dev:	the iio_dev associated with the device
+ *
+ * Unregister iio_dev registered with devm_iio_device_register().
+ */
+void devm_iio_device_unregister(struct device *dev, struct iio_dev *indio_dev);
+
+/**
  * iio_push_event() - try to add event to the list for userspace reading
  * @indio_dev:		IIO device structure
  * @ev_code:		What event
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 02/32] iio: accel: kxsd9: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
  2013-09-25 10:49 ` [PATCH 01/32] iio: core: Implement devm_iio_device_{register,unregister} Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 20:45   ` Jonathan Cameron
  2013-09-25 10:49 ` [PATCH 03/32] iio: adc: mcp3422: " Sachin Kamat
                   ` (30 subsequent siblings)
  32 siblings, 1 reply; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/accel/kxsd9.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/iio/accel/kxsd9.c b/drivers/iio/accel/kxsd9.c
index 709c132..3048686 100644
--- a/drivers/iio/accel/kxsd9.c
+++ b/drivers/iio/accel/kxsd9.c
@@ -244,20 +244,13 @@ static int kxsd9_probe(struct spi_device *spi)
 	spi_setup(spi);
 	kxsd9_power_up(st);
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&spi->dev, indio_dev);
 	if (ret)
 		return ret;
 
 	return 0;
 }
 
-static int kxsd9_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-
-	return 0;
-}
-
 static const struct spi_device_id kxsd9_id[] = {
 	{"kxsd9", 0},
 	{ },
@@ -270,7 +263,6 @@ static struct spi_driver kxsd9_driver = {
 		.owner = THIS_MODULE,
 	},
 	.probe = kxsd9_probe,
-	.remove = kxsd9_remove,
 	.id_table = kxsd9_id,
 };
 module_spi_driver(kxsd9_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 03/32] iio: adc: mcp3422: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
  2013-09-25 10:49 ` [PATCH 01/32] iio: core: Implement devm_iio_device_{register,unregister} Sachin Kamat
  2013-09-25 10:49 ` [PATCH 02/32] iio: accel: kxsd9: Use devm_iio_device_register Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 04/32] iio: adc: twl6030-gpadc: " Sachin Kamat
                   ` (29 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/adc/mcp3422.c |    9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/iio/adc/mcp3422.c b/drivers/iio/adc/mcp3422.c
index bc93f53..f172c29 100644
--- a/drivers/iio/adc/mcp3422.c
+++ b/drivers/iio/adc/mcp3422.c
@@ -361,7 +361,7 @@ static int mcp3422_probe(struct i2c_client *client,
 		| MCP3422_SAMPLE_RATE_VALUE(MCP3422_SRATE_240));
 	mcp3422_update_config(adc, config);
 
-	err = iio_device_register(indio_dev);
+	err = devm_iio_device_register(&client->dev, indio_dev);
 	if (err < 0)
 		return err;
 
@@ -370,12 +370,6 @@ static int mcp3422_probe(struct i2c_client *client,
 	return 0;
 }
 
-static int mcp3422_remove(struct i2c_client *client)
-{
-	iio_device_unregister(i2c_get_clientdata(client));
-	return 0;
-}
-
 static const struct i2c_device_id mcp3422_id[] = {
 	{ "mcp3422", 2 },
 	{ "mcp3423", 3 },
@@ -399,7 +393,6 @@ static struct i2c_driver mcp3422_driver = {
 		.of_match_table = of_match_ptr(mcp3422_of_match),
 	},
 	.probe = mcp3422_probe,
-	.remove = mcp3422_remove,
 	.id_table = mcp3422_id,
 };
 module_i2c_driver(mcp3422_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 04/32] iio: adc: twl6030-gpadc: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (2 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 03/32] iio: adc: mcp3422: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 05/32] iio: adc: viperboard: " Sachin Kamat
                   ` (28 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/adc/twl6030-gpadc.c |    5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/iio/adc/twl6030-gpadc.c b/drivers/iio/adc/twl6030-gpadc.c
index 0ea96c0..cd16077 100644
--- a/drivers/iio/adc/twl6030-gpadc.c
+++ b/drivers/iio/adc/twl6030-gpadc.c
@@ -948,17 +948,14 @@ static int twl6030_gpadc_probe(struct platform_device *pdev)
 	indio_dev->channels = pdata->iio_channels;
 	indio_dev->num_channels = pdata->nchannels;
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&pdev->dev, indio_dev);
 
 	return ret;
 }
 
 static int twl6030_gpadc_remove(struct platform_device *pdev)
 {
-	struct iio_dev *indio_dev = platform_get_drvdata(pdev);
-
 	twl6030_gpadc_disable_irq(TWL6030_GPADC_RT_SW1_EOC_MASK);
-	iio_device_unregister(indio_dev);
 
 	return 0;
 }
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 05/32] iio: adc: viperboard: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (3 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 04/32] iio: adc: twl6030-gpadc: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 06/32] iio: dac: ad5421: " Sachin Kamat
                   ` (27 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/adc/viperboard_adc.c |   12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/iio/adc/viperboard_adc.c b/drivers/iio/adc/viperboard_adc.c
index 09727a7..674b333 100644
--- a/drivers/iio/adc/viperboard_adc.c
+++ b/drivers/iio/adc/viperboard_adc.c
@@ -139,7 +139,7 @@ static int vprbrd_adc_probe(struct platform_device *pdev)
 	indio_dev->channels = vprbrd_adc_iio_channels;
 	indio_dev->num_channels = ARRAY_SIZE(vprbrd_adc_iio_channels);
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&pdev->dev, indio_dev);
 	if (ret) {
 		dev_err(&pdev->dev, "could not register iio (adc)");
 		return ret;
@@ -150,22 +150,12 @@ static int vprbrd_adc_probe(struct platform_device *pdev)
 	return 0;
 }
 
-static int vprbrd_adc_remove(struct platform_device *pdev)
-{
-	struct iio_dev *indio_dev = platform_get_drvdata(pdev);
-
-	iio_device_unregister(indio_dev);
-
-	return 0;
-}
-
 static struct platform_driver vprbrd_adc_driver = {
 	.driver = {
 		.name	= "viperboard-adc",
 		.owner	= THIS_MODULE,
 	},
 	.probe		= vprbrd_adc_probe,
-	.remove		= vprbrd_adc_remove,
 };
 
 module_platform_driver(vprbrd_adc_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 06/32] iio: dac: ad5421: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (4 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 05/32] iio: adc: viperboard: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 07/32] iio: dac: ad5755: " Sachin Kamat
                   ` (26 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/dac/ad5421.c |   12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/iio/dac/ad5421.c b/drivers/iio/dac/ad5421.c
index 1f78b14..5d68af6 100644
--- a/drivers/iio/dac/ad5421.c
+++ b/drivers/iio/dac/ad5421.c
@@ -494,7 +494,7 @@ static int ad5421_probe(struct spi_device *spi)
 			return ret;
 	}
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&spi->dev, indio_dev);
 	if (ret) {
 		dev_err(&spi->dev, "Failed to register iio device: %d\n", ret);
 		return ret;
@@ -503,22 +503,12 @@ static int ad5421_probe(struct spi_device *spi)
 	return 0;
 }
 
-static int ad5421_remove(struct spi_device *spi)
-{
-	struct iio_dev *indio_dev = spi_get_drvdata(spi);
-
-	iio_device_unregister(indio_dev);
-
-	return 0;
-}
-
 static struct spi_driver ad5421_driver = {
 	.driver = {
 		   .name = "ad5421",
 		   .owner = THIS_MODULE,
 	},
 	.probe = ad5421_probe,
-	.remove = ad5421_remove,
 };
 module_spi_driver(ad5421_driver);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 07/32] iio: dac: ad5755: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (5 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 06/32] iio: dac: ad5421: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 08/32] iio: dac: max517: " Sachin Kamat
                   ` (25 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/dac/ad5755.c |   12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/iio/dac/ad5755.c b/drivers/iio/dac/ad5755.c
index f305a0c..35796f5 100644
--- a/drivers/iio/dac/ad5755.c
+++ b/drivers/iio/dac/ad5755.c
@@ -596,7 +596,7 @@ static int ad5755_probe(struct spi_device *spi)
 	if (ret)
 		return ret;
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&spi->dev, indio_dev);
 	if (ret) {
 		dev_err(&spi->dev, "Failed to register iio device: %d\n", ret);
 		return ret;
@@ -605,15 +605,6 @@ static int ad5755_probe(struct spi_device *spi)
 	return 0;
 }
 
-static int ad5755_remove(struct spi_device *spi)
-{
-	struct iio_dev *indio_dev = spi_get_drvdata(spi);
-
-	iio_device_unregister(indio_dev);
-
-	return 0;
-}
-
 static const struct spi_device_id ad5755_id[] = {
 	{ "ad5755", ID_AD5755 },
 	{ "ad5755-1", ID_AD5755 },
@@ -630,7 +621,6 @@ static struct spi_driver ad5755_driver = {
 		.owner = THIS_MODULE,
 	},
 	.probe = ad5755_probe,
-	.remove = ad5755_remove,
 	.id_table = ad5755_id,
 };
 module_spi_driver(ad5755_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 08/32] iio: dac: max517: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (6 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 07/32] iio: dac: ad5755: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 21:00   ` Jonathan Cameron
  2013-09-25 10:49 ` [PATCH 09/32] iio: dac: mcp4725: " Sachin Kamat
                   ` (24 subsequent siblings)
  32 siblings, 1 reply; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/dac/max517.c |    9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/iio/dac/max517.c b/drivers/iio/dac/max517.c
index 83adcbf..959207f 100644
--- a/drivers/iio/dac/max517.c
+++ b/drivers/iio/dac/max517.c
@@ -194,7 +194,7 @@ static int max517_probe(struct i2c_client *client,
 		data->vref_mv[1] = platform_data->vref_mv[1];
 	}
 
-	err = iio_device_register(indio_dev);
+	err = devm_iio_device_register(&client->dev, indio_dev);
 	if (err)
 		return err;
 
@@ -203,12 +203,6 @@ static int max517_probe(struct i2c_client *client,
 	return 0;
 }
 
-static int max517_remove(struct i2c_client *client)
-{
-	iio_device_unregister(i2c_get_clientdata(client));
-	return 0;
-}
-
 static const struct i2c_device_id max517_id[] = {
 	{ "max517", ID_MAX517 },
 	{ "max518", ID_MAX518 },
@@ -223,7 +217,6 @@ static struct i2c_driver max517_driver = {
 		.pm		= MAX517_PM_OPS,
 	},
 	.probe		= max517_probe,
-	.remove		= max517_remove,
 	.id_table	= max517_id,
 };
 module_i2c_driver(max517_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 09/32] iio: dac: mcp4725: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (7 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 08/32] iio: dac: max517: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 10/32] iio: gyro: adis16130: " Sachin Kamat
                   ` (23 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/dac/mcp4725.c |    9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/iio/dac/mcp4725.c b/drivers/iio/dac/mcp4725.c
index 6711a33..4759e25a 100644
--- a/drivers/iio/dac/mcp4725.c
+++ b/drivers/iio/dac/mcp4725.c
@@ -322,7 +322,7 @@ static int mcp4725_probe(struct i2c_client *client,
 	data->powerdown_mode = pd ? pd-1 : 2; /* 500kohm_to_gnd */
 	data->dac_value = (inbuf[1] << 4) | (inbuf[2] >> 4);
 
-	err = iio_device_register(indio_dev);
+	err = devm_iio_device_register(&client->dev, indio_dev);
 	if (err)
 		return err;
 
@@ -331,12 +331,6 @@ static int mcp4725_probe(struct i2c_client *client,
 	return 0;
 }
 
-static int mcp4725_remove(struct i2c_client *client)
-{
-	iio_device_unregister(i2c_get_clientdata(client));
-	return 0;
-}
-
 static const struct i2c_device_id mcp4725_id[] = {
 	{ "mcp4725", 0 },
 	{ }
@@ -349,7 +343,6 @@ static struct i2c_driver mcp4725_driver = {
 		.pm	= MCP4725_PM_OPS,
 	},
 	.probe		= mcp4725_probe,
-	.remove		= mcp4725_remove,
 	.id_table	= mcp4725_id,
 };
 module_i2c_driver(mcp4725_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 10/32] iio: gyro: adis16130: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (8 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 09/32] iio: dac: mcp4725: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 11/32] iio: gyro: adxrs450: " Sachin Kamat
                   ` (22 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/gyro/adis16130.c |    9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/iio/gyro/adis16130.c b/drivers/iio/gyro/adis16130.c
index 9155cf6..3f79eff 100644
--- a/drivers/iio/gyro/adis16130.c
+++ b/drivers/iio/gyro/adis16130.c
@@ -165,13 +165,7 @@ static int adis16130_probe(struct spi_device *spi)
 	indio_dev->info = &adis16130_info;
 	indio_dev->modes = INDIO_DIRECT_MODE;
 
-	return iio_device_register(indio_dev);
-}
-
-static int adis16130_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-	return 0;
+	return devm_iio_device_register(&spi->dev, indio_dev);
 }
 
 static struct spi_driver adis16130_driver = {
@@ -180,7 +174,6 @@ static struct spi_driver adis16130_driver = {
 		.owner = THIS_MODULE,
 	},
 	.probe = adis16130_probe,
-	.remove = adis16130_remove,
 };
 module_spi_driver(adis16130_driver);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 11/32] iio: gyro: adxrs450: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (9 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 10/32] iio: gyro: adis16130: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 12/32] iio: light: vcnl4000: " Sachin Kamat
                   ` (21 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/gyro/adxrs450.c |   14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/drivers/iio/gyro/adxrs450.c b/drivers/iio/gyro/adxrs450.c
index c1f40ef..ab78b57 100644
--- a/drivers/iio/gyro/adxrs450.c
+++ b/drivers/iio/gyro/adxrs450.c
@@ -442,23 +442,14 @@ static int adxrs450_probe(struct spi_device *spi)
 	indio_dev->num_channels = ARRAY_SIZE(adxrs450_channels);
 	indio_dev->name = spi->dev.driver->name;
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&spi->dev, indio_dev);
 	if (ret)
 		return ret;
 
 	/* Get the device into a sane initial state */
 	ret = adxrs450_initial_setup(indio_dev);
 	if (ret)
-		goto error_initial;
-	return 0;
-error_initial:
-	iio_device_unregister(indio_dev);
-	return ret;
-}
-
-static int adxrs450_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
+		return ret;
 
 	return 0;
 }
@@ -476,7 +467,6 @@ static struct spi_driver adxrs450_driver = {
 		.owner = THIS_MODULE,
 	},
 	.probe = adxrs450_probe,
-	.remove = adxrs450_remove,
 	.id_table	= adxrs450_id,
 };
 module_spi_driver(adxrs450_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 12/32] iio: light: vcnl4000: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (10 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 11/32] iio: gyro: adxrs450: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 13/32] staging: iio: adis16220: " Sachin Kamat
                   ` (20 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/iio/light/vcnl4000.c |    9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/iio/light/vcnl4000.c b/drivers/iio/light/vcnl4000.c
index 2bb3042..7c636dc 100644
--- a/drivers/iio/light/vcnl4000.c
+++ b/drivers/iio/light/vcnl4000.c
@@ -179,26 +179,19 @@ static int vcnl4000_probe(struct i2c_client *client,
 	indio_dev->name = VCNL4000_DRV_NAME;
 	indio_dev->modes = INDIO_DIRECT_MODE;
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&client->dev, indio_dev);
 	if (ret < 0)
 		return ret;
 
 	return 0;
 }
 
-static int vcnl4000_remove(struct i2c_client *client)
-{
-	iio_device_unregister(i2c_get_clientdata(client));
-	return 0;
-}
-
 static struct i2c_driver vcnl4000_driver = {
 	.driver = {
 		.name   = VCNL4000_DRV_NAME,
 		.owner  = THIS_MODULE,
 	},
 	.probe  = vcnl4000_probe,
-	.remove = vcnl4000_remove,
 	.id_table = vcnl4000_id,
 };
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 13/32] staging: iio: adis16220: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (11 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 12/32] iio: light: vcnl4000: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 14/32] staging: iio: ad7816: " Sachin Kamat
                   ` (19 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/accel/adis16220_core.c |    7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/iio/accel/adis16220_core.c b/drivers/staging/iio/accel/adis16220_core.c
index 5c28961..0e30629 100644
--- a/drivers/staging/iio/accel/adis16220_core.c
+++ b/drivers/staging/iio/accel/adis16220_core.c
@@ -443,13 +443,13 @@ static int adis16220_probe(struct spi_device *spi)
 	indio_dev->channels = adis16220_channels;
 	indio_dev->num_channels = ARRAY_SIZE(adis16220_channels);
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&spi->dev, indio_dev);
 	if (ret)
 		return ret;
 
 	ret = sysfs_create_bin_file(&indio_dev->dev.kobj, &accel_bin);
 	if (ret)
-		goto error_unregister_dev;
+		return ret;
 
 	ret = sysfs_create_bin_file(&indio_dev->dev.kobj, &adc1_bin);
 	if (ret)
@@ -474,8 +474,6 @@ error_rm_adc1_bin:
 	sysfs_remove_bin_file(&indio_dev->dev.kobj, &adc1_bin);
 error_rm_accel_bin:
 	sysfs_remove_bin_file(&indio_dev->dev.kobj, &accel_bin);
-error_unregister_dev:
-	iio_device_unregister(indio_dev);
 	return ret;
 }
 
@@ -486,7 +484,6 @@ static int adis16220_remove(struct spi_device *spi)
 	sysfs_remove_bin_file(&indio_dev->dev.kobj, &adc2_bin);
 	sysfs_remove_bin_file(&indio_dev->dev.kobj, &adc1_bin);
 	sysfs_remove_bin_file(&indio_dev->dev.kobj, &accel_bin);
-	iio_device_unregister(indio_dev);
 
 	return 0;
 }
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 14/32] staging: iio: ad7816: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (12 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 13/32] staging: iio: adis16220: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 15/32] staging: iio: lpc32xx_adc: " Sachin Kamat
                   ` (18 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/adc/ad7816.c |   12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/staging/iio/adc/ad7816.c b/drivers/staging/iio/adc/ad7816.c
index 9f48e5c..2369cf2 100644
--- a/drivers/staging/iio/adc/ad7816.c
+++ b/drivers/staging/iio/adc/ad7816.c
@@ -412,7 +412,7 @@ static int ad7816_probe(struct spi_device *spi_dev)
 			return ret;
 	}
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&spi_dev->dev, indio_dev);
 	if (ret)
 		return ret;
 
@@ -422,15 +422,6 @@ static int ad7816_probe(struct spi_device *spi_dev)
 	return 0;
 }
 
-static int ad7816_remove(struct spi_device *spi_dev)
-{
-	struct iio_dev *indio_dev = dev_get_drvdata(&spi_dev->dev);
-
-	iio_device_unregister(indio_dev);
-
-	return 0;
-}
-
 static const struct spi_device_id ad7816_id[] = {
 	{ "ad7816", 0 },
 	{ "ad7817", 0 },
@@ -446,7 +437,6 @@ static struct spi_driver ad7816_driver = {
 		.owner = THIS_MODULE,
 	},
 	.probe = ad7816_probe,
-	.remove = ad7816_remove,
 	.id_table = ad7816_id,
 };
 module_spi_driver(ad7816_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 15/32] staging: iio: lpc32xx_adc: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (13 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 14/32] staging: iio: ad7816: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 16/32] staging: iio: addac: " Sachin Kamat
                   ` (17 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/adc/lpc32xx_adc.c |   12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/staging/iio/adc/lpc32xx_adc.c b/drivers/staging/iio/adc/lpc32xx_adc.c
index ce7ff3e..840af87 100644
--- a/drivers/staging/iio/adc/lpc32xx_adc.c
+++ b/drivers/staging/iio/adc/lpc32xx_adc.c
@@ -183,7 +183,7 @@ static int lpc32xx_adc_probe(struct platform_device *pdev)
 	iodev->channels = lpc32xx_adc_iio_channels;
 	iodev->num_channels = ARRAY_SIZE(lpc32xx_adc_iio_channels);
 
-	retval = iio_device_register(iodev);
+	retval = devm_iio_device_register(&pdev->dev, iodev);
 	if (retval)
 		return retval;
 
@@ -192,15 +192,6 @@ static int lpc32xx_adc_probe(struct platform_device *pdev)
 	return 0;
 }
 
-static int lpc32xx_adc_remove(struct platform_device *pdev)
-{
-	struct iio_dev *iodev = platform_get_drvdata(pdev);
-
-	iio_device_unregister(iodev);
-
-	return 0;
-}
-
 #ifdef CONFIG_OF
 static const struct of_device_id lpc32xx_adc_match[] = {
 	{ .compatible = "nxp,lpc3220-adc" },
@@ -211,7 +202,6 @@ MODULE_DEVICE_TABLE(of, lpc32xx_adc_match);
 
 static struct platform_driver lpc32xx_adc_driver = {
 	.probe		= lpc32xx_adc_probe,
-	.remove		= lpc32xx_adc_remove,
 	.driver		= {
 		.name	= MOD_NAME,
 		.owner	= THIS_MODULE,
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 16/32] staging: iio: addac: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (14 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 15/32] staging: iio: lpc32xx_adc: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 17/32] staging: iio: ad7150: " Sachin Kamat
                   ` (16 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/addac/adt7316-i2c.c |    6 ------
 drivers/staging/iio/addac/adt7316-spi.c |    6 ------
 drivers/staging/iio/addac/adt7316.c     |   12 +-----------
 drivers/staging/iio/addac/adt7316.h     |    1 -
 4 files changed, 1 insertion(+), 24 deletions(-)

diff --git a/drivers/staging/iio/addac/adt7316-i2c.c b/drivers/staging/iio/addac/adt7316-i2c.c
index ce7d91c..d824e71 100644
--- a/drivers/staging/iio/addac/adt7316-i2c.c
+++ b/drivers/staging/iio/addac/adt7316-i2c.c
@@ -108,11 +108,6 @@ static int adt7316_i2c_probe(struct i2c_client *client,
 	return adt7316_probe(&client->dev, &bus, id->name);
 }
 
-static int adt7316_i2c_remove(struct i2c_client *client)
-{
-	return adt7316_remove(&client->dev);
-}
-
 static const struct i2c_device_id adt7316_i2c_id[] = {
 	{ "adt7316", 0 },
 	{ "adt7317", 0 },
@@ -132,7 +127,6 @@ static struct i2c_driver adt7316_driver = {
 		.owner  = THIS_MODULE,
 	},
 	.probe = adt7316_i2c_probe,
-	.remove = adt7316_i2c_remove,
 	.id_table = adt7316_i2c_id,
 };
 module_i2c_driver(adt7316_driver);
diff --git a/drivers/staging/iio/addac/adt7316-spi.c b/drivers/staging/iio/addac/adt7316-spi.c
index 0db8ef5..584b8f9 100644
--- a/drivers/staging/iio/addac/adt7316-spi.c
+++ b/drivers/staging/iio/addac/adt7316-spi.c
@@ -116,11 +116,6 @@ static int adt7316_spi_probe(struct spi_device *spi_dev)
 	return adt7316_probe(&spi_dev->dev, &bus, spi_dev->modalias);
 }
 
-static int adt7316_spi_remove(struct spi_device *spi_dev)
-{
-	return adt7316_remove(&spi_dev->dev);
-}
-
 static const struct spi_device_id adt7316_spi_id[] = {
 	{ "adt7316", 0 },
 	{ "adt7317", 0 },
@@ -140,7 +135,6 @@ static struct spi_driver adt7316_driver = {
 		.owner = THIS_MODULE,
 	},
 	.probe = adt7316_spi_probe,
-	.remove = adt7316_spi_remove,
 	.id_table = adt7316_spi_id,
 };
 module_spi_driver(adt7316_driver);
diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c
index 80266e8..16a8201 100644
--- a/drivers/staging/iio/addac/adt7316.c
+++ b/drivers/staging/iio/addac/adt7316.c
@@ -2166,7 +2166,7 @@ int adt7316_probe(struct device *dev, struct adt7316_bus *bus,
 	if (ret)
 		return -EIO;
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(dev, indio_dev);
 	if (ret)
 		return ret;
 
@@ -2177,16 +2177,6 @@ int adt7316_probe(struct device *dev, struct adt7316_bus *bus,
 }
 EXPORT_SYMBOL(adt7316_probe);
 
-int adt7316_remove(struct device *dev)
-{
-	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-
-	iio_device_unregister(indio_dev);
-
-	return 0;
-}
-EXPORT_SYMBOL(adt7316_remove);
-
 MODULE_AUTHOR("Sonic Zhang <sonic.zhang@analog.com>");
 MODULE_DESCRIPTION("Analog Devices ADT7316/7/8 and ADT7516/7/9 digital"
 			" temperature sensor, ADC and DAC driver");
diff --git a/drivers/staging/iio/addac/adt7316.h b/drivers/staging/iio/addac/adt7316.h
index 4d3efff..2dbfb49 100644
--- a/drivers/staging/iio/addac/adt7316.h
+++ b/drivers/staging/iio/addac/adt7316.h
@@ -31,6 +31,5 @@ extern const struct dev_pm_ops adt7316_pm_ops;
 #define ADT7316_PM_OPS NULL
 #endif
 int adt7316_probe(struct device *dev, struct adt7316_bus *bus, const char *name);
-int adt7316_remove(struct device *dev);
 
 #endif
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 17/32] staging: iio: ad7150: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (15 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 16/32] staging: iio: addac: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 18/32] staging: iio: ad7746: " Sachin Kamat
                   ` (15 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/cdc/ad7150.c |   12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/staging/iio/cdc/ad7150.c b/drivers/staging/iio/cdc/ad7150.c
index f4a0341..36e0921 100644
--- a/drivers/staging/iio/cdc/ad7150.c
+++ b/drivers/staging/iio/cdc/ad7150.c
@@ -605,7 +605,7 @@ static int ad7150_probe(struct i2c_client *client,
 			return ret;
 	}
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&client->dev, indio_dev);
 	if (ret)
 		return ret;
 
@@ -615,15 +615,6 @@ static int ad7150_probe(struct i2c_client *client,
 	return 0;
 }
 
-static int ad7150_remove(struct i2c_client *client)
-{
-	struct iio_dev *indio_dev = i2c_get_clientdata(client);
-
-	iio_device_unregister(indio_dev);
-
-	return 0;
-}
-
 static const struct i2c_device_id ad7150_id[] = {
 	{ "ad7150", 0 },
 	{ "ad7151", 0 },
@@ -638,7 +629,6 @@ static struct i2c_driver ad7150_driver = {
 		.name = "ad7150",
 	},
 	.probe = ad7150_probe,
-	.remove = ad7150_remove,
 	.id_table = ad7150_id,
 };
 module_i2c_driver(ad7150_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 18/32] staging: iio: ad7746: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (16 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 17/32] staging: iio: ad7150: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 19/32] staging: iio: ad5930: " Sachin Kamat
                   ` (14 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/cdc/ad7746.c |   12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/staging/iio/cdc/ad7746.c b/drivers/staging/iio/cdc/ad7746.c
index 75a533b..023284d 100644
--- a/drivers/staging/iio/cdc/ad7746.c
+++ b/drivers/staging/iio/cdc/ad7746.c
@@ -748,7 +748,7 @@ static int ad7746_probe(struct i2c_client *client,
 	if (ret < 0)
 		return ret;
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&client->dev, indio_dev);
 	if (ret)
 		return ret;
 
@@ -757,15 +757,6 @@ static int ad7746_probe(struct i2c_client *client,
 	return 0;
 }
 
-static int ad7746_remove(struct i2c_client *client)
-{
-	struct iio_dev *indio_dev = i2c_get_clientdata(client);
-
-	iio_device_unregister(indio_dev);
-
-	return 0;
-}
-
 static const struct i2c_device_id ad7746_id[] = {
 	{ "ad7745", 7745 },
 	{ "ad7746", 7746 },
@@ -780,7 +771,6 @@ static struct i2c_driver ad7746_driver = {
 		.name = KBUILD_MODNAME,
 	},
 	.probe = ad7746_probe,
-	.remove = ad7746_remove,
 	.id_table = ad7746_id,
 };
 module_i2c_driver(ad7746_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 19/32] staging: iio: ad5930: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (17 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 18/32] staging: iio: ad7746: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 20/32] staging: iio: ad9850: " Sachin Kamat
                   ` (13 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/frequency/ad5930.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/staging/iio/frequency/ad5930.c b/drivers/staging/iio/frequency/ad5930.c
index a4aeee6..662cfb9 100644
--- a/drivers/staging/iio/frequency/ad5930.c
+++ b/drivers/staging/iio/frequency/ad5930.c
@@ -106,7 +106,7 @@ static int ad5930_probe(struct spi_device *spi)
 	idev->info = &ad5930_info;
 	idev->modes = INDIO_DIRECT_MODE;
 
-	ret = iio_device_register(idev);
+	ret = devm_iio_device_register(&spi->dev, idev);
 	if (ret)
 		return ret;
 	spi->max_speed_hz = 2000000;
@@ -117,20 +117,12 @@ static int ad5930_probe(struct spi_device *spi)
 	return 0;
 }
 
-static int ad5930_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-
-	return 0;
-}
-
 static struct spi_driver ad5930_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.owner = THIS_MODULE,
 	},
 	.probe = ad5930_probe,
-	.remove = ad5930_remove,
 };
 module_spi_driver(ad5930_driver);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 20/32] staging: iio: ad9850: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (18 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 19/32] staging: iio: ad5930: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 21/32] staging: iio: ad9852: " Sachin Kamat
                   ` (12 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/frequency/ad9850.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/staging/iio/frequency/ad9850.c b/drivers/staging/iio/frequency/ad9850.c
index af877ff..ec1a2f0 100644
--- a/drivers/staging/iio/frequency/ad9850.c
+++ b/drivers/staging/iio/frequency/ad9850.c
@@ -92,7 +92,7 @@ static int ad9850_probe(struct spi_device *spi)
 	idev->info = &ad9850_info;
 	idev->modes = INDIO_DIRECT_MODE;
 
-	ret = iio_device_register(idev);
+	ret = devm_iio_device_register(&spi->dev, idev);
 	if (ret)
 		return ret;
 	spi->max_speed_hz = 2000000;
@@ -103,20 +103,12 @@ static int ad9850_probe(struct spi_device *spi)
 	return 0;
 }
 
-static int ad9850_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-
-	return 0;
-}
-
 static struct spi_driver ad9850_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.owner = THIS_MODULE,
 	},
 	.probe = ad9850_probe,
-	.remove = ad9850_remove,
 };
 module_spi_driver(ad9850_driver);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 21/32] staging: iio: ad9852: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (19 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 20/32] staging: iio: ad9850: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 22/32] staging: iio: ad9910: " Sachin Kamat
                   ` (11 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/frequency/ad9852.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/staging/iio/frequency/ad9852.c b/drivers/staging/iio/frequency/ad9852.c
index 4be2cf8..1e18af9 100644
--- a/drivers/staging/iio/frequency/ad9852.c
+++ b/drivers/staging/iio/frequency/ad9852.c
@@ -241,7 +241,7 @@ static int ad9852_probe(struct spi_device *spi)
 	idev->info = &ad9852_info;
 	idev->modes = INDIO_DIRECT_MODE;
 
-	ret = iio_device_register(idev);
+	ret = devm_iio_device_register(&spi->dev, idev);
 	if (ret)
 		return ret;
 	spi->max_speed_hz = 2000000;
@@ -253,20 +253,12 @@ static int ad9852_probe(struct spi_device *spi)
 	return 0;
 }
 
-static int ad9852_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-
-	return 0;
-}
-
 static struct spi_driver ad9852_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.owner = THIS_MODULE,
 	},
 	.probe = ad9852_probe,
-	.remove = ad9852_remove,
 };
 module_spi_driver(ad9852_driver);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 22/32] staging: iio: ad9910: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (20 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 21/32] staging: iio: ad9852: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:49 ` [PATCH 23/32] staging: iio: ad9951: " Sachin Kamat
                   ` (10 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/frequency/ad9910.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/staging/iio/frequency/ad9910.c b/drivers/staging/iio/frequency/ad9910.c
index a7d528e..ad8f46a 100644
--- a/drivers/staging/iio/frequency/ad9910.c
+++ b/drivers/staging/iio/frequency/ad9910.c
@@ -379,7 +379,7 @@ static int ad9910_probe(struct spi_device *spi)
 	idev->info = &ad9910_info;
 	idev->modes = INDIO_DIRECT_MODE;
 
-	ret = iio_device_register(idev);
+	ret = devm_iio_device_register(&spi->dev, idev);
 	if (ret)
 		return ret;
 	spi->max_speed_hz = 2000000;
@@ -390,20 +390,12 @@ static int ad9910_probe(struct spi_device *spi)
 	return 0;
 }
 
-static int ad9910_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-
-	return 0;
-}
-
 static struct spi_driver ad9910_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.owner = THIS_MODULE,
 	},
 	.probe = ad9910_probe,
-	.remove = ad9910_remove,
 };
 module_spi_driver(ad9910_driver);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 23/32] staging: iio: ad9951: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (21 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 22/32] staging: iio: ad9910: " Sachin Kamat
@ 2013-09-25 10:49 ` Sachin Kamat
  2013-09-25 10:50 ` [PATCH 24/32] staging: iio: adis16060: " Sachin Kamat
                   ` (9 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:49 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/frequency/ad9951.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/staging/iio/frequency/ad9951.c b/drivers/staging/iio/frequency/ad9951.c
index 0094c2f..4479eba 100644
--- a/drivers/staging/iio/frequency/ad9951.c
+++ b/drivers/staging/iio/frequency/ad9951.c
@@ -189,7 +189,7 @@ static int ad9951_probe(struct spi_device *spi)
 	idev->info = &ad9951_info;
 	idev->modes = INDIO_DIRECT_MODE;
 
-	ret = iio_device_register(idev);
+	ret = devm_iio_device_register(&spi->dev, idev);
 	if (ret)
 		return ret;
 	spi->max_speed_hz = 2000000;
@@ -200,20 +200,12 @@ static int ad9951_probe(struct spi_device *spi)
 	return 0;
 }
 
-static int ad9951_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-
-	return 0;
-}
-
 static struct spi_driver ad9951_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.owner = THIS_MODULE,
 	},
 	.probe = ad9951_probe,
-	.remove = ad9951_remove,
 };
 module_spi_driver(ad9951_driver);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 24/32] staging: iio: adis16060: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (22 preceding siblings ...)
  2013-09-25 10:49 ` [PATCH 23/32] staging: iio: ad9951: " Sachin Kamat
@ 2013-09-25 10:50 ` Sachin Kamat
  2013-09-25 10:50 ` [PATCH 25/32] staging: iio: isl29018: " Sachin Kamat
                   ` (8 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:50 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/gyro/adis16060_core.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/staging/iio/gyro/adis16060_core.c b/drivers/staging/iio/gyro/adis16060_core.c
index 6d3d771..d5d395c 100644
--- a/drivers/staging/iio/gyro/adis16060_core.c
+++ b/drivers/staging/iio/gyro/adis16060_core.c
@@ -167,7 +167,7 @@ static int adis16060_r_probe(struct spi_device *spi)
 	indio_dev->channels = adis16060_channels;
 	indio_dev->num_channels = ARRAY_SIZE(adis16060_channels);
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&spi->dev, indio_dev);
 	if (ret)
 		return ret;
 
@@ -175,13 +175,6 @@ static int adis16060_r_probe(struct spi_device *spi)
 	return 0;
 }
 
-/* fixme, confirm ordering in this function */
-static int adis16060_r_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-	return 0;
-}
-
 static int adis16060_w_probe(struct spi_device *spi)
 {
 	int ret;
@@ -211,7 +204,6 @@ static struct spi_driver adis16060_r_driver = {
 		.owner = THIS_MODULE,
 	},
 	.probe = adis16060_r_probe,
-	.remove = adis16060_r_remove,
 };
 
 static struct spi_driver adis16060_w_driver = {
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 25/32] staging: iio: isl29018: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (23 preceding siblings ...)
  2013-09-25 10:50 ` [PATCH 24/32] staging: iio: adis16060: " Sachin Kamat
@ 2013-09-25 10:50 ` Sachin Kamat
  2013-09-25 10:50 ` [PATCH 26/32] staging: iio: isl29028: " Sachin Kamat
                   ` (7 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:50 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/light/isl29018.c |   13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/staging/iio/light/isl29018.c b/drivers/staging/iio/light/isl29018.c
index e314d7e..6459178 100644
--- a/drivers/staging/iio/light/isl29018.c
+++ b/drivers/staging/iio/light/isl29018.c
@@ -584,7 +584,7 @@ static int isl29018_probe(struct i2c_client *client,
 	indio_dev->name = id->name;
 	indio_dev->dev.parent = &client->dev;
 	indio_dev->modes = INDIO_DIRECT_MODE;
-	err = iio_device_register(indio_dev);
+	err = devm_iio_device_register(&client->dev, indio_dev);
 	if (err) {
 		dev_err(&client->dev, "iio registration fails\n");
 		return err;
@@ -593,16 +593,6 @@ static int isl29018_probe(struct i2c_client *client,
 	return 0;
 }
 
-static int isl29018_remove(struct i2c_client *client)
-{
-	struct iio_dev *indio_dev = i2c_get_clientdata(client);
-
-	dev_dbg(&client->dev, "%s()\n", __func__);
-	iio_device_unregister(indio_dev);
-
-	return 0;
-}
-
 #ifdef CONFIG_PM_SLEEP
 static int isl29018_suspend(struct device *dev)
 {
@@ -663,7 +653,6 @@ static struct i2c_driver isl29018_driver = {
 			.of_match_table = isl29018_of_match,
 		    },
 	.probe	 = isl29018_probe,
-	.remove	 = isl29018_remove,
 	.id_table = isl29018_id,
 };
 module_i2c_driver(isl29018_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 26/32] staging: iio: isl29028: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (24 preceding siblings ...)
  2013-09-25 10:50 ` [PATCH 25/32] staging: iio: isl29018: " Sachin Kamat
@ 2013-09-25 10:50 ` Sachin Kamat
  2013-09-25 10:50 ` [PATCH 27/32] staging: iio: tsl2583: " Sachin Kamat
                   ` (6 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:50 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/light/isl29028.c |   11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/drivers/staging/iio/light/isl29028.c b/drivers/staging/iio/light/isl29028.c
index 6014625..aeb830b 100644
--- a/drivers/staging/iio/light/isl29028.c
+++ b/drivers/staging/iio/light/isl29028.c
@@ -513,7 +513,7 @@ static int isl29028_probe(struct i2c_client *client,
 	indio_dev->name = id->name;
 	indio_dev->dev.parent = &client->dev;
 	indio_dev->modes = INDIO_DIRECT_MODE;
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&client->dev, indio_dev);
 	if (ret < 0) {
 		dev_err(chip->dev, "iio registration fails with error %d\n",
 			ret);
@@ -522,14 +522,6 @@ static int isl29028_probe(struct i2c_client *client,
 	return 0;
 }
 
-static int isl29028_remove(struct i2c_client *client)
-{
-	struct iio_dev *indio_dev = i2c_get_clientdata(client);
-
-	iio_device_unregister(indio_dev);
-	return 0;
-}
-
 static const struct i2c_device_id isl29028_id[] = {
 	{"isl29028", 0},
 	{}
@@ -550,7 +542,6 @@ static struct i2c_driver isl29028_driver = {
 		.of_match_table = isl29028_of_match,
 	},
 	.probe	 = isl29028_probe,
-	.remove  = isl29028_remove,
 	.id_table = isl29028_id,
 };
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 27/32] staging: iio: tsl2583: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (25 preceding siblings ...)
  2013-09-25 10:50 ` [PATCH 26/32] staging: iio: isl29028: " Sachin Kamat
@ 2013-09-25 10:50 ` Sachin Kamat
  2013-09-25 10:50 ` [PATCH 28/32] staging: iio: tsl2x7x_core: " Sachin Kamat
                   ` (5 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:50 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/light/tsl2583.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/staging/iio/light/tsl2583.c b/drivers/staging/iio/light/tsl2583.c
index f8c6595..aa5a437 100644
--- a/drivers/staging/iio/light/tsl2583.c
+++ b/drivers/staging/iio/light/tsl2583.c
@@ -861,7 +861,7 @@ static int taos_probe(struct i2c_client *clientp,
 	indio_dev->dev.parent = &clientp->dev;
 	indio_dev->modes = INDIO_DIRECT_MODE;
 	indio_dev->name = chip->client->name;
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&clientp->dev, indio_dev);
 	if (ret) {
 		dev_err(&clientp->dev, "iio registration failed\n");
 		return ret;
@@ -916,13 +916,6 @@ static SIMPLE_DEV_PM_OPS(taos_pm_ops, taos_suspend, taos_resume);
 #define TAOS_PM_OPS NULL
 #endif
 
-static int taos_remove(struct i2c_client *client)
-{
-	iio_device_unregister(i2c_get_clientdata(client));
-
-	return 0;
-}
-
 static struct i2c_device_id taos_idtable[] = {
 	{ "tsl2580", 0 },
 	{ "tsl2581", 1 },
@@ -939,7 +932,6 @@ static struct i2c_driver taos_driver = {
 	},
 	.id_table = taos_idtable,
 	.probe = taos_probe,
-	.remove = taos_remove,
 };
 module_i2c_driver(taos_driver);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 28/32] staging: iio: tsl2x7x_core: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (26 preceding siblings ...)
  2013-09-25 10:50 ` [PATCH 27/32] staging: iio: tsl2583: " Sachin Kamat
@ 2013-09-25 10:50 ` Sachin Kamat
  2013-09-25 16:32   ` Jonathan Cameron
  2013-09-25 10:50 ` [PATCH 29/32] staging: iio: ade7854: " Sachin Kamat
                   ` (4 subsequent siblings)
  32 siblings, 1 reply; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:50 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/light/tsl2x7x_core.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/staging/iio/light/tsl2x7x_core.c b/drivers/staging/iio/light/tsl2x7x_core.c
index 9c43dcf..ba2079e 100644
--- a/drivers/staging/iio/light/tsl2x7x_core.c
+++ b/drivers/staging/iio/light/tsl2x7x_core.c
@@ -1909,7 +1909,7 @@ static int tsl2x7x_probe(struct i2c_client *clientp,
 	/* Make sure the chip is on */
 	tsl2x7x_chip_on(indio_dev);
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&clientp->dev, indio_dev);
 	if (ret) {
 		dev_err(&clientp->dev,
 			"%s: iio registration failed\n", __func__);
@@ -1963,8 +1963,6 @@ static int tsl2x7x_remove(struct i2c_client *client)
 
 	tsl2x7x_chip_off(indio_dev);
 
-	iio_device_unregister(indio_dev);
-
 	return 0;
 }
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 29/32] staging: iio: ade7854: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (27 preceding siblings ...)
  2013-09-25 10:50 ` [PATCH 28/32] staging: iio: tsl2x7x_core: " Sachin Kamat
@ 2013-09-25 10:50 ` Sachin Kamat
  2013-09-25 10:50 ` [PATCH 30/32] staging: iio: ad2s1200: " Sachin Kamat
                   ` (3 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:50 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/meter/ade7854-i2c.c |    6 ------
 drivers/staging/iio/meter/ade7854-spi.c |    7 -------
 drivers/staging/iio/meter/ade7854.c     |   14 +-------------
 drivers/staging/iio/meter/ade7854.h     |    1 -
 4 files changed, 1 insertion(+), 27 deletions(-)

diff --git a/drivers/staging/iio/meter/ade7854-i2c.c b/drivers/staging/iio/meter/ade7854-i2c.c
index 5b33c7f..7d913cb 100644
--- a/drivers/staging/iio/meter/ade7854-i2c.c
+++ b/drivers/staging/iio/meter/ade7854-i2c.c
@@ -229,11 +229,6 @@ static int ade7854_i2c_probe(struct i2c_client *client,
 	return ret;
 }
 
-static int ade7854_i2c_remove(struct i2c_client *client)
-{
-	return ade7854_remove(i2c_get_clientdata(client));
-}
-
 static const struct i2c_device_id ade7854_id[] = {
 	{ "ade7854", 0 },
 	{ "ade7858", 0 },
@@ -248,7 +243,6 @@ static struct i2c_driver ade7854_i2c_driver = {
 		.name = "ade7854",
 	},
 	.probe    = ade7854_i2c_probe,
-	.remove   = ade7854_i2c_remove,
 	.id_table = ade7854_id,
 };
 module_i2c_driver(ade7854_i2c_driver);
diff --git a/drivers/staging/iio/meter/ade7854-spi.c b/drivers/staging/iio/meter/ade7854-spi.c
index 94f73bb..d6a155c 100644
--- a/drivers/staging/iio/meter/ade7854-spi.c
+++ b/drivers/staging/iio/meter/ade7854-spi.c
@@ -300,12 +300,6 @@ static int ade7854_spi_probe(struct spi_device *spi)
 	return ret;
 }
 
-static int ade7854_spi_remove(struct spi_device *spi)
-{
-	ade7854_remove(spi_get_drvdata(spi));
-
-	return 0;
-}
 static const struct spi_device_id ade7854_id[] = {
 	{ "ade7854", 0 },
 	{ "ade7858", 0 },
@@ -321,7 +315,6 @@ static struct spi_driver ade7854_driver = {
 		.owner = THIS_MODULE,
 	},
 	.probe = ade7854_spi_probe,
-	.remove = ade7854_spi_remove,
 	.id_table = ade7854_id,
 };
 module_spi_driver(ade7854_driver);
diff --git a/drivers/staging/iio/meter/ade7854.c b/drivers/staging/iio/meter/ade7854.c
index d620bbd..11a88ae 100644
--- a/drivers/staging/iio/meter/ade7854.c
+++ b/drivers/staging/iio/meter/ade7854.c
@@ -555,24 +555,12 @@ int ade7854_probe(struct iio_dev *indio_dev, struct device *dev)
 	/* Get the device into a sane initial state */
 	ret = ade7854_initial_setup(indio_dev);
 	if (ret)
-		goto error_unreg_dev;
+		return ret;
 
 	return 0;
-
-error_unreg_dev:
-	iio_device_unregister(indio_dev);
-	return ret;
 }
 EXPORT_SYMBOL(ade7854_probe);
 
-int ade7854_remove(struct iio_dev *indio_dev)
-{
-	iio_device_unregister(indio_dev);
-
-	return 0;
-}
-EXPORT_SYMBOL(ade7854_remove);
-
 MODULE_AUTHOR("Barry Song <21cnbao@gmail.com>");
 MODULE_DESCRIPTION("Analog Devices ADE7854/58/68/78 Polyphase Energy Meter");
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/iio/meter/ade7854.h b/drivers/staging/iio/meter/ade7854.h
index 0653457..fac6497 100644
--- a/drivers/staging/iio/meter/ade7854.h
+++ b/drivers/staging/iio/meter/ade7854.h
@@ -169,6 +169,5 @@ struct ade7854_state {
 };
 
 extern int ade7854_probe(struct iio_dev *indio_dev, struct device *dev);
-extern int ade7854_remove(struct iio_dev *indio_dev);
 
 #endif
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 30/32] staging: iio: ad2s1200: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (28 preceding siblings ...)
  2013-09-25 10:50 ` [PATCH 29/32] staging: iio: ade7854: " Sachin Kamat
@ 2013-09-25 10:50 ` Sachin Kamat
  2013-09-25 10:50 ` [PATCH 31/32] staging: iio: ad2s90: " Sachin Kamat
                   ` (2 subsequent siblings)
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:50 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/resolver/ad2s1200.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/staging/iio/resolver/ad2s1200.c b/drivers/staging/iio/resolver/ad2s1200.c
index 62d3017..36eedd8 100644
--- a/drivers/staging/iio/resolver/ad2s1200.c
+++ b/drivers/staging/iio/resolver/ad2s1200.c
@@ -131,7 +131,7 @@ static int ad2s1200_probe(struct spi_device *spi)
 	indio_dev->num_channels = ARRAY_SIZE(ad2s1200_channels);
 	indio_dev->name = spi_get_device_id(spi)->name;
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&spi->dev, indio_dev);
 	if (ret)
 		return ret;
 
@@ -142,13 +142,6 @@ static int ad2s1200_probe(struct spi_device *spi)
 	return 0;
 }
 
-static int ad2s1200_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-
-	return 0;
-}
-
 static const struct spi_device_id ad2s1200_id[] = {
 	{ "ad2s1200" },
 	{ "ad2s1205" },
@@ -162,7 +155,6 @@ static struct spi_driver ad2s1200_driver = {
 		.owner = THIS_MODULE,
 	},
 	.probe = ad2s1200_probe,
-	.remove = ad2s1200_remove,
 	.id_table = ad2s1200_id,
 };
 module_spi_driver(ad2s1200_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 31/32] staging: iio: ad2s90: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (29 preceding siblings ...)
  2013-09-25 10:50 ` [PATCH 30/32] staging: iio: ad2s1200: " Sachin Kamat
@ 2013-09-25 10:50 ` Sachin Kamat
  2013-09-25 10:50 ` [PATCH 32/32] staging: iio: ad7152: " Sachin Kamat
  2013-09-25 16:24 ` [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Jonathan Cameron
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:50 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/resolver/ad2s90.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/staging/iio/resolver/ad2s90.c b/drivers/staging/iio/resolver/ad2s90.c
index e24c589..a18ebe2 100644
--- a/drivers/staging/iio/resolver/ad2s90.c
+++ b/drivers/staging/iio/resolver/ad2s90.c
@@ -79,7 +79,7 @@ static int ad2s90_probe(struct spi_device *spi)
 	indio_dev->num_channels = 1;
 	indio_dev->name = spi_get_device_id(spi)->name;
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&spi->dev, indio_dev);
 	if (ret)
 		return ret;
 
@@ -91,13 +91,6 @@ static int ad2s90_probe(struct spi_device *spi)
 	return 0;
 }
 
-static int ad2s90_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-
-	return 0;
-}
-
 static const struct spi_device_id ad2s90_id[] = {
 	{ "ad2s90" },
 	{}
@@ -110,7 +103,6 @@ static struct spi_driver ad2s90_driver = {
 		.owner = THIS_MODULE,
 	},
 	.probe = ad2s90_probe,
-	.remove = ad2s90_remove,
 	.id_table = ad2s90_id,
 };
 module_spi_driver(ad2s90_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 32/32] staging: iio: ad7152: Use devm_iio_device_register
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (30 preceding siblings ...)
  2013-09-25 10:50 ` [PATCH 31/32] staging: iio: ad2s90: " Sachin Kamat
@ 2013-09-25 10:50 ` Sachin Kamat
  2013-09-25 16:24 ` [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Jonathan Cameron
  32 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-25 10:50 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

devm_iio_device_register simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/staging/iio/cdc/ad7152.c |   12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/staging/iio/cdc/ad7152.c b/drivers/staging/iio/cdc/ad7152.c
index f2c309d..f925ecb 100644
--- a/drivers/staging/iio/cdc/ad7152.c
+++ b/drivers/staging/iio/cdc/ad7152.c
@@ -502,7 +502,7 @@ static int ad7152_probe(struct i2c_client *client,
 	indio_dev->num_channels = ARRAY_SIZE(ad7152_channels);
 	indio_dev->modes = INDIO_DIRECT_MODE;
 
-	ret = iio_device_register(indio_dev);
+	ret = devm_iio_device_register(&client->dev, indio_dev);
 	if (ret)
 		return ret;
 
@@ -511,15 +511,6 @@ static int ad7152_probe(struct i2c_client *client,
 	return 0;
 }
 
-static int ad7152_remove(struct i2c_client *client)
-{
-	struct iio_dev *indio_dev = i2c_get_clientdata(client);
-
-	iio_device_unregister(indio_dev);
-
-	return 0;
-}
-
 static const struct i2c_device_id ad7152_id[] = {
 	{ "ad7152", 0 },
 	{ "ad7153", 1 },
@@ -533,7 +524,6 @@ static struct i2c_driver ad7152_driver = {
 		.name = KBUILD_MODNAME,
 	},
 	.probe = ad7152_probe,
-	.remove = ad7152_remove,
 	.id_table = ad7152_id,
 };
 module_i2c_driver(ad7152_driver);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* Re: [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister}
  2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
                   ` (31 preceding siblings ...)
  2013-09-25 10:50 ` [PATCH 32/32] staging: iio: ad7152: " Sachin Kamat
@ 2013-09-25 16:24 ` Jonathan Cameron
  2013-09-25 16:30   ` Lars-Peter Clausen
  32 siblings, 1 reply; 40+ messages in thread
From: Jonathan Cameron @ 2013-09-25 16:24 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars



Sachin Kamat <sachin.kamat@linaro.org> wrote:
>With the conversion of iio drivers to use device managed APIs, several
>drivers now have a remove function with only the
>iio_device_unregister()
>call. Thus introduce device managed version of iio_device_register() to
>clean up lot of such code. 3 patches also removes the unregister call
>in drivers
>where it happens to be the last call before return statement.
>
>This is only compile tested as I do not have any actual hardware to
>test ATM.

Hi all.

I definitely want to gather opinions on this idea.
It makes me nervous but the stats speak for themselves.

Jonathan
>
>Sachin Kamat (32):
>  iio: core: Implement devm_iio_device_{register,unregister}
>  iio: accel: kxsd9: Use devm_iio_device_register
>  iio: adc: mcp3422: Use devm_iio_device_register
>  iio: adc: twl6030-gpadc: Use devm_iio_device_register
>  iio: adc: viperboard: Use devm_iio_device_register
>  iio: dac: ad5421: Use devm_iio_device_register
>  iio: dac: ad5755: Use devm_iio_device_register
>  iio: dac: max517: Use devm_iio_device_register
>  iio: dac: mcp4725: Use devm_iio_device_register
>  iio: gyro: adis16130: Use devm_iio_device_register
>  iio: gyro: adxrs450: Use devm_iio_device_register
>  iio: light: vcnl4000: Use devm_iio_device_register
>  staging: iio: adis16220: Use devm_iio_device_register
>  staging: iio: ad7816: Use devm_iio_device_register
>  staging: iio: lpc32xx_adc: Use devm_iio_device_register
>  staging: iio: addac: Use devm_iio_device_register
>  staging: iio: ad7150: Use devm_iio_device_register
>  staging: iio: ad7746: Use devm_iio_device_register
>  staging: iio: ad5930: Use devm_iio_device_register
>  staging: iio: ad9850: Use devm_iio_device_register
>  staging: iio: ad9852: Use devm_iio_device_register
>  staging: iio: ad9910: Use devm_iio_device_register
>  staging: iio: ad9951: Use devm_iio_device_register
>  staging: iio: adis16060: Use devm_iio_device_register
>  staging: iio: isl29018: Use devm_iio_device_register
>  staging: iio: isl29028: Use devm_iio_device_register
>  staging: iio: tsl2583: Use devm_iio_device_register
>  staging: iio: tsl2x7x_core: Use devm_iio_device_register
>  staging: iio: ade7854: Use devm_iio_device_register
>  staging: iio: ad2s1200: Use devm_iio_device_register
>  staging: iio: ad2s90: Use devm_iio_device_register
>  staging: iio: ad7152: Use devm_iio_device_register
>
> Documentation/driver-model/devres.txt      |    2 ++
> drivers/iio/accel/kxsd9.c                  |   10 +-------
> drivers/iio/adc/mcp3422.c                  |    9 +------
> drivers/iio/adc/twl6030-gpadc.c            |    5 +---
> drivers/iio/adc/viperboard_adc.c           |   12 +---------
> drivers/iio/dac/ad5421.c                   |   12 +---------
> drivers/iio/dac/ad5755.c                   |   12 +---------
> drivers/iio/dac/max517.c                   |    9 +------
> drivers/iio/dac/mcp4725.c                  |    9 +------
> drivers/iio/gyro/adis16130.c               |    9 +------
> drivers/iio/gyro/adxrs450.c                |   14 ++---------
>drivers/iio/industrialio-core.c            |   35
>++++++++++++++++++++++++++++
> drivers/iio/light/vcnl4000.c               |    9 +------
> drivers/staging/iio/accel/adis16220_core.c |    7 ++----
> drivers/staging/iio/adc/ad7816.c           |   12 +---------
> drivers/staging/iio/adc/lpc32xx_adc.c      |   12 +---------
> drivers/staging/iio/addac/adt7316-i2c.c    |    6 -----
> drivers/staging/iio/addac/adt7316-spi.c    |    6 -----
> drivers/staging/iio/addac/adt7316.c        |   12 +---------
> drivers/staging/iio/addac/adt7316.h        |    1 -
> drivers/staging/iio/cdc/ad7150.c           |   12 +---------
> drivers/staging/iio/cdc/ad7152.c           |   12 +---------
> drivers/staging/iio/cdc/ad7746.c           |   12 +---------
> drivers/staging/iio/frequency/ad5930.c     |   10 +-------
> drivers/staging/iio/frequency/ad9850.c     |   10 +-------
> drivers/staging/iio/frequency/ad9852.c     |   10 +-------
> drivers/staging/iio/frequency/ad9910.c     |   10 +-------
> drivers/staging/iio/frequency/ad9951.c     |   10 +-------
> drivers/staging/iio/gyro/adis16060_core.c  |   10 +-------
> drivers/staging/iio/light/isl29018.c       |   13 +----------
> drivers/staging/iio/light/isl29028.c       |   11 +--------
> drivers/staging/iio/light/tsl2583.c        |   10 +-------
> drivers/staging/iio/light/tsl2x7x_core.c   |    4 +---
> drivers/staging/iio/meter/ade7854-i2c.c    |    6 -----
> drivers/staging/iio/meter/ade7854-spi.c    |    7 ------
> drivers/staging/iio/meter/ade7854.c        |   14 +----------
> drivers/staging/iio/meter/ade7854.h        |    1 -
> drivers/staging/iio/resolver/ad2s1200.c    |   10 +-------
> drivers/staging/iio/resolver/ad2s90.c      |   10 +-------
> include/linux/iio/iio.h                    |   25 ++++++++++++++++++++
> 40 files changed, 95 insertions(+), 315 deletions(-)

-- 
Sent from my Android phone with K-9 Mail. Please excuse my brevity.

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister}
  2013-09-25 16:24 ` [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Jonathan Cameron
@ 2013-09-25 16:30   ` Lars-Peter Clausen
  0 siblings, 0 replies; 40+ messages in thread
From: Lars-Peter Clausen @ 2013-09-25 16:30 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: Sachin Kamat, linux-iio

On 09/25/2013 06:24 PM, Jonathan Cameron wrote:
> 
> 
> Sachin Kamat <sachin.kamat@linaro.org> wrote:
>> With the conversion of iio drivers to use device managed APIs, several
>> drivers now have a remove function with only the
>> iio_device_unregister()
>> call. Thus introduce device managed version of iio_device_register() to
>> clean up lot of such code. 3 patches also removes the unregister call
>> in drivers
>> where it happens to be the last call before return statement.
>>
>> This is only compile tested as I do not have any actual hardware to
>> test ATM.
> 
> Hi all.
> 
> I definitely want to gather opinions on this idea.
> It makes me nervous but the stats speak for themselves.

Same here.

> 
> Jonathan
>>
>> Sachin Kamat (32):
>>  iio: core: Implement devm_iio_device_{register,unregister}
>>  iio: accel: kxsd9: Use devm_iio_device_register
>>  iio: adc: mcp3422: Use devm_iio_device_register
>>  iio: adc: twl6030-gpadc: Use devm_iio_device_register
>>  iio: adc: viperboard: Use devm_iio_device_register
>>  iio: dac: ad5421: Use devm_iio_device_register
>>  iio: dac: ad5755: Use devm_iio_device_register
>>  iio: dac: max517: Use devm_iio_device_register
>>  iio: dac: mcp4725: Use devm_iio_device_register
>>  iio: gyro: adis16130: Use devm_iio_device_register
>>  iio: gyro: adxrs450: Use devm_iio_device_register
>>  iio: light: vcnl4000: Use devm_iio_device_register
>>  staging: iio: adis16220: Use devm_iio_device_register
>>  staging: iio: ad7816: Use devm_iio_device_register
>>  staging: iio: lpc32xx_adc: Use devm_iio_device_register
>>  staging: iio: addac: Use devm_iio_device_register
>>  staging: iio: ad7150: Use devm_iio_device_register
>>  staging: iio: ad7746: Use devm_iio_device_register
>>  staging: iio: ad5930: Use devm_iio_device_register
>>  staging: iio: ad9850: Use devm_iio_device_register
>>  staging: iio: ad9852: Use devm_iio_device_register
>>  staging: iio: ad9910: Use devm_iio_device_register
>>  staging: iio: ad9951: Use devm_iio_device_register
>>  staging: iio: adis16060: Use devm_iio_device_register
>>  staging: iio: isl29018: Use devm_iio_device_register
>>  staging: iio: isl29028: Use devm_iio_device_register
>>  staging: iio: tsl2583: Use devm_iio_device_register
>>  staging: iio: tsl2x7x_core: Use devm_iio_device_register
>>  staging: iio: ade7854: Use devm_iio_device_register
>>  staging: iio: ad2s1200: Use devm_iio_device_register
>>  staging: iio: ad2s90: Use devm_iio_device_register
>>  staging: iio: ad7152: Use devm_iio_device_register
>>
>> Documentation/driver-model/devres.txt      |    2 ++
>> drivers/iio/accel/kxsd9.c                  |   10 +-------
>> drivers/iio/adc/mcp3422.c                  |    9 +------
>> drivers/iio/adc/twl6030-gpadc.c            |    5 +---
>> drivers/iio/adc/viperboard_adc.c           |   12 +---------
>> drivers/iio/dac/ad5421.c                   |   12 +---------
>> drivers/iio/dac/ad5755.c                   |   12 +---------
>> drivers/iio/dac/max517.c                   |    9 +------
>> drivers/iio/dac/mcp4725.c                  |    9 +------
>> drivers/iio/gyro/adis16130.c               |    9 +------
>> drivers/iio/gyro/adxrs450.c                |   14 ++---------
>> drivers/iio/industrialio-core.c            |   35
>> ++++++++++++++++++++++++++++
>> drivers/iio/light/vcnl4000.c               |    9 +------
>> drivers/staging/iio/accel/adis16220_core.c |    7 ++----
>> drivers/staging/iio/adc/ad7816.c           |   12 +---------
>> drivers/staging/iio/adc/lpc32xx_adc.c      |   12 +---------
>> drivers/staging/iio/addac/adt7316-i2c.c    |    6 -----
>> drivers/staging/iio/addac/adt7316-spi.c    |    6 -----
>> drivers/staging/iio/addac/adt7316.c        |   12 +---------
>> drivers/staging/iio/addac/adt7316.h        |    1 -
>> drivers/staging/iio/cdc/ad7150.c           |   12 +---------
>> drivers/staging/iio/cdc/ad7152.c           |   12 +---------
>> drivers/staging/iio/cdc/ad7746.c           |   12 +---------
>> drivers/staging/iio/frequency/ad5930.c     |   10 +-------
>> drivers/staging/iio/frequency/ad9850.c     |   10 +-------
>> drivers/staging/iio/frequency/ad9852.c     |   10 +-------
>> drivers/staging/iio/frequency/ad9910.c     |   10 +-------
>> drivers/staging/iio/frequency/ad9951.c     |   10 +-------
>> drivers/staging/iio/gyro/adis16060_core.c  |   10 +-------
>> drivers/staging/iio/light/isl29018.c       |   13 +----------
>> drivers/staging/iio/light/isl29028.c       |   11 +--------
>> drivers/staging/iio/light/tsl2583.c        |   10 +-------
>> drivers/staging/iio/light/tsl2x7x_core.c   |    4 +---
>> drivers/staging/iio/meter/ade7854-i2c.c    |    6 -----
>> drivers/staging/iio/meter/ade7854-spi.c    |    7 ------
>> drivers/staging/iio/meter/ade7854.c        |   14 +----------
>> drivers/staging/iio/meter/ade7854.h        |    1 -
>> drivers/staging/iio/resolver/ad2s1200.c    |   10 +-------
>> drivers/staging/iio/resolver/ad2s90.c      |   10 +-------
>> include/linux/iio/iio.h                    |   25 ++++++++++++++++++++
>> 40 files changed, 95 insertions(+), 315 deletions(-)
> 

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH 28/32] staging: iio: tsl2x7x_core: Use devm_iio_device_register
  2013-09-25 10:50 ` [PATCH 28/32] staging: iio: tsl2x7x_core: " Sachin Kamat
@ 2013-09-25 16:32   ` Jonathan Cameron
  0 siblings, 0 replies; 40+ messages in thread
From: Jonathan Cameron @ 2013-09-25 16:32 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars



Sachin Kamat <sachin.kamat@linaro.org> wrote:
>devm_iio_device_register simplifies the code.
>
>Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
>---
> drivers/staging/iio/light/tsl2x7x_core.c |    4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
>diff --git a/drivers/staging/iio/light/tsl2x7x_core.c
>b/drivers/staging/iio/light/tsl2x7x_core.c
>index 9c43dcf..ba2079e 100644
>--- a/drivers/staging/iio/light/tsl2x7x_core.c
>+++ b/drivers/staging/iio/light/tsl2x7x_core.c
>@@ -1909,7 +1909,7 @@ static int tsl2x7x_probe(struct i2c_client
>*clientp,
> 	/* Make sure the chip is on */
> 	tsl2x7x_chip_on(indio_dev);
> 
>-	ret = iio_device_register(indio_dev);
>+	ret = devm_iio_device_register(&clientp->dev, indio_dev);
> 	if (ret) {
> 		dev_err(&clientp->dev,
> 			"%s: iio registration failed\n", __func__);
>@@ -1963,8 +1963,6 @@ static int tsl2x7x_remove(struct i2c_client
>*client)
> 
> 	tsl2x7x_chip_off(indio_dev);

This order is wrong in the driver. Should remove interfaces before powering down the chip!
> 
>-	iio_device_unregister(indio_dev);
>-
> 	return 0;
> }
> 

-- 
Sent from my Android phone with K-9 Mail. Please excuse my brevity.

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH 02/32] iio: accel: kxsd9: Use devm_iio_device_register
  2013-09-25 10:49 ` [PATCH 02/32] iio: accel: kxsd9: Use devm_iio_device_register Sachin Kamat
@ 2013-09-25 20:45   ` Jonathan Cameron
  0 siblings, 0 replies; 40+ messages in thread
From: Jonathan Cameron @ 2013-09-25 20:45 UTC (permalink / raw)
  To: Sachin Kamat; +Cc: linux-iio, lars

On 09/25/13 11:49, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Saddly what this really shows is that this driver is not doing some
cleanup that it ideally would be.  The device has a low power mode.
At the very least, one would expect the device to be put into that state
when the kernel calls the remove.

Can't really blame anyone else for this thought can I :)

For reference, ctrl reg B bit 6 is the device enable.  Set it to 0 and it goes
into a low power mode.

This is particularly ugly given there is a perfectly good defined
constant for the ctrl reg that isn't even used in the power up function.

I was young and ignorant ;)


I suspect it is a rare device where there is nothing that 'should' be done
after the unregister has occured.

Note that we have even started seeing the power supply of devices being controlled
by optional regulators for boards where they may not necessarily be getting any
power at all.  I suspect this will become more common as time goes on.

> ---
>  drivers/iio/accel/kxsd9.c |   10 +---------
>  1 file changed, 1 insertion(+), 9 deletions(-)
> 
> diff --git a/drivers/iio/accel/kxsd9.c b/drivers/iio/accel/kxsd9.c
> index 709c132..3048686 100644
> --- a/drivers/iio/accel/kxsd9.c
> +++ b/drivers/iio/accel/kxsd9.c
> @@ -244,20 +244,13 @@ static int kxsd9_probe(struct spi_device *spi)
>  	spi_setup(spi);
>  	kxsd9_power_up(st);
>  
> -	ret = iio_device_register(indio_dev);
> +	ret = devm_iio_device_register(&spi->dev, indio_dev);
>  	if (ret)
>  		return ret;
>  
>  	return 0;
>  }
>  
> -static int kxsd9_remove(struct spi_device *spi)
> -{
> -	iio_device_unregister(spi_get_drvdata(spi));
> -
> -	return 0;
> -}
> -
>  static const struct spi_device_id kxsd9_id[] = {
>  	{"kxsd9", 0},
>  	{ },
> @@ -270,7 +263,6 @@ static struct spi_driver kxsd9_driver = {
>  		.owner = THIS_MODULE,
>  	},
>  	.probe = kxsd9_probe,
> -	.remove = kxsd9_remove,
>  	.id_table = kxsd9_id,
>  };
>  module_spi_driver(kxsd9_driver);
> 

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH 08/32] iio: dac: max517: Use devm_iio_device_register
  2013-09-25 10:49 ` [PATCH 08/32] iio: dac: max517: " Sachin Kamat
@ 2013-09-25 21:00   ` Jonathan Cameron
  0 siblings, 0 replies; 40+ messages in thread
From: Jonathan Cameron @ 2013-09-25 21:00 UTC (permalink / raw)
  To: Sachin Kamat; +Cc: linux-iio, lars

On 09/25/13 11:49, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>

This device clearly has a power down mode. Is it sensible to assume that if it is fine
to power it down in suspend it is fine to power it down if the remove is called?

If so that should happen after the unregister.

Sachin, you are doing a fine job of showing up where we don't have the best handling
in our remove functions!

A few devices seem to be so 'stupid' that there really is nothing to do (unless we cut
the power supply) but they aren't that common.

> ---
>  drivers/iio/dac/max517.c |    9 +--------
>  1 file changed, 1 insertion(+), 8 deletions(-)
> 
> diff --git a/drivers/iio/dac/max517.c b/drivers/iio/dac/max517.c
> index 83adcbf..959207f 100644
> --- a/drivers/iio/dac/max517.c
> +++ b/drivers/iio/dac/max517.c
> @@ -194,7 +194,7 @@ static int max517_probe(struct i2c_client *client,
>  		data->vref_mv[1] = platform_data->vref_mv[1];
>  	}
>  
> -	err = iio_device_register(indio_dev);
> +	err = devm_iio_device_register(&client->dev, indio_dev);
>  	if (err)
>  		return err;
>  
> @@ -203,12 +203,6 @@ static int max517_probe(struct i2c_client *client,
>  	return 0;
>  }
>  
> -static int max517_remove(struct i2c_client *client)
> -{
> -	iio_device_unregister(i2c_get_clientdata(client));
> -	return 0;
> -}
> -
>  static const struct i2c_device_id max517_id[] = {
>  	{ "max517", ID_MAX517 },
>  	{ "max518", ID_MAX518 },
> @@ -223,7 +217,6 @@ static struct i2c_driver max517_driver = {
>  		.pm		= MAX517_PM_OPS,
>  	},
>  	.probe		= max517_probe,
> -	.remove		= max517_remove,
>  	.id_table	= max517_id,
>  };
>  module_i2c_driver(max517_driver);
> 

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH 01/32] iio: core: Implement devm_iio_device_{register,unregister}
  2013-09-25 10:49 ` [PATCH 01/32] iio: core: Implement devm_iio_device_{register,unregister} Sachin Kamat
@ 2013-09-26 20:31   ` Lars-Peter Clausen
  2013-09-27  3:07     ` Sachin Kamat
  0 siblings, 1 reply; 40+ messages in thread
From: Lars-Peter Clausen @ 2013-09-26 20:31 UTC (permalink / raw)
  To: Sachin Kamat; +Cc: linux-iio, Jonathan Cameron

On 09/25/2013 12:49 PM, Sachin Kamat wrote:
> Add device managed devm_iio_device_{register,unregister}()
> to automatically unregister IIO drivers thus leading to
> simplified IIO driver code.
>

I have the same fears as Jonathan that this is going to be used incorrectly
for drivers where the remove function is not empty. But hopefully the
benefits outweigh the dangers. So I think we should add this functionality.
But the implementation looks broken. Also few nitpicks on style issue inline
below. Otherwise looks good.


> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> Cc: Lars-Peter Clausen <lars@metafoo.de>
> ---
>  Documentation/driver-model/devres.txt |    2 ++
>  drivers/iio/industrialio-core.c       |   35 +++++++++++++++++++++++++++++++++
>  include/linux/iio/iio.h               |   25 +++++++++++++++++++++++
>  3 files changed, 62 insertions(+)
> 
> diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
> index fcb34a5..ffeab1d 100644
> --- a/Documentation/driver-model/devres.txt
> +++ b/Documentation/driver-model/devres.txt
> @@ -242,6 +242,8 @@ IIO
>    devm_iio_device_free()
>    devm_iio_trigger_alloc()
>    devm_iio_trigger_free()
> +  devm_iio_device_register()
> +  devm_iio_device_unregister()
>  
>  IO region
>    devm_request_region()
> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index 24db185..58f494b 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -1125,6 +1125,41 @@ void iio_device_unregister(struct iio_dev *indio_dev)
>  	device_del(&indio_dev->dev);
>  }
>  EXPORT_SYMBOL(iio_device_unregister);
> +
> +static void devm_iio_device_unreg(struct device *dev, void *res)
> +{
> +	iio_device_unregister(*(struct iio_dev **)res);
> +}
> +
> +int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev)
> +{
> +	void *ptr;
> +	int iio_dev;

ret is probably a better name.

> +
> +	ptr = devres_alloc(devm_iio_device_unreg, 0, GFP_KERNEL);

So we allocate memory with the size of 0. And then never actually pass the
IIO device itself to the devres managed resource, but de-reference the
pointer in devm_iio_device_unreg assuming it points is a iio_dev struct
pointer. This doesn't seem right. I think it needs to be something like this:

struct iio_dev **ptr;

ptr = devres_alloc(devm_iio_device_unreg, sizeof(*ptr), GFP_KERNEL);

...

*ptr = indio_dev;

> +	if (!ptr)
> +		return -ENOMEM;
> +
> +	iio_dev = iio_device_register(indio_dev);
> +	if (!iio_dev)
> +		devres_add(dev, ptr);
> +	else
> +		devres_free(ptr);
> +
> +	return iio_dev;
> +}
> +EXPORT_SYMBOL_GPL(devm_iio_device_register);
> +
> +void devm_iio_device_unregister(struct device *dev, struct iio_dev *iio_dev)

The last parameter should be named indio_dev.

> +{
> +	int rc;
> +
> +	rc = devres_release(dev, devm_iio_device_unreg,
> +			    devm_iio_device_match, iio_dev);
> +	WARN_ON(rc);
> +}
> +EXPORT_SYMBOL_GPL(devm_iio_device_unregister);
> +
>  subsys_initcall(iio_init);
>  module_exit(iio_exit);
>  
> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
> index ac1cb8f..be16dd6 100644
> --- a/include/linux/iio/iio.h
> +++ b/include/linux/iio/iio.h
> @@ -453,6 +453,31 @@ int iio_device_register(struct iio_dev *indio_dev);
>  void iio_device_unregister(struct iio_dev *indio_dev);
>  
>  /**
> + * devm_iio_device_register - Resource-managed iio_device_register()
> + * @dev:	Device to allocate iio_dev for
> + * @indio_dev:	Device structure filled by the device driver
> + *
> + * Managed iio_device_register.  iio_dev registered with this function is

The IIO device registered ...

I would also add that this function calls iio_device_register() internally
and to look at that function for more information.

> + * automatically unregistered on driver detach.
> + *
> + * If an iio_dev registered with this function needs to be unregistered
> + * separately, devm_iio_device_unregister() must be used.
> + *
> + * RETURNS:
> + * 0 on success, negative error number on failure.
> + */

The kernel doc should be placed above the implementation, not the
definition. And yes we got that wrong on quite a few functions.

> +int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev);
> +
> +/**
> + * devm_iio_device_unregister - Resource-managed iio_device_unregister()
> + * @dev:	Device this iio_dev belongs to
> + * @indio_dev:	the iio_dev associated with the device
> + *
> + * Unregister iio_dev registered with devm_iio_device_register().
> + */
> +void devm_iio_device_unregister(struct device *dev, struct iio_dev *indio_dev);
> +
> +/**
>   * iio_push_event() - try to add event to the list for userspace reading
>   * @indio_dev:		IIO device structure
>   * @ev_code:		What event
> 


^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH 01/32] iio: core: Implement devm_iio_device_{register,unregister}
  2013-09-26 20:31   ` Lars-Peter Clausen
@ 2013-09-27  3:07     ` Sachin Kamat
  0 siblings, 0 replies; 40+ messages in thread
From: Sachin Kamat @ 2013-09-27  3:07 UTC (permalink / raw)
  To: Lars-Peter Clausen; +Cc: linux-iio, Jonathan Cameron

On 27 September 2013 02:01, Lars-Peter Clausen <lars@metafoo.de> wrote:
> On 09/25/2013 12:49 PM, Sachin Kamat wrote:
>> Add device managed devm_iio_device_{register,unregister}()
>> to automatically unregister IIO drivers thus leading to
>> simplified IIO driver code.
>>
>
> I have the same fears as Jonathan that this is going to be used incorrectly
> for drivers where the remove function is not empty. But hopefully the
> benefits outweigh the dangers. So I think we should add this functionality.
> But the implementation looks broken. Also few nitpicks on style issue inline
> below. Otherwise looks good.

Thank you for your review and feedback.

>
>
>> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
>> Cc: Lars-Peter Clausen <lars@metafoo.de>
>> ---
>> +int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev)
>> +{
>> +     void *ptr;
>> +     int iio_dev;
>
> ret is probably a better name.

OK.

>
>> +
>> +     ptr = devres_alloc(devm_iio_device_unreg, 0, GFP_KERNEL);
>
> So we allocate memory with the size of 0. And then never actually pass the
> IIO device itself to the devres managed resource, but de-reference the
> pointer in devm_iio_device_unreg assuming it points is a iio_dev struct
> pointer. This doesn't seem right.

I was a bit unsure about the way this should be handled as
iio_device_register returned an int
and not struct iio_dev.

 I think it needs to be something like this:

Thanks for providing the right way of handling. Will incorporate these changes.

>
> struct iio_dev **ptr;
>
> ptr = devres_alloc(devm_iio_device_unreg, sizeof(*ptr), GFP_KERNEL);
>
> ...
>
> *ptr = indio_dev;
>
>> +     if (!ptr)
>> +             return -ENOMEM;
>> +
>> +     iio_dev = iio_device_register(indio_dev);
>> +     if (!iio_dev)
>> +             devres_add(dev, ptr);
>> +     else
>> +             devres_free(ptr);
>> +
>> +     return iio_dev;
>> +}
>> +EXPORT_SYMBOL_GPL(devm_iio_device_register);
>> +
>> +void devm_iio_device_unregister(struct device *dev, struct iio_dev *iio_dev)
>
> The last parameter should be named indio_dev.

OK. Just for my info, what is the convention about choosing indio_dev
and iio_dev?

>
>> +{
>> +     int rc;
>> +
>> +     rc = devres_release(dev, devm_iio_device_unreg,
>> +                         devm_iio_device_match, iio_dev);
>> +     WARN_ON(rc);
>> +}
>> +EXPORT_SYMBOL_GPL(devm_iio_device_unregister);
>> +
>>  subsys_initcall(iio_init);
>>  module_exit(iio_exit);
>>
>> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
>> index ac1cb8f..be16dd6 100644
>> --- a/include/linux/iio/iio.h
>> +++ b/include/linux/iio/iio.h
>> @@ -453,6 +453,31 @@ int iio_device_register(struct iio_dev *indio_dev);
>>  void iio_device_unregister(struct iio_dev *indio_dev);
>>
>>  /**
>> + * devm_iio_device_register - Resource-managed iio_device_register()
>> + * @dev:     Device to allocate iio_dev for
>> + * @indio_dev:       Device structure filled by the device driver
>> + *
>> + * Managed iio_device_register.  iio_dev registered with this function is
>
> The IIO device registered ...
>
> I would also add that this function calls iio_device_register() internally
> and to look at that function for more information.

OK. I will update.

>
>> + * automatically unregistered on driver detach.
>> + *
>> + * If an iio_dev registered with this function needs to be unregistered
>> + * separately, devm_iio_device_unregister() must be used.
>> + *
>> + * RETURNS:
>> + * 0 on success, negative error number on failure.
>> + */
>
> The kernel doc should be placed above the implementation, not the
> definition. And yes we got that wrong on quite a few functions.

Yes that is correct. I just followed the existing convention in the file.
I will first create a patch to move the existing kernel doc to the .c
file and then update accordingly
for my implementation.

-- 
With warm regards,
Sachin

^ permalink raw reply	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2013-09-27  3:07 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-25 10:49 [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Sachin Kamat
2013-09-25 10:49 ` [PATCH 01/32] iio: core: Implement devm_iio_device_{register,unregister} Sachin Kamat
2013-09-26 20:31   ` Lars-Peter Clausen
2013-09-27  3:07     ` Sachin Kamat
2013-09-25 10:49 ` [PATCH 02/32] iio: accel: kxsd9: Use devm_iio_device_register Sachin Kamat
2013-09-25 20:45   ` Jonathan Cameron
2013-09-25 10:49 ` [PATCH 03/32] iio: adc: mcp3422: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 04/32] iio: adc: twl6030-gpadc: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 05/32] iio: adc: viperboard: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 06/32] iio: dac: ad5421: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 07/32] iio: dac: ad5755: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 08/32] iio: dac: max517: " Sachin Kamat
2013-09-25 21:00   ` Jonathan Cameron
2013-09-25 10:49 ` [PATCH 09/32] iio: dac: mcp4725: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 10/32] iio: gyro: adis16130: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 11/32] iio: gyro: adxrs450: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 12/32] iio: light: vcnl4000: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 13/32] staging: iio: adis16220: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 14/32] staging: iio: ad7816: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 15/32] staging: iio: lpc32xx_adc: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 16/32] staging: iio: addac: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 17/32] staging: iio: ad7150: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 18/32] staging: iio: ad7746: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 19/32] staging: iio: ad5930: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 20/32] staging: iio: ad9850: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 21/32] staging: iio: ad9852: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 22/32] staging: iio: ad9910: " Sachin Kamat
2013-09-25 10:49 ` [PATCH 23/32] staging: iio: ad9951: " Sachin Kamat
2013-09-25 10:50 ` [PATCH 24/32] staging: iio: adis16060: " Sachin Kamat
2013-09-25 10:50 ` [PATCH 25/32] staging: iio: isl29018: " Sachin Kamat
2013-09-25 10:50 ` [PATCH 26/32] staging: iio: isl29028: " Sachin Kamat
2013-09-25 10:50 ` [PATCH 27/32] staging: iio: tsl2583: " Sachin Kamat
2013-09-25 10:50 ` [PATCH 28/32] staging: iio: tsl2x7x_core: " Sachin Kamat
2013-09-25 16:32   ` Jonathan Cameron
2013-09-25 10:50 ` [PATCH 29/32] staging: iio: ade7854: " Sachin Kamat
2013-09-25 10:50 ` [PATCH 30/32] staging: iio: ad2s1200: " Sachin Kamat
2013-09-25 10:50 ` [PATCH 31/32] staging: iio: ad2s90: " Sachin Kamat
2013-09-25 10:50 ` [PATCH 32/32] staging: iio: ad7152: " Sachin Kamat
2013-09-25 16:24 ` [PATCH Resend 00/32] iio: Introduce devm_iio_device_{register,unregister} Jonathan Cameron
2013-09-25 16:30   ` Lars-Peter Clausen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).