All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register
@ 2013-10-29 11:39 Sachin Kamat
  2013-10-29 11:39 ` [PATCH 01/33] iio: core: Implement devm_iio_device_{register,unregister} Sachin Kamat
                   ` (34 more replies)
  0 siblings, 35 replies; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

Resending this series after rebasing onto the latest iio tree.
Previous version is available at [1].
[1] http://www.spinics.net/lists/linux-iio/msg10682.html

* Added tested and reviewed by tags to patch 1. Thank you Lars.
* Included a patch (patch2) to re-organise the kernel doc
  as suggested by Lars.

Sachin Kamat (33):
  iio: core: Implement devm_iio_device_{register,unregister}
  iio: core: Move kernel doc to the right location
  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            |  101 ++++++++++++++++++++++++++++
 drivers/iio/industrialio-event.c           |    6 ++
 drivers/iio/industrialio-trigger.c         |   24 +++++++
 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                    |   81 +---------------------
 42 files changed, 168 insertions(+), 394 deletions(-)

-- 
1.7.9.5

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

* [PATCH 01/33] iio: core: Implement devm_iio_device_{register,unregister}
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-09 17:44   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 02/33] iio: core: Move kernel doc to the right location Sachin Kamat
                   ` (33 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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>
Tested-by: Lars-Peter Clausen <lars@metafoo.de>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
---
 Documentation/driver-model/devres.txt |    2 ++
 drivers/iio/industrialio-core.c       |   59 +++++++++++++++++++++++++++++++++
 include/linux/iio/iio.h               |    3 ++
 3 files changed, 64 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 18f72e3..1c280b5 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -1161,6 +1161,65 @@ void iio_device_unregister(struct iio_dev *indio_dev)
 	mutex_unlock(&indio_dev->info_exist_lock);
 }
 EXPORT_SYMBOL(iio_device_unregister);
+
+static void devm_iio_device_unreg(struct device *dev, void *res)
+{
+	iio_device_unregister(*(struct iio_dev **)res);
+}
+
+/**
+ * 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.  The IIO device registered with this
+ * function is automatically unregistered on driver detach. This function
+ * calls iio_device_register() internally. Refer to that function for more
+ * information.
+ *
+ * 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)
+{
+	struct iio_dev **ptr;
+	int ret;
+
+	ptr = devres_alloc(devm_iio_device_unreg, sizeof(*ptr), GFP_KERNEL);
+	if (!ptr)
+		return -ENOMEM;
+
+	*ptr = indio_dev;
+	ret = iio_device_register(indio_dev);
+	if (!ret)
+		devres_add(dev, ptr);
+	else
+		devres_free(ptr);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(devm_iio_device_register);
+
+/**
+ * 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)
+{
+	int rc;
+
+	rc = devres_release(dev, devm_iio_device_unreg,
+			    devm_iio_device_match, indio_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 256a90a..a8cabda 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -510,6 +510,9 @@ int iio_device_register(struct iio_dev *indio_dev);
  **/
 void iio_device_unregister(struct iio_dev *indio_dev);
 
+int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev);
+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
-- 
1.7.9.5

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

* [PATCH 02/33] iio: core: Move kernel doc to the right location
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
  2013-10-29 11:39 ` [PATCH 01/33] iio: core: Implement devm_iio_device_{register,unregister} Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-09 17:45   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 03/33] iio: accel: kxsd9: Use devm_iio_device_register Sachin Kamat
                   ` (32 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, lars, sachin.kamat

Documentation related to function should be placed above
its implementation. Move it accordingly.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Cc: Lars-Peter Clausen <lars@metafoo.de>
---
 drivers/iio/industrialio-core.c    |   42 +++++++++++++++++++
 drivers/iio/industrialio-event.c   |    6 +++
 drivers/iio/industrialio-trigger.c |   24 +++++++++++
 include/linux/iio/iio.h            |   80 ------------------------------------
 4 files changed, 72 insertions(+), 80 deletions(-)

diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 1c280b5..2fe88c1 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -107,6 +107,11 @@ static const char * const iio_chan_info_postfix[] = {
 	[IIO_CHAN_INFO_INT_TIME] = "integration_time",
 };
 
+/**
+ * iio_find_channel_from_si() - get channel from its scan index
+ * @indio_dev:		device
+ * @si:			scan index to match
+ */
 const struct iio_chan_spec
 *iio_find_channel_from_si(struct iio_dev *indio_dev, int si)
 {
@@ -922,6 +927,10 @@ struct device_type iio_device_type = {
 	.release = iio_dev_release,
 };
 
+/**
+ * iio_device_alloc() - allocate an iio_dev from a driver
+ * @sizeof_priv:	Space to allocate for private structure.
+ **/
 struct iio_dev *iio_device_alloc(int sizeof_priv)
 {
 	struct iio_dev *dev;
@@ -962,6 +971,10 @@ struct iio_dev *iio_device_alloc(int sizeof_priv)
 }
 EXPORT_SYMBOL(iio_device_alloc);
 
+/**
+ * iio_device_free() - free an iio_dev from a driver
+ * @dev:		the iio_dev associated with the device
+ **/
 void iio_device_free(struct iio_dev *dev)
 {
 	if (dev)
@@ -984,6 +997,20 @@ static int devm_iio_device_match(struct device *dev, void *res, void *data)
 	return *r == data;
 }
 
+/**
+ * devm_iio_device_alloc - Resource-managed iio_device_alloc()
+ * @dev:		Device to allocate iio_dev for
+ * @sizeof_priv:	Space to allocate for private structure.
+ *
+ * Managed iio_device_alloc. iio_dev allocated with this function is
+ * automatically freed on driver detach.
+ *
+ * If an iio_dev allocated with this function needs to be freed separately,
+ * devm_iio_device_free() must be used.
+ *
+ * RETURNS:
+ * Pointer to allocated iio_dev on success, NULL on failure.
+ */
 struct iio_dev *devm_iio_device_alloc(struct device *dev, int sizeof_priv)
 {
 	struct iio_dev **ptr, *iio_dev;
@@ -1006,6 +1033,13 @@ struct iio_dev *devm_iio_device_alloc(struct device *dev, int sizeof_priv)
 }
 EXPORT_SYMBOL_GPL(devm_iio_device_alloc);
 
+/**
+ * devm_iio_device_free - Resource-managed iio_device_free()
+ * @dev:		Device this iio_dev belongs to
+ * @iio_dev:		the iio_dev associated with the device
+ *
+ * Free iio_dev allocated with devm_iio_device_alloc().
+ */
 void devm_iio_device_free(struct device *dev, struct iio_dev *iio_dev)
 {
 	int rc;
@@ -1080,6 +1114,10 @@ static const struct file_operations iio_buffer_fileops = {
 
 static const struct iio_buffer_setup_ops noop_ring_setup_ops;
 
+/**
+ * iio_device_register() - register a device with the IIO subsystem
+ * @indio_dev:		Device structure filled by the device driver
+ **/
 int iio_device_register(struct iio_dev *indio_dev)
 {
 	int ret;
@@ -1141,6 +1179,10 @@ error_ret:
 }
 EXPORT_SYMBOL(iio_device_register);
 
+/**
+ * iio_device_unregister() - unregister a device from the IIO subsystem
+ * @indio_dev:		Device structure representing the device.
+ **/
 void iio_device_unregister(struct iio_dev *indio_dev)
 {
 	mutex_lock(&indio_dev->info_exist_lock);
diff --git a/drivers/iio/industrialio-event.c b/drivers/iio/industrialio-event.c
index dac15b9..32b2c2d 100644
--- a/drivers/iio/industrialio-event.c
+++ b/drivers/iio/industrialio-event.c
@@ -42,6 +42,12 @@ struct iio_event_interface {
 	struct attribute_group	group;
 };
 
+/**
+ * iio_push_event() - try to add event to the list for userspace reading
+ * @indio_dev:		IIO device structure
+ * @ev_code:		What event
+ * @timestamp:		When the event occurred
+ **/
 int iio_push_event(struct iio_dev *indio_dev, u64 ev_code, s64 timestamp)
 {
 	struct iio_event_interface *ev_int = indio_dev->event_interface;
diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c
index bf5e70a..8bd092b 100644
--- a/drivers/iio/industrialio-trigger.c
+++ b/drivers/iio/industrialio-trigger.c
@@ -506,6 +506,23 @@ static int devm_iio_trigger_match(struct device *dev, void *res, void *data)
 	return *r == data;
 }
 
+/**
+ * devm_iio_trigger_alloc - Resource-managed iio_trigger_alloc()
+ * @dev:		Device to allocate iio_trigger for
+ * @fmt:		trigger name format. If it includes format
+ *			specifiers, the additional arguments following
+ *			format are formatted and inserted in the resulting
+ *			string replacing their respective specifiers.
+ *
+ * Managed iio_trigger_alloc.  iio_trigger allocated with this function is
+ * automatically freed on driver detach.
+ *
+ * If an iio_trigger allocated with this function needs to be freed separately,
+ * devm_iio_trigger_free() must be used.
+ *
+ * RETURNS:
+ * Pointer to allocated iio_trigger on success, NULL on failure.
+ */
 struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
 						const char *fmt, ...)
 {
@@ -532,6 +549,13 @@ struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
 }
 EXPORT_SYMBOL_GPL(devm_iio_trigger_alloc);
 
+/**
+ * devm_iio_trigger_free - Resource-managed iio_trigger_free()
+ * @dev:		Device this iio_dev belongs to
+ * @iio_trig:		the iio_trigger associated with the device
+ *
+ * Free iio_trigger allocated with devm_iio_trigger_alloc().
+ */
 void devm_iio_trigger_free(struct device *dev, struct iio_trigger *iio_trig)
 {
 	int rc;
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
index a8cabda..5b125fd 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -490,35 +490,12 @@ struct iio_dev {
 #endif
 };
 
-/**
- * iio_find_channel_from_si() - get channel from its scan index
- * @indio_dev:		device
- * @si:			scan index to match
- */
 const struct iio_chan_spec
 *iio_find_channel_from_si(struct iio_dev *indio_dev, int si);
-
-/**
- * iio_device_register() - register a device with the IIO subsystem
- * @indio_dev:		Device structure filled by the device driver
- **/
 int iio_device_register(struct iio_dev *indio_dev);
-
-/**
- * iio_device_unregister() - unregister a device from the IIO subsystem
- * @indio_dev:		Device structure representing the device.
- **/
 void iio_device_unregister(struct iio_dev *indio_dev);
-
 int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev);
 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
- * @timestamp:		When the event occurred
- **/
 int iio_push_event(struct iio_dev *indio_dev, u64 ev_code, s64 timestamp);
 
 extern struct bus_type iio_bus_type;
@@ -582,10 +559,6 @@ static inline void *iio_device_get_drvdata(struct iio_dev *indio_dev)
 
 /* Can we make this smaller? */
 #define IIO_ALIGN L1_CACHE_BYTES
-/**
- * iio_device_alloc() - allocate an iio_dev from a driver
- * @sizeof_priv: 	Space to allocate for private structure.
- **/
 struct iio_dev *iio_device_alloc(int sizeof_priv);
 
 static inline void *iio_priv(const struct iio_dev *indio_dev)
@@ -599,64 +572,11 @@ static inline struct iio_dev *iio_priv_to_dev(void *priv)
 				  ALIGN(sizeof(struct iio_dev), IIO_ALIGN));
 }
 
-/**
- * iio_device_free() - free an iio_dev from a driver
- * @indio_dev: 		the iio_dev associated with the device
- **/
 void iio_device_free(struct iio_dev *indio_dev);
-
-/**
- * devm_iio_device_alloc - Resource-managed iio_device_alloc()
- * @dev: 		Device to allocate iio_dev for
- * @sizeof_priv: 	Space to allocate for private structure.
- *
- * Managed iio_device_alloc.  iio_dev allocated with this function is
- * automatically freed on driver detach.
- *
- * If an iio_dev allocated with this function needs to be freed separately,
- * devm_iio_device_free() must be used.
- *
- * RETURNS:
- * Pointer to allocated iio_dev on success, NULL on failure.
- */
 struct iio_dev *devm_iio_device_alloc(struct device *dev, int sizeof_priv);
-
-/**
- * devm_iio_device_free - Resource-managed iio_device_free()
- * @dev:		Device this iio_dev belongs to
- * @indio_dev: 		the iio_dev associated with the device
- *
- * Free iio_dev allocated with devm_iio_device_alloc().
- */
 void devm_iio_device_free(struct device *dev, struct iio_dev *indio_dev);
-
-/**
- * devm_iio_trigger_alloc - Resource-managed iio_trigger_alloc()
- * @dev:		Device to allocate iio_trigger for
- * @fmt:		trigger name format. If it includes format
- *			specifiers, the additional arguments following
- *			format are formatted and inserted in the resulting
- *			string replacing their respective specifiers.
- *
- * Managed iio_trigger_alloc.  iio_trigger allocated with this function is
- * automatically freed on driver detach.
- *
- * If an iio_trigger allocated with this function needs to be freed separately,
- * devm_iio_trigger_free() must be used.
- *
- * RETURNS:
- * Pointer to allocated iio_trigger on success, NULL on failure.
- */
 struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
 						const char *fmt, ...);
-
-/**
- * devm_iio_trigger_free - Resource-managed iio_trigger_free()
- * @dev:		Device this iio_dev belongs to
- * @iio_trig:		the iio_trigger associated with the device
- *
- * Free iio_trigger allocated with devm_iio_trigger_alloc().
- */
 void devm_iio_trigger_free(struct device *dev, struct iio_trigger *iio_trig);
 
 /**
-- 
1.7.9.5


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

* [PATCH 03/33] iio: accel: kxsd9: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
  2013-10-29 11:39 ` [PATCH 01/33] iio: core: Implement devm_iio_device_{register,unregister} Sachin Kamat
  2013-10-29 11:39 ` [PATCH 02/33] iio: core: Move kernel doc to the right location Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-09 17:47   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 04/33] iio: adc: mcp3422: " Sachin Kamat
                   ` (31 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 d72118d..877ae67 100644
--- a/drivers/iio/accel/kxsd9.c
+++ b/drivers/iio/accel/kxsd9.c
@@ -243,14 +243,7 @@ static int kxsd9_probe(struct spi_device *spi)
 	spi_setup(spi);
 	kxsd9_power_up(st);
 
-	return iio_device_register(indio_dev);
-}
-
-static int kxsd9_remove(struct spi_device *spi)
-{
-	iio_device_unregister(spi_get_drvdata(spi));
-
-	return 0;
+	return devm_iio_device_register(&spi->dev, indio_dev);
 }
 
 static const struct spi_device_id kxsd9_id[] = {
@@ -265,7 +258,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] 72+ messages in thread

* [PATCH 04/33] iio: adc: mcp3422: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (2 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 03/33] iio: accel: kxsd9: Use devm_iio_device_register Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-09 17:54   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 05/33] iio: adc: twl6030-gpadc: " Sachin Kamat
                   ` (30 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 1294832..dbdbd77 100644
--- a/drivers/iio/adc/mcp3422.c
+++ b/drivers/iio/adc/mcp3422.c
@@ -362,7 +362,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;
 
@@ -371,12 +371,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 },
@@ -400,7 +394,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] 72+ messages in thread

* [PATCH 05/33] iio: adc: twl6030-gpadc: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (3 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 04/33] iio: adc: mcp3422: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 13:26   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 06/33] iio: adc: viperboard: " Sachin Kamat
                   ` (29 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 53e1c64..d1ef33c 100644
--- a/drivers/iio/adc/twl6030-gpadc.c
+++ b/drivers/iio/adc/twl6030-gpadc.c
@@ -948,15 +948,12 @@ static int twl6030_gpadc_probe(struct platform_device *pdev)
 	indio_dev->channels = pdata->iio_channels;
 	indio_dev->num_channels = pdata->nchannels;
 
-	return iio_device_register(indio_dev);
+	return devm_iio_device_register(&pdev->dev, indio_dev);
 }
 
 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] 72+ messages in thread

* [PATCH 06/33] iio: adc: viperboard: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (4 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 05/33] iio: adc: twl6030-gpadc: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 13:31   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 07/33] iio: dac: ad5421: " Sachin Kamat
                   ` (28 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* [PATCH 07/33] iio: dac: ad5421: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (5 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 06/33] iio: adc: viperboard: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 13:34   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 08/33] iio: dac: ad5755: " Sachin Kamat
                   ` (27 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 3eeaa82..7d1e908 100644
--- a/drivers/iio/dac/ad5421.c
+++ b/drivers/iio/dac/ad5421.c
@@ -514,16 +514,7 @@ static int ad5421_probe(struct spi_device *spi)
 			return ret;
 	}
 
-	return iio_device_register(indio_dev);
-}
-
-static int ad5421_remove(struct spi_device *spi)
-{
-	struct iio_dev *indio_dev = spi_get_drvdata(spi);
-
-	iio_device_unregister(indio_dev);
-
-	return 0;
+	return devm_iio_device_register(&spi->dev, indio_dev);
 }
 
 static struct spi_driver ad5421_driver = {
@@ -532,7 +523,6 @@ static struct spi_driver ad5421_driver = {
 		   .owner = THIS_MODULE,
 	},
 	.probe = ad5421_probe,
-	.remove = ad5421_remove,
 };
 module_spi_driver(ad5421_driver);
 
-- 
1.7.9.5


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

* [PATCH 08/33] iio: dac: ad5755: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (6 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 07/33] iio: dac: ad5421: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 13:35   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 09/33] iio: dac: max517: " Sachin Kamat
                   ` (26 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 9a78d5a..ee1e95a 100644
--- a/drivers/iio/dac/ad5755.c
+++ b/drivers/iio/dac/ad5755.c
@@ -589,16 +589,7 @@ static int ad5755_probe(struct spi_device *spi)
 	if (ret)
 		return ret;
 
-	return iio_device_register(indio_dev);
-}
-
-static int ad5755_remove(struct spi_device *spi)
-{
-	struct iio_dev *indio_dev = spi_get_drvdata(spi);
-
-	iio_device_unregister(indio_dev);
-
-	return 0;
+	return devm_iio_device_register(&spi->dev, indio_dev);
 }
 
 static const struct spi_device_id ad5755_id[] = {
@@ -617,7 +608,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] 72+ messages in thread

* [PATCH 09/33] iio: dac: max517: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (7 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 08/33] iio: dac: ad5755: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 13:37   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 10/33] iio: dac: mcp4725: " Sachin Kamat
                   ` (25 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 6e19035..073b705 100644
--- a/drivers/iio/dac/max517.c
+++ b/drivers/iio/dac/max517.c
@@ -191,13 +191,7 @@ static int max517_probe(struct i2c_client *client,
 		data->vref_mv[1] = platform_data->vref_mv[1];
 	}
 
-	return iio_device_register(indio_dev);
-}
-
-static int max517_remove(struct i2c_client *client)
-{
-	iio_device_unregister(i2c_get_clientdata(client));
-	return 0;
+	return devm_iio_device_register(&client->dev, indio_dev);
 }
 
 static const struct i2c_device_id max517_id[] = {
@@ -214,7 +208,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] 72+ messages in thread

* [PATCH 10/33] iio: dac: mcp4725: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (8 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 09/33] iio: dac: max517: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 13:39   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 11/33] iio: gyro: adis16130: " Sachin Kamat
                   ` (24 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 9f57ae8..0aa921b 100644
--- a/drivers/iio/dac/mcp4725.c
+++ b/drivers/iio/dac/mcp4725.c
@@ -320,13 +320,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);
 
-	return iio_device_register(indio_dev);
-}
-
-static int mcp4725_remove(struct i2c_client *client)
-{
-	iio_device_unregister(i2c_get_clientdata(client));
-	return 0;
+	return devm_iio_device_register(&client->dev, indio_dev);
 }
 
 static const struct i2c_device_id mcp4725_id[] = {
@@ -341,7 +335,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] 72+ messages in thread

* [PATCH 11/33] iio: gyro: adis16130: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (9 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 10/33] iio: dac: mcp4725: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 13:43   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 12/33] iio: gyro: adxrs450: " Sachin Kamat
                   ` (23 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 445c2ae..8d08c7e 100644
--- a/drivers/iio/gyro/adis16130.c
+++ b/drivers/iio/gyro/adis16130.c
@@ -161,13 +161,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 = {
@@ -176,7 +170,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] 72+ messages in thread

* [PATCH 12/33] iio: gyro: adxrs450: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (10 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 11/33] iio: gyro: adis16130: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 13:45   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 13/33] iio: light: vcnl4000: " Sachin Kamat
                   ` (22 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 1e546ba..eb0e08e 100644
--- a/drivers/iio/gyro/adxrs450.c
+++ b/drivers/iio/gyro/adxrs450.c
@@ -434,23 +434,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;
 }
@@ -468,7 +459,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] 72+ messages in thread

* [PATCH 13/33] iio: light: vcnl4000: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (11 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 12/33] iio: gyro: adxrs450: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 13:48   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 14/33] staging: iio: adis16220: " Sachin Kamat
                   ` (21 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 ecb3341..384ac23 100644
--- a/drivers/iio/light/vcnl4000.c
+++ b/drivers/iio/light/vcnl4000.c
@@ -179,13 +179,7 @@ static int vcnl4000_probe(struct i2c_client *client,
 	indio_dev->name = VCNL4000_DRV_NAME;
 	indio_dev->modes = INDIO_DIRECT_MODE;
 
-	return iio_device_register(indio_dev);
-}
-
-static int vcnl4000_remove(struct i2c_client *client)
-{
-	iio_device_unregister(i2c_get_clientdata(client));
-	return 0;
+	return devm_iio_device_register(&client->dev, indio_dev);
 }
 
 static struct i2c_driver vcnl4000_driver = {
@@ -194,7 +188,6 @@ static struct i2c_driver vcnl4000_driver = {
 		.owner  = THIS_MODULE,
 	},
 	.probe  = vcnl4000_probe,
-	.remove = vcnl4000_remove,
 	.id_table = vcnl4000_id,
 };
 
-- 
1.7.9.5


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

* [PATCH 14/33] staging: iio: adis16220: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (12 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 13/33] iio: light: vcnl4000: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:01   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 15/33] staging: iio: ad7816: " Sachin Kamat
                   ` (20 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 4c9364b..6f38ca9 100644
--- a/drivers/staging/iio/accel/adis16220_core.c
+++ b/drivers/staging/iio/accel/adis16220_core.c
@@ -439,13 +439,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)
@@ -470,8 +470,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;
 }
 
@@ -482,7 +480,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] 72+ messages in thread

* [PATCH 15/33] staging: iio: ad7816: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (13 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 14/33] staging: iio: adis16220: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:04   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 16/33] staging: iio: lpc32xx_adc: " Sachin Kamat
                   ` (19 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* [PATCH 16/33] staging: iio: lpc32xx_adc: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (14 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 15/33] staging: iio: ad7816: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:06   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 17/33] staging: iio: addac: " Sachin Kamat
                   ` (18 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 ef0a21d..a876ce7 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] 72+ messages in thread

* [PATCH 17/33] staging: iio: addac: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (15 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 16/33] staging: iio: lpc32xx_adc: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:08   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 18/33] staging: iio: ad7150: " Sachin Kamat
                   ` (17 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 0feea55..75ddd4f 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 7f4f0a8..e480abb 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] 72+ messages in thread

* [PATCH 18/33] staging: iio: ad7150: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (16 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 17/33] staging: iio: addac: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:10   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 19/33] staging: iio: ad7746: " Sachin Kamat
                   ` (16 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 7e7f989..d9f2191 100644
--- a/drivers/staging/iio/cdc/ad7150.c
+++ b/drivers/staging/iio/cdc/ad7150.c
@@ -640,7 +640,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;
 
@@ -650,15 +650,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 },
@@ -673,7 +664,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] 72+ messages in thread

* [PATCH 19/33] staging: iio: ad7746: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (17 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 18/33] staging: iio: ad7150: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:12   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 20/33] staging: iio: ad5930: " Sachin Kamat
                   ` (15 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 862d68d..51d56fe 100644
--- a/drivers/staging/iio/cdc/ad7746.c
+++ b/drivers/staging/iio/cdc/ad7746.c
@@ -749,7 +749,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;
 
@@ -758,15 +758,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 },
@@ -781,7 +772,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] 72+ messages in thread

* [PATCH 20/33] staging: iio: ad5930: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (18 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 19/33] staging: iio: ad7746: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:14   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 21/33] staging: iio: ad9850: " Sachin Kamat
                   ` (14 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* [PATCH 21/33] staging: iio: ad9850: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (19 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 20/33] staging: iio: ad5930: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:15   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 22/33] staging: iio: ad9852: " Sachin Kamat
                   ` (13 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* [PATCH 22/33] staging: iio: ad9852: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (20 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 21/33] staging: iio: ad9850: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:17   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 23/33] staging: iio: ad9910: " Sachin Kamat
                   ` (12 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 11e4367..af2f2cc 100644
--- a/drivers/staging/iio/frequency/ad9852.c
+++ b/drivers/staging/iio/frequency/ad9852.c
@@ -218,7 +218,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;
@@ -230,20 +230,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] 72+ messages in thread

* [PATCH 23/33] staging: iio: ad9910: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (21 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 22/33] staging: iio: ad9852: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:18   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 24/33] staging: iio: ad9951: " Sachin Kamat
                   ` (11 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 755e048..8404945 100644
--- a/drivers/staging/iio/frequency/ad9910.c
+++ b/drivers/staging/iio/frequency/ad9910.c
@@ -337,7 +337,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;
@@ -348,20 +348,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] 72+ messages in thread

* [PATCH 24/33] staging: iio: ad9951: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (22 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 23/33] staging: iio: ad9910: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:19   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 25/33] staging: iio: adis16060: " Sachin Kamat
                   ` (10 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 5e8990a..d465db0 100644
--- a/drivers/staging/iio/frequency/ad9951.c
+++ b/drivers/staging/iio/frequency/ad9951.c
@@ -175,7 +175,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;
@@ -186,20 +186,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] 72+ messages in thread

* [PATCH 25/33] staging: iio: adis16060: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (23 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 24/33] staging: iio: ad9951: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:22   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 26/33] staging: iio: isl29018: " Sachin Kamat
                   ` (9 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* [PATCH 26/33] staging: iio: isl29018: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (24 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 25/33] staging: iio: adis16060: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:24   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 27/33] staging: iio: isl29028: " Sachin Kamat
                   ` (8 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 488e690..3660a43 100644
--- a/drivers/staging/iio/light/isl29018.c
+++ b/drivers/staging/iio/light/isl29018.c
@@ -585,7 +585,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;
@@ -594,16 +594,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)
 {
@@ -664,7 +654,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] 72+ messages in thread

* [PATCH 27/33] staging: iio: isl29028: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (25 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 26/33] staging: iio: isl29018: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:28   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 28/33] staging: iio: tsl2583: " Sachin Kamat
                   ` (7 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* [PATCH 28/33] staging: iio: tsl2583: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (26 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 27/33] staging: iio: isl29028: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:30   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 29/33] staging: iio: tsl2x7x_core: " Sachin Kamat
                   ` (6 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* [PATCH 29/33] staging: iio: tsl2x7x_core: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (27 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 28/33] staging: iio: tsl2583: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:31   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 30/33] staging: iio: ade7854: " Sachin Kamat
                   ` (5 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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 1880502..cec7595 100644
--- a/drivers/staging/iio/light/tsl2x7x_core.c
+++ b/drivers/staging/iio/light/tsl2x7x_core.c
@@ -1935,7 +1935,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__);
@@ -1989,8 +1989,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] 72+ messages in thread

* [PATCH 30/33] staging: iio: ade7854: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (28 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 29/33] staging: iio: tsl2x7x_core: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:33   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 31/33] staging: iio: ad2s1200: " Sachin Kamat
                   ` (4 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* [PATCH 31/33] staging: iio: ad2s1200: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (29 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 30/33] staging: iio: ade7854: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:36   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 32/33] staging: iio: ad2s90: " Sachin Kamat
                   ` (3 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* [PATCH 32/33] staging: iio: ad2s90: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (30 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 31/33] staging: iio: ad2s1200: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:37   ` Jonathan Cameron
  2013-10-29 11:39 ` [PATCH 33/33] staging: iio: ad7152: " Sachin Kamat
                   ` (2 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* [PATCH 33/33] staging: iio: ad7152: Use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (31 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 32/33] staging: iio: ad2s90: " Sachin Kamat
@ 2013-10-29 11:39 ` Sachin Kamat
  2013-11-23 18:39   ` Jonathan Cameron
  2013-10-29 13:11 ` [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Jonathan Cameron
  2013-11-23 18:43 ` Jonathan Cameron
  34 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-29 11:39 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] 72+ messages in thread

* Re: [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (32 preceding siblings ...)
  2013-10-29 11:39 ` [PATCH 33/33] staging: iio: ad7152: " Sachin Kamat
@ 2013-10-29 13:11 ` Jonathan Cameron
  2013-10-30  8:31   ` Sachin Kamat
  2013-11-23 18:43 ` Jonathan Cameron
  34 siblings, 1 reply; 72+ messages in thread
From: Jonathan Cameron @ 2013-10-29 13:11 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

Hi Sachin.

It may be a few days before I get to thee bit as previously discussed at least some of these have simpler remove functions than they should have...

As such I will push back on some of these ..

Sachin Kamat <sachin.kamat@linaro.org> wrote:
>Resending this series after rebasing onto the latest iio tree.
>Previous version is available at [1].
>[1] http://www.spinics.net/lists/linux-iio/msg10682.html
>
>* Added tested and reviewed by tags to patch 1. Thank you Lars.
>* Included a patch (patch2) to re-organise the kernel doc
>  as suggested by Lars.
>
>Sachin Kamat (33):
>  iio: core: Implement devm_iio_device_{register,unregister}
>  iio: core: Move kernel doc to the right location
>  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            |  101
>++++++++++++++++++++++++++++
> drivers/iio/industrialio-event.c           |    6 ++
> drivers/iio/industrialio-trigger.c         |   24 +++++++
> 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                    |   81
>+---------------------
> 42 files changed, 168 insertions(+), 394 deletions(-)

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

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

* Re: [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register
  2013-10-29 13:11 ` [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Jonathan Cameron
@ 2013-10-30  8:31   ` Sachin Kamat
  2013-10-30 17:12     ` Jonathan Cameron
  0 siblings, 1 reply; 72+ messages in thread
From: Sachin Kamat @ 2013-10-30  8:31 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: linux-iio, Lars-Peter Clausen

Hi Jonathan,

On 29 October 2013 18:41, Jonathan Cameron <jic23@kernel.org> wrote:
> Hi Sachin.
>
> It may be a few days before I get to thee bit as previously discussed at least some of these have simpler remove functions than they should have...
>
> As such I will push back on some of these ..
>

You could probably add the core patches first and then others on a
case-by-case basis.

Regards,
Sachin

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

* Re: [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register
  2013-10-30  8:31   ` Sachin Kamat
@ 2013-10-30 17:12     ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-10-30 17:12 UTC (permalink / raw)
  To: Sachin Kamat; +Cc: linux-iio, Lars-Peter Clausen



Sachin Kamat <sachin.kamat@linaro.org> wrote:
>Hi Jonathan,
>
>On 29 October 2013 18:41, Jonathan Cameron <jic23@kernel.org> wrote:
>> Hi Sachin.
>>
>> It may be a few days before I get to thee bit as previously discussed
>at least some of these have simpler remove functions than they should
>have...
>>
>> As such I will push back on some of these ..
>>
>
>You could probably add the core patches first and then others on a
>case-by-case basis.
That is indeed my plan :)
>
>Regards,
>Sachin
>--
>To unsubscribe from this list: send the line "unsubscribe linux-iio" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

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

* Re: [PATCH 01/33] iio: core: Implement devm_iio_device_{register,unregister}
  2013-10-29 11:39 ` [PATCH 01/33] iio: core: Implement devm_iio_device_{register,unregister} Sachin Kamat
@ 2013-11-09 17:44   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-09 17:44 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> 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>
> Tested-by: Lars-Peter Clausen <lars@metafoo.de>
> Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>

Applied to the togreg branch of iio.git

Thanks

> ---
>  Documentation/driver-model/devres.txt |    2 ++
>  drivers/iio/industrialio-core.c       |   59 +++++++++++++++++++++++++++++++++
>  include/linux/iio/iio.h               |    3 ++
>  3 files changed, 64 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 18f72e3..1c280b5 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -1161,6 +1161,65 @@ void iio_device_unregister(struct iio_dev *indio_dev)
>  	mutex_unlock(&indio_dev->info_exist_lock);
>  }
>  EXPORT_SYMBOL(iio_device_unregister);
> +
> +static void devm_iio_device_unreg(struct device *dev, void *res)
> +{
> +	iio_device_unregister(*(struct iio_dev **)res);
> +}
> +
> +/**
> + * 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.  The IIO device registered with this
> + * function is automatically unregistered on driver detach. This function
> + * calls iio_device_register() internally. Refer to that function for more
> + * information.
> + *
> + * 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)
> +{
> +	struct iio_dev **ptr;
> +	int ret;
> +
> +	ptr = devres_alloc(devm_iio_device_unreg, sizeof(*ptr), GFP_KERNEL);
> +	if (!ptr)
> +		return -ENOMEM;
> +
> +	*ptr = indio_dev;
> +	ret = iio_device_register(indio_dev);
> +	if (!ret)
> +		devres_add(dev, ptr);
> +	else
> +		devres_free(ptr);
> +
> +	return ret;
> +}
> +EXPORT_SYMBOL_GPL(devm_iio_device_register);
> +
> +/**
> + * 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)
> +{
> +	int rc;
> +
> +	rc = devres_release(dev, devm_iio_device_unreg,
> +			    devm_iio_device_match, indio_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 256a90a..a8cabda 100644
> --- a/include/linux/iio/iio.h
> +++ b/include/linux/iio/iio.h
> @@ -510,6 +510,9 @@ int iio_device_register(struct iio_dev *indio_dev);
>   **/
>  void iio_device_unregister(struct iio_dev *indio_dev);
>  
> +int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev);
> +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
> 

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

* Re: [PATCH 02/33] iio: core: Move kernel doc to the right location
  2013-10-29 11:39 ` [PATCH 02/33] iio: core: Move kernel doc to the right location Sachin Kamat
@ 2013-11-09 17:45   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-09 17:45 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> Documentation related to function should be placed above
> its implementation. Move it accordingly.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> Cc: Lars-Peter Clausen <lars@metafoo.de>
This particular convention annoys me from time to time, but it is the
convention so:

Applied to the togreg branch of iio.git

Thanks,
> ---
>  drivers/iio/industrialio-core.c    |   42 +++++++++++++++++++
>  drivers/iio/industrialio-event.c   |    6 +++
>  drivers/iio/industrialio-trigger.c |   24 +++++++++++
>  include/linux/iio/iio.h            |   80 ------------------------------------
>  4 files changed, 72 insertions(+), 80 deletions(-)
> 
> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index 1c280b5..2fe88c1 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -107,6 +107,11 @@ static const char * const iio_chan_info_postfix[] = {
>  	[IIO_CHAN_INFO_INT_TIME] = "integration_time",
>  };
>  
> +/**
> + * iio_find_channel_from_si() - get channel from its scan index
> + * @indio_dev:		device
> + * @si:			scan index to match
> + */
>  const struct iio_chan_spec
>  *iio_find_channel_from_si(struct iio_dev *indio_dev, int si)
>  {
> @@ -922,6 +927,10 @@ struct device_type iio_device_type = {
>  	.release = iio_dev_release,
>  };
>  
> +/**
> + * iio_device_alloc() - allocate an iio_dev from a driver
> + * @sizeof_priv:	Space to allocate for private structure.
> + **/
>  struct iio_dev *iio_device_alloc(int sizeof_priv)
>  {
>  	struct iio_dev *dev;
> @@ -962,6 +971,10 @@ struct iio_dev *iio_device_alloc(int sizeof_priv)
>  }
>  EXPORT_SYMBOL(iio_device_alloc);
>  
> +/**
> + * iio_device_free() - free an iio_dev from a driver
> + * @dev:		the iio_dev associated with the device
> + **/
>  void iio_device_free(struct iio_dev *dev)
>  {
>  	if (dev)
> @@ -984,6 +997,20 @@ static int devm_iio_device_match(struct device *dev, void *res, void *data)
>  	return *r == data;
>  }
>  
> +/**
> + * devm_iio_device_alloc - Resource-managed iio_device_alloc()
> + * @dev:		Device to allocate iio_dev for
> + * @sizeof_priv:	Space to allocate for private structure.
> + *
> + * Managed iio_device_alloc. iio_dev allocated with this function is
> + * automatically freed on driver detach.
> + *
> + * If an iio_dev allocated with this function needs to be freed separately,
> + * devm_iio_device_free() must be used.
> + *
> + * RETURNS:
> + * Pointer to allocated iio_dev on success, NULL on failure.
> + */
>  struct iio_dev *devm_iio_device_alloc(struct device *dev, int sizeof_priv)
>  {
>  	struct iio_dev **ptr, *iio_dev;
> @@ -1006,6 +1033,13 @@ struct iio_dev *devm_iio_device_alloc(struct device *dev, int sizeof_priv)
>  }
>  EXPORT_SYMBOL_GPL(devm_iio_device_alloc);
>  
> +/**
> + * devm_iio_device_free - Resource-managed iio_device_free()
> + * @dev:		Device this iio_dev belongs to
> + * @iio_dev:		the iio_dev associated with the device
> + *
> + * Free iio_dev allocated with devm_iio_device_alloc().
> + */
>  void devm_iio_device_free(struct device *dev, struct iio_dev *iio_dev)
>  {
>  	int rc;
> @@ -1080,6 +1114,10 @@ static const struct file_operations iio_buffer_fileops = {
>  
>  static const struct iio_buffer_setup_ops noop_ring_setup_ops;
>  
> +/**
> + * iio_device_register() - register a device with the IIO subsystem
> + * @indio_dev:		Device structure filled by the device driver
> + **/
>  int iio_device_register(struct iio_dev *indio_dev)
>  {
>  	int ret;
> @@ -1141,6 +1179,10 @@ error_ret:
>  }
>  EXPORT_SYMBOL(iio_device_register);
>  
> +/**
> + * iio_device_unregister() - unregister a device from the IIO subsystem
> + * @indio_dev:		Device structure representing the device.
> + **/
>  void iio_device_unregister(struct iio_dev *indio_dev)
>  {
>  	mutex_lock(&indio_dev->info_exist_lock);
> diff --git a/drivers/iio/industrialio-event.c b/drivers/iio/industrialio-event.c
> index dac15b9..32b2c2d 100644
> --- a/drivers/iio/industrialio-event.c
> +++ b/drivers/iio/industrialio-event.c
> @@ -42,6 +42,12 @@ struct iio_event_interface {
>  	struct attribute_group	group;
>  };
>  
> +/**
> + * iio_push_event() - try to add event to the list for userspace reading
> + * @indio_dev:		IIO device structure
> + * @ev_code:		What event
> + * @timestamp:		When the event occurred
> + **/
>  int iio_push_event(struct iio_dev *indio_dev, u64 ev_code, s64 timestamp)
>  {
>  	struct iio_event_interface *ev_int = indio_dev->event_interface;
> diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c
> index bf5e70a..8bd092b 100644
> --- a/drivers/iio/industrialio-trigger.c
> +++ b/drivers/iio/industrialio-trigger.c
> @@ -506,6 +506,23 @@ static int devm_iio_trigger_match(struct device *dev, void *res, void *data)
>  	return *r == data;
>  }
>  
> +/**
> + * devm_iio_trigger_alloc - Resource-managed iio_trigger_alloc()
> + * @dev:		Device to allocate iio_trigger for
> + * @fmt:		trigger name format. If it includes format
> + *			specifiers, the additional arguments following
> + *			format are formatted and inserted in the resulting
> + *			string replacing their respective specifiers.
> + *
> + * Managed iio_trigger_alloc.  iio_trigger allocated with this function is
> + * automatically freed on driver detach.
> + *
> + * If an iio_trigger allocated with this function needs to be freed separately,
> + * devm_iio_trigger_free() must be used.
> + *
> + * RETURNS:
> + * Pointer to allocated iio_trigger on success, NULL on failure.
> + */
>  struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
>  						const char *fmt, ...)
>  {
> @@ -532,6 +549,13 @@ struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
>  }
>  EXPORT_SYMBOL_GPL(devm_iio_trigger_alloc);
>  
> +/**
> + * devm_iio_trigger_free - Resource-managed iio_trigger_free()
> + * @dev:		Device this iio_dev belongs to
> + * @iio_trig:		the iio_trigger associated with the device
> + *
> + * Free iio_trigger allocated with devm_iio_trigger_alloc().
> + */
>  void devm_iio_trigger_free(struct device *dev, struct iio_trigger *iio_trig)
>  {
>  	int rc;
> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
> index a8cabda..5b125fd 100644
> --- a/include/linux/iio/iio.h
> +++ b/include/linux/iio/iio.h
> @@ -490,35 +490,12 @@ struct iio_dev {
>  #endif
>  };
>  
> -/**
> - * iio_find_channel_from_si() - get channel from its scan index
> - * @indio_dev:		device
> - * @si:			scan index to match
> - */
>  const struct iio_chan_spec
>  *iio_find_channel_from_si(struct iio_dev *indio_dev, int si);
> -
> -/**
> - * iio_device_register() - register a device with the IIO subsystem
> - * @indio_dev:		Device structure filled by the device driver
> - **/
>  int iio_device_register(struct iio_dev *indio_dev);
> -
> -/**
> - * iio_device_unregister() - unregister a device from the IIO subsystem
> - * @indio_dev:		Device structure representing the device.
> - **/
>  void iio_device_unregister(struct iio_dev *indio_dev);
> -
>  int devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev);
>  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
> - * @timestamp:		When the event occurred
> - **/
>  int iio_push_event(struct iio_dev *indio_dev, u64 ev_code, s64 timestamp);
>  
>  extern struct bus_type iio_bus_type;
> @@ -582,10 +559,6 @@ static inline void *iio_device_get_drvdata(struct iio_dev *indio_dev)
>  
>  /* Can we make this smaller? */
>  #define IIO_ALIGN L1_CACHE_BYTES
> -/**
> - * iio_device_alloc() - allocate an iio_dev from a driver
> - * @sizeof_priv: 	Space to allocate for private structure.
> - **/
>  struct iio_dev *iio_device_alloc(int sizeof_priv);
>  
>  static inline void *iio_priv(const struct iio_dev *indio_dev)
> @@ -599,64 +572,11 @@ static inline struct iio_dev *iio_priv_to_dev(void *priv)
>  				  ALIGN(sizeof(struct iio_dev), IIO_ALIGN));
>  }
>  
> -/**
> - * iio_device_free() - free an iio_dev from a driver
> - * @indio_dev: 		the iio_dev associated with the device
> - **/
>  void iio_device_free(struct iio_dev *indio_dev);
> -
> -/**
> - * devm_iio_device_alloc - Resource-managed iio_device_alloc()
> - * @dev: 		Device to allocate iio_dev for
> - * @sizeof_priv: 	Space to allocate for private structure.
> - *
> - * Managed iio_device_alloc.  iio_dev allocated with this function is
> - * automatically freed on driver detach.
> - *
> - * If an iio_dev allocated with this function needs to be freed separately,
> - * devm_iio_device_free() must be used.
> - *
> - * RETURNS:
> - * Pointer to allocated iio_dev on success, NULL on failure.
> - */
>  struct iio_dev *devm_iio_device_alloc(struct device *dev, int sizeof_priv);
> -
> -/**
> - * devm_iio_device_free - Resource-managed iio_device_free()
> - * @dev:		Device this iio_dev belongs to
> - * @indio_dev: 		the iio_dev associated with the device
> - *
> - * Free iio_dev allocated with devm_iio_device_alloc().
> - */
>  void devm_iio_device_free(struct device *dev, struct iio_dev *indio_dev);
> -
> -/**
> - * devm_iio_trigger_alloc - Resource-managed iio_trigger_alloc()
> - * @dev:		Device to allocate iio_trigger for
> - * @fmt:		trigger name format. If it includes format
> - *			specifiers, the additional arguments following
> - *			format are formatted and inserted in the resulting
> - *			string replacing their respective specifiers.
> - *
> - * Managed iio_trigger_alloc.  iio_trigger allocated with this function is
> - * automatically freed on driver detach.
> - *
> - * If an iio_trigger allocated with this function needs to be freed separately,
> - * devm_iio_trigger_free() must be used.
> - *
> - * RETURNS:
> - * Pointer to allocated iio_trigger on success, NULL on failure.
> - */
>  struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
>  						const char *fmt, ...);
> -
> -/**
> - * devm_iio_trigger_free - Resource-managed iio_trigger_free()
> - * @dev:		Device this iio_dev belongs to
> - * @iio_trig:		the iio_trigger associated with the device
> - *
> - * Free iio_trigger allocated with devm_iio_trigger_alloc().
> - */
>  void devm_iio_trigger_free(struct device *dev, struct iio_trigger *iio_trig);
>  
>  /**
> 

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

* Re: [PATCH 03/33] iio: accel: kxsd9: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 03/33] iio: accel: kxsd9: Use devm_iio_device_register Sachin Kamat
@ 2013-11-09 17:47   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-09 17:47 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
This highlights the issue I raised before.  The driver really ought to be
shuting down the device. Thus there should be some code in the unregister
that is not there.

Hence, nope on this one.
> ---
>  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 d72118d..877ae67 100644
> --- a/drivers/iio/accel/kxsd9.c
> +++ b/drivers/iio/accel/kxsd9.c
> @@ -243,14 +243,7 @@ static int kxsd9_probe(struct spi_device *spi)
>  	spi_setup(spi);
>  	kxsd9_power_up(st);
>  
> -	return iio_device_register(indio_dev);
> -}
> -
> -static int kxsd9_remove(struct spi_device *spi)
> -{
> -	iio_device_unregister(spi_get_drvdata(spi));
> -
> -	return 0;
> +	return devm_iio_device_register(&spi->dev, indio_dev);
>  }
>  
>  static const struct spi_device_id kxsd9_id[] = {
> @@ -265,7 +258,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] 72+ messages in thread

* Re: [PATCH 04/33] iio: adc: mcp3422: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 04/33] iio: adc: mcp3422: " Sachin Kamat
@ 2013-11-09 17:54   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-09 17:54 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars, Angelo Compagnucci

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Applied to the togreg branch of iio.git

This one should have had Angelo cc'd
> ---
>  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 1294832..dbdbd77 100644
> --- a/drivers/iio/adc/mcp3422.c
> +++ b/drivers/iio/adc/mcp3422.c
> @@ -362,7 +362,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;
>  
> @@ -371,12 +371,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 },
> @@ -400,7 +394,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);
> 

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

* Re: [PATCH 05/33] iio: adc: twl6030-gpadc: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 05/33] iio: adc: twl6030-gpadc: " Sachin Kamat
@ 2013-11-23 13:26   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 13:26 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars, Oleksandr Kozaruk

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Hmm.. Interesting case, but I suspect a bug is hiding in the original driver.
Would definitely expect the unregister to be before the disable_irq.
> ---
>  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 53e1c64..d1ef33c 100644
> --- a/drivers/iio/adc/twl6030-gpadc.c
> +++ b/drivers/iio/adc/twl6030-gpadc.c
> @@ -948,15 +948,12 @@ static int twl6030_gpadc_probe(struct platform_device *pdev)
>  	indio_dev->channels = pdata->iio_channels;
>  	indio_dev->num_channels = pdata->nchannels;
>  
> -	return iio_device_register(indio_dev);
> +	return devm_iio_device_register(&pdev->dev, indio_dev);
>  }
>  
>  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;
>  }
> 

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

* Re: [PATCH 06/33] iio: adc: viperboard: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 06/33] iio: adc: viperboard: " Sachin Kamat
@ 2013-11-23 13:31   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 13:31 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
This one is fine.

Applied to the togreg branch of iio.git

Thanks.
> ---
>  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);
> 

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

* Re: [PATCH 07/33] iio: dac: ad5421: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 07/33] iio: dac: ad5421: " Sachin Kamat
@ 2013-11-23 13:34   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 13:34 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Applied to the togreg branch of iio.git

Thanks,
> ---
>  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 3eeaa82..7d1e908 100644
> --- a/drivers/iio/dac/ad5421.c
> +++ b/drivers/iio/dac/ad5421.c
> @@ -514,16 +514,7 @@ static int ad5421_probe(struct spi_device *spi)
>  			return ret;
>  	}
>  
> -	return iio_device_register(indio_dev);
> -}
> -
> -static int ad5421_remove(struct spi_device *spi)
> -{
> -	struct iio_dev *indio_dev = spi_get_drvdata(spi);
> -
> -	iio_device_unregister(indio_dev);
> -
> -	return 0;
> +	return devm_iio_device_register(&spi->dev, indio_dev);
>  }
>  
>  static struct spi_driver ad5421_driver = {
> @@ -532,7 +523,6 @@ static struct spi_driver ad5421_driver = {
>  		   .owner = THIS_MODULE,
>  	},
>  	.probe = ad5421_probe,
> -	.remove = ad5421_remove,
>  };
>  module_spi_driver(ad5421_driver);
>  
> 

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

* Re: [PATCH 08/33] iio: dac: ad5755: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 08/33] iio: dac: ad5755: " Sachin Kamat
@ 2013-11-23 13:35   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 13:35 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Applied to the togreg branch of iio.git

Thanks,
> ---
>  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 9a78d5a..ee1e95a 100644
> --- a/drivers/iio/dac/ad5755.c
> +++ b/drivers/iio/dac/ad5755.c
> @@ -589,16 +589,7 @@ static int ad5755_probe(struct spi_device *spi)
>  	if (ret)
>  		return ret;
>  
> -	return iio_device_register(indio_dev);
> -}
> -
> -static int ad5755_remove(struct spi_device *spi)
> -{
> -	struct iio_dev *indio_dev = spi_get_drvdata(spi);
> -
> -	iio_device_unregister(indio_dev);
> -
> -	return 0;
> +	return devm_iio_device_register(&spi->dev, indio_dev);
>  }
>  
>  static const struct spi_device_id ad5755_id[] = {
> @@ -617,7 +608,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);
> 

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

* Re: [PATCH 09/33] iio: dac: max517: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 09/33] iio: dac: max517: " Sachin Kamat
@ 2013-11-23 13:37   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 13:37 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Another driver where it should probably be putting the device into power down
mode on driver removal.   The give away again is that there is something
that makes sense when going into suspend.

Jonathan
> ---
>  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 6e19035..073b705 100644
> --- a/drivers/iio/dac/max517.c
> +++ b/drivers/iio/dac/max517.c
> @@ -191,13 +191,7 @@ static int max517_probe(struct i2c_client *client,
>  		data->vref_mv[1] = platform_data->vref_mv[1];
>  	}
>  
> -	return iio_device_register(indio_dev);
> -}
> -
> -static int max517_remove(struct i2c_client *client)
> -{
> -	iio_device_unregister(i2c_get_clientdata(client));
> -	return 0;
> +	return devm_iio_device_register(&client->dev, indio_dev);
>  }
>  
>  static const struct i2c_device_id max517_id[] = {
> @@ -214,7 +208,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] 72+ messages in thread

* Re: [PATCH 10/33] iio: dac: mcp4725: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 10/33] iio: dac: mcp4725: " Sachin Kamat
@ 2013-11-23 13:39   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 13:39 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Another one that probably should be powering down the device. So not
taking this one either.

Sachin, I would have prefered it if you had taken a quick look at the
drivers to see if there is somehting that they 'should have' been
doing on removal but weren't.
> ---
>  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 9f57ae8..0aa921b 100644
> --- a/drivers/iio/dac/mcp4725.c
> +++ b/drivers/iio/dac/mcp4725.c
> @@ -320,13 +320,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);
>  
> -	return iio_device_register(indio_dev);
> -}
> -
> -static int mcp4725_remove(struct i2c_client *client)
> -{
> -	iio_device_unregister(i2c_get_clientdata(client));
> -	return 0;
> +	return devm_iio_device_register(&client->dev, indio_dev);
>  }
>  
>  static const struct i2c_device_id mcp4725_id[] = {
> @@ -341,7 +335,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);
> 

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

* Re: [PATCH 11/33] iio: gyro: adis16130: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 11/33] iio: gyro: adis16130: " Sachin Kamat
@ 2013-11-23 13:43   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 13:43 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Suprisingly, this device doesn't seem to have any low power mode
or similar, hence applied to the togreg branch of iio.git

Thanks,

> ---
>  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 445c2ae..8d08c7e 100644
> --- a/drivers/iio/gyro/adis16130.c
> +++ b/drivers/iio/gyro/adis16130.c
> @@ -161,13 +161,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 = {
> @@ -176,7 +170,6 @@ static struct spi_driver adis16130_driver = {
>  		.owner = THIS_MODULE,
>  	},
>  	.probe = adis16130_probe,
> -	.remove = adis16130_remove,
>  };
>  module_spi_driver(adis16130_driver);
>  
> 

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

* Re: [PATCH 12/33] iio: gyro: adxrs450: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 12/33] iio: gyro: adxrs450: " Sachin Kamat
@ 2013-11-23 13:45   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 13:45 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Applied to the togreg branch of iio.git

There is a suspicious ordering in the probe. I would expect the device
to be in a sane state before the being exposed to userspace.

Lars, could you follow this up?

thanks
> ---
>  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 1e546ba..eb0e08e 100644
> --- a/drivers/iio/gyro/adxrs450.c
> +++ b/drivers/iio/gyro/adxrs450.c
> @@ -434,23 +434,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;
>  }
> @@ -468,7 +459,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);
> 

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

* Re: [PATCH 13/33] iio: light: vcnl4000: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 13/33] iio: light: vcnl4000: " Sachin Kamat
@ 2013-11-23 13:48   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 13:48 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
I don't have a data sheet for this one so can't check if it 'should' be doing
anything on shut down.

Hence applied to the togreg branch of iio.git

Thanks,

> ---
>  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 ecb3341..384ac23 100644
> --- a/drivers/iio/light/vcnl4000.c
> +++ b/drivers/iio/light/vcnl4000.c
> @@ -179,13 +179,7 @@ static int vcnl4000_probe(struct i2c_client *client,
>  	indio_dev->name = VCNL4000_DRV_NAME;
>  	indio_dev->modes = INDIO_DIRECT_MODE;
>  
> -	return iio_device_register(indio_dev);
> -}
> -
> -static int vcnl4000_remove(struct i2c_client *client)
> -{
> -	iio_device_unregister(i2c_get_clientdata(client));
> -	return 0;
> +	return devm_iio_device_register(&client->dev, indio_dev);
>  }
>  
>  static struct i2c_driver vcnl4000_driver = {
> @@ -194,7 +188,6 @@ static struct i2c_driver vcnl4000_driver = {
>  		.owner  = THIS_MODULE,
>  	},
>  	.probe  = vcnl4000_probe,
> -	.remove = vcnl4000_remove,
>  	.id_table = vcnl4000_id,
>  };
>  
> 

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

* Re: [PATCH 14/33] staging: iio: adis16220: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 14/33] staging: iio: adis16220: " Sachin Kamat
@ 2013-11-23 18:01   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:01 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Hmm. I've applied this one.  The driver doesn't make use
of it, but there is a power down mode on the device.  However
the part is obsolete so the chances that anyone will ever
implement that are rather low  I guess.

We can always put everything back again if we have to.  Note
for anyone reading this. The driver is a long way from compliant
with our ABI so beware of this one...

Jonathan
> ---
>  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 4c9364b..6f38ca9 100644
> --- a/drivers/staging/iio/accel/adis16220_core.c
> +++ b/drivers/staging/iio/accel/adis16220_core.c
> @@ -439,13 +439,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)
> @@ -470,8 +470,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;
>  }
>  
> @@ -482,7 +480,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;
>  }
> 

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

* Re: [PATCH 15/33] staging: iio: ad7816: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 15/33] staging: iio: ad7816: " Sachin Kamat
@ 2013-11-23 18:04   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:04 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Applied.
> ---
>  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);
> 

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

* Re: [PATCH 16/33] staging: iio: lpc32xx_adc: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 16/33] staging: iio: lpc32xx_adc: " Sachin Kamat
@ 2013-11-23 18:06   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:06 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Applied to the togreg branch of iio.git

Thanks,
> ---
>  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 ef0a21d..a876ce7 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,
> 

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

* Re: [PATCH 17/33] staging: iio: addac: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 17/33] staging: iio: addac: " Sachin Kamat
@ 2013-11-23 18:08   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:08 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Applied.
> ---
>  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 0feea55..75ddd4f 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 7f4f0a8..e480abb 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
> 

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

* Re: [PATCH 18/33] staging: iio: ad7150: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 18/33] staging: iio: ad7150: " Sachin Kamat
@ 2013-11-23 18:10   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:10 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Whilst not implemented, this device has an explicit power down control that I'd
like to see called in the remove function after the unregister.
As such I'm not taking this one.


> ---
>  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 7e7f989..d9f2191 100644
> --- a/drivers/staging/iio/cdc/ad7150.c
> +++ b/drivers/staging/iio/cdc/ad7150.c
> @@ -640,7 +640,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;
>  
> @@ -650,15 +650,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 },
> @@ -673,7 +664,6 @@ static struct i2c_driver ad7150_driver = {
>  		.name = "ad7150",
>  	},
>  	.probe = ad7150_probe,
> -	.remove = ad7150_remove,
>  	.id_table = ad7150_id,
>  };
>  module_i2c_driver(ad7150_driver);
> 

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

* Re: [PATCH 19/33] staging: iio: ad7746: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 19/33] staging: iio: ad7746: " Sachin Kamat
@ 2013-11-23 18:12   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:12 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Again, this has an explicit power down that I'd probably expect
to see called after the unregister.


> ---
>  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 862d68d..51d56fe 100644
> --- a/drivers/staging/iio/cdc/ad7746.c
> +++ b/drivers/staging/iio/cdc/ad7746.c
> @@ -749,7 +749,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;
>  
> @@ -758,15 +758,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 },
> @@ -781,7 +772,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);
> 

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

* Re: [PATCH 20/33] staging: iio: ad5930: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 20/33] staging: iio: ad5930: " Sachin Kamat
@ 2013-11-23 18:14   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:14 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

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

Another device with a power down mode that I'd expect to see called.
I supose for output devices one might just leave them running in
an uncontrolled fashion, but that ought to be configurable.


> ---
>  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);
>  
> 

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

* Re: [PATCH 21/33] staging: iio: ad9850: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 21/33] staging: iio: ad9850: " Sachin Kamat
@ 2013-11-23 18:15   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:15 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Another with an explicit power down mode that should perhaps
be called after the unregister.
> ---
>  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);
>  
> 

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

* Re: [PATCH 22/33] staging: iio: ad9852: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 22/33] staging: iio: ad9852: " Sachin Kamat
@ 2013-11-23 18:17   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:17 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
This one has a power down mode that should be called afterwards.
Also the probe is clearly in an 'interesting' order so lets leave it alone for now.

> ---
>  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 11e4367..af2f2cc 100644
> --- a/drivers/staging/iio/frequency/ad9852.c
> +++ b/drivers/staging/iio/frequency/ad9852.c
> @@ -218,7 +218,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;
> @@ -230,20 +230,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);
>  
> 

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

* Re: [PATCH 23/33] staging: iio: ad9910: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 23/33] staging: iio: ad9910: " Sachin Kamat
@ 2013-11-23 18:18   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:18 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Another with software controlled power down.
> ---
>  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 755e048..8404945 100644
> --- a/drivers/staging/iio/frequency/ad9910.c
> +++ b/drivers/staging/iio/frequency/ad9910.c
> @@ -337,7 +337,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;
> @@ -348,20 +348,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);
>  
> 

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

* Re: [PATCH 24/33] staging: iio: ad9951: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 24/33] staging: iio: ad9951: " Sachin Kamat
@ 2013-11-23 18:19   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:19 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
And another that probably should be calling power down after ther unregister.
> ---
>  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 5e8990a..d465db0 100644
> --- a/drivers/staging/iio/frequency/ad9951.c
> +++ b/drivers/staging/iio/frequency/ad9951.c
> @@ -175,7 +175,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;
> @@ -186,20 +186,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);
>  
> 

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

* Re: [PATCH 25/33] staging: iio: adis16060: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 25/33] staging: iio: adis16060: " Sachin Kamat
@ 2013-11-23 18:22   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:22 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
A simple device so this one is fine.

Applied to the togreg branch of iio.git

> ---
>  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 = {
> 

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

* Re: [PATCH 26/33] staging: iio: isl29018: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 26/33] staging: iio: isl29018: " Sachin Kamat
@ 2013-11-23 18:24   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:24 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
In this driver there is even a comment saying there is nothing to do in the suspend
hence, this one is fine.  Applied to the togreg branch of iio.git

Thanks,

> ---
>  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 488e690..3660a43 100644
> --- a/drivers/staging/iio/light/isl29018.c
> +++ b/drivers/staging/iio/light/isl29018.c
> @@ -585,7 +585,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;
> @@ -594,16 +594,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)
>  {
> @@ -664,7 +654,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);
> 

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

* Re: [PATCH 27/33] staging: iio: isl29028: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 27/33] staging: iio: isl29028: " Sachin Kamat
@ 2013-11-23 18:28   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:28 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
This one has explicit disables for the various functions that ought to be
called after the unregister to save power.

Note for all these patches that I'm refusing to take, there is obviously
plenty of work implementing the power handling etc that should be there.
> ---
>  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,
>  };
>  
> 

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

* Re: [PATCH 28/33] staging: iio: tsl2583: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 28/33] staging: iio: tsl2583: " Sachin Kamat
@ 2013-11-23 18:30   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:30 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
This driver even has a convenient power off function (which
isn't and should be called after the unregister)

> ---
>  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);
>  
> 

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

* Re: [PATCH 29/33] staging: iio: tsl2x7x_core: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 29/33] staging: iio: tsl2x7x_core: " Sachin Kamat
@ 2013-11-23 18:31   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:31 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
The power off should be after the unregister given that until the unregister, the userspace
interface is there, but won't work.

Hence, here you have highlighted a bug...
> ---
>  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 1880502..cec7595 100644
> --- a/drivers/staging/iio/light/tsl2x7x_core.c
> +++ b/drivers/staging/iio/light/tsl2x7x_core.c
> @@ -1935,7 +1935,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__);
> @@ -1989,8 +1989,6 @@ static int tsl2x7x_remove(struct i2c_client *client)
>  
>  	tsl2x7x_chip_off(indio_dev);
>  
> -	iio_device_unregister(indio_dev);
> -
>  	return 0;
>  }
>  
> 

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

* Re: [PATCH 30/33] staging: iio: ade7854: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 30/33] staging: iio: ade7854: " Sachin Kamat
@ 2013-11-23 18:33   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:33 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Another device that has lots of control of its power and should be
turning most if not all of it off after the unregister, but isn't...
> ---
>  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
> 

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

* Re: [PATCH 31/33] staging: iio: ad2s1200: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 31/33] staging: iio: ad2s1200: " Sachin Kamat
@ 2013-11-23 18:36   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:36 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Applied to the togreg branch of iio.git

Thanks,
> ---
>  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);
> 

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

* Re: [PATCH 32/33] staging: iio: ad2s90: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 32/33] staging: iio: ad2s90: " Sachin Kamat
@ 2013-11-23 18:37   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:37 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Applied to the togreg branch of iio.git

Thanks,

> ---
>  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);
> 

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

* Re: [PATCH 33/33] staging: iio: ad7152: Use devm_iio_device_register
  2013-10-29 11:39 ` [PATCH 33/33] staging: iio: ad7152: " Sachin Kamat
@ 2013-11-23 18:39   ` Jonathan Cameron
  0 siblings, 0 replies; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:39 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> devm_iio_device_register simplifies the code.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Another device that has an explicit power down mode that I would like to see turned on after the
unregister is called.


> ---
>  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);
> 

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

* Re: [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register
  2013-10-29 11:39 [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Sachin Kamat
                   ` (33 preceding siblings ...)
  2013-10-29 13:11 ` [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register Jonathan Cameron
@ 2013-11-23 18:43 ` Jonathan Cameron
  2013-11-27  4:40   ` Sachin Kamat
  34 siblings, 1 reply; 72+ messages in thread
From: Jonathan Cameron @ 2013-11-23 18:43 UTC (permalink / raw)
  To: Sachin Kamat, linux-iio; +Cc: lars

On 10/29/13 11:39, Sachin Kamat wrote:
> Resending this series after rebasing onto the latest iio tree.
> Previous version is available at [1].
> [1] http://www.spinics.net/lists/linux-iio/msg10682.html
> 
> * Added tested and reviewed by tags to patch 1. Thank you Lars.
> * Included a patch (patch2) to re-organise the kernel doc
>   as suggested by Lars.

Hi Sachin,

Having finaly waded through this whole set I have a few general comments.
Firstly, I am sorry I am refusing to take so many of these.  I did mention
in response to an earlier series that I was not keen on applying this
shortening in code, if there was stuff that should be done after the
unregister, but which was not.

I have kept to that as I would much rather see those drivers improved by
adding for example power down of the part on removal of the driver or making
sure that the removal is in the correct order.  Feel free to try and
talk me around though!

Anyhow, thanks for your hard work on this.

Note that if anyone wants to take a look at the reasons I have refused to
take the individual patches, they may well highlight places I feel the
individual drivers could be easily improved.

Thanks,

Jonathan
> 
> Sachin Kamat (33):
>   iio: core: Implement devm_iio_device_{register,unregister}
>   iio: core: Move kernel doc to the right location
>   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            |  101 ++++++++++++++++++++++++++++
>  drivers/iio/industrialio-event.c           |    6 ++
>  drivers/iio/industrialio-trigger.c         |   24 +++++++
>  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                    |   81 +---------------------
>  42 files changed, 168 insertions(+), 394 deletions(-)
> 

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

* Re: [PATCH Resend 00/33] iio: Implement and use devm_iio_device_register
  2013-11-23 18:43 ` Jonathan Cameron
@ 2013-11-27  4:40   ` Sachin Kamat
  0 siblings, 0 replies; 72+ messages in thread
From: Sachin Kamat @ 2013-11-27  4:40 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: linux-iio, Lars-Peter Clausen

Hi Jonathan,

On 24 November 2013 00:13, Jonathan Cameron <jic23@kernel.org> wrote:
> On 10/29/13 11:39, Sachin Kamat wrote:
>> Resending this series after rebasing onto the latest iio tree.
>> Previous version is available at [1].
>> [1] http://www.spinics.net/lists/linux-iio/msg10682.html
>>
>> * Added tested and reviewed by tags to patch 1. Thank you Lars.
>> * Included a patch (patch2) to re-organise the kernel doc
>>   as suggested by Lars.
>
> Hi Sachin,
>
> Having finaly waded through this whole set I have a few general comments.
> Firstly, I am sorry I am refusing to take so many of these.  I did mention
> in response to an earlier series that I was not keen on applying this
> shortening in code, if there was stuff that should be done after the
> unregister, but which was not.
>
> I have kept to that as I would much rather see those drivers improved by
> adding for example power down of the part on removal of the driver or making
> sure that the removal is in the correct order.  Feel free to try and
> talk me around though!

Thank you for patiently reviewing all the patches and providing your comments.
I agree with your concerns and your decision to have the missing
things implemented
in the drivers first before optimizing them.

> Anyhow, thanks for your hard work on this.

Thanks for your support.

-- 
With warm regards,
Sachin

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

end of thread, other threads:[~2013-11-27  4:40 UTC | newest]

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.