diff options
Diffstat (limited to 'drivers/staging/iio/adc/adt7410.c')
-rw-r--r-- | drivers/staging/iio/adc/adt7410.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/staging/iio/adc/adt7410.c b/drivers/staging/iio/adc/adt7410.c index 76aa063..a289e42 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; } |