From 6f7c8ee585e9db54cb29af1bdb93f29837824933 Mon Sep 17 00:00:00 2001 From: Jonathan Cameron Date: Fri, 15 Apr 2011 18:55:56 +0100 Subject: [PATCH] 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 Acked-by: Arnd Bergmann Signed-off-by: Greg Kroah-Hartman --- 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 69d9570f29fc..c81e5172aec8 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 79b785a0013a..df1101cefc66 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 b57f19087a93..e5a2a477b113 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 cc15e40726fc..97376aa2fc54 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 e4ac956208a6..d2fb9901dd64 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 1c1e98aee2d9..0689e412ba87 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 d11d164207ee..31f64ae3bb04 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 79f57950ebeb..431aa0f886f1 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 34f16a7cc3ae..e11388ab457f 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 5b06dea6af25..6abf2b7e3067 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 8555766109d8..5a2991ac47ed 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 fa7f84062307..163c30767b06 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 34041a72aa52..976ae7f77106 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 2e9154e7d887..8b3a4904682a 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 8c17b1fe9026..dffbec13632a 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 d263904b3d1d..b16744cc5495 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 4c700f07fb83..7ef9a6f48073 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 ab7ef8450ae2..1373d23996be 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 0fd994fdee46..ab23c5cfdc22 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 ad7415a6b8d9..9e30d351cf4c 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 5d85efab658c..11c9fcfc3d03 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 f04e642e7272..09d109ffb39f 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 771a409ee94c..7e66c42a712c 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 c345f27ec7fc..7cc3feb0a172 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 aff4d31eb89c..f247c4c789f6 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 de83c3b37a2d..1703b2a74ace 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 9b25f1205449..d01cb4c2adbc 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 102bcc4e08eb..fd4fa5497ced 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 153c36e7f70e..28ace3011db5 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 a945b18ff843..cfb5828a377f 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 545f1a6a2704..c4a258dfa776 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 7071f713604a..3eb48b65c15e 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 f80039c5d539..5d98f93ca84e 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 3e8491f60cfe..9c6114f4976b 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 eb1a681874f9..da5e302cf0fd 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 b259bfeaf5aa..34bc0e6950d2 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 594fb6a94331..899a72acd8f6 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 e8fb75cb66ec..fddb6e7c7edc 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 57eddf6d4713..a9e56c6e0fa7 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 ae53e71d1c2f..e1f8a708c630 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 ef9e304a226d..26af63fd7e34 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 70e2831f8fb8..02fbe074824e 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 69a29ec93101..26e3af473446 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 d70bf684b7ac..dcd88ff81a90 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 7127f26f8d26..80ef2cfe4bb0 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 7ad13f4d3d74..0734d4a70697 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 cf7176bc766b..208192470ece 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 540bde69cc3b..a0b53ee887f0 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 1795ee1e8207..3a824146455e 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 f919cc1d35e1..dfbc423a75e4 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 dadae7527d5c..35d94c6d8d8f 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 1740843ee12a..b87ccd5a2f50 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 d71904a83706..2226b88882d8 100644 --- a/drivers/staging/iio/magnetometer/ak8975.c +++ b/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; diff --git a/drivers/staging/iio/magnetometer/hmc5843.c b/drivers/staging/iio/magnetometer/hmc5843.c index 51689177e00e..d0676e99f157 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 8b86d82c3b32..d62d9e2f0d2c 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 4272818e7dc4..2d0b8cc05992 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 b7634cb7aa4f..8d37ef7eb957 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 a9d3203b2e1c..42b3b27520ce 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 866e585451f0..d3f1df71c7f7 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 8f497a23976c..e0237ff81054 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 c12f64cc40df..dc7cae80cf3a 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 4143535242d9..e300adeefa8b 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; -- 2.34.1