Browse Source

staging:iio: Add ability to allocate private data space to iio_allocate_device

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Jonathan Cameron 14 years ago
parent
commit
6f7c8ee585
62 changed files with 89 additions and 63 deletions
  1. 1 1
      drivers/staging/iio/Documentation/device.txt
  2. 1 1
      drivers/staging/iio/accel/adis16201_core.c
  3. 1 1
      drivers/staging/iio/accel/adis16203_core.c
  4. 1 1
      drivers/staging/iio/accel/adis16204_core.c
  5. 1 1
      drivers/staging/iio/accel/adis16209_core.c
  6. 1 1
      drivers/staging/iio/accel/adis16220_core.c
  7. 1 1
      drivers/staging/iio/accel/adis16240_core.c
  8. 1 1
      drivers/staging/iio/accel/kxsd9.c
  9. 1 1
      drivers/staging/iio/accel/lis3l02dq_core.c
  10. 1 1
      drivers/staging/iio/accel/sca3000_core.c
  11. 1 1
      drivers/staging/iio/adc/ad7150.c
  12. 1 1
      drivers/staging/iio/adc/ad7152.c
  13. 1 1
      drivers/staging/iio/adc/ad7291.c
  14. 1 1
      drivers/staging/iio/adc/ad7298_core.c
  15. 1 1
      drivers/staging/iio/adc/ad7314.c
  16. 1 1
      drivers/staging/iio/adc/ad7476_core.c
  17. 1 1
      drivers/staging/iio/adc/ad7606_core.c
  18. 1 1
      drivers/staging/iio/adc/ad7745.c
  19. 1 1
      drivers/staging/iio/adc/ad7780.c
  20. 1 1
      drivers/staging/iio/adc/ad7816.c
  21. 1 1
      drivers/staging/iio/adc/ad7887_core.c
  22. 1 1
      drivers/staging/iio/adc/ad799x_core.c
  23. 1 1
      drivers/staging/iio/adc/adt7310.c
  24. 1 1
      drivers/staging/iio/adc/adt7410.c
  25. 1 1
      drivers/staging/iio/adc/adt75.c
  26. 1 1
      drivers/staging/iio/adc/max1363_core.c
  27. 1 1
      drivers/staging/iio/addac/adt7316.c
  28. 1 1
      drivers/staging/iio/dac/ad5446.c
  29. 1 1
      drivers/staging/iio/dac/ad5504.c
  30. 1 1
      drivers/staging/iio/dac/ad5624r_spi.c
  31. 1 1
      drivers/staging/iio/dac/ad5791.c
  32. 1 1
      drivers/staging/iio/dac/max517.c
  33. 1 1
      drivers/staging/iio/dds/ad5930.c
  34. 1 1
      drivers/staging/iio/dds/ad9832.c
  35. 1 1
      drivers/staging/iio/dds/ad9834.c
  36. 1 1
      drivers/staging/iio/dds/ad9850.c
  37. 1 1
      drivers/staging/iio/dds/ad9852.c
  38. 1 1
      drivers/staging/iio/dds/ad9910.c
  39. 1 1
      drivers/staging/iio/dds/ad9951.c
  40. 1 1
      drivers/staging/iio/gyro/adis16060_core.c
  41. 1 1
      drivers/staging/iio/gyro/adis16080_core.c
  42. 1 1
      drivers/staging/iio/gyro/adis16130_core.c
  43. 1 1
      drivers/staging/iio/gyro/adis16260_core.c
  44. 1 1
      drivers/staging/iio/gyro/adxrs450_core.c
  45. 16 1
      drivers/staging/iio/iio.h
  46. 1 1
      drivers/staging/iio/imu/adis16300_core.c
  47. 1 1
      drivers/staging/iio/imu/adis16350_core.c
  48. 1 1
      drivers/staging/iio/imu/adis16400_core.c
  49. 13 2
      drivers/staging/iio/industrialio-core.c
  50. 1 1
      drivers/staging/iio/light/isl29018.c
  51. 1 1
      drivers/staging/iio/light/tsl2563.c
  52. 1 1
      drivers/staging/iio/light/tsl2583.c
  53. 1 1
      drivers/staging/iio/magnetometer/ak8975.c
  54. 1 1
      drivers/staging/iio/magnetometer/hmc5843.c
  55. 1 1
      drivers/staging/iio/meter/ade7753.c
  56. 1 1
      drivers/staging/iio/meter/ade7754.c
  57. 1 1
      drivers/staging/iio/meter/ade7758_core.c
  58. 1 1
      drivers/staging/iio/meter/ade7759.c
  59. 1 1
      drivers/staging/iio/meter/ade7854.c
  60. 1 1
      drivers/staging/iio/resolver/ad2s120x.c
  61. 1 1
      drivers/staging/iio/resolver/ad2s1210.c
  62. 1 1
      drivers/staging/iio/resolver/ad2s90.c

+ 1 - 1
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:
 

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 16 - 1
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

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 13 - 2
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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");

+ 1 - 1
drivers/staging/iio/magnetometer/ak8975.c

@@ -526,7 +526,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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;