1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3 * Copyright (C) 2008 Advanced Micro Devices, Inc.
4 *
5 * Author: Joerg Roedel <joerg.roedel@amd.com>
6 */
7
8 #ifndef _KERNEL_DMA_DEBUG_H
9 #define _KERNEL_DMA_DEBUG_H
10
11 #ifdef CONFIG_DMA_API_DEBUG
12 extern void debug_dma_map_page(struct device *dev, struct page *page,
13 size_t offset, size_t size,
14 int direction, dma_addr_t dma_addr,
15 unsigned long attrs);
16
17 extern void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
18 size_t size, int direction);
19
20 extern void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
21 int nents, int mapped_ents, int direction,
22 unsigned long attrs);
23
24 extern void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist,
25 int nelems, int dir);
26
27 extern void debug_dma_alloc_coherent(struct device *dev, size_t size,
28 dma_addr_t dma_addr, void *virt,
29 unsigned long attrs);
30
31 extern void debug_dma_free_coherent(struct device *dev, size_t size,
32 void *virt, dma_addr_t addr);
33
34 extern void debug_dma_map_resource(struct device *dev, phys_addr_t addr,
35 size_t size, int direction,
36 dma_addr_t dma_addr,
37 unsigned long attrs);
38
39 extern void debug_dma_unmap_resource(struct device *dev, dma_addr_t dma_addr,
40 size_t size, int direction);
41
42 extern void debug_dma_sync_single_for_cpu(struct device *dev,
43 dma_addr_t dma_handle, size_t size,
44 int direction);
45
46 extern void debug_dma_sync_single_for_device(struct device *dev,
47 dma_addr_t dma_handle,
48 size_t size, int direction);
49
50 extern void debug_dma_sync_sg_for_cpu(struct device *dev,
51 struct scatterlist *sg,
52 int nelems, int direction);
53
54 extern void debug_dma_sync_sg_for_device(struct device *dev,
55 struct scatterlist *sg,
56 int nelems, int direction);
57 extern void debug_dma_alloc_pages(struct device *dev, struct page *page,
58 size_t size, int direction,
59 dma_addr_t dma_addr,
60 unsigned long attrs);
61 extern void debug_dma_free_pages(struct device *dev, struct page *page,
62 size_t size, int direction,
63 dma_addr_t dma_addr);
64 #else /* CONFIG_DMA_API_DEBUG */
debug_dma_map_page(struct device * dev,struct page * page,size_t offset,size_t size,int direction,dma_addr_t dma_addr,unsigned long attrs)65 static inline void debug_dma_map_page(struct device *dev, struct page *page,
66 size_t offset, size_t size,
67 int direction, dma_addr_t dma_addr,
68 unsigned long attrs)
69 {
70 }
71
debug_dma_unmap_page(struct device * dev,dma_addr_t addr,size_t size,int direction)72 static inline void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
73 size_t size, int direction)
74 {
75 }
76
debug_dma_map_sg(struct device * dev,struct scatterlist * sg,int nents,int mapped_ents,int direction,unsigned long attrs)77 static inline void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
78 int nents, int mapped_ents, int direction,
79 unsigned long attrs)
80 {
81 }
82
debug_dma_unmap_sg(struct device * dev,struct scatterlist * sglist,int nelems,int dir)83 static inline void debug_dma_unmap_sg(struct device *dev,
84 struct scatterlist *sglist,
85 int nelems, int dir)
86 {
87 }
88
debug_dma_alloc_coherent(struct device * dev,size_t size,dma_addr_t dma_addr,void * virt,unsigned long attrs)89 static inline void debug_dma_alloc_coherent(struct device *dev, size_t size,
90 dma_addr_t dma_addr, void *virt,
91 unsigned long attrs)
92 {
93 }
94
debug_dma_free_coherent(struct device * dev,size_t size,void * virt,dma_addr_t addr)95 static inline void debug_dma_free_coherent(struct device *dev, size_t size,
96 void *virt, dma_addr_t addr)
97 {
98 }
99
debug_dma_map_resource(struct device * dev,phys_addr_t addr,size_t size,int direction,dma_addr_t dma_addr,unsigned long attrs)100 static inline void debug_dma_map_resource(struct device *dev, phys_addr_t addr,
101 size_t size, int direction,
102 dma_addr_t dma_addr,
103 unsigned long attrs)
104 {
105 }
106
debug_dma_unmap_resource(struct device * dev,dma_addr_t dma_addr,size_t size,int direction)107 static inline void debug_dma_unmap_resource(struct device *dev,
108 dma_addr_t dma_addr, size_t size,
109 int direction)
110 {
111 }
112
debug_dma_sync_single_for_cpu(struct device * dev,dma_addr_t dma_handle,size_t size,int direction)113 static inline void debug_dma_sync_single_for_cpu(struct device *dev,
114 dma_addr_t dma_handle,
115 size_t size, int direction)
116 {
117 }
118
debug_dma_sync_single_for_device(struct device * dev,dma_addr_t dma_handle,size_t size,int direction)119 static inline void debug_dma_sync_single_for_device(struct device *dev,
120 dma_addr_t dma_handle,
121 size_t size, int direction)
122 {
123 }
124
debug_dma_sync_sg_for_cpu(struct device * dev,struct scatterlist * sg,int nelems,int direction)125 static inline void debug_dma_sync_sg_for_cpu(struct device *dev,
126 struct scatterlist *sg,
127 int nelems, int direction)
128 {
129 }
130
debug_dma_sync_sg_for_device(struct device * dev,struct scatterlist * sg,int nelems,int direction)131 static inline void debug_dma_sync_sg_for_device(struct device *dev,
132 struct scatterlist *sg,
133 int nelems, int direction)
134 {
135 }
136
debug_dma_alloc_pages(struct device * dev,struct page * page,size_t size,int direction,dma_addr_t dma_addr,unsigned long attrs)137 static inline void debug_dma_alloc_pages(struct device *dev, struct page *page,
138 size_t size, int direction,
139 dma_addr_t dma_addr,
140 unsigned long attrs)
141 {
142 }
143
debug_dma_free_pages(struct device * dev,struct page * page,size_t size,int direction,dma_addr_t dma_addr)144 static inline void debug_dma_free_pages(struct device *dev, struct page *page,
145 size_t size, int direction,
146 dma_addr_t dma_addr)
147 {
148 }
149 #endif /* CONFIG_DMA_API_DEBUG */
150 #endif /* _KERNEL_DMA_DEBUG_H */
151