1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
223f2d735SLars-Peter Clausen #ifndef _LINUX_IIO_TRIGGERED_BUFFER_H_
323f2d735SLars-Peter Clausen #define _LINUX_IIO_TRIGGERED_BUFFER_H_
423f2d735SLars-Peter Clausen 
5c02cd5c1SAlexandru Ardelean #include <linux/iio/buffer.h>
623f2d735SLars-Peter Clausen #include <linux/interrupt.h>
723f2d735SLars-Peter Clausen 
823f2d735SLars-Peter Clausen struct iio_dev;
9*0a33755cSMatti Vaittinen struct iio_dev_attr;
1023f2d735SLars-Peter Clausen struct iio_buffer_setup_ops;
1123f2d735SLars-Peter Clausen 
125164c788SAlexandru Ardelean int iio_triggered_buffer_setup_ext(struct iio_dev *indio_dev,
13fcc577ddSCristina Opriceana 	irqreturn_t (*h)(int irq, void *p),
14fcc577ddSCristina Opriceana 	irqreturn_t (*thread)(int irq, void *p),
15c02cd5c1SAlexandru Ardelean 	enum iio_buffer_direction direction,
165164c788SAlexandru Ardelean 	const struct iio_buffer_setup_ops *setup_ops,
17*0a33755cSMatti Vaittinen 	const struct iio_dev_attr **buffer_attrs);
1823f2d735SLars-Peter Clausen void iio_triggered_buffer_cleanup(struct iio_dev *indio_dev);
1923f2d735SLars-Peter Clausen 
205164c788SAlexandru Ardelean #define iio_triggered_buffer_setup(indio_dev, h, thread, setup_ops)		\
21c02cd5c1SAlexandru Ardelean 	iio_triggered_buffer_setup_ext((indio_dev), (h), (thread),		\
22c02cd5c1SAlexandru Ardelean 					IIO_BUFFER_DIRECTION_IN, (setup_ops),	\
23c02cd5c1SAlexandru Ardelean 					NULL)
245164c788SAlexandru Ardelean 
255164c788SAlexandru Ardelean int devm_iio_triggered_buffer_setup_ext(struct device *dev,
2670e48348SGregor Boirie 					struct iio_dev *indio_dev,
2770e48348SGregor Boirie 					irqreturn_t (*h)(int irq, void *p),
2870e48348SGregor Boirie 					irqreturn_t (*thread)(int irq, void *p),
29c02cd5c1SAlexandru Ardelean 					enum iio_buffer_direction direction,
305164c788SAlexandru Ardelean 					const struct iio_buffer_setup_ops *ops,
31*0a33755cSMatti Vaittinen 					const struct iio_dev_attr **buffer_attrs);
325164c788SAlexandru Ardelean 
335164c788SAlexandru Ardelean #define devm_iio_triggered_buffer_setup(dev, indio_dev, h, thread, setup_ops)	\
34c02cd5c1SAlexandru Ardelean 	devm_iio_triggered_buffer_setup_ext((dev), (indio_dev), (h), (thread),	\
35c02cd5c1SAlexandru Ardelean 					    IIO_BUFFER_DIRECTION_IN,		\
36c02cd5c1SAlexandru Ardelean 					    (setup_ops), NULL)
3770e48348SGregor Boirie 
3823f2d735SLars-Peter Clausen #endif
39