180503b23SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
22d6ca60fSLars-Peter Clausen /*
32d6ca60fSLars-Peter Clausen  * Copyright 2014-2015 Analog Devices Inc.
42d6ca60fSLars-Peter Clausen  *  Author: Lars-Peter Clausen <[email protected]>
52d6ca60fSLars-Peter Clausen  */
62d6ca60fSLars-Peter Clausen 
72d6ca60fSLars-Peter Clausen #ifndef __IIO_DMAENGINE_H__
82d6ca60fSLars-Peter Clausen #define __IIO_DMAENGINE_H__
92d6ca60fSLars-Peter Clausen 
10c1b91566SPaul Cercueil #include <linux/iio/buffer.h>
11c1b91566SPaul Cercueil 
12a02c09e4SAlexandru Ardelean struct iio_dev;
132d6ca60fSLars-Peter Clausen struct device;
14*79f24971SDavid Lechner struct dma_chan;
152d6ca60fSLars-Peter Clausen 
164fe7fd17SDavid Lechner void iio_dmaengine_buffer_teardown(struct iio_buffer *buffer);
17c1b91566SPaul Cercueil struct iio_buffer *iio_dmaengine_buffer_setup_ext(struct device *dev,
18a094de22SNuno Sa 						  struct iio_dev *indio_dev,
19c1b91566SPaul Cercueil 						  const char *channel,
20c1b91566SPaul Cercueil 						  enum iio_buffer_direction dir);
21c1b91566SPaul Cercueil 
22c1b91566SPaul Cercueil #define iio_dmaengine_buffer_setup(dev, indio_dev, channel)	\
23c1b91566SPaul Cercueil 	iio_dmaengine_buffer_setup_ext(dev, indio_dev, channel,	\
24c1b91566SPaul Cercueil 				       IIO_BUFFER_DIRECTION_IN)
25c1b91566SPaul Cercueil 
26c1b91566SPaul Cercueil int devm_iio_dmaengine_buffer_setup_ext(struct device *dev,
27a02c09e4SAlexandru Ardelean 					struct iio_dev *indio_dev,
28c1b91566SPaul Cercueil 					const char *channel,
29c1b91566SPaul Cercueil 					enum iio_buffer_direction dir);
30*79f24971SDavid Lechner int devm_iio_dmaengine_buffer_setup_with_handle(struct device *dev,
31*79f24971SDavid Lechner 						struct iio_dev *indio_dev,
32*79f24971SDavid Lechner 						struct dma_chan *chan,
33*79f24971SDavid Lechner 						enum iio_buffer_direction dir);
34c1b91566SPaul Cercueil 
35c1b91566SPaul Cercueil #define devm_iio_dmaengine_buffer_setup(dev, indio_dev, channel)	\
36c1b91566SPaul Cercueil 	devm_iio_dmaengine_buffer_setup_ext(dev, indio_dev, channel,	\
37c1b91566SPaul Cercueil 					    IIO_BUFFER_DIRECTION_IN)
38e0fcca9fSAlexandru Ardelean 
392d6ca60fSLars-Peter Clausen #endif
40