diff options
Diffstat (limited to 'drivers/staging/iio/adc/ad7314.c')
-rw-r--r-- | drivers/staging/iio/adc/ad7314.c | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/drivers/staging/iio/adc/ad7314.c b/drivers/staging/iio/adc/ad7314.c index 8c17b1fe9026..98bb16fcff26 100644 --- a/drivers/staging/iio/adc/ad7314.c +++ b/drivers/staging/iio/adc/ad7314.c @@ -6,16 +6,11 @@ * Licensed under the GPL-2 or later. */ -#include <linux/interrupt.h> -#include <linux/gpio.h> -#include <linux/workqueue.h> #include <linux/device.h> #include <linux/kernel.h> #include <linux/slab.h> #include <linux/sysfs.h> -#include <linux/list.h> #include <linux/spi/spi.h> -#include <linux/rtc.h> #include "../iio.h" #include "../sysfs.h" @@ -47,7 +42,6 @@ */ struct ad7314_chip_info { - const char *name; struct spi_device *spi_dev; struct iio_dev *indio_dev; s64 last_timestamp; @@ -160,7 +154,7 @@ static ssize_t ad7314_show_temperature(struct device *dev, if (chip->mode) ad7314_spi_write(chip, chip->mode); - if (strcmp(chip->name, "ad7314")) { + if (strcmp(dev_info->name, "ad7314")) { data = (data & AD7314_TEMP_MASK) >> AD7314_TEMP_OFFSET; if (data & AD7314_TEMP_SIGN) { @@ -186,22 +180,10 @@ static ssize_t ad7314_show_temperature(struct device *dev, static IIO_DEVICE_ATTR(temperature, S_IRUGO, ad7314_show_temperature, NULL, 0); -static ssize_t ad7314_show_name(struct device *dev, - struct device_attribute *attr, - char *buf) -{ - struct iio_dev *dev_info = dev_get_drvdata(dev); - struct ad7314_chip_info *chip = dev_info->dev_data; - return sprintf(buf, "%s\n", chip->name); -} - -static IIO_DEVICE_ATTR(name, S_IRUGO, ad7314_show_name, NULL, 0); - static struct attribute *ad7314_attributes[] = { &iio_dev_attr_available_modes.dev_attr.attr, &iio_dev_attr_mode.dev_attr.attr, &iio_dev_attr_temperature.dev_attr.attr, - &iio_dev_attr_name.dev_attr.attr, NULL, }; @@ -209,6 +191,10 @@ static const struct attribute_group ad7314_attribute_group = { .attrs = ad7314_attributes, }; +static const struct iio_info ad7314_info = { + .attrs = &ad7314_attribute_group, + .driver_module = THIS_MODULE, +}; /* * device probe and remove */ @@ -227,25 +213,24 @@ static int __devinit ad7314_probe(struct spi_device *spi_dev) dev_set_drvdata(&spi_dev->dev, chip); 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; } + chip->indio_dev->name = spi_get_device_id(spi_dev)->name; chip->indio_dev->dev.parent = &spi_dev->dev; - chip->indio_dev->attrs = &ad7314_attribute_group; + chip->indio_dev->info = &ad7314_info; chip->indio_dev->dev_data = (void *)chip; - chip->indio_dev->driver_module = THIS_MODULE; ret = iio_device_register(chip->indio_dev); if (ret) goto error_free_dev; dev_info(&spi_dev->dev, "%s temperature sensor registered.\n", - chip->name); + chip->indio_dev->name); return 0; error_free_dev: @@ -262,8 +247,6 @@ static int __devexit ad7314_remove(struct spi_device *spi_dev) struct iio_dev *indio_dev = chip->indio_dev; dev_set_drvdata(&spi_dev->dev, NULL); - if (spi_dev->irq) - iio_unregister_interrupt_line(indio_dev, 0); iio_device_unregister(indio_dev); iio_free_device(chip->indio_dev); kfree(chip); |