0001
0002
0003
0004
0005
0006 #include <linux/kernel.h>
0007 #include <linux/export.h>
0008 #include <linux/module.h>
0009 #include <linux/iio/iio.h>
0010 #include <linux/iio/triggered_event.h>
0011 #include <linux/iio/trigger_consumer.h>
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 int iio_triggered_event_setup(struct iio_dev *indio_dev,
0031 irqreturn_t (*h)(int irq, void *p),
0032 irqreturn_t (*thread)(int irq, void *p))
0033 {
0034 indio_dev->pollfunc_event = iio_alloc_pollfunc(h,
0035 thread,
0036 IRQF_ONESHOT,
0037 indio_dev,
0038 "%s_consumer%d",
0039 indio_dev->name,
0040 iio_device_id(indio_dev));
0041 if (indio_dev->pollfunc_event == NULL)
0042 return -ENOMEM;
0043
0044
0045 indio_dev->modes |= INDIO_EVENT_TRIGGERED;
0046
0047 return 0;
0048 }
0049 EXPORT_SYMBOL(iio_triggered_event_setup);
0050
0051
0052
0053
0054
0055 void iio_triggered_event_cleanup(struct iio_dev *indio_dev)
0056 {
0057 indio_dev->modes &= ~INDIO_EVENT_TRIGGERED;
0058 iio_dealloc_pollfunc(indio_dev->pollfunc_event);
0059 }
0060 EXPORT_SYMBOL(iio_triggered_event_cleanup);
0061
0062 MODULE_AUTHOR("Vladimir Barinov");
0063 MODULE_DESCRIPTION("IIO helper functions for setting up triggered events");
0064 MODULE_LICENSE("GPL");