blob: 4208f94d93f761cb833ae87e5322146bd9a5e499 [file] [log] [blame]
Thomas Gleixner45051532019-05-29 16:57:47 -07001/* SPDX-License-Identifier: GPL-2.0-only */
Joerg Roedelf2f45e52009-01-09 12:19:52 +01002/*
3 * Copyright (C) 2008 Advanced Micro Devices, Inc.
4 *
5 * Author: Joerg Roedel <joerg.roedel@amd.com>
Joerg Roedelf2f45e52009-01-09 12:19:52 +01006 */
7
8#ifndef __DMA_DEBUG_H
9#define __DMA_DEBUG_H
10
Joerg Roedel6bf07872009-01-09 12:54:42 +010011#include <linux/types.h>
12
Joerg Roedelf2f45e52009-01-09 12:19:52 +010013struct device;
Joerg Roedel972aa452009-01-09 14:19:54 +010014struct scatterlist;
Joerg Roedel41531c82009-03-16 17:32:14 +010015struct bus_type;
Joerg Roedelf2f45e52009-01-09 12:19:52 +010016
Joerg Roedel6bf07872009-01-09 12:54:42 +010017#ifdef CONFIG_DMA_API_DEBUG
18
Joerg Roedel41531c82009-03-16 17:32:14 +010019extern void dma_debug_add_bus(struct bus_type *bus);
20
Stephen Boyd99c65fa2018-10-08 00:20:07 -070021extern void debug_dma_map_single(struct device *dev, const void *addr,
22 unsigned long len);
23
Joerg Roedelf62bc982009-01-09 14:14:49 +010024extern void debug_dma_map_page(struct device *dev, struct page *page,
25 size_t offset, size_t size,
Christoph Hellwig2e05ea52018-12-25 08:50:35 +010026 int direction, dma_addr_t dma_addr);
Joerg Roedelf62bc982009-01-09 14:14:49 +010027
Shuah Khan6c9c6d62012-10-08 11:08:06 -060028extern void debug_dma_mapping_error(struct device *dev, dma_addr_t dma_addr);
29
Joerg Roedelf62bc982009-01-09 14:14:49 +010030extern void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
Christoph Hellwig2e05ea52018-12-25 08:50:35 +010031 size_t size, int direction);
Joerg Roedelf62bc982009-01-09 14:14:49 +010032
Joerg Roedel972aa452009-01-09 14:19:54 +010033extern void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
34 int nents, int mapped_ents, int direction);
35
36extern void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist,
37 int nelems, int dir);
Joerg Roedelf62bc982009-01-09 14:14:49 +010038
Joerg Roedel6bfd4492009-01-09 14:38:50 +010039extern void debug_dma_alloc_coherent(struct device *dev, size_t size,
40 dma_addr_t dma_addr, void *virt);
41
42extern void debug_dma_free_coherent(struct device *dev, size_t size,
43 void *virt, dma_addr_t addr);
44
Niklas Söderlund0e74b342016-08-10 13:22:15 +020045extern void debug_dma_map_resource(struct device *dev, phys_addr_t addr,
46 size_t size, int direction,
47 dma_addr_t dma_addr);
48
49extern void debug_dma_unmap_resource(struct device *dev, dma_addr_t dma_addr,
50 size_t size, int direction);
51
Joerg Roedelb9d23172009-01-09 14:43:04 +010052extern void debug_dma_sync_single_for_cpu(struct device *dev,
53 dma_addr_t dma_handle, size_t size,
54 int direction);
55
56extern void debug_dma_sync_single_for_device(struct device *dev,
57 dma_addr_t dma_handle,
58 size_t size, int direction);
59
Joerg Roedela31fba52009-01-09 15:01:12 +010060extern void debug_dma_sync_sg_for_cpu(struct device *dev,
61 struct scatterlist *sg,
62 int nelems, int direction);
63
64extern void debug_dma_sync_sg_for_device(struct device *dev,
65 struct scatterlist *sg,
66 int nelems, int direction);
67
David Woodhouseac26c182009-02-12 16:19:13 +010068extern void debug_dma_dump_mappings(struct device *dev);
69
Dan Williams0abdd7a2014-01-21 15:48:12 -080070extern void debug_dma_assert_idle(struct page *page);
71
Joerg Roedel6bf07872009-01-09 12:54:42 +010072#else /* CONFIG_DMA_API_DEBUG */
73
Ingo Molnar84be58d2009-03-18 11:50:29 +010074static inline void dma_debug_add_bus(struct bus_type *bus)
Joerg Roedel41531c82009-03-16 17:32:14 +010075{
76}
77
Stephen Boyd99c65fa2018-10-08 00:20:07 -070078static inline void debug_dma_map_single(struct device *dev, const void *addr,
79 unsigned long len)
80{
81}
82
Joerg Roedelf62bc982009-01-09 14:14:49 +010083static inline void debug_dma_map_page(struct device *dev, struct page *page,
84 size_t offset, size_t size,
Christoph Hellwig2e05ea52018-12-25 08:50:35 +010085 int direction, dma_addr_t dma_addr)
Joerg Roedelf62bc982009-01-09 14:14:49 +010086{
87}
88
Shuah Khan6c9c6d62012-10-08 11:08:06 -060089static inline void debug_dma_mapping_error(struct device *dev,
90 dma_addr_t dma_addr)
91{
92}
93
Joerg Roedelf62bc982009-01-09 14:14:49 +010094static inline void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
Christoph Hellwig2e05ea52018-12-25 08:50:35 +010095 size_t size, int direction)
Joerg Roedelf62bc982009-01-09 14:14:49 +010096{
97}
98
Joerg Roedel972aa452009-01-09 14:19:54 +010099static inline void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
100 int nents, int mapped_ents, int direction)
101{
102}
103
104static inline void debug_dma_unmap_sg(struct device *dev,
105 struct scatterlist *sglist,
106 int nelems, int dir)
107{
108}
Joerg Roedelf62bc982009-01-09 14:14:49 +0100109
Joerg Roedel6bfd4492009-01-09 14:38:50 +0100110static inline void debug_dma_alloc_coherent(struct device *dev, size_t size,
111 dma_addr_t dma_addr, void *virt)
112{
113}
114
115static inline void debug_dma_free_coherent(struct device *dev, size_t size,
116 void *virt, dma_addr_t addr)
117{
118}
119
Niklas Söderlund0e74b342016-08-10 13:22:15 +0200120static inline void debug_dma_map_resource(struct device *dev, phys_addr_t addr,
121 size_t size, int direction,
122 dma_addr_t dma_addr)
123{
124}
125
126static inline void debug_dma_unmap_resource(struct device *dev,
127 dma_addr_t dma_addr, size_t size,
128 int direction)
129{
130}
131
Joerg Roedelb9d23172009-01-09 14:43:04 +0100132static inline void debug_dma_sync_single_for_cpu(struct device *dev,
133 dma_addr_t dma_handle,
134 size_t size, int direction)
135{
136}
137
138static inline void debug_dma_sync_single_for_device(struct device *dev,
139 dma_addr_t dma_handle,
140 size_t size, int direction)
141{
142}
143
Joerg Roedela31fba52009-01-09 15:01:12 +0100144static inline void debug_dma_sync_sg_for_cpu(struct device *dev,
145 struct scatterlist *sg,
146 int nelems, int direction)
147{
148}
149
150static inline void debug_dma_sync_sg_for_device(struct device *dev,
151 struct scatterlist *sg,
152 int nelems, int direction)
153{
154}
155
David Woodhouseac26c182009-02-12 16:19:13 +0100156static inline void debug_dma_dump_mappings(struct device *dev)
157{
158}
159
Dan Williams0abdd7a2014-01-21 15:48:12 -0800160static inline void debug_dma_assert_idle(struct page *page)
161{
162}
163
Joerg Roedel6bf07872009-01-09 12:54:42 +0100164#endif /* CONFIG_DMA_API_DEBUG */
165
Joerg Roedelf2f45e52009-01-09 12:19:52 +0100166#endif /* __DMA_DEBUG_H */