Lines Matching defs:buffer

18 #include <linux/iio/buffer.h>
20 #include <linux/iio/buffer-dma.h>
21 #include <linux/iio/buffer-dmaengine.h>
24 * The IIO DMAengine buffer combines the generic IIO DMA buffer infrastructure
25 * with the DMAengine framework. The generic IIO DMA buffer infrastructure is
26 * used to manage the buffer memory and implement the IIO buffer operations
28 * this results in a device independent fully functional DMA buffer
43 static struct dmaengine_buffer *iio_buffer_to_dmaengine_buffer(struct iio_buffer *buffer)
45 return container_of(buffer, struct dmaengine_buffer, queue.buffer);
80 iio_buffer_to_dmaengine_buffer(&queue->buffer);
94 if (queue->buffer.direction == IIO_BUFFER_DIRECTION_IN)
150 if (queue->buffer.direction == IIO_BUFFER_DIRECTION_IN)
185 iio_buffer_to_dmaengine_buffer(&queue->buffer);
233 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer;
235 iio_buffer_to_dmaengine_buffer(buffer);
249 * iio_dmaengine_buffer_alloc() - Allocate new buffer which uses DMAengine
252 * This allocates a new IIO buffer which internally uses the DMAengine framework
255 * Once done using the buffer iio_dmaengine_buffer_free() should be used to
292 dmaengine_buffer->queue.buffer.attrs = iio_dmaengine_buffer_attrs;
293 dmaengine_buffer->queue.buffer.access = &iio_dmaengine_buffer_ops;
295 return &dmaengine_buffer->queue.buffer;
299 * iio_dmaengine_buffer_free() - Free dmaengine buffer
300 * @buffer: Buffer to free
302 * Frees a buffer previously allocated with iio_dmaengine_buffer_alloc().
304 static void iio_dmaengine_buffer_free(struct iio_buffer *buffer)
307 iio_buffer_to_dmaengine_buffer(buffer);
310 iio_buffer_put(buffer);
314 * iio_dmaengine_buffer_teardown() - Releases DMA channel and frees buffer
315 * @buffer: Buffer to free
317 * Releases the DMA channel and frees the buffer previously setup with
320 void iio_dmaengine_buffer_teardown(struct iio_buffer *buffer)
323 iio_buffer_to_dmaengine_buffer(buffer);
326 iio_dmaengine_buffer_free(buffer);
336 struct iio_buffer *buffer;
339 buffer = iio_dmaengine_buffer_alloc(chan);
340 if (IS_ERR(buffer))
341 return ERR_CAST(buffer);
345 buffer->direction = dir;
347 ret = iio_device_attach_buffer(indio_dev, buffer);
349 iio_dmaengine_buffer_free(buffer);
353 return buffer;
357 * iio_dmaengine_buffer_setup_ext() - Setup a DMA buffer for an IIO device
359 * @indio_dev: IIO device to which to attach this buffer.
361 * @dir: Direction of buffer (in or out)
363 * This allocates a new IIO buffer with devm_iio_dmaengine_buffer_alloc()
368 * Once done using the buffer iio_dmaengine_buffer_teardown() should be used to
377 struct iio_buffer *buffer;
383 buffer = __iio_dmaengine_buffer_setup_ext(indio_dev, chan, dir);
384 if (IS_ERR(buffer))
387 return buffer;
391 static void devm_iio_dmaengine_buffer_teardown(void *buffer)
393 iio_dmaengine_buffer_teardown(buffer);
397 * devm_iio_dmaengine_buffer_setup_ext() - Setup a DMA buffer for an IIO device
399 * @indio_dev: IIO device to which to attach this buffer.
401 * @dir: Direction of buffer (in or out)
403 * This allocates a new IIO buffer with devm_iio_dmaengine_buffer_alloc()
413 struct iio_buffer *buffer;
415 buffer = iio_dmaengine_buffer_setup_ext(dev, indio_dev, channel, dir);
416 if (IS_ERR(buffer))
417 return PTR_ERR(buffer);
420 buffer);
424 static void devm_iio_dmaengine_buffer_free(void *buffer)
426 iio_dmaengine_buffer_free(buffer);
430 * devm_iio_dmaengine_buffer_setup_with_handle() - Setup a DMA buffer for an
433 * @indio_dev: IIO device to which to attach this buffer.
435 * @dir: Direction of buffer (in or out)
437 * This allocates a new IIO buffer with devm_iio_dmaengine_buffer_alloc()
450 struct iio_buffer *buffer;
452 buffer = __iio_dmaengine_buffer_setup_ext(indio_dev, chan, dir);
453 if (IS_ERR(buffer))
454 return PTR_ERR(buffer);
457 buffer);
463 MODULE_DESCRIPTION("DMA buffer for the IIO framework");