Linux IIO development
 help / color / mirror / Atom feed
* [PATCH 0/8 V2]
@ 2011-04-15 17:55 Jonathan Cameron
  2011-04-15 17:55 ` [PATCH 1/8] staging:iio:trigger remove export of iio_trigger_find_by_name, use sysfs_streq for matching Jonathan Cameron
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: Jonathan Cameron @ 2011-04-15 17:55 UTC (permalink / raw)
  To: greg; +Cc: jbrenner, linux-iio, Jonathan Cameron

Hi Greg,

A poorly ordered (sorry about that) set of fixes combined
with cleanups suggested by Arnd.  This is a precursor
to the more intersting (and intrusive) changes to follow.

As per earlier email this is based on, staging-next
with:

[PATCH V4]TAOS 258x: Device Driver
[PATCH 1/1] IIO: DAC: AD5446 add support for AD5541A devices
[PATCH 1/1] IIO: DAC: New driver for AD5791/AD5781 High Resolution Voltage Output DACs
[PATCH 1/3] IIO: GYRO: Add MACRO for gyro quadrature correction
(and rest of series)

on top.  You might not have the AD5791 one yet, but Michael
should send it to you shortly.

Original message was:

I should probably have broken these up into more coherent subsets
and made at least the allocate priv_data one an RFC.
May do so before sending on to Greg.

Patches 3, 4 and 6 are direct results of suggestions from Arnd Bergmann.
Basically it's the easy bits of the discussion before we get onto
the more 'interesting' ones.

1, 2 are things I spotted whilst working on the irq_chip stuff
Thomas Gleixner suggested.  They are just cleanups of some bizare
corners. That rewrite of triggers currently requires some
exports to be added to allow a modular build and I need to chase
down whether we are simply the first people to have a reasonable
case for it, or whether there is something more fundamental
going on.

The others are bugs / cleanups I came across whilst hammering
max1363 with the new example code. Some of the timestamp bit
was pointed out by Michael Hennerich a while back, but turns
out the driver was broken as well as not obeying the ABI.

Thanks,


Jonathan Cameron (8):
  staging:iio:trigger remove export of iio_trigger_find_by_name, use
    sysfs_streq for matching
  staging:iio: iio_trigger_unregister - remove rather strange search
    for what we already have.
  staging:iio: replace rip_lots naming with read_first_n
  staging:iio: Add ability to allocate private data space to
    iio_allocate_device
  staging:iio:adc:max1363 fix timestamp handling.
  staging:iio:adc: max1363 dev_info -> indio_dev in naming for
    consistency
  staging:iio:max1363 take advantage of new iio_device_allocate private
    data.
  staging:iio:documentation make read_size signed to allow for errors.

 drivers/staging/iio/Documentation/device.txt       |    2 +-
 drivers/staging/iio/Documentation/generic_buffer.c |    2 +-
 drivers/staging/iio/accel/adis16201_core.c         |    2 +-
 drivers/staging/iio/accel/adis16203_core.c         |    2 +-
 drivers/staging/iio/accel/adis16204_core.c         |    2 +-
 drivers/staging/iio/accel/adis16209_core.c         |    2 +-
 drivers/staging/iio/accel/adis16220_core.c         |    2 +-
 drivers/staging/iio/accel/adis16240_core.c         |    2 +-
 drivers/staging/iio/accel/kxsd9.c                  |    2 +-
 drivers/staging/iio/accel/lis3l02dq_core.c         |    2 +-
 drivers/staging/iio/accel/sca3000_core.c           |    2 +-
 drivers/staging/iio/accel/sca3000_ring.c           |    8 +-
 drivers/staging/iio/adc/ad7150.c                   |    2 +-
 drivers/staging/iio/adc/ad7152.c                   |    2 +-
 drivers/staging/iio/adc/ad7291.c                   |    2 +-
 drivers/staging/iio/adc/ad7298_core.c              |    2 +-
 drivers/staging/iio/adc/ad7314.c                   |    2 +-
 drivers/staging/iio/adc/ad7476_core.c              |    2 +-
 drivers/staging/iio/adc/ad7606_core.c              |    2 +-
 drivers/staging/iio/adc/ad7745.c                   |    2 +-
 drivers/staging/iio/adc/ad7780.c                   |    2 +-
 drivers/staging/iio/adc/ad7816.c                   |    2 +-
 drivers/staging/iio/adc/ad7887_core.c              |    2 +-
 drivers/staging/iio/adc/ad799x_core.c              |    2 +-
 drivers/staging/iio/adc/adt7310.c                  |    2 +-
 drivers/staging/iio/adc/adt7410.c                  |    2 +-
 drivers/staging/iio/adc/adt75.c                    |    2 +-
 drivers/staging/iio/adc/max1363.h                  |    2 -
 drivers/staging/iio/adc/max1363_core.c             |  189 ++++++++++----------
 drivers/staging/iio/adc/max1363_ring.c             |   21 ++-
 drivers/staging/iio/addac/adt7316.c                |    2 +-
 drivers/staging/iio/dac/ad5446.c                   |    2 +-
 drivers/staging/iio/dac/ad5504.c                   |    2 +-
 drivers/staging/iio/dac/ad5624r_spi.c              |    2 +-
 drivers/staging/iio/dac/ad5791.c                   |    2 +-
 drivers/staging/iio/dac/max517.c                   |    2 +-
 drivers/staging/iio/dds/ad5930.c                   |    2 +-
 drivers/staging/iio/dds/ad9832.c                   |    2 +-
 drivers/staging/iio/dds/ad9834.c                   |    2 +-
 drivers/staging/iio/dds/ad9850.c                   |    2 +-
 drivers/staging/iio/dds/ad9852.c                   |    2 +-
 drivers/staging/iio/dds/ad9910.c                   |    2 +-
 drivers/staging/iio/dds/ad9951.c                   |    2 +-
 drivers/staging/iio/gyro/adis16060_core.c          |    2 +-
 drivers/staging/iio/gyro/adis16080_core.c          |    2 +-
 drivers/staging/iio/gyro/adis16130_core.c          |    2 +-
 drivers/staging/iio/gyro/adis16260_core.c          |    2 +-
 drivers/staging/iio/gyro/adxrs450_core.c           |    2 +-
 drivers/staging/iio/iio.h                          |   17 ++-
 drivers/staging/iio/imu/adis16300_core.c           |    2 +-
 drivers/staging/iio/imu/adis16350_core.c           |    2 +-
 drivers/staging/iio/imu/adis16400_core.c           |    2 +-
 drivers/staging/iio/industrialio-core.c            |   15 ++-
 drivers/staging/iio/industrialio-ring.c            |   12 +-
 drivers/staging/iio/industrialio-trigger.c         |   27 +--
 drivers/staging/iio/kfifo_buf.c                    |    8 +-
 drivers/staging/iio/kfifo_buf.h                    |   10 +-
 drivers/staging/iio/light/isl29018.c               |    2 +-
 drivers/staging/iio/light/tsl2563.c                |    2 +-
 drivers/staging/iio/light/tsl2583.c                |    2 +-
 drivers/staging/iio/magnetometer/ak8975.c          |    2 +-
 drivers/staging/iio/magnetometer/hmc5843.c         |    2 +-
 drivers/staging/iio/meter/ade7753.c                |    2 +-
 drivers/staging/iio/meter/ade7754.c                |    2 +-
 drivers/staging/iio/meter/ade7758_core.c           |    2 +-
 drivers/staging/iio/meter/ade7759.c                |    2 +-
 drivers/staging/iio/meter/ade7854.c                |    2 +-
 drivers/staging/iio/resolver/ad2s120x.c            |    2 +-
 drivers/staging/iio/resolver/ad2s1210.c            |    2 +-
 drivers/staging/iio/resolver/ad2s90.c              |    2 +-
 drivers/staging/iio/ring_generic.h                 |   10 +-
 drivers/staging/iio/ring_sw.c                      |   13 +-
 drivers/staging/iio/ring_sw.h                      |   14 +-
 drivers/staging/iio/trigger.h                      |    7 -
 74 files changed, 242 insertions(+), 231 deletions(-)

-- 
1.7.3.4


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

* [PATCH 1/8] staging:iio:trigger remove export of iio_trigger_find_by_name, use sysfs_streq for matching
  2011-04-15 17:55 [PATCH 0/8 V2] Jonathan Cameron
@ 2011-04-15 17:55 ` Jonathan Cameron
  2011-04-15 17:55 ` [PATCH 2/8] staging:iio: iio_trigger_unregister - remove rather strange search for what we already have Jonathan Cameron
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2011-04-15 17:55 UTC (permalink / raw)
  To: greg; +Cc: jbrenner, linux-iio, Jonathan Cameron

Trivial reorganization.

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
 drivers/staging/iio/industrialio-trigger.c |   19 +++++++------------
 drivers/staging/iio/trigger.h              |    7 -------
 2 files changed, 7 insertions(+), 19 deletions(-)

diff --git a/drivers/staging/iio/industrialio-trigger.c b/drivers/staging/iio/industrialio-trigger.c
index 57dd923..714ce06 100644
--- a/drivers/staging/iio/industrialio-trigger.c
+++ b/drivers/staging/iio/industrialio-trigger.c
@@ -151,26 +151,21 @@ void iio_trigger_unregister(struct iio_trigger *trig_info)
 }
 EXPORT_SYMBOL(iio_trigger_unregister);
 
-struct iio_trigger *iio_trigger_find_by_name(const char *name, size_t len)
+static struct iio_trigger *iio_trigger_find_by_name(const char *name,
+						    size_t len)
 {
-	struct iio_trigger *trig;
-	bool found = false;
-
-	if (len && name[len - 1] == '\n')
-		len--;
+	struct iio_trigger *trig = NULL, *iter;
 
 	mutex_lock(&iio_trigger_list_lock);
-	list_for_each_entry(trig, &iio_trigger_list, list) {
-		if (strncmp(trig->name, name, len) == 0) {
-			found = true;
+	list_for_each_entry(iter, &iio_trigger_list, list)
+		if (sysfs_streq(iter->name, name)) {
+			trig = iter;
 			break;
 		}
-	}
 	mutex_unlock(&iio_trigger_list_lock);
 
-	return found ? trig : NULL;
+	return trig;
 }
-EXPORT_SYMBOL(iio_trigger_find_by_name);
 
 void iio_trigger_poll(struct iio_trigger *trig, s64 time)
 {
diff --git a/drivers/staging/iio/trigger.h b/drivers/staging/iio/trigger.h
index 469beba..c6ab32f 100644
--- a/drivers/staging/iio/trigger.h
+++ b/drivers/staging/iio/trigger.h
@@ -77,13 +77,6 @@ ssize_t iio_trigger_read_name(struct device *dev,
 					  NULL);
 
 /**
- * iio_trigger_find_by_name() - search global trigger list
- * @name: trigger name to search for
- * @len: trigger name string length to compare
- **/
-struct iio_trigger *iio_trigger_find_by_name(const char *name, size_t len);
-
-/**
  * iio_trigger_register() - register a trigger with the IIO core
  * @trig_info:	trigger to be registered
  **/
-- 
1.7.3.4


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

* [PATCH 2/8] staging:iio: iio_trigger_unregister - remove rather strange search for what we already have.
  2011-04-15 17:55 [PATCH 0/8 V2] Jonathan Cameron
  2011-04-15 17:55 ` [PATCH 1/8] staging:iio:trigger remove export of iio_trigger_find_by_name, use sysfs_streq for matching Jonathan Cameron
@ 2011-04-15 17:55 ` Jonathan Cameron
  2011-04-15 17:55 ` [PATCH 3/8] staging:iio: replace rip_lots naming with read_first_n Jonathan Cameron
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2011-04-15 17:55 UTC (permalink / raw)
  To: greg; +Cc: jbrenner, linux-iio, Jonathan Cameron

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
 drivers/staging/iio/industrialio-trigger.c |    8 +-------
 1 files changed, 1 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/iio/industrialio-trigger.c b/drivers/staging/iio/industrialio-trigger.c
index 714ce06..083847c 100644
--- a/drivers/staging/iio/industrialio-trigger.c
+++ b/drivers/staging/iio/industrialio-trigger.c
@@ -134,14 +134,8 @@ EXPORT_SYMBOL(iio_trigger_register);
 
 void iio_trigger_unregister(struct iio_trigger *trig_info)
 {
-	struct iio_trigger *cursor;
-
 	mutex_lock(&iio_trigger_list_lock);
-	list_for_each_entry(cursor, &iio_trigger_list, list)
-		if (cursor == trig_info) {
-			list_del(&cursor->list);
-			break;
-		}
+	list_del(&trig_info->list);
 	mutex_unlock(&iio_trigger_list_lock);
 
 	iio_trigger_unregister_sysfs(trig_info);
-- 
1.7.3.4

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

* [PATCH 3/8] staging:iio: replace rip_lots naming with read_first_n
  2011-04-15 17:55 [PATCH 0/8 V2] Jonathan Cameron
  2011-04-15 17:55 ` [PATCH 1/8] staging:iio:trigger remove export of iio_trigger_find_by_name, use sysfs_streq for matching Jonathan Cameron
  2011-04-15 17:55 ` [PATCH 2/8] staging:iio: iio_trigger_unregister - remove rather strange search for what we already have Jonathan Cameron
@ 2011-04-15 17:55 ` Jonathan Cameron
  2011-04-15 17:55 ` [PATCH 4/8] staging:iio: Add ability to allocate private data space to iio_allocate_device Jonathan Cameron
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2011-04-15 17:55 UTC (permalink / raw)
  To: greg; +Cc: jbrenner, linux-iio, Jonathan Cameron

Change suggested by Arnd Bergmann, Related patch to remove
pointless (now) dead_offset parameter will have await
proper fix for the sca3000 driver.  That depends on
some intermediate patches so may be a little while.

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
 drivers/staging/iio/accel/sca3000_ring.c |    8 ++++----
 drivers/staging/iio/industrialio-ring.c  |   12 ++++++------
 drivers/staging/iio/kfifo_buf.c          |    8 ++++----
 drivers/staging/iio/kfifo_buf.h          |   10 +++++-----
 drivers/staging/iio/ring_generic.h       |   10 +++++-----
 drivers/staging/iio/ring_sw.c            |   13 +++++++------
 drivers/staging/iio/ring_sw.h            |   14 +++++++-------
 7 files changed, 38 insertions(+), 37 deletions(-)

diff --git a/drivers/staging/iio/accel/sca3000_ring.c b/drivers/staging/iio/accel/sca3000_ring.c
index a730a76..b505e70 100644
--- a/drivers/staging/iio/accel/sca3000_ring.c
+++ b/drivers/staging/iio/accel/sca3000_ring.c
@@ -35,7 +35,7 @@
  */
 
 /**
- * sca3000_rip_hw_rb() - main ring access function, pulls data from ring
+ * sca3000_read_first_n_hw_rb() - main ring access, pulls data from ring
  * @r:			the ring
  * @count:		number of samples to try and pull
  * @data:		output the actual samples pulled from the hw ring
@@ -46,8 +46,8 @@
  * can only be inferred approximately from ring buffer events such as 50% full
  * and knowledge of when buffer was last emptied.  This is left to userspace.
  **/
-static int sca3000_rip_hw_rb(struct iio_ring_buffer *r,
-			     size_t count, u8 **data, int *dead_offset)
+static int sca3000_read_first_n_hw_rb(struct iio_ring_buffer *r,
+				      size_t count, u8 **data, int *dead_offset)
 {
 	struct iio_hw_ring_buffer *hw_ring = iio_to_hw_ring_buf(r);
 	struct iio_dev *indio_dev = hw_ring->private;
@@ -283,7 +283,7 @@ int sca3000_configure_ring(struct iio_dev *indio_dev)
 	indio_dev->modes |= INDIO_RING_HARDWARE_BUFFER;
 
 	indio_dev->ring->scan_el_attrs = &sca3000_scan_el_group;
-	indio_dev->ring->access.rip_lots = &sca3000_rip_hw_rb;
+	indio_dev->ring->access.read_first_n = &sca3000_read_first_n_hw_rb;
 	indio_dev->ring->access.get_length = &sca3000_ring_get_length;
 	indio_dev->ring->access.get_bytes_per_datum = &sca3000_ring_get_bytes_per_datum;
 
diff --git a/drivers/staging/iio/industrialio-ring.c b/drivers/staging/iio/industrialio-ring.c
index bd4373a..3f6bee0 100644
--- a/drivers/staging/iio/industrialio-ring.c
+++ b/drivers/staging/iio/industrialio-ring.c
@@ -88,27 +88,27 @@ static int iio_ring_release(struct inode *inode, struct file *filp)
 }
 
 /**
- * iio_ring_rip_outer() - chrdev read for ring buffer access
+ * iio_ring_read_first_n_outer() - chrdev read for ring buffer access
  *
  * This function relies on all ring buffer implementations having an
  * iio_ring _bufer as their first element.
  **/
-static ssize_t iio_ring_rip_outer(struct file *filp, char __user *buf,
-				  size_t count, loff_t *f_ps)
+static ssize_t iio_ring_read_first_n_outer(struct file *filp, char __user *buf,
+				  size_t n, loff_t *f_ps)
 {
 	struct iio_ring_buffer *rb = filp->private_data;
 	int ret, dead_offset;
 
 	/* rip lots must exist. */
-	if (!rb->access.rip_lots)
+	if (!rb->access.read_first_n)
 		return -EINVAL;
-	ret = rb->access.rip_lots(rb, count, buf, &dead_offset);
+	ret = rb->access.read_first_n(rb, n, buf, &dead_offset);
 
 	return ret;
 }
 
 static const struct file_operations iio_ring_fileops = {
-	.read = iio_ring_rip_outer,
+	.read = iio_ring_read_first_n_outer,
 	.release = iio_ring_release,
 	.open = iio_ring_open,
 	.owner = THIS_MODULE,
diff --git a/drivers/staging/iio/kfifo_buf.c b/drivers/staging/iio/kfifo_buf.c
index a56c0cb..74c93f7 100644
--- a/drivers/staging/iio/kfifo_buf.c
+++ b/drivers/staging/iio/kfifo_buf.c
@@ -181,16 +181,16 @@ int iio_store_to_kfifo(struct iio_ring_buffer *r, u8 *data, s64 timestamp)
 }
 EXPORT_SYMBOL(iio_store_to_kfifo);
 
-int iio_rip_kfifo(struct iio_ring_buffer *r,
-		size_t count, char __user *buf, int *deadoffset)
+int iio_read_first_n_kfifo(struct iio_ring_buffer *r,
+			   size_t n, char __user *buf, int *deadoffset)
 {
 	int ret, copied;
 	struct iio_kfifo *kf = iio_to_kfifo(r);
 
 	*deadoffset = 0;
-	ret = kfifo_to_user(&kf->kf, buf, r->bytes_per_datum*count, &copied);
+	ret = kfifo_to_user(&kf->kf, buf, r->bytes_per_datum*n, &copied);
 
 	return copied;
 }
-EXPORT_SYMBOL(iio_rip_kfifo);
+EXPORT_SYMBOL(iio_read_first_n_kfifo);
 MODULE_LICENSE("GPL");
diff --git a/drivers/staging/iio/kfifo_buf.h b/drivers/staging/iio/kfifo_buf.h
index 8064383..457010d 100644
--- a/drivers/staging/iio/kfifo_buf.h
+++ b/drivers/staging/iio/kfifo_buf.h
@@ -21,10 +21,10 @@ void iio_mark_kfifo_in_use(struct iio_ring_buffer *r);
 void iio_unmark_kfifo_in_use(struct iio_ring_buffer *r);
 
 int iio_store_to_kfifo(struct iio_ring_buffer *r, u8 *data, s64 timestamp);
-int iio_rip_kfifo(struct iio_ring_buffer *r,
-		size_t count,
-		char __user *buf,
-		int *dead_offset);
+int iio_read_first_n_kfifo(struct iio_ring_buffer *r,
+			   size_t n,
+			   char __user *buf,
+			   int *dead_offset);
 
 int iio_request_update_kfifo(struct iio_ring_buffer *r);
 int iio_mark_update_needed_kfifo(struct iio_ring_buffer *r);
@@ -40,7 +40,7 @@ static inline void iio_kfifo_register_funcs(struct iio_ring_access_funcs *ra)
 	ra->unmark_in_use = &iio_unmark_kfifo_in_use;
 
 	ra->store_to = &iio_store_to_kfifo;
-	ra->rip_lots = &iio_rip_kfifo;
+	ra->read_first_n = &iio_read_first_n_kfifo;
 
 	ra->mark_param_change = &iio_mark_update_needed_kfifo;
 	ra->request_update = &iio_request_update_kfifo;
diff --git a/drivers/staging/iio/ring_generic.h b/drivers/staging/iio/ring_generic.h
index 32948e5..780c6aa 100644
--- a/drivers/staging/iio/ring_generic.h
+++ b/drivers/staging/iio/ring_generic.h
@@ -44,7 +44,7 @@ int iio_push_or_escallate_ring_event(struct iio_ring_buffer *ring_buf,
  * @unmark_in_use:	reduce reference count when no longer using ring buffer
  * @store_to:		actually store stuff to the ring buffer
  * @read_last:		get the last element stored
- * @rip_lots:		try to get a specified number of elements (must exist)
+ * @read_first_n:	try to get a specified number of elements (must exist)
  * @mark_param_change:	notify ring that some relevant parameter has changed
  *			Often this means the underlying storage may need to
  *			change.
@@ -71,10 +71,10 @@ struct iio_ring_access_funcs {
 
 	int (*store_to)(struct iio_ring_buffer *ring, u8 *data, s64 timestamp);
 	int (*read_last)(struct iio_ring_buffer *ring, u8 *data);
-	int (*rip_lots)(struct iio_ring_buffer *ring,
-			size_t count,
-			char __user *buf,
-			int *dead_offset);
+	int (*read_first_n)(struct iio_ring_buffer *ring,
+			    size_t n,
+			    char __user *buf,
+			    int *dead_offset);
 
 	int (*mark_param_change)(struct iio_ring_buffer *ring);
 	int (*request_update)(struct iio_ring_buffer *ring);
diff --git a/drivers/staging/iio/ring_sw.c b/drivers/staging/iio/ring_sw.c
index b71ce39..ea0015e 100644
--- a/drivers/staging/iio/ring_sw.c
+++ b/drivers/staging/iio/ring_sw.c
@@ -152,8 +152,8 @@ error_ret:
 	return ret;
 }
 
-int iio_rip_sw_rb(struct iio_ring_buffer *r,
-		  size_t count, char __user *buf, int *dead_offset)
+int iio_read_first_n_sw_rb(struct iio_ring_buffer *r,
+			   size_t n, char __user *buf, int *dead_offset)
 {
 	struct iio_sw_ring_buffer *ring = iio_to_sw_ring(r);
 
@@ -166,15 +166,16 @@ int iio_rip_sw_rb(struct iio_ring_buffer *r,
 	 *  read something that is not a whole number of bpds.
 	 * Return an error.
 	 */
-	if (count % ring->buf.bytes_per_datum) {
+	if (n % ring->buf.bytes_per_datum) {
 		ret = -EINVAL;
 		printk(KERN_INFO "Ring buffer read request not whole number of"
 		       "samples: Request bytes %zd, Current bytes per datum %d\n",
-		       count, ring->buf.bytes_per_datum);
+		       n, ring->buf.bytes_per_datum);
 		goto error_ret;
 	}
 	/* Limit size to whole of ring buffer */
-	bytes_to_rip = min((size_t)(ring->buf.bytes_per_datum*ring->buf.length), count);
+	bytes_to_rip = min((size_t)(ring->buf.bytes_per_datum*ring->buf.length),
+			   n);
 
 	data = kmalloc(bytes_to_rip, GFP_KERNEL);
 	if (data == NULL) {
@@ -278,7 +279,7 @@ error_ret:
 
 	return ret;
 }
-EXPORT_SYMBOL(iio_rip_sw_rb);
+EXPORT_SYMBOL(iio_read_first_n_sw_rb);
 
 int iio_store_to_sw_rb(struct iio_ring_buffer *r, u8 *data, s64 timestamp)
 {
diff --git a/drivers/staging/iio/ring_sw.h b/drivers/staging/iio/ring_sw.h
index 13341c1e..ee86020 100644
--- a/drivers/staging/iio/ring_sw.h
+++ b/drivers/staging/iio/ring_sw.h
@@ -93,17 +93,17 @@ int iio_read_last_from_sw_rb(struct iio_ring_buffer *r, u8 *data);
 int iio_store_to_sw_rb(struct iio_ring_buffer *r, u8 *data, s64 timestamp);
 
 /**
- * iio_rip_sw_rb() - attempt to read data from the ring buffer
+ * iio_read_first_n_sw_rb() - attempt to read data from the ring buffer
  * @r:			ring buffer instance
- * @count:		number of datum's to try and read
+ * @n:			number of datum's to try and read
  * @buf:		userspace buffer into which data is copied
  * @dead_offset:	how much of the stored data was possibly invalidated by
  *			the end of the copy.
  **/
-int iio_rip_sw_rb(struct iio_ring_buffer *r,
-		  size_t count,
-		  char __user *buf,
-		  int *dead_offset);
+int iio_read_first_n_sw_rb(struct iio_ring_buffer *r,
+			   size_t n,
+			   char __user *buf,
+			   int *dead_offset);
 
 /**
  * iio_request_update_sw_rb() - update params if update needed
@@ -161,7 +161,7 @@ static inline void iio_ring_sw_register_funcs(struct iio_ring_access_funcs *ra)
 
 	ra->store_to = &iio_store_to_sw_rb;
 	ra->read_last = &iio_read_last_from_sw_rb;
-	ra->rip_lots = &iio_rip_sw_rb;
+	ra->read_first_n = &iio_read_first_n_sw_rb;
 
 	ra->mark_param_change = &iio_mark_update_needed_sw_rb;
 	ra->request_update = &iio_request_update_sw_rb;
-- 
1.7.3.4


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

* [PATCH 4/8] staging:iio: Add ability to allocate private data space to iio_allocate_device
  2011-04-15 17:55 [PATCH 0/8 V2] Jonathan Cameron
                   ` (2 preceding siblings ...)
  2011-04-15 17:55 ` [PATCH 3/8] staging:iio: replace rip_lots naming with read_first_n Jonathan Cameron
@ 2011-04-15 17:55 ` Jonathan Cameron
  2011-04-15 17:55 ` [PATCH 5/8] staging:iio:adc:max1363 fix timestamp handling Jonathan Cameron
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2011-04-15 17:55 UTC (permalink / raw)
  To: greg; +Cc: jbrenner, linux-iio, Jonathan Cameron

Suggested by Arnd Bergmann.  Note this will break ALL drivers that
are out of mainline.  The fix is trivial change of
iio_allocate_device() -> iio_allocate_device(0)
Sorry if this causes issues for any one!

V2: Include new drivers in the update

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/staging/iio/Documentation/device.txt |    2 +-
 drivers/staging/iio/accel/adis16201_core.c   |    2 +-
 drivers/staging/iio/accel/adis16203_core.c   |    2 +-
 drivers/staging/iio/accel/adis16204_core.c   |    2 +-
 drivers/staging/iio/accel/adis16209_core.c   |    2 +-
 drivers/staging/iio/accel/adis16220_core.c   |    2 +-
 drivers/staging/iio/accel/adis16240_core.c   |    2 +-
 drivers/staging/iio/accel/kxsd9.c            |    2 +-
 drivers/staging/iio/accel/lis3l02dq_core.c   |    2 +-
 drivers/staging/iio/accel/sca3000_core.c     |    2 +-
 drivers/staging/iio/adc/ad7150.c             |    2 +-
 drivers/staging/iio/adc/ad7152.c             |    2 +-
 drivers/staging/iio/adc/ad7291.c             |    2 +-
 drivers/staging/iio/adc/ad7298_core.c        |    2 +-
 drivers/staging/iio/adc/ad7314.c             |    2 +-
 drivers/staging/iio/adc/ad7476_core.c        |    2 +-
 drivers/staging/iio/adc/ad7606_core.c        |    2 +-
 drivers/staging/iio/adc/ad7745.c             |    2 +-
 drivers/staging/iio/adc/ad7780.c             |    2 +-
 drivers/staging/iio/adc/ad7816.c             |    2 +-
 drivers/staging/iio/adc/ad7887_core.c        |    2 +-
 drivers/staging/iio/adc/ad799x_core.c        |    2 +-
 drivers/staging/iio/adc/adt7310.c            |    2 +-
 drivers/staging/iio/adc/adt7410.c            |    2 +-
 drivers/staging/iio/adc/adt75.c              |    2 +-
 drivers/staging/iio/adc/max1363_core.c       |    2 +-
 drivers/staging/iio/addac/adt7316.c          |    2 +-
 drivers/staging/iio/dac/ad5446.c             |    2 +-
 drivers/staging/iio/dac/ad5504.c             |    2 +-
 drivers/staging/iio/dac/ad5624r_spi.c        |    2 +-
 drivers/staging/iio/dac/ad5791.c             |    2 +-
 drivers/staging/iio/dac/max517.c             |    2 +-
 drivers/staging/iio/dds/ad5930.c             |    2 +-
 drivers/staging/iio/dds/ad9832.c             |    2 +-
 drivers/staging/iio/dds/ad9834.c             |    2 +-
 drivers/staging/iio/dds/ad9850.c             |    2 +-
 drivers/staging/iio/dds/ad9852.c             |    2 +-
 drivers/staging/iio/dds/ad9910.c             |    2 +-
 drivers/staging/iio/dds/ad9951.c             |    2 +-
 drivers/staging/iio/gyro/adis16060_core.c    |    2 +-
 drivers/staging/iio/gyro/adis16080_core.c    |    2 +-
 drivers/staging/iio/gyro/adis16130_core.c    |    2 +-
 drivers/staging/iio/gyro/adis16260_core.c    |    2 +-
 drivers/staging/iio/gyro/adxrs450_core.c     |    2 +-
 drivers/staging/iio/iio.h                    |   17 ++++++++++++++++-
 drivers/staging/iio/imu/adis16300_core.c     |    2 +-
 drivers/staging/iio/imu/adis16350_core.c     |    2 +-
 drivers/staging/iio/imu/adis16400_core.c     |    2 +-
 drivers/staging/iio/industrialio-core.c      |   15 +++++++++++++--
 drivers/staging/iio/light/isl29018.c         |    2 +-
 drivers/staging/iio/light/tsl2563.c          |    2 +-
 drivers/staging/iio/light/tsl2583.c          |    2 +-
 drivers/staging/iio/magnetometer/ak8975.c    |    2 +-
 drivers/staging/iio/magnetometer/hmc5843.c   |    2 +-
 drivers/staging/iio/meter/ade7753.c          |    2 +-
 drivers/staging/iio/meter/ade7754.c          |    2 +-
 drivers/staging/iio/meter/ade7758_core.c     |    2 +-
 drivers/staging/iio/meter/ade7759.c          |    2 +-
 drivers/staging/iio/meter/ade7854.c          |    2 +-
 drivers/staging/iio/resolver/ad2s120x.c      |    2 +-
 drivers/staging/iio/resolver/ad2s1210.c      |    2 +-
 drivers/staging/iio/resolver/ad2s90.c        |    2 +-
 62 files changed, 89 insertions(+), 63 deletions(-)

diff --git a/drivers/staging/iio/Documentation/device.txt b/drivers/staging/iio/Documentation/device.txt
index 69d9570..c81e517 100644
--- a/drivers/staging/iio/Documentation/device.txt
+++ b/drivers/staging/iio/Documentation/device.txt
@@ -8,7 +8,7 @@ The crucial structure for device drivers in iio is iio_dev.
 
 First allocate one using:
 
-struct iio_dev *indio_dev = iio_allocate_device();
+struct iio_dev *indio_dev = iio_allocate_device(0);
 
 Then fill in the following:
 
diff --git a/drivers/staging/iio/accel/adis16201_core.c b/drivers/staging/iio/accel/adis16201_core.c
index 79b785a..df1101c 100644
--- a/drivers/staging/iio/accel/adis16201_core.c
+++ b/drivers/staging/iio/accel/adis16201_core.c
@@ -539,7 +539,7 @@ static int __devinit adis16201_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/accel/adis16203_core.c b/drivers/staging/iio/accel/adis16203_core.c
index b57f190..e5a2a47 100644
--- a/drivers/staging/iio/accel/adis16203_core.c
+++ b/drivers/staging/iio/accel/adis16203_core.c
@@ -448,7 +448,7 @@ static int __devinit adis16203_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/accel/adis16204_core.c b/drivers/staging/iio/accel/adis16204_core.c
index cc15e40..97376aa 100644
--- a/drivers/staging/iio/accel/adis16204_core.c
+++ b/drivers/staging/iio/accel/adis16204_core.c
@@ -493,7 +493,7 @@ static int __devinit adis16204_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/accel/adis16209_core.c b/drivers/staging/iio/accel/adis16209_core.c
index e4ac956..d2fb990 100644
--- a/drivers/staging/iio/accel/adis16209_core.c
+++ b/drivers/staging/iio/accel/adis16209_core.c
@@ -488,7 +488,7 @@ static int __devinit adis16209_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/accel/adis16220_core.c b/drivers/staging/iio/accel/adis16220_core.c
index 1c1e98a..0689e41 100644
--- a/drivers/staging/iio/accel/adis16220_core.c
+++ b/drivers/staging/iio/accel/adis16220_core.c
@@ -572,7 +572,7 @@ static int __devinit adis16220_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/accel/adis16240_core.c b/drivers/staging/iio/accel/adis16240_core.c
index d11d164..31f64ae 100644
--- a/drivers/staging/iio/accel/adis16240_core.c
+++ b/drivers/staging/iio/accel/adis16240_core.c
@@ -485,7 +485,7 @@ static int __devinit adis16240_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/accel/kxsd9.c b/drivers/staging/iio/accel/kxsd9.c
index 79f5795..431aa0f 100644
--- a/drivers/staging/iio/accel/kxsd9.c
+++ b/drivers/staging/iio/accel/kxsd9.c
@@ -329,7 +329,7 @@ static int __devinit kxsd9_probe(struct spi_device *spi)
 
 	st->us = spi;
 	mutex_init(&st->buf_lock);
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/accel/lis3l02dq_core.c b/drivers/staging/iio/accel/lis3l02dq_core.c
index 3067f96..958c8ec 100644
--- a/drivers/staging/iio/accel/lis3l02dq_core.c
+++ b/drivers/staging/iio/accel/lis3l02dq_core.c
@@ -805,7 +805,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->help.indio_dev = iio_allocate_device();
+	st->help.indio_dev = iio_allocate_device(0);
 	if (st->help.indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/accel/sca3000_core.c b/drivers/staging/iio/accel/sca3000_core.c
index 5b06dea..6abf2b7 100644
--- a/drivers/staging/iio/accel/sca3000_core.c
+++ b/drivers/staging/iio/accel/sca3000_core.c
@@ -1339,7 +1339,7 @@ static int __devinit __sca3000_probe(struct spi_device *spi,
 	mutex_init(&st->lock);
 	st->info = &sca3000_spi_chip_info_tbl[variant];
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_rx;
diff --git a/drivers/staging/iio/adc/ad7150.c b/drivers/staging/iio/adc/ad7150.c
index 8555766..5a2991a 100644
--- a/drivers/staging/iio/adc/ad7150.c
+++ b/drivers/staging/iio/adc/ad7150.c
@@ -778,7 +778,7 @@ static int __devinit ad7150_probe(struct i2c_client *client,
 	chip->client = client;
 	chip->name = id->name;
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (chip->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_chip;
diff --git a/drivers/staging/iio/adc/ad7152.c b/drivers/staging/iio/adc/ad7152.c
index fa7f8406..163c307 100644
--- a/drivers/staging/iio/adc/ad7152.c
+++ b/drivers/staging/iio/adc/ad7152.c
@@ -533,7 +533,7 @@ static int __devinit ad7152_probe(struct i2c_client *client,
 	chip->client = client;
 	chip->name = id->name;
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (chip->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_chip;
diff --git a/drivers/staging/iio/adc/ad7291.c b/drivers/staging/iio/adc/ad7291.c
index 34041a7..976ae7f 100644
--- a/drivers/staging/iio/adc/ad7291.c
+++ b/drivers/staging/iio/adc/ad7291.c
@@ -926,7 +926,7 @@ static int __devinit ad7291_probe(struct i2c_client *client,
 	chip->name = id->name;
 	chip->command = AD7291_NOISE_DELAY | AD7291_T_SENSE_MASK;
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (chip->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_chip;
diff --git a/drivers/staging/iio/adc/ad7298_core.c b/drivers/staging/iio/adc/ad7298_core.c
index 2e9154e..8b3a490 100644
--- a/drivers/staging/iio/adc/ad7298_core.c
+++ b/drivers/staging/iio/adc/ad7298_core.c
@@ -173,7 +173,7 @@ static int __devinit ad7298_probe(struct spi_device *spi)
 	atomic_set(&st->protect_ring, 0);
 	st->spi = spi;
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/adc/ad7314.c b/drivers/staging/iio/adc/ad7314.c
index 8c17b1f..dffbec1 100644
--- a/drivers/staging/iio/adc/ad7314.c
+++ b/drivers/staging/iio/adc/ad7314.c
@@ -229,7 +229,7 @@ static int __devinit ad7314_probe(struct spi_device *spi_dev)
 	chip->spi_dev = spi_dev;
 	chip->name = spi_dev->modalias;
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (chip->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_chip;
diff --git a/drivers/staging/iio/adc/ad7476_core.c b/drivers/staging/iio/adc/ad7476_core.c
index d263904..b16744c 100644
--- a/drivers/staging/iio/adc/ad7476_core.c
+++ b/drivers/staging/iio/adc/ad7476_core.c
@@ -184,7 +184,7 @@ static int __devinit ad7476_probe(struct spi_device *spi)
 	atomic_set(&st->protect_ring, 0);
 	st->spi = spi;
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/adc/ad7606_core.c b/drivers/staging/iio/adc/ad7606_core.c
index 4c700f0..7ef9a6f 100644
--- a/drivers/staging/iio/adc/ad7606_core.c
+++ b/drivers/staging/iio/adc/ad7606_core.c
@@ -447,7 +447,7 @@ struct ad7606_state *ad7606_probe(struct device *dev, int irq,
 
 	atomic_set(&st->protect_ring, 0);
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/adc/ad7745.c b/drivers/staging/iio/adc/ad7745.c
index ab7ef84..1373d23 100644
--- a/drivers/staging/iio/adc/ad7745.c
+++ b/drivers/staging/iio/adc/ad7745.c
@@ -635,7 +635,7 @@ static int __devinit ad774x_probe(struct i2c_client *client,
 	chip->client = client;
 	chip->name = id->name;
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (chip->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_chip;
diff --git a/drivers/staging/iio/adc/ad7780.c b/drivers/staging/iio/adc/ad7780.c
index 0fd994f..ab23c5c 100644
--- a/drivers/staging/iio/adc/ad7780.c
+++ b/drivers/staging/iio/adc/ad7780.c
@@ -221,7 +221,7 @@ static int __devinit ad7780_probe(struct spi_device *spi)
 	spi_set_drvdata(spi, st);
 	st->spi = spi;
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/adc/ad7816.c b/drivers/staging/iio/adc/ad7816.c
index ad7415a..9e30d35 100644
--- a/drivers/staging/iio/adc/ad7816.c
+++ b/drivers/staging/iio/adc/ad7816.c
@@ -418,7 +418,7 @@ static int __devinit ad7816_probe(struct spi_device *spi_dev)
 	}
 	gpio_direction_input(chip->busy_pin);
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (chip->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_gpio;
diff --git a/drivers/staging/iio/adc/ad7887_core.c b/drivers/staging/iio/adc/ad7887_core.c
index 5d85efa..11c9fcf 100644
--- a/drivers/staging/iio/adc/ad7887_core.c
+++ b/drivers/staging/iio/adc/ad7887_core.c
@@ -153,7 +153,7 @@ static int __devinit ad7887_probe(struct spi_device *spi)
 	atomic_set(&st->protect_ring, 0);
 	st->spi = spi;
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/adc/ad799x_core.c b/drivers/staging/iio/adc/ad799x_core.c
index f04e642..09d109f 100644
--- a/drivers/staging/iio/adc/ad799x_core.c
+++ b/drivers/staging/iio/adc/ad799x_core.c
@@ -801,7 +801,7 @@ static int __devinit ad799x_probe(struct i2c_client *client,
 	}
 	st->client = client;
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/adc/adt7310.c b/drivers/staging/iio/adc/adt7310.c
index 771a409..7e66c42 100644
--- a/drivers/staging/iio/adc/adt7310.c
+++ b/drivers/staging/iio/adc/adt7310.c
@@ -794,7 +794,7 @@ static int __devinit adt7310_probe(struct spi_device *spi_dev)
 	chip->spi_dev = spi_dev;
 	chip->name = spi_dev->modalias;
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (chip->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_chip;
diff --git a/drivers/staging/iio/adc/adt7410.c b/drivers/staging/iio/adc/adt7410.c
index c345f27..7cc3feb 100644
--- a/drivers/staging/iio/adc/adt7410.c
+++ b/drivers/staging/iio/adc/adt7410.c
@@ -764,7 +764,7 @@ static int __devinit adt7410_probe(struct i2c_client *client,
 	chip->client = client;
 	chip->name = id->name;
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (chip->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_chip;
diff --git a/drivers/staging/iio/adc/adt75.c b/drivers/staging/iio/adc/adt75.c
index aff4d31..f247c4c 100644
--- a/drivers/staging/iio/adc/adt75.c
+++ b/drivers/staging/iio/adc/adt75.c
@@ -614,7 +614,7 @@ static int __devinit adt75_probe(struct i2c_client *client,
 	chip->client = client;
 	chip->name = id->name;
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (chip->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_chip;
diff --git a/drivers/staging/iio/adc/max1363_core.c b/drivers/staging/iio/adc/max1363_core.c
index de83c3b..1703b2a 100644
--- a/drivers/staging/iio/adc/max1363_core.c
+++ b/drivers/staging/iio/adc/max1363_core.c
@@ -1695,7 +1695,7 @@ static int __devinit max1363_probe(struct i2c_client *client,
 	}
 	st->client = client;
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c
index d1b5b13..6145963 100644
--- a/drivers/staging/iio/addac/adt7316.c
+++ b/drivers/staging/iio/addac/adt7316.c
@@ -2299,7 +2299,7 @@ int __devinit adt7316_probe(struct device *dev, struct adt7316_bus *bus,
 	if ((chip->id & ID_FAMILY_MASK) == ID_ADT75XX)
 		chip->int_mask |= ADT7516_AIN_INT_MASK;
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (chip->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_chip;
diff --git a/drivers/staging/iio/dac/ad5446.c b/drivers/staging/iio/dac/ad5446.c
index 102bcc4..fd4fa54 100644
--- a/drivers/staging/iio/dac/ad5446.c
+++ b/drivers/staging/iio/dac/ad5446.c
@@ -373,7 +373,7 @@ static int __devinit ad5446_probe(struct spi_device *spi)
 
 	st->spi = spi;
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/dac/ad5504.c b/drivers/staging/iio/dac/ad5504.c
index 153c36e..28ace30 100644
--- a/drivers/staging/iio/dac/ad5504.c
+++ b/drivers/staging/iio/dac/ad5504.c
@@ -321,7 +321,7 @@ static int __devinit ad5504_probe(struct spi_device *spi)
 		dev_warn(&spi->dev, "reference voltage unspecified\n");
 
 	st->spi = spi;
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/dac/ad5624r_spi.c b/drivers/staging/iio/dac/ad5624r_spi.c
index a945b18..cfb5828 100644
--- a/drivers/staging/iio/dac/ad5624r_spi.c
+++ b/drivers/staging/iio/dac/ad5624r_spi.c
@@ -260,7 +260,7 @@ static int __devinit ad5624r_probe(struct spi_device *spi)
 		st->vref_mv = st->chip_info->int_vref_mv;
 
 	st->us = spi;
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/dac/ad5791.c b/drivers/staging/iio/dac/ad5791.c
index 545f1a6..c4a258d 100644
--- a/drivers/staging/iio/dac/ad5791.c
+++ b/drivers/staging/iio/dac/ad5791.c
@@ -326,7 +326,7 @@ static int __devinit ad5791_probe(struct spi_device *spi)
 	st->pwr_down = true;
 
 	st->spi = spi;
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg_neg;
diff --git a/drivers/staging/iio/dac/max517.c b/drivers/staging/iio/dac/max517.c
index 7071f71..3eb48b6 100644
--- a/drivers/staging/iio/dac/max517.c
+++ b/drivers/staging/iio/dac/max517.c
@@ -206,7 +206,7 @@ static int max517_probe(struct i2c_client *client,
 
 	data->client = client;
 
-	data->indio_dev = iio_allocate_device();
+	data->indio_dev = iio_allocate_device(0);
 	if (data->indio_dev == NULL) {
 		err = -ENOMEM;
 		goto exit_free_data;
diff --git a/drivers/staging/iio/dds/ad5930.c b/drivers/staging/iio/dds/ad5930.c
index f80039c..5d98f93 100644
--- a/drivers/staging/iio/dds/ad5930.c
+++ b/drivers/staging/iio/dds/ad5930.c
@@ -102,7 +102,7 @@ static int __devinit ad5930_probe(struct spi_device *spi)
 	mutex_init(&st->lock);
 	st->sdev = spi;
 
-	st->idev = iio_allocate_device();
+	st->idev = iio_allocate_device(0);
 	if (st->idev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
diff --git a/drivers/staging/iio/dds/ad9832.c b/drivers/staging/iio/dds/ad9832.c
index 3e8491f..9c6114f 100644
--- a/drivers/staging/iio/dds/ad9832.c
+++ b/drivers/staging/iio/dds/ad9832.c
@@ -236,7 +236,7 @@ static int __devinit ad9832_probe(struct spi_device *spi)
 	spi_set_drvdata(spi, st);
 	st->spi = spi;
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/dds/ad9834.c b/drivers/staging/iio/dds/ad9834.c
index eb1a681..da5e302 100644
--- a/drivers/staging/iio/dds/ad9834.c
+++ b/drivers/staging/iio/dds/ad9834.c
@@ -349,7 +349,7 @@ static int __devinit ad9834_probe(struct spi_device *spi)
 	st->spi = spi;
 	st->devid = spi_get_device_id(spi)->driver_data;
 
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
diff --git a/drivers/staging/iio/dds/ad9850.c b/drivers/staging/iio/dds/ad9850.c
index b259bfe..34bc0e6 100644
--- a/drivers/staging/iio/dds/ad9850.c
+++ b/drivers/staging/iio/dds/ad9850.c
@@ -88,7 +88,7 @@ static int __devinit ad9850_probe(struct spi_device *spi)
 	mutex_init(&st->lock);
 	st->sdev = spi;
 
-	st->idev = iio_allocate_device();
+	st->idev = iio_allocate_device(0);
 	if (st->idev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
diff --git a/drivers/staging/iio/dds/ad9852.c b/drivers/staging/iio/dds/ad9852.c
index 594fb6a..899a72a 100644
--- a/drivers/staging/iio/dds/ad9852.c
+++ b/drivers/staging/iio/dds/ad9852.c
@@ -237,7 +237,7 @@ static int __devinit ad9852_probe(struct spi_device *spi)
 	mutex_init(&st->lock);
 	st->sdev = spi;
 
-	st->idev = iio_allocate_device();
+	st->idev = iio_allocate_device(0);
 	if (st->idev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
diff --git a/drivers/staging/iio/dds/ad9910.c b/drivers/staging/iio/dds/ad9910.c
index e8fb75c..fddb6e7 100644
--- a/drivers/staging/iio/dds/ad9910.c
+++ b/drivers/staging/iio/dds/ad9910.c
@@ -372,7 +372,7 @@ static int __devinit ad9910_probe(struct spi_device *spi)
 	mutex_init(&st->lock);
 	st->sdev = spi;
 
-	st->idev = iio_allocate_device();
+	st->idev = iio_allocate_device(0);
 	if (st->idev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
diff --git a/drivers/staging/iio/dds/ad9951.c b/drivers/staging/iio/dds/ad9951.c
index 57eddf6..a9e56c6 100644
--- a/drivers/staging/iio/dds/ad9951.c
+++ b/drivers/staging/iio/dds/ad9951.c
@@ -181,7 +181,7 @@ static int __devinit ad9951_probe(struct spi_device *spi)
 	mutex_init(&st->lock);
 	st->sdev = spi;
 
-	st->idev = iio_allocate_device();
+	st->idev = iio_allocate_device(0);
 	if (st->idev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
diff --git a/drivers/staging/iio/gyro/adis16060_core.c b/drivers/staging/iio/gyro/adis16060_core.c
index ae53e71..e1f8a70 100644
--- a/drivers/staging/iio/gyro/adis16060_core.c
+++ b/drivers/staging/iio/gyro/adis16060_core.c
@@ -147,7 +147,7 @@ static int __devinit adis16060_r_probe(struct spi_device *spi)
 	st->us_r = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
diff --git a/drivers/staging/iio/gyro/adis16080_core.c b/drivers/staging/iio/gyro/adis16080_core.c
index ef9e304..26af63f 100644
--- a/drivers/staging/iio/gyro/adis16080_core.c
+++ b/drivers/staging/iio/gyro/adis16080_core.c
@@ -140,7 +140,7 @@ static int __devinit adis16080_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
diff --git a/drivers/staging/iio/gyro/adis16130_core.c b/drivers/staging/iio/gyro/adis16130_core.c
index 70e2831..02fbe07 100644
--- a/drivers/staging/iio/gyro/adis16130_core.c
+++ b/drivers/staging/iio/gyro/adis16130_core.c
@@ -191,7 +191,7 @@ static int __devinit adis16130_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
diff --git a/drivers/staging/iio/gyro/adis16260_core.c b/drivers/staging/iio/gyro/adis16260_core.c
index 69a29ec..26e3af4 100644
--- a/drivers/staging/iio/gyro/adis16260_core.c
+++ b/drivers/staging/iio/gyro/adis16260_core.c
@@ -596,7 +596,7 @@ static int __devinit adis16260_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/gyro/adxrs450_core.c b/drivers/staging/iio/gyro/adxrs450_core.c
index d70bf68..dcd88ff 100644
--- a/drivers/staging/iio/gyro/adxrs450_core.c
+++ b/drivers/staging/iio/gyro/adxrs450_core.c
@@ -369,7 +369,7 @@ static int __devinit adxrs450_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/iio.h b/drivers/staging/iio/iio.h
index 7127f26..80ef2cf 100644
--- a/drivers/staging/iio/iio.h
+++ b/drivers/staging/iio/iio.h
@@ -264,10 +264,25 @@ static inline void *iio_dev_get_devdata(struct iio_dev *d)
 	return d->dev_data;
 }
 
+
+/* Can we make this smaller? */
+#define IIO_ALIGN L1_CACHE_BYTES
 /**
  * iio_allocate_device() - allocate an iio_dev from a driver
+ * @sizeof_priv: Space to allocate for private structure.
  **/
-struct iio_dev *iio_allocate_device(void);
+struct iio_dev *iio_allocate_device(int sizeof_priv);
+
+static inline void *iio_priv(const struct iio_dev *dev)
+{
+	return (char *)dev + ALIGN(sizeof(struct iio_dev), IIO_ALIGN);
+}
+
+static inline struct iio_dev *iio_priv_to_dev(void *priv)
+{
+	return (struct iio_dev *)((char *)priv -
+				  ALIGN(sizeof(struct iio_dev), IIO_ALIGN));
+}
 
 /**
  * iio_free_device() - free an iio_dev from a driver
diff --git a/drivers/staging/iio/imu/adis16300_core.c b/drivers/staging/iio/imu/adis16300_core.c
index 7ad13f4..0734d4a 100644
--- a/drivers/staging/iio/imu/adis16300_core.c
+++ b/drivers/staging/iio/imu/adis16300_core.c
@@ -628,7 +628,7 @@ static int __devinit adis16300_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/imu/adis16350_core.c b/drivers/staging/iio/imu/adis16350_core.c
index cf7176b..2081924 100644
--- a/drivers/staging/iio/imu/adis16350_core.c
+++ b/drivers/staging/iio/imu/adis16350_core.c
@@ -617,7 +617,7 @@ static int __devinit adis16350_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/imu/adis16400_core.c b/drivers/staging/iio/imu/adis16400_core.c
index 540bde6..a0b53ee 100644
--- a/drivers/staging/iio/imu/adis16400_core.c
+++ b/drivers/staging/iio/imu/adis16400_core.c
@@ -622,7 +622,7 @@ static int __devinit adis16400_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c
index 1795ee1..3a82414 100644
--- a/drivers/staging/iio/industrialio-core.c
+++ b/drivers/staging/iio/industrialio-core.c
@@ -720,9 +720,20 @@ static struct device_type iio_dev_type = {
 	.release = iio_dev_release,
 };
 
-struct iio_dev *iio_allocate_device(void)
+struct iio_dev *iio_allocate_device(int sizeof_priv)
 {
-	struct iio_dev *dev = kzalloc(sizeof *dev, GFP_KERNEL);
+	struct iio_dev *dev;
+	size_t alloc_size;
+
+	alloc_size = sizeof(struct iio_dev);
+	if (sizeof_priv) {
+		alloc_size = ALIGN(alloc_size, IIO_ALIGN);
+		alloc_size += sizeof_priv;
+	}
+	/* ensure 32-byte alignment of whole construct ? */
+	alloc_size += IIO_ALIGN - 1;
+
+	dev = kzalloc(alloc_size, GFP_KERNEL);
 
 	if (dev) {
 		dev->dev.type = &iio_dev_type;
diff --git a/drivers/staging/iio/light/isl29018.c b/drivers/staging/iio/light/isl29018.c
index f919cc1..dfbc423 100644
--- a/drivers/staging/iio/light/isl29018.c
+++ b/drivers/staging/iio/light/isl29018.c
@@ -492,7 +492,7 @@ static int __devinit isl29018_probe(struct i2c_client *client,
 	if (err)
 		goto exit_free;
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (!chip->indio_dev) {
 		dev_err(&client->dev, "iio allocation fails\n");
 		goto exit_free;
diff --git a/drivers/staging/iio/light/tsl2563.c b/drivers/staging/iio/light/tsl2563.c
index dadae75..35d94c6 100644
--- a/drivers/staging/iio/light/tsl2563.c
+++ b/drivers/staging/iio/light/tsl2563.c
@@ -857,7 +857,7 @@ static int __devinit tsl2563_probe(struct i2c_client *client,
 
 	dev_info(&client->dev, "model %d, rev. %d\n", id >> 4, id & 0x0f);
 
-	chip->indio_dev = iio_allocate_device();
+	chip->indio_dev = iio_allocate_device(0);
 	if (!chip->indio_dev)
 		goto fail1;
 	chip->indio_dev->attrs = &tsl2563_group;
diff --git a/drivers/staging/iio/light/tsl2583.c b/drivers/staging/iio/light/tsl2583.c
index 1740843..b87ccd5 100644
--- a/drivers/staging/iio/light/tsl2583.c
+++ b/drivers/staging/iio/light/tsl2583.c
@@ -847,7 +847,7 @@ static int __devinit taos_probe(struct i2c_client *clientp,
 		goto fail1;
 	}
 
-	chip->iio_dev = iio_allocate_device();
+	chip->iio_dev = iio_allocate_device(0);
 	if (!chip->iio_dev) {
 		ret = -ENOMEM;
 		dev_err(&clientp->dev, "iio allocation failed\n");
diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c
index 420f206..9fbda02 100644
--- a/drivers/staging/iio/magnetometer/ak8975.c
+++ b/drivers/staging/iio/magnetometer/ak8975.c
@@ -482,7 +482,7 @@ static int ak8975_probe(struct i2c_client *client,
 	}
 
 	/* Register with IIO */
-	data->indio_dev = iio_allocate_device();
+	data->indio_dev = iio_allocate_device(0);
 	if (data->indio_dev == NULL) {
 		err = -ENOMEM;
 		goto exit_gpio;
diff --git a/drivers/staging/iio/magnetometer/hmc5843.c b/drivers/staging/iio/magnetometer/hmc5843.c
index 5168917..d0676e9 100644
--- a/drivers/staging/iio/magnetometer/hmc5843.c
+++ b/drivers/staging/iio/magnetometer/hmc5843.c
@@ -552,7 +552,7 @@ static int hmc5843_probe(struct i2c_client *client,
 	/* Initialize the HMC5843 chip */
 	hmc5843_init_client(client);
 
-	data->indio_dev = iio_allocate_device();
+	data->indio_dev = iio_allocate_device(0);
 	if (!data->indio_dev) {
 		err = -ENOMEM;
 		goto exit_free1;
diff --git a/drivers/staging/iio/meter/ade7753.c b/drivers/staging/iio/meter/ade7753.c
index 8b86d82..d62d9e2 100644
--- a/drivers/staging/iio/meter/ade7753.c
+++ b/drivers/staging/iio/meter/ade7753.c
@@ -532,7 +532,7 @@ static int __devinit ade7753_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/meter/ade7754.c b/drivers/staging/iio/meter/ade7754.c
index 4272818..2d0b8cc 100644
--- a/drivers/staging/iio/meter/ade7754.c
+++ b/drivers/staging/iio/meter/ade7754.c
@@ -557,7 +557,7 @@ static int __devinit ade7754_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/meter/ade7758_core.c b/drivers/staging/iio/meter/ade7758_core.c
index b7634cb..8d37ef7 100644
--- a/drivers/staging/iio/meter/ade7758_core.c
+++ b/drivers/staging/iio/meter/ade7758_core.c
@@ -737,7 +737,7 @@ static int __devinit ade7758_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/meter/ade7759.c b/drivers/staging/iio/meter/ade7759.c
index a9d3203..42b3b27 100644
--- a/drivers/staging/iio/meter/ade7759.c
+++ b/drivers/staging/iio/meter/ade7759.c
@@ -478,7 +478,7 @@ static int __devinit ade7759_probe(struct spi_device *spi)
 	st->us = spi;
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/meter/ade7854.c b/drivers/staging/iio/meter/ade7854.c
index 866e585..d3f1df7 100644
--- a/drivers/staging/iio/meter/ade7854.c
+++ b/drivers/staging/iio/meter/ade7854.c
@@ -568,7 +568,7 @@ int ade7854_probe(struct ade7854_state *st, struct device *dev)
 	}
 	mutex_init(&st->buf_lock);
 	/* setup the industrialio driver allocated elements */
-	st->indio_dev = iio_allocate_device();
+	st->indio_dev = iio_allocate_device(0);
 	if (st->indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_tx;
diff --git a/drivers/staging/iio/resolver/ad2s120x.c b/drivers/staging/iio/resolver/ad2s120x.c
index 8f497a2..e0237ff 100644
--- a/drivers/staging/iio/resolver/ad2s120x.c
+++ b/drivers/staging/iio/resolver/ad2s120x.c
@@ -240,7 +240,7 @@ static int __devinit ad2s120x_probe(struct spi_device *spi)
 	st->sample = pins[0];
 	st->rdvel = pins[1];
 
-	st->idev = iio_allocate_device();
+	st->idev = iio_allocate_device(0);
 	if (st->idev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c
index c12f64c..dc7cae8 100644
--- a/drivers/staging/iio/resolver/ad2s1210.c
+++ b/drivers/staging/iio/resolver/ad2s1210.c
@@ -800,7 +800,7 @@ static int __devinit ad2s1210_probe(struct spi_device *spi)
 	st->res0 = pins[3];
 	st->res1 = pins[4];
 
-	st->idev = iio_allocate_device();
+	st->idev = iio_allocate_device(0);
 	if (st->idev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
diff --git a/drivers/staging/iio/resolver/ad2s90.c b/drivers/staging/iio/resolver/ad2s90.c
index 4143535..e300ade 100644
--- a/drivers/staging/iio/resolver/ad2s90.c
+++ b/drivers/staging/iio/resolver/ad2s90.c
@@ -90,7 +90,7 @@ static int __devinit ad2s90_probe(struct spi_device *spi)
 	mutex_init(&st->lock);
 	st->sdev = spi;
 
-	st->idev = iio_allocate_device();
+	st->idev = iio_allocate_device(0);
 	if (st->idev == NULL) {
 		ret = -ENOMEM;
 		goto error_free_st;
-- 
1.7.3.4

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

* [PATCH 5/8] staging:iio:adc:max1363 fix timestamp handling.
  2011-04-15 17:55 [PATCH 0/8 V2] Jonathan Cameron
                   ` (3 preceding siblings ...)
  2011-04-15 17:55 ` [PATCH 4/8] staging:iio: Add ability to allocate private data space to iio_allocate_device Jonathan Cameron
@ 2011-04-15 17:55 ` Jonathan Cameron
  2011-04-15 17:55 ` [PATCH 6/8] staging:iio:adc: max1363 dev_info -> indio_dev in naming for consistency Jonathan Cameron
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2011-04-15 17:55 UTC (permalink / raw)
  To: greg; +Cc: jbrenner, linux-iio, Jonathan Cameron

Not only was this not compliant with the abi, it was also missconfiguring
the buffer.

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
 drivers/staging/iio/adc/max1363_core.c |   12 ++++++++++++
 drivers/staging/iio/adc/max1363_ring.c |   10 ++++++----
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/iio/adc/max1363_core.c b/drivers/staging/iio/adc/max1363_core.c
index 1703b2a..41af82c 100644
--- a/drivers/staging/iio/adc/max1363_core.c
+++ b/drivers/staging/iio/adc/max1363_core.c
@@ -72,6 +72,9 @@ static MAX1363_SCAN_EL_D(7, 6, 21);
 static MAX1363_SCAN_EL_D(9, 8, 22);
 static MAX1363_SCAN_EL_D(11, 10, 23);
 
+static IIO_SCAN_EL_TIMESTAMP(24);
+static IIO_CONST_ATTR_SCAN_EL_TYPE(timestamp, s, 64, 64);
+
 static const struct max1363_mode max1363_mode_table[] = {
 	/* All of the single channel options first */
 	MAX1363_MODE_SINGLE(0, 1 << 0),
@@ -402,6 +405,9 @@ static struct attribute *max1363_scan_el_attrs[] = {
 	&iio_const_attr_in1min0_index.dev_attr.attr,
 	&iio_scan_el_in3min2.dev_attr.attr,	&dev_attr_in3min2_type.attr,
 	&iio_const_attr_in3min2_index.dev_attr.attr,
+	&iio_const_attr_timestamp_index.dev_attr.attr,
+	&iio_scan_el_timestamp.dev_attr.attr,
+	&iio_const_attr_timestamp_type.dev_attr.attr,
 	NULL,
 };
 
@@ -515,6 +521,9 @@ static struct attribute *max1238_scan_el_attrs[] = {
 	&iio_const_attr_in9min8_index.dev_attr.attr,
 	&iio_scan_el_in11min10.dev_attr.attr,	&dev_attr_in11min10_type.attr,
 	&iio_const_attr_in11min10_index.dev_attr.attr,
+	&iio_const_attr_timestamp_index.dev_attr.attr,
+	&iio_scan_el_timestamp.dev_attr.attr,
+	&iio_const_attr_timestamp_type.dev_attr.attr,
 	NULL,
 };
 
@@ -601,6 +610,9 @@ static struct attribute *max11608_scan_el_attrs[] = {
 	&iio_const_attr_in5min4_index.dev_attr.attr,
 	&iio_scan_el_in7min6.dev_attr.attr,	&dev_attr_in7min6_type.attr,
 	&iio_const_attr_in7min6_index.dev_attr.attr,
+	&iio_const_attr_timestamp_index.dev_attr.attr,
+	&iio_scan_el_timestamp.dev_attr.attr,
+	&iio_const_attr_timestamp_type.dev_attr.attr,
 	NULL
 };
 
diff --git a/drivers/staging/iio/adc/max1363_ring.c b/drivers/staging/iio/adc/max1363_ring.c
index d36fcc6..96894bd 100644
--- a/drivers/staging/iio/adc/max1363_ring.c
+++ b/drivers/staging/iio/adc/max1363_ring.c
@@ -76,7 +76,7 @@ static int max1363_ring_preenable(struct iio_dev *indio_dev)
 {
 	struct max1363_state *st = indio_dev->dev_data;
 	struct iio_ring_buffer *ring = indio_dev->ring;
-	size_t d_size;
+	size_t d_size = 0;
 	unsigned long numvals;
 
 	/*
@@ -92,11 +92,13 @@ static int max1363_ring_preenable(struct iio_dev *indio_dev)
 
 	numvals = hweight_long(st->current_mode->modemask);
 	if (ring->access.set_bytes_per_datum) {
+		if (ring->scan_timestamp)
+			d_size += sizeof(s64);
 		if (st->chip_info->bits != 8)
-			d_size = numvals*2 + sizeof(s64);
+			d_size += numvals*2;
 		else
-			d_size = numvals + sizeof(s64);
-		if (d_size % 8)
+			d_size += numvals;
+		if (ring->scan_timestamp && (d_size % 8))
 			d_size += 8 - (d_size % 8);
 		ring->access.set_bytes_per_datum(ring, d_size);
 	}
-- 
1.7.3.4


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

* [PATCH 6/8] staging:iio:adc: max1363 dev_info -> indio_dev in naming for consistency
  2011-04-15 17:55 [PATCH 0/8 V2] Jonathan Cameron
                   ` (4 preceding siblings ...)
  2011-04-15 17:55 ` [PATCH 5/8] staging:iio:adc:max1363 fix timestamp handling Jonathan Cameron
@ 2011-04-15 17:55 ` Jonathan Cameron
  2011-04-15 17:55 ` [PATCH 7/8] staging:iio:max1363 take advantage of new iio_device_allocate private data Jonathan Cameron
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2011-04-15 17:55 UTC (permalink / raw)
  To: greg; +Cc: jbrenner, linux-iio, Jonathan Cameron

Either name is fine, so went with the most common.

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
 drivers/staging/iio/adc/max1363_core.c |   70 ++++++++++++++++----------------
 1 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/drivers/staging/iio/adc/max1363_core.c b/drivers/staging/iio/adc/max1363_core.c
index 41af82c..4134f68 100644
--- a/drivers/staging/iio/adc/max1363_core.c
+++ b/drivers/staging/iio/adc/max1363_core.c
@@ -155,8 +155,8 @@ static ssize_t max1363_show_precision_u(struct device *dev,
 				char *buf)
 {
 	struct iio_ring_buffer *ring = dev_get_drvdata(dev);
-	struct iio_dev *dev_info = ring->indio_dev;
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = ring->indio_dev;
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	return sprintf(buf, "u%d/16\n", st->chip_info->bits);
 }
 
@@ -165,8 +165,8 @@ static ssize_t max1363_show_precision_s(struct device *dev,
 				char *buf)
 {
 	struct iio_ring_buffer *ring = dev_get_drvdata(dev);
-	struct iio_dev *dev_info = ring->indio_dev;
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = ring->indio_dev;
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	return sprintf(buf, "s%d/16\n", st->chip_info->bits);
 }
 
@@ -238,8 +238,8 @@ static ssize_t max1363_read_single_channel(struct device *dev,
 				   struct device_attribute *attr,
 				   char *buf)
 {
-	struct iio_dev *dev_info = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
 	struct i2c_client *client = st->client;
 	int ret = 0, len = 0;
@@ -247,7 +247,7 @@ static ssize_t max1363_read_single_channel(struct device *dev,
 	char rxbuf[2];
 	long mask;
 
-	mutex_lock(&dev_info->mlock);
+	mutex_lock(&indio_dev->mlock);
 	/*
 	 * If monitor mode is enabled, the method for reading a single
 	 * channel will have to be rather different and has not yet
@@ -259,7 +259,7 @@ static ssize_t max1363_read_single_channel(struct device *dev,
 	}
 
 	/* If ring buffer capture is occurring, query the buffer */
-	if (iio_ring_enabled(dev_info)) {
+	if (iio_ring_enabled(indio_dev)) {
 		mask = max1363_mode_table[this_attr->address].modemask;
 		data = max1363_single_channel_from_ring(mask, st);
 		if (data < 0) {
@@ -300,7 +300,7 @@ static ssize_t max1363_read_single_channel(struct device *dev,
 	len = sprintf(buf, "%u\n", data);
 
 error_ret:
-	mutex_unlock(&dev_info->mlock);
+	mutex_unlock(&indio_dev->mlock);
 	return ret ? ret : len;
 }
 
@@ -337,8 +337,8 @@ static ssize_t max1363_show_scale(struct device *dev,
 				char *buf)
 {
 	/* Driver currently only support internal vref */
-	struct iio_dev *dev_info = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	/* Corresponds to Vref / 2^(bits) */
 
 	if ((1 << (st->chip_info->bits + 1))
@@ -355,8 +355,8 @@ static ssize_t max1363_show_name(struct device *dev,
 				 struct device_attribute *attr,
 				 char *buf)
 {
-	struct iio_dev *dev_info = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	return sprintf(buf, "%s\n", st->client->name);
 }
 
@@ -1012,8 +1012,8 @@ static ssize_t max1363_monitor_show_freq(struct device *dev,
 					struct device_attribute *attr,
 					char *buf)
 {
-	struct iio_dev *dev_info = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	return sprintf(buf, "%d\n", max1363_monitor_speeds[st->monitor_speed]);
 }
 
@@ -1022,8 +1022,8 @@ static ssize_t max1363_monitor_store_freq(struct device *dev,
 					const char *buf,
 					size_t len)
 {
-	struct iio_dev *dev_info = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	int i, ret;
 	unsigned long val;
 	bool found = false;
@@ -1039,9 +1039,9 @@ static ssize_t max1363_monitor_store_freq(struct device *dev,
 	if (!found)
 		return -EINVAL;
 
-	mutex_lock(&dev_info->mlock);
+	mutex_lock(&indio_dev->mlock);
 	st->monitor_speed = i;
-	mutex_unlock(&dev_info->mlock);
+	mutex_unlock(&indio_dev->mlock);
 
 	return 0;
 }
@@ -1058,8 +1058,8 @@ static ssize_t max1363_show_thresh(struct device *dev,
 				char *buf,
 				bool high)
 {
-	struct iio_dev *dev_info = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
 
 	if (high)
@@ -1090,8 +1090,8 @@ static ssize_t max1363_store_thresh_unsigned(struct device *dev,
 					size_t len,
 					bool high)
 {
-	struct iio_dev *dev_info = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
 	unsigned long val;
 	int ret;
@@ -1144,8 +1144,8 @@ static ssize_t max1363_store_thresh_signed(struct device *dev,
 					size_t len,
 					bool high)
 {
-	struct iio_dev *dev_info = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
 	long val;
 	int ret;
@@ -1250,12 +1250,12 @@ static IIO_DEVICE_ATTR_NAMED(in3min2_thresh_low_value,
 			S_IRUGO | S_IWUSR, max1363_show_thresh_low,
 			max1363_store_thresh_low_signed, 7);
 
-static int max1363_int_th(struct iio_dev *dev_info,
+static int max1363_int_th(struct iio_dev *indio_dev,
 			int index,
 			s64 timestamp,
 			int not_test)
 {
-	struct max1363_state *st = dev_info->dev_data;
+	struct max1363_state *st = indio_dev->dev_data;
 
 	st->last_timestamp = timestamp;
 	schedule_work(&st->thresh_work);
@@ -1311,17 +1311,17 @@ static ssize_t max1363_read_interrupt_config(struct device *dev,
 					struct device_attribute *attr,
 					char *buf)
 {
-	struct iio_dev *dev_info = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	struct iio_event_attr *this_attr = to_iio_event_attr(attr);
 	int val;
 
-	mutex_lock(&dev_info->mlock);
+	mutex_lock(&indio_dev->mlock);
 	if (this_attr->mask & 0x8)
 		val = (1 << (this_attr->mask & 0x7)) & st->mask_low;
 	else
 		val = (1 << this_attr->mask) & st->mask_high;
-	mutex_unlock(&dev_info->mlock);
+	mutex_unlock(&indio_dev->mlock);
 
 	return sprintf(buf, "%d\n", !!val);
 }
@@ -1465,8 +1465,8 @@ static ssize_t max1363_write_interrupt_config(struct device *dev,
 					const char *buf,
 					size_t len)
 {
-	struct iio_dev *dev_info = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(dev_info);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
+	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
 	struct iio_event_attr *this_attr = to_iio_event_attr(attr);
 	unsigned long val;
 	int ret;
@@ -1500,10 +1500,10 @@ static ssize_t max1363_write_interrupt_config(struct device *dev,
 	}
 	if (st->monitor_on && !st->mask_high && !st->mask_low)
 		iio_remove_event_from_list(this_attr->listel,
-					&dev_info->interrupts[0]->ev_list);
+					&indio_dev->interrupts[0]->ev_list);
 	if (!st->monitor_on && val)
 		iio_add_event_to_list(this_attr->listel,
-				&dev_info->interrupts[0]->ev_list);
+				&indio_dev->interrupts[0]->ev_list);
 
 	max1363_monitor_mode_update(st, !!(st->mask_high | st->mask_low));
 error_ret:
-- 
1.7.3.4


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

* [PATCH 7/8] staging:iio:max1363 take advantage of new iio_device_allocate private data.
  2011-04-15 17:55 [PATCH 0/8 V2] Jonathan Cameron
                   ` (5 preceding siblings ...)
  2011-04-15 17:55 ` [PATCH 6/8] staging:iio:adc: max1363 dev_info -> indio_dev in naming for consistency Jonathan Cameron
@ 2011-04-15 17:55 ` Jonathan Cameron
  2011-04-15 17:56 ` [PATCH 8/8] staging:iio:documentation make read_size signed to allow for errors Jonathan Cameron
  2011-04-15 17:58 ` [PATCH 0/8 V2] staging:iio:mixed bag of fixes and cleanups Jonathan Cameron
  8 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2011-04-15 17:55 UTC (permalink / raw)
  To: greg; +Cc: jbrenner, linux-iio, Jonathan Cameron

The only fiddly bit in here was ensuring the regulator was available until after
the free had occured.

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
 drivers/staging/iio/adc/max1363.h      |    2 -
 drivers/staging/iio/adc/max1363_core.c |  147 +++++++++++++++-----------------
 drivers/staging/iio/adc/max1363_ring.c |   11 +--
 3 files changed, 74 insertions(+), 86 deletions(-)

diff --git a/drivers/staging/iio/adc/max1363.h b/drivers/staging/iio/adc/max1363.h
index 8f0fe1c..6a8687f 100644
--- a/drivers/staging/iio/adc/max1363.h
+++ b/drivers/staging/iio/adc/max1363.h
@@ -174,7 +174,6 @@ struct max1363_chip_info {
 
 /**
  * struct max1363_state - driver instance specific data
- * @indio_dev:		the industrial I/O device
  * @client:		i2c_client
  * @setupbyte:		cache of current device setup byte
  * @configbyte:		cache of current device config byte
@@ -194,7 +193,6 @@ struct max1363_chip_info {
  * @thresh_work:	bh work structure for event handling
  */
 struct max1363_state {
-	struct iio_dev			*indio_dev;
 	struct i2c_client		*client;
 	u8				setupbyte;
 	u8				configbyte;
diff --git a/drivers/staging/iio/adc/max1363_core.c b/drivers/staging/iio/adc/max1363_core.c
index 4134f68..1037087 100644
--- a/drivers/staging/iio/adc/max1363_core.c
+++ b/drivers/staging/iio/adc/max1363_core.c
@@ -155,8 +155,7 @@ static ssize_t max1363_show_precision_u(struct device *dev,
 				char *buf)
 {
 	struct iio_ring_buffer *ring = dev_get_drvdata(dev);
-	struct iio_dev *indio_dev = ring->indio_dev;
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(ring->indio_dev);
 	return sprintf(buf, "u%d/16\n", st->chip_info->bits);
 }
 
@@ -165,8 +164,7 @@ static ssize_t max1363_show_precision_s(struct device *dev,
 				char *buf)
 {
 	struct iio_ring_buffer *ring = dev_get_drvdata(dev);
-	struct iio_dev *indio_dev = ring->indio_dev;
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(ring->indio_dev);
 	return sprintf(buf, "s%d/16\n", st->chip_info->bits);
 }
 
@@ -239,7 +237,7 @@ static ssize_t max1363_read_single_channel(struct device *dev,
 				   char *buf)
 {
 	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(indio_dev);
 	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
 	struct i2c_client *client = st->client;
 	int ret = 0, len = 0;
@@ -337,8 +335,7 @@ static ssize_t max1363_show_scale(struct device *dev,
 				char *buf)
 {
 	/* Driver currently only support internal vref */
-	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(dev_get_drvdata(dev));
 	/* Corresponds to Vref / 2^(bits) */
 
 	if ((1 << (st->chip_info->bits + 1))
@@ -355,8 +352,7 @@ static ssize_t max1363_show_name(struct device *dev,
 				 struct device_attribute *attr,
 				 char *buf)
 {
-	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(dev_get_drvdata(dev));
 	return sprintf(buf, "%s\n", st->client->name);
 }
 
@@ -1012,8 +1008,7 @@ static ssize_t max1363_monitor_show_freq(struct device *dev,
 					struct device_attribute *attr,
 					char *buf)
 {
-	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(dev_get_drvdata(dev));
 	return sprintf(buf, "%d\n", max1363_monitor_speeds[st->monitor_speed]);
 }
 
@@ -1023,7 +1018,7 @@ static ssize_t max1363_monitor_store_freq(struct device *dev,
 					size_t len)
 {
 	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(indio_dev);
 	int i, ret;
 	unsigned long val;
 	bool found = false;
@@ -1059,7 +1054,7 @@ static ssize_t max1363_show_thresh(struct device *dev,
 				bool high)
 {
 	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(indio_dev);
 	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
 
 	if (high)
@@ -1090,8 +1085,7 @@ static ssize_t max1363_store_thresh_unsigned(struct device *dev,
 					size_t len,
 					bool high)
 {
-	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(dev_get_drvdata(dev));
 	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
 	unsigned long val;
 	int ret;
@@ -1144,8 +1138,7 @@ static ssize_t max1363_store_thresh_signed(struct device *dev,
 					size_t len,
 					bool high)
 {
-	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(dev_get_drvdata(dev));
 	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
 	long val;
 	int ret;
@@ -1255,7 +1248,7 @@ static int max1363_int_th(struct iio_dev *indio_dev,
 			s64 timestamp,
 			int not_test)
 {
-	struct max1363_state *st = indio_dev->dev_data;
+	struct max1363_state *st = iio_priv(indio_dev);
 
 	st->last_timestamp = timestamp;
 	schedule_work(&st->thresh_work);
@@ -1266,41 +1259,42 @@ static void max1363_thresh_handler_bh(struct work_struct *work_s)
 {
 	struct max1363_state *st = container_of(work_s, struct max1363_state,
 						thresh_work);
+	struct iio_dev *indio_dev = iio_priv_to_dev(st);
 	u8 rx;
 	u8 tx[2] = { st->setupbyte,
 		     MAX1363_MON_INT_ENABLE | (st->monitor_speed << 1) | 0xF0 };
 
 	i2c_master_recv(st->client, &rx, 1);
 	if (rx & (1 << 0))
-		iio_push_event(st->indio_dev, 0,
+		iio_push_event(indio_dev, 0,
 			IIO_EVENT_CODE_IN_LOW_THRESH(3),
 			st->last_timestamp);
 	if (rx & (1 << 1))
-		iio_push_event(st->indio_dev, 0,
+		iio_push_event(indio_dev, 0,
 			IIO_EVENT_CODE_IN_HIGH_THRESH(3),
 			st->last_timestamp);
 	if (rx & (1 << 2))
-		iio_push_event(st->indio_dev, 0,
+		iio_push_event(indio_dev, 0,
 			IIO_EVENT_CODE_IN_LOW_THRESH(2),
 			st->last_timestamp);
 	if (rx & (1 << 3))
-		iio_push_event(st->indio_dev, 0,
+		iio_push_event(indio_dev, 0,
 			IIO_EVENT_CODE_IN_HIGH_THRESH(2),
 			st->last_timestamp);
 	if (rx & (1 << 4))
-		iio_push_event(st->indio_dev, 0,
+		iio_push_event(indio_dev, 0,
 			IIO_EVENT_CODE_IN_LOW_THRESH(1),
 			st->last_timestamp);
 	if (rx & (1 << 5))
-		iio_push_event(st->indio_dev, 0,
+		iio_push_event(indio_dev, 0,
 			IIO_EVENT_CODE_IN_HIGH_THRESH(1),
 			st->last_timestamp);
 	if (rx & (1 << 6))
-		iio_push_event(st->indio_dev, 0,
+		iio_push_event(indio_dev, 0,
 			IIO_EVENT_CODE_IN_LOW_THRESH(0),
 			st->last_timestamp);
 	if (rx & (1 << 7))
-		iio_push_event(st->indio_dev, 0,
+		iio_push_event(indio_dev, 0,
 			IIO_EVENT_CODE_IN_HIGH_THRESH(0),
 			st->last_timestamp);
 	enable_irq(st->client->irq);
@@ -1312,7 +1306,7 @@ static ssize_t max1363_read_interrupt_config(struct device *dev,
 					char *buf)
 {
 	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(indio_dev);
 	struct iio_event_attr *this_attr = to_iio_event_attr(attr);
 	int val;
 
@@ -1466,7 +1460,7 @@ static ssize_t max1363_write_interrupt_config(struct device *dev,
 					size_t len)
 {
 	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct max1363_state *st = iio_dev_get_devdata(indio_dev);
+	struct max1363_state *st = iio_priv(indio_dev);
 	struct iio_event_attr *this_attr = to_iio_event_attr(attr);
 	unsigned long val;
 	int ret;
@@ -1474,7 +1468,7 @@ static ssize_t max1363_write_interrupt_config(struct device *dev,
 	ret = strict_strtoul(buf, 10, &val);
 	if (ret)
 		return -EINVAL;
-	mutex_lock(&st->indio_dev->mlock);
+	mutex_lock(&indio_dev->mlock);
 	unifiedmask = st->mask_low | st->mask_high;
 	if (this_attr->mask & 0x08) {
 		/* If we are disabling no need to test */
@@ -1507,7 +1501,7 @@ static ssize_t max1363_write_interrupt_config(struct device *dev,
 
 	max1363_monitor_mode_update(st, !!(st->mask_high | st->mask_low));
 error_ret:
-	mutex_unlock(&st->indio_dev->mlock);
+	mutex_unlock(&indio_dev->mlock);
 
 	return len;
 }
@@ -1687,55 +1681,54 @@ static int __devinit max1363_probe(struct i2c_client *client,
 				   const struct i2c_device_id *id)
 {
 	int ret, i, regdone = 0;
-	struct max1363_state *st = kzalloc(sizeof(*st), GFP_KERNEL);
-	if (st == NULL) {
-		ret = -ENOMEM;
-		goto error_ret;
-	}
-
-	/* this is only used for device removal purposes */
-	i2c_set_clientdata(client, st);
+	struct max1363_state *st;
+	struct iio_dev *indio_dev;
+	struct regulator *reg;
 
-	atomic_set(&st->protect_ring, 0);
-
-	st->chip_info = &max1363_chip_info_tbl[id->driver_data];
-	st->reg = regulator_get(&client->dev, "vcc");
-	if (!IS_ERR(st->reg)) {
-		ret = regulator_enable(st->reg);
+	reg = regulator_get(&client->dev, "vcc");
+	if (!IS_ERR(reg)) {
+		ret = regulator_enable(reg);
 		if (ret)
 			goto error_put_reg;
 	}
-	st->client = client;
 
-	st->indio_dev = iio_allocate_device(0);
-	if (st->indio_dev == NULL) {
+	indio_dev = iio_allocate_device(sizeof(struct max1363_state));
+	if (indio_dev == NULL) {
 		ret = -ENOMEM;
 		goto error_disable_reg;
 	}
+	st = iio_priv(indio_dev);
+	st->reg = reg;
+	/* this is only used for device removal purposes */
+	i2c_set_clientdata(client, indio_dev);
+
+	atomic_set(&st->protect_ring, 0);
+
+	st->chip_info = &max1363_chip_info_tbl[id->driver_data];
+	st->client = client;
 
-	st->indio_dev->available_scan_masks
-		= kzalloc(sizeof(*st->indio_dev->available_scan_masks)*
+	indio_dev->available_scan_masks
+		= kzalloc(sizeof(*indio_dev->available_scan_masks)*
 			  (st->chip_info->num_modes + 1), GFP_KERNEL);
-	if (!st->indio_dev->available_scan_masks) {
+	if (!indio_dev->available_scan_masks) {
 		ret = -ENOMEM;
 		goto error_free_device;
 	}
 
 	for (i = 0; i < st->chip_info->num_modes; i++)
-		st->indio_dev->available_scan_masks[i] =
+		indio_dev->available_scan_masks[i] =
 			max1363_mode_table[st->chip_info->mode_list[i]]
 			.modemask;
 	/* Estabilish that the iio_dev is a child of the i2c device */
-	st->indio_dev->dev.parent = &client->dev;
-	st->indio_dev->attrs = st->chip_info->dev_attrs;
+	indio_dev->dev.parent = &client->dev;
+	indio_dev->attrs = st->chip_info->dev_attrs;
 
 	/* Todo: this shouldn't be here. */
-	st->indio_dev->dev_data = (void *)(st);
-	st->indio_dev->driver_module = THIS_MODULE;
-	st->indio_dev->modes = INDIO_DIRECT_MODE;
+	indio_dev->driver_module = THIS_MODULE;
+	indio_dev->modes = INDIO_DIRECT_MODE;
 	if (st->chip_info->monitor_mode && client->irq) {
-		st->indio_dev->num_interrupt_lines = 1;
-		st->indio_dev->event_attrs
+		indio_dev->num_interrupt_lines = 1;
+		indio_dev->event_attrs
 			= &max1363_event_attribute_group;
 	}
 
@@ -1743,21 +1736,21 @@ static int __devinit max1363_probe(struct i2c_client *client,
 	if (ret)
 		goto error_free_available_scan_masks;
 
-	ret = max1363_register_ring_funcs_and_init(st->indio_dev);
+	ret = max1363_register_ring_funcs_and_init(indio_dev);
 	if (ret)
 		goto error_free_available_scan_masks;
 
-	ret = iio_device_register(st->indio_dev);
+	ret = iio_device_register(indio_dev);
 	if (ret)
 		goto error_cleanup_ring;
 	regdone = 1;
-	ret = iio_ring_buffer_register(st->indio_dev->ring, 0);
+	ret = iio_ring_buffer_register(indio_dev->ring, 0);
 	if (ret)
 		goto error_cleanup_ring;
 
 	if (st->chip_info->monitor_mode && client->irq) {
 		ret = iio_register_interrupt_line(client->irq,
-						st->indio_dev,
+						indio_dev,
 						0,
 						IRQF_TRIGGER_RISING,
 						client->name);
@@ -1769,44 +1762,42 @@ static int __devinit max1363_probe(struct i2c_client *client,
 
 	return 0;
 error_uninit_ring:
-	iio_ring_buffer_unregister(st->indio_dev->ring);
+	iio_ring_buffer_unregister(indio_dev->ring);
 error_cleanup_ring:
-	max1363_ring_cleanup(st->indio_dev);
+	max1363_ring_cleanup(indio_dev);
 error_free_available_scan_masks:
-	kfree(st->indio_dev->available_scan_masks);
+	kfree(indio_dev->available_scan_masks);
 error_free_device:
 	if (!regdone)
-		iio_free_device(st->indio_dev);
+		iio_free_device(indio_dev);
 	else
-		iio_device_unregister(st->indio_dev);
+		iio_device_unregister(indio_dev);
 error_disable_reg:
 	if (!IS_ERR(st->reg))
 		regulator_disable(st->reg);
 error_put_reg:
 	if (!IS_ERR(st->reg))
 		regulator_put(st->reg);
-	kfree(st);
 
-error_ret:
 	return ret;
 }
 
 static int max1363_remove(struct i2c_client *client)
 {
-	struct max1363_state *st = i2c_get_clientdata(client);
-	struct iio_dev *indio_dev = st->indio_dev;
+	struct iio_dev *indio_dev = i2c_get_clientdata(client);
+	struct max1363_state *st = iio_priv(indio_dev);
+	struct regulator *reg = st->reg;
 
 	if (st->chip_info->monitor_mode && client->irq)
-		iio_unregister_interrupt_line(st->indio_dev, 0);
+		iio_unregister_interrupt_line(indio_dev, 0);
 	iio_ring_buffer_unregister(indio_dev->ring);
 	max1363_ring_cleanup(indio_dev);
-	kfree(st->indio_dev->available_scan_masks);
-	iio_device_unregister(indio_dev);
-	if (!IS_ERR(st->reg)) {
-		regulator_disable(st->reg);
-		regulator_put(st->reg);
+	kfree(indio_dev->available_scan_masks);
+	if (!IS_ERR(reg)) {
+		regulator_disable(reg);
+		regulator_put(reg);
 	}
-	kfree(st);
+	iio_device_unregister(indio_dev);
 
 	return 0;
 }
diff --git a/drivers/staging/iio/adc/max1363_ring.c b/drivers/staging/iio/adc/max1363_ring.c
index 96894bd..dbe8c9f 100644
--- a/drivers/staging/iio/adc/max1363_ring.c
+++ b/drivers/staging/iio/adc/max1363_ring.c
@@ -27,10 +27,9 @@
 
 #include "max1363.h"
 
-/* Todo: test this */
 int max1363_single_channel_from_ring(long mask, struct max1363_state *st)
 {
-	struct iio_ring_buffer *ring = st->indio_dev->ring;
+	struct iio_ring_buffer *ring = iio_priv_to_dev(st)->ring;
 	int count = 0, ret;
 	u8 *ring_data;
 	if (!(st->current_mode->modemask & mask)) {
@@ -74,7 +73,7 @@ error_ret:
  **/
 static int max1363_ring_preenable(struct iio_dev *indio_dev)
 {
-	struct max1363_state *st = indio_dev->dev_data;
+	struct max1363_state *st = iio_priv(indio_dev);
 	struct iio_ring_buffer *ring = indio_dev->ring;
 	size_t d_size = 0;
 	unsigned long numvals;
@@ -116,7 +115,7 @@ static int max1363_ring_preenable(struct iio_dev *indio_dev)
  **/
 static void max1363_poll_func_th(struct iio_dev *indio_dev, s64 time)
 {
-	struct max1363_state *st = indio_dev->dev_data;
+	struct max1363_state *st = iio_priv(indio_dev);
 
 	schedule_work(&st->poll_work);
 
@@ -135,7 +134,7 @@ static void max1363_poll_bh_to_ring(struct work_struct *work_s)
 {
 	struct max1363_state *st = container_of(work_s, struct max1363_state,
 						  poll_work);
-	struct iio_dev *indio_dev = st->indio_dev;
+	struct iio_dev *indio_dev = iio_priv_to_dev(st);
 	struct iio_sw_ring_buffer *sw_ring = iio_to_sw_ring(indio_dev->ring);
 	s64 time_ns;
 	__u8 *rxbuf;
@@ -185,7 +184,7 @@ done:
 
 int max1363_register_ring_funcs_and_init(struct iio_dev *indio_dev)
 {
-	struct max1363_state *st = indio_dev->dev_data;
+	struct max1363_state *st = iio_priv(indio_dev);
 	int ret = 0;
 
 	indio_dev->ring = iio_sw_rb_allocate(indio_dev);
-- 
1.7.3.4

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

* [PATCH 8/8] staging:iio:documentation make read_size signed to allow for errors.
  2011-04-15 17:55 [PATCH 0/8 V2] Jonathan Cameron
                   ` (6 preceding siblings ...)
  2011-04-15 17:55 ` [PATCH 7/8] staging:iio:max1363 take advantage of new iio_device_allocate private data Jonathan Cameron
@ 2011-04-15 17:56 ` Jonathan Cameron
  2011-04-15 17:58 ` [PATCH 0/8 V2] staging:iio:mixed bag of fixes and cleanups Jonathan Cameron
  8 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2011-04-15 17:56 UTC (permalink / raw)
  To: greg; +Cc: jbrenner, linux-iio, Jonathan Cameron

Without this all hell breaks loose if you have no data.

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
 drivers/staging/iio/Documentation/generic_buffer.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/iio/Documentation/generic_buffer.c b/drivers/staging/iio/Documentation/generic_buffer.c
index 3cc18ab..eb72e95 100644
--- a/drivers/staging/iio/Documentation/generic_buffer.c
+++ b/drivers/staging/iio/Documentation/generic_buffer.c
@@ -132,7 +132,7 @@ int main(int argc, char **argv)
 
 	int datardytrigger = 1;
 	char *data;
-	size_t read_size;
+	ssize_t read_size;
 	struct iio_event_data dat;
 	int dev_num, trig_num;
 	char *buffer_access, *buffer_event;
-- 
1.7.3.4

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

* Re: [PATCH 0/8 V2] staging:iio:mixed bag of fixes and cleanups.
  2011-04-15 17:55 [PATCH 0/8 V2] Jonathan Cameron
                   ` (7 preceding siblings ...)
  2011-04-15 17:56 ` [PATCH 8/8] staging:iio:documentation make read_size signed to allow for errors Jonathan Cameron
@ 2011-04-15 17:58 ` Jonathan Cameron
  8 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2011-04-15 17:58 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: greg, jbrenner, linux-iio

Gah, sorry about lack of title on the cover letter.

Doh.

There you go Jon, I also mess up patch sets in the silliest ways.
> Hi Greg,
> 
> A poorly ordered (sorry about that) set of fixes combined
> with cleanups suggested by Arnd.  This is a precursor
> to the more intersting (and intrusive) changes to follow.
> 
> As per earlier email this is based on, staging-next
> with:
> 
> [PATCH V4]TAOS 258x: Device Driver
> [PATCH 1/1] IIO: DAC: AD5446 add support for AD5541A devices
> [PATCH 1/1] IIO: DAC: New driver for AD5791/AD5781 High Resolution Voltage Output DACs
> [PATCH 1/3] IIO: GYRO: Add MACRO for gyro quadrature correction
> (and rest of series)
> 
> on top.  You might not have the AD5791 one yet, but Michael
> should send it to you shortly.
> 
> Original message was:
> 
> I should probably have broken these up into more coherent subsets
> and made at least the allocate priv_data one an RFC.
> May do so before sending on to Greg.
> 
> Patches 3, 4 and 6 are direct results of suggestions from Arnd Bergmann.
> Basically it's the easy bits of the discussion before we get onto
> the more 'interesting' ones.
> 
> 1, 2 are things I spotted whilst working on the irq_chip stuff
> Thomas Gleixner suggested.  They are just cleanups of some bizare
> corners. That rewrite of triggers currently requires some
> exports to be added to allow a modular build and I need to chase
> down whether we are simply the first people to have a reasonable
> case for it, or whether there is something more fundamental
> going on.
> 
> The others are bugs / cleanups I came across whilst hammering
> max1363 with the new example code. Some of the timestamp bit
> was pointed out by Michael Hennerich a while back, but turns
> out the driver was broken as well as not obeying the ABI.
> 
> Thanks,
> 
> 
> Jonathan Cameron (8):
>   staging:iio:trigger remove export of iio_trigger_find_by_name, use
>     sysfs_streq for matching
>   staging:iio: iio_trigger_unregister - remove rather strange search
>     for what we already have.
>   staging:iio: replace rip_lots naming with read_first_n
>   staging:iio: Add ability to allocate private data space to
>     iio_allocate_device
>   staging:iio:adc:max1363 fix timestamp handling.
>   staging:iio:adc: max1363 dev_info -> indio_dev in naming for
>     consistency
>   staging:iio:max1363 take advantage of new iio_device_allocate private
>     data.
>   staging:iio:documentation make read_size signed to allow for errors.
> 
>  drivers/staging/iio/Documentation/device.txt       |    2 +-
>  drivers/staging/iio/Documentation/generic_buffer.c |    2 +-
>  drivers/staging/iio/accel/adis16201_core.c         |    2 +-
>  drivers/staging/iio/accel/adis16203_core.c         |    2 +-
>  drivers/staging/iio/accel/adis16204_core.c         |    2 +-
>  drivers/staging/iio/accel/adis16209_core.c         |    2 +-
>  drivers/staging/iio/accel/adis16220_core.c         |    2 +-
>  drivers/staging/iio/accel/adis16240_core.c         |    2 +-
>  drivers/staging/iio/accel/kxsd9.c                  |    2 +-
>  drivers/staging/iio/accel/lis3l02dq_core.c         |    2 +-
>  drivers/staging/iio/accel/sca3000_core.c           |    2 +-
>  drivers/staging/iio/accel/sca3000_ring.c           |    8 +-
>  drivers/staging/iio/adc/ad7150.c                   |    2 +-
>  drivers/staging/iio/adc/ad7152.c                   |    2 +-
>  drivers/staging/iio/adc/ad7291.c                   |    2 +-
>  drivers/staging/iio/adc/ad7298_core.c              |    2 +-
>  drivers/staging/iio/adc/ad7314.c                   |    2 +-
>  drivers/staging/iio/adc/ad7476_core.c              |    2 +-
>  drivers/staging/iio/adc/ad7606_core.c              |    2 +-
>  drivers/staging/iio/adc/ad7745.c                   |    2 +-
>  drivers/staging/iio/adc/ad7780.c                   |    2 +-
>  drivers/staging/iio/adc/ad7816.c                   |    2 +-
>  drivers/staging/iio/adc/ad7887_core.c              |    2 +-
>  drivers/staging/iio/adc/ad799x_core.c              |    2 +-
>  drivers/staging/iio/adc/adt7310.c                  |    2 +-
>  drivers/staging/iio/adc/adt7410.c                  |    2 +-
>  drivers/staging/iio/adc/adt75.c                    |    2 +-
>  drivers/staging/iio/adc/max1363.h                  |    2 -
>  drivers/staging/iio/adc/max1363_core.c             |  189 ++++++++++----------
>  drivers/staging/iio/adc/max1363_ring.c             |   21 ++-
>  drivers/staging/iio/addac/adt7316.c                |    2 +-
>  drivers/staging/iio/dac/ad5446.c                   |    2 +-
>  drivers/staging/iio/dac/ad5504.c                   |    2 +-
>  drivers/staging/iio/dac/ad5624r_spi.c              |    2 +-
>  drivers/staging/iio/dac/ad5791.c                   |    2 +-
>  drivers/staging/iio/dac/max517.c                   |    2 +-
>  drivers/staging/iio/dds/ad5930.c                   |    2 +-
>  drivers/staging/iio/dds/ad9832.c                   |    2 +-
>  drivers/staging/iio/dds/ad9834.c                   |    2 +-
>  drivers/staging/iio/dds/ad9850.c                   |    2 +-
>  drivers/staging/iio/dds/ad9852.c                   |    2 +-
>  drivers/staging/iio/dds/ad9910.c                   |    2 +-
>  drivers/staging/iio/dds/ad9951.c                   |    2 +-
>  drivers/staging/iio/gyro/adis16060_core.c          |    2 +-
>  drivers/staging/iio/gyro/adis16080_core.c          |    2 +-
>  drivers/staging/iio/gyro/adis16130_core.c          |    2 +-
>  drivers/staging/iio/gyro/adis16260_core.c          |    2 +-
>  drivers/staging/iio/gyro/adxrs450_core.c           |    2 +-
>  drivers/staging/iio/iio.h                          |   17 ++-
>  drivers/staging/iio/imu/adis16300_core.c           |    2 +-
>  drivers/staging/iio/imu/adis16350_core.c           |    2 +-
>  drivers/staging/iio/imu/adis16400_core.c           |    2 +-
>  drivers/staging/iio/industrialio-core.c            |   15 ++-
>  drivers/staging/iio/industrialio-ring.c            |   12 +-
>  drivers/staging/iio/industrialio-trigger.c         |   27 +--
>  drivers/staging/iio/kfifo_buf.c                    |    8 +-
>  drivers/staging/iio/kfifo_buf.h                    |   10 +-
>  drivers/staging/iio/light/isl29018.c               |    2 +-
>  drivers/staging/iio/light/tsl2563.c                |    2 +-
>  drivers/staging/iio/light/tsl2583.c                |    2 +-
>  drivers/staging/iio/magnetometer/ak8975.c          |    2 +-
>  drivers/staging/iio/magnetometer/hmc5843.c         |    2 +-
>  drivers/staging/iio/meter/ade7753.c                |    2 +-
>  drivers/staging/iio/meter/ade7754.c                |    2 +-
>  drivers/staging/iio/meter/ade7758_core.c           |    2 +-
>  drivers/staging/iio/meter/ade7759.c                |    2 +-
>  drivers/staging/iio/meter/ade7854.c                |    2 +-
>  drivers/staging/iio/resolver/ad2s120x.c            |    2 +-
>  drivers/staging/iio/resolver/ad2s1210.c            |    2 +-
>  drivers/staging/iio/resolver/ad2s90.c              |    2 +-
>  drivers/staging/iio/ring_generic.h                 |   10 +-
>  drivers/staging/iio/ring_sw.c                      |   13 +-
>  drivers/staging/iio/ring_sw.h                      |   14 +-
>  drivers/staging/iio/trigger.h                      |    7 -
>  74 files changed, 242 insertions(+), 231 deletions(-)
> 

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

end of thread, other threads:[~2011-04-15 17:58 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-15 17:55 [PATCH 0/8 V2] Jonathan Cameron
2011-04-15 17:55 ` [PATCH 1/8] staging:iio:trigger remove export of iio_trigger_find_by_name, use sysfs_streq for matching Jonathan Cameron
2011-04-15 17:55 ` [PATCH 2/8] staging:iio: iio_trigger_unregister - remove rather strange search for what we already have Jonathan Cameron
2011-04-15 17:55 ` [PATCH 3/8] staging:iio: replace rip_lots naming with read_first_n Jonathan Cameron
2011-04-15 17:55 ` [PATCH 4/8] staging:iio: Add ability to allocate private data space to iio_allocate_device Jonathan Cameron
2011-04-15 17:55 ` [PATCH 5/8] staging:iio:adc:max1363 fix timestamp handling Jonathan Cameron
2011-04-15 17:55 ` [PATCH 6/8] staging:iio:adc: max1363 dev_info -> indio_dev in naming for consistency Jonathan Cameron
2011-04-15 17:55 ` [PATCH 7/8] staging:iio:max1363 take advantage of new iio_device_allocate private data Jonathan Cameron
2011-04-15 17:56 ` [PATCH 8/8] staging:iio:documentation make read_size signed to allow for errors Jonathan Cameron
2011-04-15 17:58 ` [PATCH 0/8 V2] staging:iio:mixed bag of fixes and cleanups Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox