File Index
Files and directories
Sign in
FILE

dummy.c

File preview with syntax highlighting.

linux-6.19.14/kernel/dma/dummy.c 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.