1 // SPDX-License-Identifier: GPL-2.0+
2 /* Copyright (C) 2015-2018 Broadcom */
3 
4 #if !defined(_V3D_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
5 #define _V3D_TRACE_H_
6 
7 #include <linux/stringify.h>
8 #include <linux/types.h>
9 #include <linux/tracepoint.h>
10 
11 #undef TRACE_SYSTEM
12 #define TRACE_SYSTEM v3d
13 #define TRACE_INCLUDE_FILE v3d_trace
14 
15 TRACE_EVENT(v3d_submit_cl_ioctl,
16 	    TP_PROTO(struct drm_device *dev, u32 ct1qba, u32 ct1qea),
17 	    TP_ARGS(dev, ct1qba, ct1qea),
18 
19 	    TP_STRUCT__entry(
20 			     __field(u32, dev)
21 			     __field(u32, ct1qba)
22 			     __field(u32, ct1qea)
23 			     ),
24 
25 	    TP_fast_assign(
26 			   __entry->dev = dev->primary->index;
27 			   __entry->ct1qba = ct1qba;
28 			   __entry->ct1qea = ct1qea;
29 			   ),
30 
31 	    TP_printk("dev=%u, RCL 0x%08x..0x%08x",
32 		      __entry->dev,
33 		      __entry->ct1qba,
34 		      __entry->ct1qea)
35 );
36 
37 TRACE_EVENT(v3d_submit_cl,
38 	    TP_PROTO(struct drm_device *dev, bool is_render,
39 		     uint64_t seqno,
40 		     u32 ctnqba, u32 ctnqea),
41 	    TP_ARGS(dev, is_render, seqno, ctnqba, ctnqea),
42 
43 	    TP_STRUCT__entry(
44 			     __field(u32, dev)
45 			     __field(bool, is_render)
46 			     __field(u64, seqno)
47 			     __field(u32, ctnqba)
48 			     __field(u32, ctnqea)
49 			     ),
50 
51 	    TP_fast_assign(
52 			   __entry->dev = dev->primary->index;
53 			   __entry->is_render = is_render;
54 			   __entry->seqno = seqno;
55 			   __entry->ctnqba = ctnqba;
56 			   __entry->ctnqea = ctnqea;
57 			   ),
58 
59 	    TP_printk("dev=%u, %s, seqno=%llu, 0x%08x..0x%08x",
60 		      __entry->dev,
61 		      __entry->is_render ? "RCL" : "BCL",
62 		      __entry->seqno,
63 		      __entry->ctnqba,
64 		      __entry->ctnqea)
65 );
66 
67 TRACE_EVENT(v3d_bcl_irq,
68 	    TP_PROTO(struct drm_device *dev,
69 		     uint64_t seqno),
70 	    TP_ARGS(dev, seqno),
71 
72 	    TP_STRUCT__entry(
73 			     __field(u32, dev)
74 			     __field(u64, seqno)
75 			     ),
76 
77 	    TP_fast_assign(
78 			   __entry->dev = dev->primary->index;
79 			   __entry->seqno = seqno;
80 			   ),
81 
82 	    TP_printk("dev=%u, seqno=%llu",
83 		      __entry->dev,
84 		      __entry->seqno)
85 );
86 
87 TRACE_EVENT(v3d_rcl_irq,
88 	    TP_PROTO(struct drm_device *dev,
89 		     uint64_t seqno),
90 	    TP_ARGS(dev, seqno),
91 
92 	    TP_STRUCT__entry(
93 			     __field(u32, dev)
94 			     __field(u64, seqno)
95 			     ),
96 
97 	    TP_fast_assign(
98 			   __entry->dev = dev->primary->index;
99 			   __entry->seqno = seqno;
100 			   ),
101 
102 	    TP_printk("dev=%u, seqno=%llu",
103 		      __entry->dev,
104 		      __entry->seqno)
105 );
106 
107 TRACE_EVENT(v3d_tfu_irq,
108 	    TP_PROTO(struct drm_device *dev,
109 		     uint64_t seqno),
110 	    TP_ARGS(dev, seqno),
111 
112 	    TP_STRUCT__entry(
113 			     __field(u32, dev)
114 			     __field(u64, seqno)
115 			     ),
116 
117 	    TP_fast_assign(
118 			   __entry->dev = dev->primary->index;
119 			   __entry->seqno = seqno;
120 			   ),
121 
122 	    TP_printk("dev=%u, seqno=%llu",
123 		      __entry->dev,
124 		      __entry->seqno)
125 );
126 
127 TRACE_EVENT(v3d_csd_irq,
128 	    TP_PROTO(struct drm_device *dev,
129 		     uint64_t seqno),
130 	    TP_ARGS(dev, seqno),
131 
132 	    TP_STRUCT__entry(
133 			     __field(u32, dev)
134 			     __field(u64, seqno)
135 			     ),
136 
137 	    TP_fast_assign(
138 			   __entry->dev = dev->primary->index;
139 			   __entry->seqno = seqno;
140 			   ),
141 
142 	    TP_printk("dev=%u, seqno=%llu",
143 		      __entry->dev,
144 		      __entry->seqno)
145 );
146 
147 TRACE_EVENT(v3d_submit_tfu_ioctl,
148 	    TP_PROTO(struct drm_device *dev, u32 iia),
149 	    TP_ARGS(dev, iia),
150 
151 	    TP_STRUCT__entry(
152 			     __field(u32, dev)
153 			     __field(u32, iia)
154 			     ),
155 
156 	    TP_fast_assign(
157 			   __entry->dev = dev->primary->index;
158 			   __entry->iia = iia;
159 			   ),
160 
161 	    TP_printk("dev=%u, IIA 0x%08x",
162 		      __entry->dev,
163 		      __entry->iia)
164 );
165 
166 TRACE_EVENT(v3d_submit_tfu,
167 	    TP_PROTO(struct drm_device *dev,
168 		     uint64_t seqno),
169 	    TP_ARGS(dev, seqno),
170 
171 	    TP_STRUCT__entry(
172 			     __field(u32, dev)
173 			     __field(u64, seqno)
174 			     ),
175 
176 	    TP_fast_assign(
177 			   __entry->dev = dev->primary->index;
178 			   __entry->seqno = seqno;
179 			   ),
180 
181 	    TP_printk("dev=%u, seqno=%llu",
182 		      __entry->dev,
183 		      __entry->seqno)
184 );
185 
186 TRACE_EVENT(v3d_submit_csd_ioctl,
187 	    TP_PROTO(struct drm_device *dev, u32 cfg5, u32 cfg6),
188 	    TP_ARGS(dev, cfg5, cfg6),
189 
190 	    TP_STRUCT__entry(
191 			     __field(u32, dev)
192 			     __field(u32, cfg5)
193 			     __field(u32, cfg6)
194 			     ),
195 
196 	    TP_fast_assign(
197 			   __entry->dev = dev->primary->index;
198 			   __entry->cfg5 = cfg5;
199 			   __entry->cfg6 = cfg6;
200 			   ),
201 
202 	    TP_printk("dev=%u, CFG5 0x%08x, CFG6 0x%08x",
203 		      __entry->dev,
204 		      __entry->cfg5,
205 		      __entry->cfg6)
206 );
207 
208 TRACE_EVENT(v3d_submit_csd,
209 	    TP_PROTO(struct drm_device *dev,
210 		     uint64_t seqno),
211 	    TP_ARGS(dev, seqno),
212 
213 	    TP_STRUCT__entry(
214 			     __field(u32, dev)
215 			     __field(u64, seqno)
216 			     ),
217 
218 	    TP_fast_assign(
219 			   __entry->dev = dev->primary->index;
220 			   __entry->seqno = seqno;
221 			   ),
222 
223 	    TP_printk("dev=%u, seqno=%llu",
224 		      __entry->dev,
225 		      __entry->seqno)
226 );
227 
228 TRACE_EVENT(v3d_cache_clean_begin,
229 	    TP_PROTO(struct drm_device *dev),
230 	    TP_ARGS(dev),
231 
232 	    TP_STRUCT__entry(
233 			     __field(u32, dev)
234 			     ),
235 
236 	    TP_fast_assign(
237 			   __entry->dev = dev->primary->index;
238 			   ),
239 
240 	    TP_printk("dev=%u",
241 		      __entry->dev)
242 );
243 
244 TRACE_EVENT(v3d_cache_clean_end,
245 	    TP_PROTO(struct drm_device *dev),
246 	    TP_ARGS(dev),
247 
248 	    TP_STRUCT__entry(
249 			     __field(u32, dev)
250 			     ),
251 
252 	    TP_fast_assign(
253 			   __entry->dev = dev->primary->index;
254 			   ),
255 
256 	    TP_printk("dev=%u",
257 		      __entry->dev)
258 );
259 
260 TRACE_EVENT(v3d_reset_begin,
261 	    TP_PROTO(struct drm_device *dev),
262 	    TP_ARGS(dev),
263 
264 	    TP_STRUCT__entry(
265 			     __field(u32, dev)
266 			     ),
267 
268 	    TP_fast_assign(
269 			   __entry->dev = dev->primary->index;
270 			   ),
271 
272 	    TP_printk("dev=%u",
273 		      __entry->dev)
274 );
275 
276 TRACE_EVENT(v3d_reset_end,
277 	    TP_PROTO(struct drm_device *dev),
278 	    TP_ARGS(dev),
279 
280 	    TP_STRUCT__entry(
281 			     __field(u32, dev)
282 			     ),
283 
284 	    TP_fast_assign(
285 			   __entry->dev = dev->primary->index;
286 			   ),
287 
288 	    TP_printk("dev=%u",
289 		      __entry->dev)
290 );
291 
292 #endif /* _V3D_TRACE_H_ */
293 
294 /* This part must be outside protection */
295 #undef TRACE_INCLUDE_PATH
296 #define TRACE_INCLUDE_PATH .
297 #include <trace/define_trace.h>
298