mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.4 KiB
53 lines
1.4 KiB
/* SPDX-License-Identifier: GPL-2.0-only */ |
|
/* The industrial I/O core, trigger consumer functions |
|
* |
|
* Copyright (c) 2008-2011 Jonathan Cameron |
|
*/ |
|
|
|
#ifndef __LINUX_IIO_TRIGGER_CONSUMER_H__ |
|
#define __LINUX_IIO_TRIGGER_CONSUMER_H__ |
|
|
|
#include <linux/interrupt.h> |
|
#include <linux/types.h> |
|
|
|
struct iio_dev; |
|
struct iio_trigger; |
|
|
|
/** |
|
* struct iio_poll_func - poll function pair |
|
* |
|
* @indio_dev: data specific to device (passed into poll func) |
|
* @h: the function that is actually run on trigger |
|
* @thread: threaded interrupt part |
|
* @type: the type of interrupt (basically if oneshot) |
|
* @name: name used to identify the trigger consumer. |
|
* @irq: the corresponding irq as allocated from the |
|
* trigger pool |
|
* @timestamp: some devices need a timestamp grabbed as soon |
|
* as possible after the trigger - hence handler |
|
* passes it via here. |
|
**/ |
|
struct iio_poll_func { |
|
struct iio_dev *indio_dev; |
|
irqreturn_t (*h)(int irq, void *p); |
|
irqreturn_t (*thread)(int irq, void *p); |
|
int type; |
|
char *name; |
|
int irq; |
|
s64 timestamp; |
|
}; |
|
|
|
|
|
__printf(5, 6) struct iio_poll_func |
|
*iio_alloc_pollfunc(irqreturn_t (*h)(int irq, void *p), |
|
irqreturn_t (*thread)(int irq, void *p), |
|
int type, |
|
struct iio_dev *indio_dev, |
|
const char *fmt, |
|
...); |
|
void iio_dealloc_pollfunc(struct iio_poll_func *pf); |
|
irqreturn_t iio_pollfunc_store_time(int irq, void *p); |
|
|
|
void iio_trigger_notify_done(struct iio_trigger *trig); |
|
|
|
#endif
|
|
|