mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 16:29:59 +00:00
![Lars-Peter Clausen](/assets/img/avatar_default.png)
All devices using a triggered buffer need to attach and detach the trigger to the device in order to properly work. Instead of doing this in each and every driver by hand move this into the core. At this point in time, all drivers should have been resolved to attach/detach the poll-function in the same order. This patch removes all explicit calls of iio_triggered_buffer_postenable() & iio_triggered_buffer_predisable() in all drivers, since the core handles now the pollfunc attach/detach. The more peculiar change is for the 'at91-sama5d2_adc' driver, since it's not immediately obvious that removing the hooks doesn't break anything. Eugen was able to test on at91-sama5d2-adc driver, sama5d2-xplained board. All seems to be fine. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Tested-by: Eugen Hristev <eugen.hristev@microchip.com> #for at91-sama5d2-adc Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
53 lines
1.4 KiB
C
53 lines
1.4 KiB
C
/* 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;
|
|
};
|
|
|
|
|
|
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
|