aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/adc/adt7410.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/iio/adc/adt7410.c')
-rw-r--r--drivers/staging/iio/adc/adt7410.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/staging/iio/adc/adt7410.c b/drivers/staging/iio/adc/adt7410.c
index 76aa0639a55a..a289e429dc41 100644
--- a/drivers/staging/iio/adc/adt7410.c
+++ b/drivers/staging/iio/adc/adt7410.c
@@ -13,6 +13,7 @@
#include <linux/sysfs.h>
#include <linux/list.h>
#include <linux/i2c.h>
+#include <linux/module.h>
#include "../iio.h"
#include "../sysfs.h"
@@ -365,19 +366,19 @@ static irqreturn_t adt7410_event_handler(int irq, void *private)
return IRQ_HANDLED;
if (status & ADT7410_STAT_T_HIGH)
- iio_push_event(indio_dev, 0,
+ iio_push_event(indio_dev,
IIO_UNMOD_EVENT_CODE(IIO_TEMP, 0,
IIO_EV_TYPE_THRESH,
IIO_EV_DIR_RISING),
timestamp);
if (status & ADT7410_STAT_T_LOW)
- iio_push_event(indio_dev, 0,
+ iio_push_event(indio_dev,
IIO_UNMOD_EVENT_CODE(IIO_TEMP, 0,
IIO_EV_TYPE_THRESH,
IIO_EV_DIR_FALLING),
timestamp);
if (status & ADT7410_STAT_T_CRIT)
- iio_push_event(indio_dev, 0,
+ iio_push_event(indio_dev,
IIO_UNMOD_EVENT_CODE(IIO_TEMP, 0,
IIO_EV_TYPE_THRESH,
IIO_EV_DIR_RISING),
@@ -707,14 +708,15 @@ static struct attribute *adt7410_event_ct_attributes[] = {
static struct attribute_group adt7410_event_attribute_group[ADT7410_IRQS] = {
{
.attrs = adt7410_event_int_attributes,
+ .name = "events",
}, {
.attrs = adt7410_event_ct_attributes,
+ .name = "events",
}
};
static const struct iio_info adt7410_info = {
.attrs = &adt7410_attribute_group,
- .num_interrupt_lines = ADT7410_IRQS,
.event_attrs = adt7410_event_attribute_group,
.driver_module = THIS_MODULE,
};
@@ -747,10 +749,6 @@ static int __devinit adt7410_probe(struct i2c_client *client,
indio_dev->info = &adt7410_info;
indio_dev->modes = INDIO_DIRECT_MODE;
- ret = iio_device_register(indio_dev);
- if (ret)
- goto error_free_dev;
-
/* CT critcal temperature event. line 0 */
if (client->irq) {
ret = request_threaded_irq(client->irq,
@@ -760,7 +758,7 @@ static int __devinit adt7410_probe(struct i2c_client *client,
id->name,
indio_dev);
if (ret)
- goto error_unreg_dev;
+ goto error_free_dev;
}
/* INT bound temperature alarm event. line 1 */
@@ -797,6 +795,9 @@ static int __devinit adt7410_probe(struct i2c_client *client,
goto error_unreg_int_irq;
}
}
+ ret = iio_device_register(indio_dev);
+ if (ret)
+ goto error_unreg_int_irq;
dev_info(&client->dev, "%s temperature sensor registered.\n",
id->name);
@@ -807,8 +808,6 @@ error_unreg_int_irq:
free_irq(adt7410_platform_data[0], indio_dev);
error_unreg_ct_irq:
free_irq(client->irq, indio_dev);
-error_unreg_dev:
- iio_device_unregister(indio_dev);
error_free_dev:
iio_free_device(indio_dev);
error_ret:
@@ -820,11 +819,12 @@ static int __devexit adt7410_remove(struct i2c_client *client)
struct iio_dev *indio_dev = i2c_get_clientdata(client);
unsigned long *adt7410_platform_data = client->dev.platform_data;
+ iio_device_unregister(indio_dev);
if (adt7410_platform_data[0])
free_irq(adt7410_platform_data[0], indio_dev);
if (client->irq)
free_irq(client->irq, indio_dev);
- iio_device_unregister(indio_dev);
+ iio_free_device(indio_dev);
return 0;
}