diff options
author | Jonathan Cameron <jic23@cam.ac.uk> | 2011-05-18 14:42:37 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-05-19 16:15:05 -0700 |
commit | 6fe8135fccd66aedcc55ded70824342587fd2499 (patch) | |
tree | 3afc7acfd0edc052ba93241761e935af9a3b6ebc /drivers/staging/iio/accel | |
parent | a3f02370c9fa6d85fbee2c11649ebc9c84bae919 (diff) |
staging:iio: implement an iio_info structure to take some of the constant elements out of iio_dev.
This was suggested by Arnd Bergmann, Other elements may well
move in here in future, but it definitely makes sense for these.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/accel')
-rw-r--r-- | drivers/staging/iio/accel/adis16201_core.c | 13 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16203_core.c | 12 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16204_core.c | 12 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16209_core.c | 12 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16220_core.c | 7 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16240_core.c | 12 | ||||
-rw-r--r-- | drivers/staging/iio/accel/kxsd9.c | 12 | ||||
-rw-r--r-- | drivers/staging/iio/accel/lis3l02dq_core.c | 23 | ||||
-rw-r--r-- | drivers/staging/iio/accel/sca3000_core.c | 33 |
9 files changed, 90 insertions, 46 deletions
diff --git a/drivers/staging/iio/accel/adis16201_core.c b/drivers/staging/iio/accel/adis16201_core.c index 59b6ac2ca545..e4c49f00d132 100644 --- a/drivers/staging/iio/accel/adis16201_core.c +++ b/drivers/staging/iio/accel/adis16201_core.c @@ -457,6 +457,13 @@ static const struct attribute_group adis16201_attribute_group = { .attrs = adis16201_attributes, }; +static const struct iio_info adis16201_info = { + .attrs = &adis16201_attribute_group, + .read_raw = &adis16201_read_raw, + .write_raw = &adis16201_write_raw, + .driver_module = THIS_MODULE, +}; + static int __devinit adis16201_probe(struct spi_device *spi) { int ret, regdone = 0; @@ -490,13 +497,11 @@ static int __devinit adis16201_probe(struct spi_device *spi) st->indio_dev->name = spi->dev.driver->name; st->indio_dev->dev.parent = &spi->dev; - st->indio_dev->attrs = &adis16201_attribute_group; + st->indio_dev->info = &adis16201_info; + st->indio_dev->channels = adis16201_channels; st->indio_dev->num_channels = ARRAY_SIZE(adis16201_channels); - st->indio_dev->read_raw = &adis16201_read_raw; - st->indio_dev->write_raw = &adis16201_write_raw; st->indio_dev->dev_data = (void *)(st); - st->indio_dev->driver_module = THIS_MODULE; st->indio_dev->modes = INDIO_DIRECT_MODE; ret = adis16201_configure_ring(st->indio_dev); diff --git a/drivers/staging/iio/accel/adis16203_core.c b/drivers/staging/iio/accel/adis16203_core.c index 1694a0c9929e..36be4d5dc614 100644 --- a/drivers/staging/iio/accel/adis16203_core.c +++ b/drivers/staging/iio/accel/adis16203_core.c @@ -408,6 +408,13 @@ static const struct attribute_group adis16203_attribute_group = { .attrs = adis16203_attributes, }; +static const struct iio_info adis16203_info = { + .attrs = &adis16203_attribute_group, + .read_raw = &adis16203_read_raw, + .write_raw = &adis16203_write_raw, + .driver_module = THIS_MODULE, +}; + static int __devinit adis16203_probe(struct spi_device *spi) { int ret, regdone = 0; @@ -440,13 +447,10 @@ static int __devinit adis16203_probe(struct spi_device *spi) } st->indio_dev->name = spi->dev.driver->name; st->indio_dev->dev.parent = &spi->dev; - st->indio_dev->attrs = &adis16203_attribute_group; st->indio_dev->channels = adis16203_channels; st->indio_dev->num_channels = ARRAY_SIZE(adis16203_channels); - st->indio_dev->read_raw = &adis16203_read_raw; - st->indio_dev->write_raw = &adis16203_write_raw; + st->indio_dev->info = &adis16203_info; st->indio_dev->dev_data = (void *)(st); - st->indio_dev->driver_module = THIS_MODULE; st->indio_dev->modes = INDIO_DIRECT_MODE; ret = adis16203_configure_ring(st->indio_dev); diff --git a/drivers/staging/iio/accel/adis16204_core.c b/drivers/staging/iio/accel/adis16204_core.c index 4e4944cf106e..16806704bf48 100644 --- a/drivers/staging/iio/accel/adis16204_core.c +++ b/drivers/staging/iio/accel/adis16204_core.c @@ -473,6 +473,13 @@ static const struct attribute_group adis16204_attribute_group = { .attrs = adis16204_attributes, }; +static const struct iio_info adis16204_info = { + .attrs = &adis16204_attribute_group, + .read_raw = &adis16204_read_raw, + .write_raw = &adis16204_write_raw, + .driver_module = THIS_MODULE, +}; + static int __devinit adis16204_probe(struct spi_device *spi) { int ret, regdone = 0; @@ -506,13 +513,10 @@ static int __devinit adis16204_probe(struct spi_device *spi) st->indio_dev->name = spi->dev.driver->name; st->indio_dev->dev.parent = &spi->dev; - st->indio_dev->attrs = &adis16204_attribute_group; + st->indio_dev->info = &adis16204_info; st->indio_dev->channels = adis16204_channels; st->indio_dev->num_channels = ARRAY_SIZE(adis16204_channels); - st->indio_dev->read_raw = &adis16204_read_raw; - st->indio_dev->write_raw = &adis16204_write_raw; st->indio_dev->dev_data = (void *)(st); - st->indio_dev->driver_module = THIS_MODULE; st->indio_dev->modes = INDIO_DIRECT_MODE; ret = adis16204_configure_ring(st->indio_dev); diff --git a/drivers/staging/iio/accel/adis16209_core.c b/drivers/staging/iio/accel/adis16209_core.c index d48babe97977..c423cc960254 100644 --- a/drivers/staging/iio/accel/adis16209_core.c +++ b/drivers/staging/iio/accel/adis16209_core.c @@ -456,6 +456,13 @@ static const struct attribute_group adis16209_attribute_group = { .attrs = adis16209_attributes, }; +static const struct iio_info adis16209_info = { + .attrs = &adis16209_attribute_group, + .read_raw = &adis16209_read_raw, + .write_raw = &adis16209_write_raw, + .driver_module = THIS_MODULE, +}; + static int __devinit adis16209_probe(struct spi_device *spi) { int ret, regdone = 0; @@ -489,13 +496,10 @@ static int __devinit adis16209_probe(struct spi_device *spi) st->indio_dev->name = spi->dev.driver->name; st->indio_dev->dev.parent = &spi->dev; - st->indio_dev->attrs = &adis16209_attribute_group; + st->indio_dev->info = &adis16209_info; st->indio_dev->channels = adis16209_channels; st->indio_dev->num_channels = ARRAY_SIZE(adis16209_channels); - st->indio_dev->read_raw = &adis16209_read_raw; - st->indio_dev->write_raw = &adis16209_write_raw; st->indio_dev->dev_data = (void *)(st); - st->indio_dev->driver_module = THIS_MODULE; st->indio_dev->modes = INDIO_DIRECT_MODE; ret = adis16209_configure_ring(st->indio_dev); diff --git a/drivers/staging/iio/accel/adis16220_core.c b/drivers/staging/iio/accel/adis16220_core.c index 7af48b8cb073..605a75ea3996 100644 --- a/drivers/staging/iio/accel/adis16220_core.c +++ b/drivers/staging/iio/accel/adis16220_core.c @@ -544,6 +544,10 @@ static const struct attribute_group adis16220_attribute_group = { .attrs = adis16220_attributes, }; +static const struct iio_info adis16220_info = { + .attrs = &adis16220_attribute_group, + .driver_module = THIS_MODULE, +}; static int __devinit adis16220_probe(struct spi_device *spi) { int ret, regdone = 0; @@ -577,9 +581,8 @@ static int __devinit adis16220_probe(struct spi_device *spi) st->indio_dev->name = spi->dev.driver->name; st->indio_dev->dev.parent = &spi->dev; - st->indio_dev->attrs = &adis16220_attribute_group; + st->indio_dev->info = &adis16220_info; st->indio_dev->dev_data = (void *)(st); - st->indio_dev->driver_module = THIS_MODULE; st->indio_dev->modes = INDIO_DIRECT_MODE; ret = iio_device_register(st->indio_dev); diff --git a/drivers/staging/iio/accel/adis16240_core.c b/drivers/staging/iio/accel/adis16240_core.c index 537e0f22743e..ac6038557b0d 100644 --- a/drivers/staging/iio/accel/adis16240_core.c +++ b/drivers/staging/iio/accel/adis16240_core.c @@ -507,6 +507,13 @@ static const struct attribute_group adis16240_attribute_group = { .attrs = adis16240_attributes, }; +static const struct iio_info adis16240_info = { + .attrs = &adis16240_attribute_group, + .read_raw = &adis16240_read_raw, + .write_raw = &adis16240_write_raw, + .driver_module = THIS_MODULE, +}; + static int __devinit adis16240_probe(struct spi_device *spi) { int ret, regdone = 0; @@ -540,13 +547,10 @@ static int __devinit adis16240_probe(struct spi_device *spi) st->indio_dev->name = spi->dev.driver->name; st->indio_dev->dev.parent = &spi->dev; - st->indio_dev->attrs = &adis16240_attribute_group; + st->indio_dev->info = &adis16240_info; st->indio_dev->channels = adis16240_channels; st->indio_dev->num_channels = ARRAY_SIZE(adis16240_channels); - st->indio_dev->read_raw = &adis16240_read_raw; - st->indio_dev->write_raw = &adis16240_write_raw; st->indio_dev->dev_data = (void *)(st); - st->indio_dev->driver_module = THIS_MODULE; st->indio_dev->modes = INDIO_DIRECT_MODE; ret = adis16240_configure_ring(st->indio_dev); diff --git a/drivers/staging/iio/accel/kxsd9.c b/drivers/staging/iio/accel/kxsd9.c index 431aa0f886f1..973156e75773 100644 --- a/drivers/staging/iio/accel/kxsd9.c +++ b/drivers/staging/iio/accel/kxsd9.c @@ -301,6 +301,11 @@ error_ret: }; +static const struct iio_info kxsd9_info = { + .attrs = &kxsd9_attribute_group, + .driver_module = THIS_MODULE, +}; + static int __devinit kxsd9_probe(struct spi_device *spi) { @@ -335,13 +340,8 @@ static int __devinit kxsd9_probe(struct spi_device *spi) goto error_free_tx; } st->indio_dev->dev.parent = &spi->dev; - /* for now */ - st->indio_dev->num_interrupt_lines = 0; - st->indio_dev->event_attrs = NULL; - - st->indio_dev->attrs = &kxsd9_attribute_group; + st->indio_dev->info = &kxsd9_info; st->indio_dev->dev_data = (void *)(st); - st->indio_dev->driver_module = THIS_MODULE; st->indio_dev->modes = INDIO_DIRECT_MODE; ret = iio_device_register(st->indio_dev); diff --git a/drivers/staging/iio/accel/lis3l02dq_core.c b/drivers/staging/iio/accel/lis3l02dq_core.c index 942139a02ed7..ba5bc679204f 100644 --- a/drivers/staging/iio/accel/lis3l02dq_core.c +++ b/drivers/staging/iio/accel/lis3l02dq_core.c @@ -651,6 +651,18 @@ static const struct attribute_group lis3l02dq_attribute_group = { .attrs = lis3l02dq_attributes, }; +static const struct iio_info lis3l02dq_info = { + .num_interrupt_lines = 1, + .read_raw = &lis3l02dq_read_raw, + .write_raw = &lis3l02dq_write_raw, + .read_event_value = &lis3l02dq_read_thresh, + .write_event_value = &lis3l02dq_write_thresh, + .write_event_config = &lis3l02dq_write_event_config, + .read_event_config = &lis3l02dq_read_event_config, + .driver_module = THIS_MODULE, + .attrs = &lis3l02dq_attribute_group, +}; + static int __devinit lis3l02dq_probe(struct spi_device *spi) { int ret, regdone = 0; @@ -670,17 +682,10 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi) mutex_init(&st->buf_lock); indio_dev->name = spi->dev.driver->name; indio_dev->dev.parent = &spi->dev; - indio_dev->num_interrupt_lines = 1; + indio_dev->info = &lis3l02dq_info; indio_dev->channels = lis3l02dq_channels; indio_dev->num_channels = ARRAY_SIZE(lis3l02dq_channels); - indio_dev->read_raw = &lis3l02dq_read_raw; - indio_dev->write_raw = &lis3l02dq_write_raw; - indio_dev->read_event_value = &lis3l02dq_read_thresh; - indio_dev->write_event_value = &lis3l02dq_write_thresh; - indio_dev->write_event_config = &lis3l02dq_write_event_config; - indio_dev->read_event_config = &lis3l02dq_read_event_config; - indio_dev->attrs = &lis3l02dq_attribute_group; - indio_dev->driver_module = THIS_MODULE; + indio_dev->modes = INDIO_DIRECT_MODE; ret = lis3l02dq_configure_ring(indio_dev); diff --git a/drivers/staging/iio/accel/sca3000_core.c b/drivers/staging/iio/accel/sca3000_core.c index 5de07fd76328..f213b8698eb2 100644 --- a/drivers/staging/iio/accel/sca3000_core.c +++ b/drivers/staging/iio/accel/sca3000_core.c @@ -1100,6 +1100,28 @@ error_ret: return ret; } +static const struct iio_info sca3000_info = { + .attrs = &sca3000_attribute_group, + .read_raw = &sca3000_read_raw, + .num_interrupt_lines = 1, + .event_attrs = &sca3000_event_attribute_group, + .read_event_value = &sca3000_read_thresh, + .write_event_value = &sca3000_write_thresh, + .read_event_config = &sca3000_read_event_config, + .write_event_config = &sca3000_write_event_config, + .driver_module = THIS_MODULE, +}; + +static const struct iio_info sca3000_info_with_temp = { + .attrs = &sca3000_attribute_group_with_temp, + .read_raw = &sca3000_read_raw, + .read_event_value = &sca3000_read_thresh, + .write_event_value = &sca3000_write_thresh, + .read_event_config = &sca3000_read_event_config, + .write_event_config = &sca3000_write_event_config, + .driver_module = THIS_MODULE, +}; + static int __devinit sca3000_probe(struct spi_device *spi) { int ret, regdone = 0; @@ -1124,20 +1146,13 @@ static int __devinit sca3000_probe(struct spi_device *spi) } st->indio_dev->dev.parent = &spi->dev; st->indio_dev->name = spi_get_device_id(spi)->name; - st->indio_dev->num_interrupt_lines = 1; - st->indio_dev->event_attrs = &sca3000_event_attribute_group; if (st->info->temp_output) - st->indio_dev->attrs = &sca3000_attribute_group_with_temp; + st->indio_dev->info = &sca3000_info_with_temp; else { - st->indio_dev->attrs = &sca3000_attribute_group; + st->indio_dev->info = &sca3000_info; st->indio_dev->channels = sca3000_channels; st->indio_dev->num_channels = ARRAY_SIZE(sca3000_channels); } - st->indio_dev->read_raw = &sca3000_read_raw; - st->indio_dev->read_event_value = &sca3000_read_thresh; - st->indio_dev->write_event_value = &sca3000_write_thresh; - st->indio_dev->read_event_config = &sca3000_read_event_config; - st->indio_dev->write_event_config = &sca3000_write_event_config; st->indio_dev->dev_data = (void *)(st); st->indio_dev->modes = INDIO_DIRECT_MODE; |