aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/dac/ad5504.c
diff options
context:
space:
mode:
authorJonathan Cameron <jic23@cam.ac.uk>2011-05-18 14:42:37 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2011-05-19 16:15:05 -0700
commit6fe8135fccd66aedcc55ded70824342587fd2499 (patch)
tree3afc7acfd0edc052ba93241761e935af9a3b6ebc /drivers/staging/iio/dac/ad5504.c
parenta3f02370c9fa6d85fbee2c11649ebc9c84bae919 (diff)
downloadkernel_samsung_smdk4412-6fe8135fccd66aedcc55ded70824342587fd2499.zip
kernel_samsung_smdk4412-6fe8135fccd66aedcc55ded70824342587fd2499.tar.gz
kernel_samsung_smdk4412-6fe8135fccd66aedcc55ded70824342587fd2499.tar.bz2
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/ad5504.c')
-rw-r--r--drivers/staging/iio/dac/ad5504.c24
1 files changed, 18 insertions, 6 deletions
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)