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 16 extern void debug_dma_unmap_page(struct device *dev, dma_addr_t addr, 17 size_t size, int direction); 18 19 extern void debug_dma_map_sg(struct device *dev, struct scatterlist *sg, 20 int nents, int mapped_ents, int direction); 21 22 extern void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, 23 int nelems, int dir); 24 25 extern void debug_dma_alloc_coherent(struct device *dev, size_t size, 26 dma_addr_t dma_addr, void *virt); 27 28 extern void debug_dma_free_coherent(struct device *dev, size_t size, 29 void *virt, dma_addr_t addr); 30 31 extern void debug_dma_map_resource(struct device *dev, phys_addr_t addr, 32 size_t size, int direction, 33 dma_addr_t dma_addr); 34 35 extern void debug_dma_unmap_resource(struct device *dev, dma_addr_t dma_addr, 36 size_t size, int direction); 37 38 extern void debug_dma_sync_single_for_cpu(struct device *dev, 39 dma_addr_t dma_handle, size_t size, 40 int direction); 41 42 extern void debug_dma_sync_single_for_device(struct device *dev, 43 dma_addr_t dma_handle, 44 size_t size, int direction); 45 46 extern void debug_dma_sync_sg_for_cpu(struct device *dev, 47 struct scatterlist *sg, 48 int nelems, int direction); 49 50 extern void debug_dma_sync_sg_for_device(struct device *dev, 51 struct scatterlist *sg, 52 int nelems, int direction); 53 #else /* CONFIG_DMA_API_DEBUG */ 54 static inline void debug_dma_map_page(struct device *dev, struct page *page, 55 size_t offset, size_t size, 56 int direction, dma_addr_t dma_addr) 57 { 58 } 59 60 static inline void debug_dma_unmap_page(struct device *dev, dma_addr_t addr, 61 size_t size, int direction) 62 { 63 } 64 65 static inline void debug_dma_map_sg(struct device *dev, struct scatterlist *sg, 66 int nents, int mapped_ents, int direction) 67 { 68 } 69 70 static inline void debug_dma_unmap_sg(struct device *dev, 71 struct scatterlist *sglist, 72 int nelems, int dir) 73 { 74 } 75 76 static inline void debug_dma_alloc_coherent(struct device *dev, size_t size, 77 dma_addr_t dma_addr, void *virt) 78 { 79 } 80 81 static inline void debug_dma_free_coherent(struct device *dev, size_t size, 82 void *virt, dma_addr_t addr) 83 { 84 } 85 86 static inline void debug_dma_map_resource(struct device *dev, phys_addr_t addr, 87 size_t size, int direction, 88 dma_addr_t dma_addr) 89 { 90 } 91 92 static inline void debug_dma_unmap_resource(struct device *dev, 93 dma_addr_t dma_addr, size_t size, 94 int direction) 95 { 96 } 97 98 static inline void debug_dma_sync_single_for_cpu(struct device *dev, 99 dma_addr_t dma_handle, 100 size_t size, int direction) 101 { 102 } 103 104 static inline void debug_dma_sync_single_for_device(struct device *dev, 105 dma_addr_t dma_handle, 106 size_t size, int direction) 107 { 108 } 109 110 static inline void debug_dma_sync_sg_for_cpu(struct device *dev, 111 struct scatterlist *sg, 112 int nelems, int direction) 113 { 114 } 115 116 static inline void debug_dma_sync_sg_for_device(struct device *dev, 117 struct scatterlist *sg, 118 int nelems, int direction) 119 { 120 } 121 #endif /* CONFIG_DMA_API_DEBUG */ 122 #endif /* _KERNEL_DMA_DEBUG_H */ 123