1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 206458e27SJonathan Cameron /* The industrial I/O core, trigger consumer functions 306458e27SJonathan Cameron * 406458e27SJonathan Cameron * Copyright (c) 2008-2011 Jonathan Cameron 506458e27SJonathan Cameron */ 606458e27SJonathan Cameron 708d6005cSLars-Peter Clausen #ifndef __LINUX_IIO_TRIGGER_CONSUMER_H__ 808d6005cSLars-Peter Clausen #define __LINUX_IIO_TRIGGER_CONSUMER_H__ 908d6005cSLars-Peter Clausen 10161e7f6dSLars-Peter Clausen #include <linux/interrupt.h> 11161e7f6dSLars-Peter Clausen #include <linux/types.h> 12161e7f6dSLars-Peter Clausen 13161e7f6dSLars-Peter Clausen struct iio_dev; 14161e7f6dSLars-Peter Clausen struct iio_trigger; 15161e7f6dSLars-Peter Clausen 1606458e27SJonathan Cameron /** 1706458e27SJonathan Cameron * struct iio_poll_func - poll function pair 1806458e27SJonathan Cameron * 1906458e27SJonathan Cameron * @indio_dev: data specific to device (passed into poll func) 2006458e27SJonathan Cameron * @h: the function that is actually run on trigger 2106458e27SJonathan Cameron * @thread: threaded interrupt part 2206458e27SJonathan Cameron * @type: the type of interrupt (basically if oneshot) 2306458e27SJonathan Cameron * @name: name used to identify the trigger consumer. 2406458e27SJonathan Cameron * @irq: the corresponding irq as allocated from the 2506458e27SJonathan Cameron * trigger pool 2606458e27SJonathan Cameron * @timestamp: some devices need a timestamp grabbed as soon 2706458e27SJonathan Cameron * as possible after the trigger - hence handler 2806458e27SJonathan Cameron * passes it via here. 2906458e27SJonathan Cameron **/ 3006458e27SJonathan Cameron struct iio_poll_func { 3106458e27SJonathan Cameron struct iio_dev *indio_dev; 3206458e27SJonathan Cameron irqreturn_t (*h)(int irq, void *p); 3306458e27SJonathan Cameron irqreturn_t (*thread)(int irq, void *p); 3406458e27SJonathan Cameron int type; 3506458e27SJonathan Cameron char *name; 3606458e27SJonathan Cameron int irq; 3706458e27SJonathan Cameron s64 timestamp; 3806458e27SJonathan Cameron }; 3906458e27SJonathan Cameron 4006458e27SJonathan Cameron 41*cd7798cbSJonathan Cameron __printf(5, 6) struct iio_poll_func 4206458e27SJonathan Cameron *iio_alloc_pollfunc(irqreturn_t (*h)(int irq, void *p), 4306458e27SJonathan Cameron irqreturn_t (*thread)(int irq, void *p), 4406458e27SJonathan Cameron int type, 4506458e27SJonathan Cameron struct iio_dev *indio_dev, 4606458e27SJonathan Cameron const char *fmt, 4706458e27SJonathan Cameron ...); 4806458e27SJonathan Cameron void iio_dealloc_pollfunc(struct iio_poll_func *pf); 4906458e27SJonathan Cameron irqreturn_t iio_pollfunc_store_time(int irq, void *p); 5006458e27SJonathan Cameron 5106458e27SJonathan Cameron void iio_trigger_notify_done(struct iio_trigger *trig); 5206458e27SJonathan Cameron 5308d6005cSLars-Peter Clausen #endif 54