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
12extern 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
17extern void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
18				 size_t size, int direction);
19
20extern void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
21			     int nents, int mapped_ents, int direction,
22			     unsigned long attrs);
23
24extern void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist,
25			       int nelems, int dir);
26
27extern void debug_dma_alloc_coherent(struct device *dev, size_t size,
28				     dma_addr_t dma_addr, void *virt,
29				     unsigned long attrs);
30
31extern void debug_dma_free_coherent(struct device *dev, size_t size,
32				    void *virt, dma_addr_t addr);
33
34extern 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
39extern void debug_dma_unmap_resource(struct device *dev, dma_addr_t dma_addr,
40				     size_t size, int direction);
41
42extern void debug_dma_sync_single_for_cpu(struct device *dev,
43					  dma_addr_t dma_handle, size_t size,
44					  int direction);
45
46extern void debug_dma_sync_single_for_device(struct device *dev,
47					     dma_addr_t dma_handle,
48					     size_t size, int direction);
49
50extern void debug_dma_sync_sg_for_cpu(struct device *dev,
51				      struct scatterlist *sg,
52				      int nelems, int direction);
53
54extern 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 */
58static 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
65static inline void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
66					size_t size, int direction)
67{
68}
69
70static 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
76static inline void debug_dma_unmap_sg(struct device *dev,
77				      struct scatterlist *sglist,
78				      int nelems, int dir)
79{
80}
81
82static 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
88static inline void debug_dma_free_coherent(struct device *dev, size_t size,
89					   void *virt, dma_addr_t addr)
90{
91}
92
93static 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
100static inline void debug_dma_unmap_resource(struct device *dev,
101					    dma_addr_t dma_addr, size_t size,
102					    int direction)
103{
104}
105
106static 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
112static 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
118static inline void debug_dma_sync_sg_for_cpu(struct device *dev,
119					     struct scatterlist *sg,
120					     int nelems, int direction)
121{
122}
123
124static 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