FILE
dummy.c
File preview with syntax highlighting.
linux-6.19.14/kernel/dma/dummy.c
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Dummy DMA ops that always fail. 4 */ 5#include <linux/dma-map-ops.h> 6 7static int dma_dummy_mmap(struct device *dev, struct vm_area_struct *vma, 8 void *cpu_addr, dma_addr_t dma_addr, size_t size, 9 unsigned long attrs) 10{ 11 return -ENXIO; 12} 13 14static dma_addr_t dma_dummy_map_phys(struct device *dev, phys_addr_t phys, 15 size_t size, enum dma_data_direction dir, unsigned long attrs) 16{ 17 return DMA_MAPPING_ERROR; 18} 19static void dma_dummy_unmap_phys(struct device *dev, dma_addr_t dma_handle, 20 size_t size, enum dma_data_direction dir, unsigned long attrs) 21{ 22 /* 23 * Dummy ops doesn't support map_phys, so unmap_page should never be 24 * called. 25 */ 26 WARN_ON_ONCE(true); 27} 28 29static int dma_dummy_map_sg(struct device *dev, struct scatterlist *sgl, 30 int nelems, enum dma_data_direction dir, 31 unsigned long attrs) 32{ 33 return -EINVAL; 34} 35 36static void dma_dummy_unmap_sg(struct device *dev, struct scatterlist *sgl, 37 int nelems, enum dma_data_direction dir, 38 unsigned long attrs) 39{ 40 /* 41 * Dummy ops doesn't support map_sg, so unmap_sg should never be called. 42 */ 43 WARN_ON_ONCE(true); 44} 45 46static int dma_dummy_supported(struct device *hwdev, u64 mask) 47{ 48 return 0; 49} 50 51const struct dma_map_ops dma_dummy_ops = { 52 .mmap = dma_dummy_mmap, 53 .map_phys = dma_dummy_map_phys, 54 .unmap_phys = dma_dummy_unmap_phys, 55 .map_sg = dma_dummy_map_sg, 56 .unmap_sg = dma_dummy_unmap_sg, 57 .dma_supported = dma_dummy_supported, 58};
~/
Read-only file preview.