1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* The industrial I/O core, trigger consumer functions |
3 | * |
4 | * Copyright (c) 2008-2011 Jonathan Cameron |
5 | */ |
6 | |
7 | #ifndef __LINUX_IIO_TRIGGER_CONSUMER_H__ |
8 | #define __LINUX_IIO_TRIGGER_CONSUMER_H__ |
9 | |
10 | #include <linux/interrupt.h> |
11 | #include <linux/types.h> |
12 | |
13 | struct iio_dev; |
14 | struct iio_trigger; |
15 | |
16 | /** |
17 | * struct iio_poll_func - poll function pair |
18 | * |
19 | * @indio_dev: data specific to device (passed into poll func) |
20 | * @h: the function that is actually run on trigger |
21 | * @thread: threaded interrupt part |
22 | * @type: the type of interrupt (basically if oneshot) |
23 | * @name: name used to identify the trigger consumer. |
24 | * @irq: the corresponding irq as allocated from the |
25 | * trigger pool |
26 | * @timestamp: some devices need a timestamp grabbed as soon |
27 | * as possible after the trigger - hence handler |
28 | * passes it via here. |
29 | **/ |
30 | struct iio_poll_func { |
31 | struct iio_dev *indio_dev; |
32 | irqreturn_t (*h)(int irq, void *p); |
33 | irqreturn_t (*thread)(int irq, void *p); |
34 | int type; |
35 | char *name; |
36 | int irq; |
37 | s64 timestamp; |
38 | }; |
39 | |
40 | |
41 | __printf(5, 6) struct iio_poll_func |
42 | *iio_alloc_pollfunc(irqreturn_t (*h)(int irq, void *p), |
43 | irqreturn_t (*thread)(int irq, void *p), |
44 | int type, |
45 | struct iio_dev *indio_dev, |
46 | const char *fmt, |
47 | ...); |
48 | void iio_dealloc_pollfunc(struct iio_poll_func *pf); |
49 | irqreturn_t iio_pollfunc_store_time(int irq, void *p); |
50 | |
51 | void iio_trigger_notify_done(struct iio_trigger *trig); |
52 | |
53 | #endif |
54 | |