at v4.11 5.7 kB view raw
1/* 2 * Copyright (C) 2008 Advanced Micro Devices, Inc. 3 * 4 * Author: Joerg Roedel <joerg.roedel@amd.com> 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License version 2 as published 8 * by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 */ 19 20#ifndef __DMA_DEBUG_H 21#define __DMA_DEBUG_H 22 23#include <linux/types.h> 24 25struct device; 26struct scatterlist; 27struct bus_type; 28 29#ifdef CONFIG_DMA_API_DEBUG 30 31extern void dma_debug_add_bus(struct bus_type *bus); 32 33extern void dma_debug_init(u32 num_entries); 34 35extern int dma_debug_resize_entries(u32 num_entries); 36 37extern void debug_dma_map_page(struct device *dev, struct page *page, 38 size_t offset, size_t size, 39 int direction, dma_addr_t dma_addr, 40 bool map_single); 41 42extern void debug_dma_mapping_error(struct device *dev, dma_addr_t dma_addr); 43 44extern void debug_dma_unmap_page(struct device *dev, dma_addr_t addr, 45 size_t size, int direction, bool map_single); 46 47extern void debug_dma_map_sg(struct device *dev, struct scatterlist *sg, 48 int nents, int mapped_ents, int direction); 49 50extern void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, 51 int nelems, int dir); 52 53extern void debug_dma_alloc_coherent(struct device *dev, size_t size, 54 dma_addr_t dma_addr, void *virt); 55 56extern void debug_dma_free_coherent(struct device *dev, size_t size, 57 void *virt, dma_addr_t addr); 58 59extern void debug_dma_map_resource(struct device *dev, phys_addr_t addr, 60 size_t size, int direction, 61 dma_addr_t dma_addr); 62 63extern void debug_dma_unmap_resource(struct device *dev, dma_addr_t dma_addr, 64 size_t size, int direction); 65 66extern void debug_dma_sync_single_for_cpu(struct device *dev, 67 dma_addr_t dma_handle, size_t size, 68 int direction); 69 70extern void debug_dma_sync_single_for_device(struct device *dev, 71 dma_addr_t dma_handle, 72 size_t size, int direction); 73 74extern void debug_dma_sync_single_range_for_cpu(struct device *dev, 75 dma_addr_t dma_handle, 76 unsigned long offset, 77 size_t size, 78 int direction); 79 80extern void debug_dma_sync_single_range_for_device(struct device *dev, 81 dma_addr_t dma_handle, 82 unsigned long offset, 83 size_t size, int direction); 84 85extern void debug_dma_sync_sg_for_cpu(struct device *dev, 86 struct scatterlist *sg, 87 int nelems, int direction); 88 89extern void debug_dma_sync_sg_for_device(struct device *dev, 90 struct scatterlist *sg, 91 int nelems, int direction); 92 93extern void debug_dma_dump_mappings(struct device *dev); 94 95extern void debug_dma_assert_idle(struct page *page); 96 97#else /* CONFIG_DMA_API_DEBUG */ 98 99static inline void dma_debug_add_bus(struct bus_type *bus) 100{ 101} 102 103static inline void dma_debug_init(u32 num_entries) 104{ 105} 106 107static inline int dma_debug_resize_entries(u32 num_entries) 108{ 109 return 0; 110} 111 112static inline void debug_dma_map_page(struct device *dev, struct page *page, 113 size_t offset, size_t size, 114 int direction, dma_addr_t dma_addr, 115 bool map_single) 116{ 117} 118 119static inline void debug_dma_mapping_error(struct device *dev, 120 dma_addr_t dma_addr) 121{ 122} 123 124static inline void debug_dma_unmap_page(struct device *dev, dma_addr_t addr, 125 size_t size, int direction, 126 bool map_single) 127{ 128} 129 130static inline void debug_dma_map_sg(struct device *dev, struct scatterlist *sg, 131 int nents, int mapped_ents, int direction) 132{ 133} 134 135static inline void debug_dma_unmap_sg(struct device *dev, 136 struct scatterlist *sglist, 137 int nelems, int dir) 138{ 139} 140 141static inline void debug_dma_alloc_coherent(struct device *dev, size_t size, 142 dma_addr_t dma_addr, void *virt) 143{ 144} 145 146static inline void debug_dma_free_coherent(struct device *dev, size_t size, 147 void *virt, dma_addr_t addr) 148{ 149} 150 151static inline void debug_dma_map_resource(struct device *dev, phys_addr_t addr, 152 size_t size, int direction, 153 dma_addr_t dma_addr) 154{ 155} 156 157static inline void debug_dma_unmap_resource(struct device *dev, 158 dma_addr_t dma_addr, size_t size, 159 int direction) 160{ 161} 162 163static inline void debug_dma_sync_single_for_cpu(struct device *dev, 164 dma_addr_t dma_handle, 165 size_t size, int direction) 166{ 167} 168 169static inline void debug_dma_sync_single_for_device(struct device *dev, 170 dma_addr_t dma_handle, 171 size_t size, int direction) 172{ 173} 174 175static inline void debug_dma_sync_single_range_for_cpu(struct device *dev, 176 dma_addr_t dma_handle, 177 unsigned long offset, 178 size_t size, 179 int direction) 180{ 181} 182 183static inline void debug_dma_sync_single_range_for_device(struct device *dev, 184 dma_addr_t dma_handle, 185 unsigned long offset, 186 size_t size, 187 int direction) 188{ 189} 190 191static inline void debug_dma_sync_sg_for_cpu(struct device *dev, 192 struct scatterlist *sg, 193 int nelems, int direction) 194{ 195} 196 197static inline void debug_dma_sync_sg_for_device(struct device *dev, 198 struct scatterlist *sg, 199 int nelems, int direction) 200{ 201} 202 203static inline void debug_dma_dump_mappings(struct device *dev) 204{ 205} 206 207static inline void debug_dma_assert_idle(struct page *page) 208{ 209} 210 211#endif /* CONFIG_DMA_API_DEBUG */ 212 213#endif /* __DMA_DEBUG_H */