aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/imu/adis16400_trigger.c
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2013-01-17 16:15:55 -0500
committerJonathan Herman <hermanjl@cs.unc.edu>2013-01-17 16:15:55 -0500
commit8dea78da5cee153b8af9c07a2745f6c55057fe12 (patch)
treea8f4d49d63b1ecc92f2fddceba0655b2472c5bd9 /drivers/staging/iio/imu/adis16400_trigger.c
parent406089d01562f1e2bf9f089fd7637009ebaad589 (diff)
Patched in Tegra support.
Diffstat (limited to 'drivers/staging/iio/imu/adis16400_trigger.c')
-rw-r--r--drivers/staging/iio/imu/adis16400_trigger.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/staging/iio/imu/adis16400_trigger.c b/drivers/staging/iio/imu/adis16400_trigger.c
index 42a678e92fc..c6ec41a02a6 100644
--- a/drivers/staging/iio/imu/adis16400_trigger.c
+++ b/drivers/staging/iio/imu/adis16400_trigger.c
@@ -1,10 +1,15 @@
1#include <linux/interrupt.h> 1#include <linux/interrupt.h>
2#include <linux/irq.h>
3#include <linux/mutex.h>
4#include <linux/device.h>
2#include <linux/kernel.h> 5#include <linux/kernel.h>
6#include <linux/sysfs.h>
7#include <linux/list.h>
3#include <linux/spi/spi.h> 8#include <linux/spi/spi.h>
4#include <linux/export.h>
5 9
6#include <linux/iio/iio.h> 10#include "../iio.h"
7#include <linux/iio/trigger.h> 11#include "../sysfs.h"
12#include "../trigger.h"
8#include "adis16400.h" 13#include "adis16400.h"
9 14
10/** 15/**
@@ -19,18 +24,13 @@ static int adis16400_data_rdy_trigger_set_state(struct iio_trigger *trig,
19 return adis16400_set_irq(indio_dev, state); 24 return adis16400_set_irq(indio_dev, state);
20} 25}
21 26
22static const struct iio_trigger_ops adis16400_trigger_ops = {
23 .owner = THIS_MODULE,
24 .set_trigger_state = &adis16400_data_rdy_trigger_set_state,
25};
26
27int adis16400_probe_trigger(struct iio_dev *indio_dev) 27int adis16400_probe_trigger(struct iio_dev *indio_dev)
28{ 28{
29 int ret; 29 int ret;
30 struct adis16400_state *st = iio_priv(indio_dev); 30 struct adis16400_state *st = iio_priv(indio_dev);
31 31
32 st->trig = iio_trigger_alloc("%s-dev%d", 32 st->trig = iio_allocate_trigger("%s-dev%d",
33 indio_dev->name, 33 spi_get_device_id(st->us)->name,
34 indio_dev->id); 34 indio_dev->id);
35 if (st->trig == NULL) { 35 if (st->trig == NULL) {
36 ret = -ENOMEM; 36 ret = -ENOMEM;
@@ -45,8 +45,9 @@ int adis16400_probe_trigger(struct iio_dev *indio_dev)
45 if (ret) 45 if (ret)
46 goto error_free_trig; 46 goto error_free_trig;
47 st->trig->dev.parent = &st->us->dev; 47 st->trig->dev.parent = &st->us->dev;
48 st->trig->owner = THIS_MODULE;
48 st->trig->private_data = indio_dev; 49 st->trig->private_data = indio_dev;
49 st->trig->ops = &adis16400_trigger_ops; 50 st->trig->set_trigger_state = &adis16400_data_rdy_trigger_set_state;
50 ret = iio_trigger_register(st->trig); 51 ret = iio_trigger_register(st->trig);
51 52
52 /* select default trigger */ 53 /* select default trigger */
@@ -59,7 +60,7 @@ int adis16400_probe_trigger(struct iio_dev *indio_dev)
59error_free_irq: 60error_free_irq:
60 free_irq(st->us->irq, st->trig); 61 free_irq(st->us->irq, st->trig);
61error_free_trig: 62error_free_trig:
62 iio_trigger_free(st->trig); 63 iio_free_trigger(st->trig);
63error_ret: 64error_ret:
64 return ret; 65 return ret;
65} 66}
@@ -70,5 +71,5 @@ void adis16400_remove_trigger(struct iio_dev *indio_dev)
70 71
71 iio_trigger_unregister(st->trig); 72 iio_trigger_unregister(st->trig);
72 free_irq(st->us->irq, st->trig); 73 free_irq(st->us->irq, st->trig);
73 iio_trigger_free(st->trig); 74 iio_free_trigger(st->trig);
74} 75}