Skip to content

Commit f9c198c

Browse files
nunojsajic23
authored andcommitted
iio: buffer-dma: support getting the DMA channel
Implement the .get_dma_dev() callback for DMA buffers by returning the device that owns the DMA channel. This allows the core DMABUF infrastructure to properly map DMA buffers using the correct device, avoiding the need for bounce buffers on systems where memory is mapped above the 32-bit range. The function returns the DMA queue's device, which is the actual device responsible for DMA operations in buffer-dma implementations. Cc: stable@vger.kernel.org Reviewed-by: David Lechner <dlechner@baylibre.com> Signed-off-by: Nuno Sá <nuno.sa@analog.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
1 parent a514bb1 commit f9c198c

2 files changed

Lines changed: 7 additions & 0 deletions

File tree

drivers/iio/buffer/industrialio-buffer-dma.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,12 @@ int iio_dma_buffer_enqueue_dmabuf(struct iio_buffer *buffer,
786786
}
787787
EXPORT_SYMBOL_NS_GPL(iio_dma_buffer_enqueue_dmabuf, "IIO_DMA_BUFFER");
788788

789+
struct device *iio_dma_buffer_get_dma_dev(struct iio_buffer *buffer)
790+
{
791+
return iio_buffer_to_queue(buffer)->dev;
792+
}
793+
EXPORT_SYMBOL_NS_GPL(iio_dma_buffer_get_dma_dev, "IIO_DMA_BUFFER");
794+
789795
void iio_dma_buffer_lock_queue(struct iio_buffer *buffer)
790796
{
791797
struct iio_dma_buffer_queue *queue = iio_buffer_to_queue(buffer);

include/linux/iio/buffer-dma.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,5 +174,6 @@ int iio_dma_buffer_enqueue_dmabuf(struct iio_buffer *buffer,
174174
size_t size, bool cyclic);
175175
void iio_dma_buffer_lock_queue(struct iio_buffer *buffer);
176176
void iio_dma_buffer_unlock_queue(struct iio_buffer *buffer);
177+
struct device *iio_dma_buffer_get_dma_dev(struct iio_buffer *buffer);
177178

178179
#endif

0 commit comments

Comments
 (0)