1 #include <linux/interrupt.h>
3 #include <linux/mutex.h>
4 #include <linux/device.h>
5 #include <linux/kernel.h>
6 #include <linux/sysfs.h>
7 #include <linux/list.h>
8 #include <linux/spi/spi.h>
12 #include "../trigger.h"
13 #include "adis16204.h"
16 * adis16204_data_rdy_trigger_set_state() set datardy interrupt state
18 static int adis16204_data_rdy_trigger_set_state(struct iio_trigger
*trig
,
21 struct adis16204_state
*st
= trig
->private_data
;
22 struct iio_dev
*indio_dev
= st
->indio_dev
;
24 dev_dbg(&indio_dev
->dev
, "%s (%d)\n", __func__
, state
);
25 return adis16204_set_irq(st
->indio_dev
, state
);
28 int adis16204_probe_trigger(struct iio_dev
*indio_dev
)
31 struct adis16204_state
*st
= indio_dev
->dev_data
;
33 st
->trig
= iio_allocate_trigger("adis16204-dev%d", indio_dev
->id
);
34 if (st
->trig
== NULL
) {
39 ret
= request_irq(st
->us
->irq
,
40 &iio_trigger_generic_data_rdy_poll
,
47 st
->trig
->dev
.parent
= &st
->us
->dev
;
48 st
->trig
->owner
= THIS_MODULE
;
49 st
->trig
->private_data
= st
;
50 st
->trig
->set_trigger_state
= &adis16204_data_rdy_trigger_set_state
;
51 ret
= iio_trigger_register(st
->trig
);
53 /* select default trigger */
54 indio_dev
->trig
= st
->trig
;
61 free_irq(st
->us
->irq
, st
->trig
);
63 iio_free_trigger(st
->trig
);
68 void adis16204_remove_trigger(struct iio_dev
*indio_dev
)
70 struct adis16204_state
*state
= indio_dev
->dev_data
;
72 iio_trigger_unregister(state
->trig
);
73 free_irq(state
->us
->irq
, state
->trig
);
74 iio_free_trigger(state
->trig
);