162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* The industrial I/O core, trigger consumer functions 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (c) 2008-2011 Jonathan Cameron 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef __LINUX_IIO_TRIGGER_CONSUMER_H__ 862306a36Sopenharmony_ci#define __LINUX_IIO_TRIGGER_CONSUMER_H__ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <linux/interrupt.h> 1162306a36Sopenharmony_ci#include <linux/types.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cistruct iio_dev; 1462306a36Sopenharmony_cistruct iio_trigger; 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci/** 1762306a36Sopenharmony_ci * struct iio_poll_func - poll function pair 1862306a36Sopenharmony_ci * 1962306a36Sopenharmony_ci * @indio_dev: data specific to device (passed into poll func) 2062306a36Sopenharmony_ci * @h: the function that is actually run on trigger 2162306a36Sopenharmony_ci * @thread: threaded interrupt part 2262306a36Sopenharmony_ci * @type: the type of interrupt (basically if oneshot) 2362306a36Sopenharmony_ci * @name: name used to identify the trigger consumer. 2462306a36Sopenharmony_ci * @irq: the corresponding irq as allocated from the 2562306a36Sopenharmony_ci * trigger pool 2662306a36Sopenharmony_ci * @timestamp: some devices need a timestamp grabbed as soon 2762306a36Sopenharmony_ci * as possible after the trigger - hence handler 2862306a36Sopenharmony_ci * passes it via here. 2962306a36Sopenharmony_ci **/ 3062306a36Sopenharmony_cistruct iio_poll_func { 3162306a36Sopenharmony_ci struct iio_dev *indio_dev; 3262306a36Sopenharmony_ci irqreturn_t (*h)(int irq, void *p); 3362306a36Sopenharmony_ci irqreturn_t (*thread)(int irq, void *p); 3462306a36Sopenharmony_ci int type; 3562306a36Sopenharmony_ci char *name; 3662306a36Sopenharmony_ci int irq; 3762306a36Sopenharmony_ci s64 timestamp; 3862306a36Sopenharmony_ci}; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci__printf(5, 6) struct iio_poll_func 4262306a36Sopenharmony_ci*iio_alloc_pollfunc(irqreturn_t (*h)(int irq, void *p), 4362306a36Sopenharmony_ci irqreturn_t (*thread)(int irq, void *p), 4462306a36Sopenharmony_ci int type, 4562306a36Sopenharmony_ci struct iio_dev *indio_dev, 4662306a36Sopenharmony_ci const char *fmt, 4762306a36Sopenharmony_ci ...); 4862306a36Sopenharmony_civoid iio_dealloc_pollfunc(struct iio_poll_func *pf); 4962306a36Sopenharmony_ciirqreturn_t iio_pollfunc_store_time(int irq, void *p); 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_civoid iio_trigger_notify_done(struct iio_trigger *trig); 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#endif 54