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/spi/spi.h>
11 #include "../trigger.h"
12 #include "adis16201.h"
15 * adis16201_data_rdy_trigger_set_state() set datardy interrupt state
17 static int adis16201_data_rdy_trigger_set_state(struct iio_trigger
*trig
,
20 struct adis16201_state
*st
= trig
->private_data
;
21 struct iio_dev
*indio_dev
= st
->indio_dev
;
23 dev_dbg(&indio_dev
->dev
, "%s (%d)\n", __func__
, state
);
24 return adis16201_set_irq(st
->indio_dev
, state
);
27 int adis16201_probe_trigger(struct iio_dev
*indio_dev
)
30 struct adis16201_state
*st
= indio_dev
->dev_data
;
32 st
->trig
= iio_allocate_trigger("adis16201-dev%d", indio_dev
->id
);
33 if (st
->trig
== NULL
) {
37 ret
= request_irq(st
->us
->irq
,
38 &iio_trigger_generic_data_rdy_poll
,
44 st
->trig
->dev
.parent
= &st
->us
->dev
;
45 st
->trig
->owner
= THIS_MODULE
;
46 st
->trig
->private_data
= st
;
47 st
->trig
->set_trigger_state
= &adis16201_data_rdy_trigger_set_state
;
48 ret
= iio_trigger_register(st
->trig
);
50 /* select default trigger */
51 indio_dev
->trig
= st
->trig
;
58 free_irq(st
->us
->irq
, st
->trig
);
60 iio_free_trigger(st
->trig
);
65 void adis16201_remove_trigger(struct iio_dev
*indio_dev
)
67 struct adis16201_state
*state
= indio_dev
->dev_data
;
69 iio_trigger_unregister(state
->trig
);
70 free_irq(state
->us
->irq
, state
->trig
);
71 iio_free_trigger(state
->trig
);