linux/include/linux/dma-debug.h
<<
>>
Prefs
   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 debug_dma_map_single(struct device *dev, const void *addr,
  34                                 unsigned long len);
  35
  36extern void debug_dma_map_page(struct device *dev, struct page *page,
  37                               size_t offset, size_t size,
  38                               int direction, dma_addr_t dma_addr);
  39
  40extern void debug_dma_mapping_error(struct device *dev, dma_addr_t dma_addr);
  41
  42extern void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
  43                                 size_t size, int direction);
  44
  45extern void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
  46                             int nents, int mapped_ents, int direction);
  47
  48extern void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist,
  49                               int nelems, int dir);
  50
  51extern void debug_dma_alloc_coherent(struct device *dev, size_t size,
  52                                     dma_addr_t dma_addr, void *virt);
  53
  54extern void debug_dma_free_coherent(struct device *dev, size_t size,
  55                                    void *virt, dma_addr_t addr);
  56
  57extern void debug_dma_map_resource(struct device *dev, phys_addr_t addr,
  58                                   size_t size, int direction,
  59                                   dma_addr_t dma_addr);
  60
  61extern void debug_dma_unmap_resource(struct device *dev, dma_addr_t dma_addr,
  62                                     size_t size, int direction);
  63
  64extern void debug_dma_sync_single_for_cpu(struct device *dev,
  65                                          dma_addr_t dma_handle, size_t size,
  66                                          int direction);
  67
  68extern void debug_dma_sync_single_for_device(struct device *dev,
  69                                             dma_addr_t dma_handle,
  70                                             size_t size, int direction);
  71
  72extern void debug_dma_sync_sg_for_cpu(struct device *dev,
  73                                      struct scatterlist *sg,
  74                                      int nelems, int direction);
  75
  76extern void debug_dma_sync_sg_for_device(struct device *dev,
  77                                         struct scatterlist *sg,
  78                                         int nelems, int direction);
  79
  80extern void debug_dma_dump_mappings(struct device *dev);
  81
  82extern void debug_dma_assert_idle(struct page *page);
  83
  84#else /* CONFIG_DMA_API_DEBUG */
  85
  86static inline void dma_debug_add_bus(struct bus_type *bus)
  87{
  88}
  89
  90static inline void debug_dma_map_single(struct device *dev, const void *addr,
  91                                        unsigned long len)
  92{
  93}
  94
  95static inline void debug_dma_map_page(struct device *dev, struct page *page,
  96                                      size_t offset, size_t size,
  97                                      int direction, dma_addr_t dma_addr)
  98{
  99}
 100
 101static inline void debug_dma_mapping_error(struct device *dev,
 102                                          dma_addr_t dma_addr)
 103{
 104}
 105
 106static inline void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
 107                                        size_t size, int direction)
 108{
 109}
 110
 111static inline void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
 112                                    int nents, int mapped_ents, int direction)
 113{
 114}
 115
 116static inline void debug_dma_unmap_sg(struct device *dev,
 117                                      struct scatterlist *sglist,
 118                                      int nelems, int dir)
 119{
 120}
 121
 122static inline void debug_dma_alloc_coherent(struct device *dev, size_t size,
 123                                            dma_addr_t dma_addr, void *virt)
 124{
 125}
 126
 127static inline void debug_dma_free_coherent(struct device *dev, size_t size,
 128                                           void *virt, dma_addr_t addr)
 129{
 130}
 131
 132static inline void debug_dma_map_resource(struct device *dev, phys_addr_t addr,
 133                                          size_t size, int direction,
 134                                          dma_addr_t dma_addr)
 135{
 136}
 137
 138static inline void debug_dma_unmap_resource(struct device *dev,
 139                                            dma_addr_t dma_addr, size_t size,
 140                                            int direction)
 141{
 142}
 143
 144static inline void debug_dma_sync_single_for_cpu(struct device *dev,
 145                                                 dma_addr_t dma_handle,
 146                                                 size_t size, int direction)
 147{
 148}
 149
 150static inline void debug_dma_sync_single_for_device(struct device *dev,
 151                                                    dma_addr_t dma_handle,
 152                                                    size_t size, int direction)
 153{
 154}
 155
 156static inline void debug_dma_sync_sg_for_cpu(struct device *dev,
 157                                             struct scatterlist *sg,
 158                                             int nelems, int direction)
 159{
 160}
 161
 162static inline void debug_dma_sync_sg_for_device(struct device *dev,
 163                                                struct scatterlist *sg,
 164                                                int nelems, int direction)
 165{
 166}
 167
 168static inline void debug_dma_dump_mappings(struct device *dev)
 169{
 170}
 171
 172static inline void debug_dma_assert_idle(struct page *page)
 173{
 174}
 175
 176#endif /* CONFIG_DMA_API_DEBUG */
 177
 178#endif /* __DMA_DEBUG_H */
 179