1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* |
3 | * Dummy DMA ops that always fail. |
4 | */ |
5 | #include <linux/dma-map-ops.h> |
6 | |
7 | static 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 | |
14 | static dma_addr_t dma_dummy_map_page(struct device *dev, struct page *page, |
15 | unsigned long offset, size_t size, enum dma_data_direction dir, |
16 | unsigned long attrs) |
17 | { |
18 | return DMA_MAPPING_ERROR; |
19 | } |
20 | |
21 | static int dma_dummy_map_sg(struct device *dev, struct scatterlist *sgl, |
22 | int nelems, enum dma_data_direction dir, |
23 | unsigned long attrs) |
24 | { |
25 | return -EINVAL; |
26 | } |
27 | |
28 | static int dma_dummy_supported(struct device *hwdev, u64 mask) |
29 | { |
30 | return 0; |
31 | } |
32 | |
33 | const struct dma_map_ops dma_dummy_ops = { |
34 | .mmap = dma_dummy_mmap, |
35 | .map_page = dma_dummy_map_page, |
36 | .map_sg = dma_dummy_map_sg, |
37 | .dma_supported = dma_dummy_supported, |
38 | }; |
39 | |