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/dac | |
parent | a3f02370c9fa6d85fbee2c11649ebc9c84bae919 (diff) | |
download | op-kernel-dev-6fe8135fccd66aedcc55ded70824342587fd2499.zip op-kernel-dev-6fe8135fccd66aedcc55ded70824342587fd2499.tar.gz |
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/dac')
-rw-r--r-- | drivers/staging/iio/dac/ad5446.c | 8 | ||||
-rw-r--r-- | drivers/staging/iio/dac/ad5504.c | 24 | ||||
-rw-r--r-- | drivers/staging/iio/dac/ad5624r_spi.c | 8 | ||||
-rw-r--r-- | drivers/staging/iio/dac/ad5791.c | 8 | ||||
-rw-r--r-- | drivers/staging/iio/dac/max517.c | 15 |
5 files changed, 48 insertions, 15 deletions
diff --git a/drivers/staging/iio/dac/ad5446.c b/drivers/staging/iio/dac/ad5446.c index 22646a6..86cb08c 100644 --- a/drivers/staging/iio/dac/ad5446.c +++ b/drivers/staging/iio/dac/ad5446.c @@ -334,6 +334,11 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { }, }; +static const struct iio_info ad5446_info = { + .attrs = &ad5446_attribute_group, + .driver_module = THIS_MODULE, +}; + static int __devinit ad5446_probe(struct spi_device *spi) { struct ad5446_state *st; @@ -370,9 +375,8 @@ static int __devinit ad5446_probe(struct spi_device *spi) /* Estabilish that the iio_dev is a child of the spi device */ st->indio_dev->dev.parent = &spi->dev; st->indio_dev->name = spi_get_device_id(spi)->name; - st->indio_dev->attrs = &ad5446_attribute_group; + st->indio_dev->info = &ad5446_info; st->indio_dev->dev_data = (void *)(st); - st->indio_dev->driver_module = THIS_MODULE; st->indio_dev->modes = INDIO_DIRECT_MODE; /* Setup default message */ diff --git a/drivers/staging/iio/dac/ad5504.c b/drivers/staging/iio/dac/ad5504.c index 351a9d3..ed029cd 100644 --- a/drivers/staging/iio/dac/ad5504.c +++ b/drivers/staging/iio/dac/ad5504.c @@ -260,6 +260,20 @@ static irqreturn_t ad5504_event_handler(int irq, void *private) return IRQ_HANDLED; } +static const struct iio_info ad5504_info = { + .attrs = &ad5504_attribute_group, + .num_interrupt_lines = 1, + .event_attrs = &ad5504_ev_attribute_group, + .driver_module = THIS_MODULE, +}; + +static const struct iio_info ad5501_info = { + .attrs = &ad5501_attribute_group, + .num_interrupt_lines = 1, + .event_attrs = &ad5504_ev_attribute_group, + .driver_module = THIS_MODULE, +}; + static int __devinit ad5504_probe(struct spi_device *spi) { struct ad5504_platform_data *pdata = spi->dev.platform_data; @@ -298,14 +312,12 @@ static int __devinit ad5504_probe(struct spi_device *spi) } st->indio_dev->dev.parent = &spi->dev; st->indio_dev->name = spi_get_device_id(st->spi)->name; - st->indio_dev->attrs = spi_get_device_id(st->spi)->driver_data - == ID_AD5501 ? &ad5501_attribute_group : - &ad5504_attribute_group; + if (spi_get_device_id(st->spi)->driver_data == ID_AD5501) + st->indio_dev->info = &ad5501_info; + else + st->indio_dev->info = &ad5504_info; st->indio_dev->dev_data = (void *)(st); - st->indio_dev->driver_module = THIS_MODULE; st->indio_dev->modes = INDIO_DIRECT_MODE; - st->indio_dev->num_interrupt_lines = 1; - st->indio_dev->event_attrs = &ad5504_ev_attribute_group, ret = iio_device_register(st->indio_dev); if (ret) diff --git a/drivers/staging/iio/dac/ad5624r_spi.c b/drivers/staging/iio/dac/ad5624r_spi.c index b0e25e2..c679981 100644 --- a/drivers/staging/iio/dac/ad5624r_spi.c +++ b/drivers/staging/iio/dac/ad5624r_spi.c @@ -218,6 +218,11 @@ static const struct attribute_group ad5624r_attribute_group = { .attrs = ad5624r_attributes, }; +static const struct iio_info ad5624r_info = { + .attrs = &ad5624r_attribute_group, + .driver_module = THIS_MODULE, +}; + static int __devinit ad5624r_probe(struct spi_device *spi) { struct ad5624r_state *st; @@ -255,9 +260,8 @@ static int __devinit ad5624r_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->attrs = &ad5624r_attribute_group; + st->indio_dev->info = &ad5624r_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/dac/ad5791.c b/drivers/staging/iio/dac/ad5791.c index acfd13b..4eda25c 100644 --- a/drivers/staging/iio/dac/ad5791.c +++ b/drivers/staging/iio/dac/ad5791.c @@ -287,6 +287,11 @@ static const struct ad5791_chip_info ad5791_chip_info_tbl[] = { }, }; +static const struct iio_info ad5791_info = { + .attrs = &ad5791_attribute_group, + .driver_module = THIS_MODULE, +}; + static int __devinit ad5791_probe(struct spi_device *spi) { struct ad5791_platform_data *pdata = spi->dev.platform_data; @@ -353,8 +358,7 @@ static int __devinit ad5791_probe(struct spi_device *spi) } st->indio_dev->dev.parent = &spi->dev; st->indio_dev->dev_data = (void *)(st); - st->indio_dev->attrs = &ad5791_attribute_group; - st->indio_dev->driver_module = THIS_MODULE; + st->indio_dev->info = &ad5791_info; st->indio_dev->modes = INDIO_DIRECT_MODE; ret = iio_device_register(st->indio_dev); diff --git a/drivers/staging/iio/dac/max517.c b/drivers/staging/iio/dac/max517.c index 3eb48b65c..881768d 100644 --- a/drivers/staging/iio/dac/max517.c +++ b/drivers/staging/iio/dac/max517.c @@ -189,6 +189,16 @@ static int max517_resume(struct i2c_client *client) return i2c_master_send(client, &outbuf, 1); } +static const struct iio_info max517_info = { + .attrs = &max517_attribute_group, + .driver_module = THIS_MODULE, +}; + +static const struct iio_info max518_info = { + .attrs = &max517_attribute_group, + .driver_module = THIS_MODULE, +}; + static int max517_probe(struct i2c_client *client, const struct i2c_device_id *id) { @@ -217,11 +227,10 @@ static int max517_probe(struct i2c_client *client, /* reduced attribute set for MAX517 */ if (id->driver_data == ID_MAX517) - data->indio_dev->attrs = &max517_attribute_group; + data->indio_dev->info = &max517_info; else - data->indio_dev->attrs = &max518_attribute_group; + data->indio_dev->info = &max518_info; data->indio_dev->dev_data = (void *)(data); - data->indio_dev->driver_module = THIS_MODULE; data->indio_dev->modes = INDIO_DIRECT_MODE; /* |