Lines Matching full:buffer
17 #include <linux/iio/buffer.h>
19 #include <linux/iio/buffer-dma.h>
20 #include <linux/iio/buffer-dmaengine.h>
23 * The IIO DMAengine buffer combines the generic IIO DMA buffer infrastructure
24 * with the DMAengine framework. The generic IIO DMA buffer infrastructure is
25 * used to manage the buffer memory and implement the IIO buffer operations
27 * this results in a device independent fully functional DMA buffer
43 struct iio_buffer *buffer) in iio_buffer_to_dmaengine_buffer() argument
45 return container_of(buffer, struct dmaengine_buffer, queue.buffer); in iio_buffer_to_dmaengine_buffer()
65 iio_buffer_to_dmaengine_buffer(&queue->buffer); in iio_dmaengine_buffer_submit_block()
79 if (queue->buffer.direction == IIO_BUFFER_DIRECTION_IN) in iio_dmaengine_buffer_submit_block()
112 if (queue->buffer.direction == IIO_BUFFER_DIRECTION_IN) in iio_dmaengine_buffer_submit_block()
146 iio_buffer_to_dmaengine_buffer(&queue->buffer); in iio_dmaengine_buffer_abort()
192 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in iio_dmaengine_buffer_get_length_align() local
194 iio_buffer_to_dmaengine_buffer(buffer); in iio_dmaengine_buffer_get_length_align()
208 * iio_dmaengine_buffer_alloc() - Allocate new buffer which uses DMAengine
212 * This allocates a new IIO buffer which internally uses the DMAengine framework
216 * Once done using the buffer iio_dmaengine_buffer_free() should be used to
261 dmaengine_buffer->queue.buffer.attrs = iio_dmaengine_buffer_attrs; in iio_dmaengine_buffer_alloc()
262 dmaengine_buffer->queue.buffer.access = &iio_dmaengine_buffer_ops; in iio_dmaengine_buffer_alloc()
264 return &dmaengine_buffer->queue.buffer; in iio_dmaengine_buffer_alloc()
274 * iio_dmaengine_buffer_free() - Free dmaengine buffer
275 * @buffer: Buffer to free
277 * Frees a buffer previously allocated with iio_dmaengine_buffer_alloc().
279 void iio_dmaengine_buffer_free(struct iio_buffer *buffer) in iio_dmaengine_buffer_free() argument
282 iio_buffer_to_dmaengine_buffer(buffer); in iio_dmaengine_buffer_free()
287 iio_buffer_put(buffer); in iio_dmaengine_buffer_free()
292 * iio_dmaengine_buffer_setup_ext() - Setup a DMA buffer for an IIO device
294 * @indio_dev: IIO device to which to attach this buffer.
296 * @dir: Direction of buffer (in or out)
298 * This allocates a new IIO buffer with devm_iio_dmaengine_buffer_alloc()
303 * Once done using the buffer iio_dmaengine_buffer_free() should be used to
311 struct iio_buffer *buffer; in iio_dmaengine_buffer_setup_ext() local
314 buffer = iio_dmaengine_buffer_alloc(dev, channel); in iio_dmaengine_buffer_setup_ext()
315 if (IS_ERR(buffer)) in iio_dmaengine_buffer_setup_ext()
316 return ERR_CAST(buffer); in iio_dmaengine_buffer_setup_ext()
320 buffer->direction = dir; in iio_dmaengine_buffer_setup_ext()
322 ret = iio_device_attach_buffer(indio_dev, buffer); in iio_dmaengine_buffer_setup_ext()
324 iio_dmaengine_buffer_free(buffer); in iio_dmaengine_buffer_setup_ext()
328 return buffer; in iio_dmaengine_buffer_setup_ext()
332 static void __devm_iio_dmaengine_buffer_free(void *buffer) in __devm_iio_dmaengine_buffer_free() argument
334 iio_dmaengine_buffer_free(buffer); in __devm_iio_dmaengine_buffer_free()
338 * devm_iio_dmaengine_buffer_setup_ext() - Setup a DMA buffer for an IIO device
340 * @indio_dev: IIO device to which to attach this buffer.
342 * @dir: Direction of buffer (in or out)
344 * This allocates a new IIO buffer with devm_iio_dmaengine_buffer_alloc()
354 struct iio_buffer *buffer; in devm_iio_dmaengine_buffer_setup_ext() local
356 buffer = iio_dmaengine_buffer_setup_ext(dev, indio_dev, channel, dir); in devm_iio_dmaengine_buffer_setup_ext()
357 if (IS_ERR(buffer)) in devm_iio_dmaengine_buffer_setup_ext()
358 return PTR_ERR(buffer); in devm_iio_dmaengine_buffer_setup_ext()
361 buffer); in devm_iio_dmaengine_buffer_setup_ext()
366 MODULE_DESCRIPTION("DMA buffer for the IIO framework");