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 #else /* CONFIG_DMA_API_DEBUG */ 58 static inline void debug_dma_map_page(struct device *dev, struct page *page, 59 size_t offset, size_t size, 60 int direction, dma_addr_t dma_addr, 61 unsigned long attrs) 62 { 63 } 64 65 static inline void debug_dma_unmap_page(struct device *dev, dma_addr_t addr, 66 size_t size, int direction) 67 { 68 } 69 70 static inline void debug_dma_map_sg(struct device *dev, struct scatterlist *sg, 71 int nents, int mapped_ents, int direction, 72 unsigned long attrs) 73 { 74 } 75 76 static inline void debug_dma_unmap_sg(struct device *dev, 77 struct scatterlist *sglist, 78 int nelems, int dir) 79 { 80 } 81 82 static inline void debug_dma_alloc_coherent(struct device *dev, size_t size, 83 dma_addr_t dma_addr, void *virt, 84 unsigned long attrs) 85 { 86 } 87 88 static inline void debug_dma_free_coherent(struct device *dev, size_t size, 89 void *virt, dma_addr_t addr) 90 { 91 } 92 93 static inline void debug_dma_map_resource(struct device *dev, phys_addr_t addr, 94 size_t size, int direction, 95 dma_addr_t dma_addr, 96 unsigned long attrs) 97 { 98 } 99 100 static inline void debug_dma_unmap_resource(struct device *dev, 101 dma_addr_t dma_addr, size_t size, 102 int direction) 103 { 104 } 105 106 static inline void debug_dma_sync_single_for_cpu(struct device *dev, 107 dma_addr_t dma_handle, 108 size_t size, int direction) 109 { 110 } 111 112 static inline void debug_dma_sync_single_for_device(struct device *dev, 113 dma_addr_t dma_handle, 114 size_t size, int direction) 115 { 116 } 117 118 static inline void debug_dma_sync_sg_for_cpu(struct device *dev, 119 struct scatterlist *sg, 120 int nelems, int direction) 121 { 122 } 123 124 static inline void debug_dma_sync_sg_for_device(struct device *dev, 125 struct scatterlist *sg, 126 int nelems, int direction) 127 { 128 } 129 #endif /* CONFIG_DMA_API_DEBUG */ 130 #endif /* _KERNEL_DMA_DEBUG_H */ 131