1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (C) 2008 Advanced Micro Devices, Inc.
11 #include <linux/types.h>
17 #ifdef CONFIG_DMA_API_DEBUG
19 extern void dma_debug_add_bus(struct bus_type *bus);
21 extern void debug_dma_map_single(struct device *dev, const void *addr,
24 extern void debug_dma_map_page(struct device *dev, struct page *page,
25 size_t offset, size_t size,
26 int direction, dma_addr_t dma_addr);
28 extern void debug_dma_mapping_error(struct device *dev, dma_addr_t dma_addr);
30 extern void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
31 size_t size, int direction);
33 extern void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
34 int nents, int mapped_ents, int direction);
36 extern void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist,
39 extern void debug_dma_alloc_coherent(struct device *dev, size_t size,
40 dma_addr_t dma_addr, void *virt);
42 extern void debug_dma_free_coherent(struct device *dev, size_t size,
43 void *virt, dma_addr_t addr);
45 extern void debug_dma_map_resource(struct device *dev, phys_addr_t addr,
46 size_t size, int direction,
49 extern void debug_dma_unmap_resource(struct device *dev, dma_addr_t dma_addr,
50 size_t size, int direction);
52 extern void debug_dma_sync_single_for_cpu(struct device *dev,
53 dma_addr_t dma_handle, size_t size,
56 extern void debug_dma_sync_single_for_device(struct device *dev,
57 dma_addr_t dma_handle,
58 size_t size, int direction);
60 extern void debug_dma_sync_sg_for_cpu(struct device *dev,
61 struct scatterlist *sg,
62 int nelems, int direction);
64 extern void debug_dma_sync_sg_for_device(struct device *dev,
65 struct scatterlist *sg,
66 int nelems, int direction);
68 extern void debug_dma_dump_mappings(struct device *dev);
70 extern void debug_dma_assert_idle(struct page *page);
72 #else /* CONFIG_DMA_API_DEBUG */
74 static inline void dma_debug_add_bus(struct bus_type *bus)
78 static inline void debug_dma_map_single(struct device *dev, const void *addr,
83 static inline void debug_dma_map_page(struct device *dev, struct page *page,
84 size_t offset, size_t size,
85 int direction, dma_addr_t dma_addr)
89 static inline void debug_dma_mapping_error(struct device *dev,
94 static inline void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
95 size_t size, int direction)
99 static inline void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
100 int nents, int mapped_ents, int direction)
104 static inline void debug_dma_unmap_sg(struct device *dev,
105 struct scatterlist *sglist,
110 static inline void debug_dma_alloc_coherent(struct device *dev, size_t size,
111 dma_addr_t dma_addr, void *virt)
115 static inline void debug_dma_free_coherent(struct device *dev, size_t size,
116 void *virt, dma_addr_t addr)
120 static inline void debug_dma_map_resource(struct device *dev, phys_addr_t addr,
121 size_t size, int direction,
126 static inline void debug_dma_unmap_resource(struct device *dev,
127 dma_addr_t dma_addr, size_t size,
132 static inline void debug_dma_sync_single_for_cpu(struct device *dev,
133 dma_addr_t dma_handle,
134 size_t size, int direction)
138 static inline void debug_dma_sync_single_for_device(struct device *dev,
139 dma_addr_t dma_handle,
140 size_t size, int direction)
144 static inline void debug_dma_sync_sg_for_cpu(struct device *dev,
145 struct scatterlist *sg,
146 int nelems, int direction)
150 static inline void debug_dma_sync_sg_for_device(struct device *dev,
151 struct scatterlist *sg,
152 int nelems, int direction)
156 static inline void debug_dma_dump_mappings(struct device *dev)
160 static inline void debug_dma_assert_idle(struct page *page)
164 #endif /* CONFIG_DMA_API_DEBUG */
166 #endif /* __DMA_DEBUG_H */