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 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_sync_single_for_cpu(struct device *dev,
  60                                          dma_addr_t dma_handle, size_t size,
  61                                          int direction);
  62
  63extern void debug_dma_sync_single_for_device(struct device *dev,
  64                                             dma_addr_t dma_handle,
  65                                             size_t size, int direction);
  66
  67extern void debug_dma_sync_single_range_for_cpu(struct device *dev,
  68                                                dma_addr_t dma_handle,
  69                                                unsigned long offset,
  70                                                size_t size,
  71                                                int direction);
  72
  73extern void debug_dma_sync_single_range_for_device(struct device *dev,
  74                                                   dma_addr_t dma_handle,
  75                                                   unsigned long offset,
  76                                                   size_t size, int direction);
  77
  78extern void debug_dma_sync_sg_for_cpu(struct device *dev,
  79                                      struct scatterlist *sg,
  80                                      int nelems, int direction);
  81
  82extern void debug_dma_sync_sg_for_device(struct device *dev,
  83                                         struct scatterlist *sg,
  84                                         int nelems, int direction);
  85
  86extern void debug_dma_dump_mappings(struct device *dev);
  87
  88extern void debug_dma_assert_idle(struct page *page);
  89
  90#else /* CONFIG_DMA_API_DEBUG */
  91
  92static inline void dma_debug_add_bus(struct bus_type *bus)
  93{
  94}
  95
  96static inline void dma_debug_init(u32 num_entries)
  97{
  98}
  99
 100static inline int dma_debug_resize_entries(u32 num_entries)
 101{
 102        return 0;
 103}
 104
 105static inline void debug_dma_map_page(struct device *dev, struct page *page,
 106                                      size_t offset, size_t size,
 107                                      int direction, dma_addr_t dma_addr,
 108                                      bool map_single)
 109{
 110}
 111
 112static inline void debug_dma_mapping_error(struct device *dev,
 113                                          dma_addr_t dma_addr)
 114{
 115}
 116
 117static inline void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
 118                                        size_t size, int direction,
 119                                        bool map_single)
 120{
 121}
 122
 123static inline void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
 124                                    int nents, int mapped_ents, int direction)
 125{
 126}
 127
 128static inline void debug_dma_unmap_sg(struct device *dev,
 129                                      struct scatterlist *sglist,
 130                                      int nelems, int dir)
 131{
 132}
 133
 134static inline void debug_dma_alloc_coherent(struct device *dev, size_t size,
 135                                            dma_addr_t dma_addr, void *virt)
 136{
 137}
 138
 139static inline void debug_dma_free_coherent(struct device *dev, size_t size,
 140                                           void *virt, dma_addr_t addr)
 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_single_range_for_cpu(struct device *dev,
 157                                                       dma_addr_t dma_handle,
 158                                                       unsigned long offset,
 159                                                       size_t size,
 160                                                       int direction)
 161{
 162}
 163
 164static inline void debug_dma_sync_single_range_for_device(struct device *dev,
 165                                                          dma_addr_t dma_handle,
 166                                                          unsigned long offset,
 167                                                          size_t size,
 168                                                          int direction)
 169{
 170}
 171
 172static inline void debug_dma_sync_sg_for_cpu(struct device *dev,
 173                                             struct scatterlist *sg,
 174                                             int nelems, int direction)
 175{
 176}
 177
 178static inline void debug_dma_sync_sg_for_device(struct device *dev,
 179                                                struct scatterlist *sg,
 180                                                int nelems, int direction)
 181{
 182}
 183
 184static inline void debug_dma_dump_mappings(struct device *dev)
 185{
 186}
 187
 188static inline void debug_dma_assert_idle(struct page *page)
 189{
 190}
 191
 192#endif /* CONFIG_DMA_API_DEBUG */
 193
 194#endif /* __DMA_DEBUG_H */
 195