Merge tag 'for-5.15-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux
[linux-2.6-microblaze.git] / include / trace / events / host1x.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * include/trace/events/host1x.h
4  *
5  * host1x event logging to ftrace.
6  *
7  * Copyright (c) 2010-2013, NVIDIA Corporation.
8  */
9
10 #undef TRACE_SYSTEM
11 #define TRACE_SYSTEM host1x
12
13 #if !defined(_TRACE_HOST1X_H) || defined(TRACE_HEADER_MULTI_READ)
14 #define _TRACE_HOST1X_H
15
16 #include <linux/ktime.h>
17 #include <linux/tracepoint.h>
18
19 struct host1x_bo;
20
21 DECLARE_EVENT_CLASS(host1x,
22         TP_PROTO(const char *name),
23         TP_ARGS(name),
24         TP_STRUCT__entry(__field(const char *, name)),
25         TP_fast_assign(__entry->name = name;),
26         TP_printk("name=%s", __entry->name)
27 );
28
29 DEFINE_EVENT(host1x, host1x_channel_open,
30         TP_PROTO(const char *name),
31         TP_ARGS(name)
32 );
33
34 DEFINE_EVENT(host1x, host1x_channel_release,
35         TP_PROTO(const char *name),
36         TP_ARGS(name)
37 );
38
39 DEFINE_EVENT(host1x, host1x_cdma_begin,
40         TP_PROTO(const char *name),
41         TP_ARGS(name)
42 );
43
44 DEFINE_EVENT(host1x, host1x_cdma_end,
45         TP_PROTO(const char *name),
46         TP_ARGS(name)
47 );
48
49 TRACE_EVENT(host1x_cdma_push,
50         TP_PROTO(const char *name, u32 op1, u32 op2),
51
52         TP_ARGS(name, op1, op2),
53
54         TP_STRUCT__entry(
55                 __field(const char *, name)
56                 __field(u32, op1)
57                 __field(u32, op2)
58         ),
59
60         TP_fast_assign(
61                 __entry->name = name;
62                 __entry->op1 = op1;
63                 __entry->op2 = op2;
64         ),
65
66         TP_printk("name=%s, op1=%08x, op2=%08x",
67                 __entry->name, __entry->op1, __entry->op2)
68 );
69
70 TRACE_EVENT(host1x_cdma_push_wide,
71         TP_PROTO(const char *name, u32 op1, u32 op2, u32 op3, u32 op4),
72
73         TP_ARGS(name, op1, op2, op3, op4),
74
75         TP_STRUCT__entry(
76                 __field(const char *, name)
77                 __field(u32, op1)
78                 __field(u32, op2)
79                 __field(u32, op3)
80                 __field(u32, op4)
81         ),
82
83         TP_fast_assign(
84                 __entry->name = name;
85                 __entry->op1 = op1;
86                 __entry->op2 = op2;
87                 __entry->op3 = op3;
88                 __entry->op4 = op4;
89         ),
90
91         TP_printk("name=%s, op1=%08x, op2=%08x, op3=%08x op4=%08x",
92                 __entry->name, __entry->op1, __entry->op2, __entry->op3,
93                 __entry->op4)
94 );
95
96 TRACE_EVENT(host1x_cdma_push_gather,
97         TP_PROTO(const char *name, struct host1x_bo *bo,
98                         u32 words, u32 offset, void *cmdbuf),
99
100         TP_ARGS(name, bo, words, offset, cmdbuf),
101
102         TP_STRUCT__entry(
103                 __field(const char *, name)
104                 __field(struct host1x_bo *, bo)
105                 __field(u32, words)
106                 __field(u32, offset)
107                 __field(bool, cmdbuf)
108                 __dynamic_array(u32, cmdbuf, words)
109         ),
110
111         TP_fast_assign(
112                 if (cmdbuf) {
113                         memcpy(__get_dynamic_array(cmdbuf), cmdbuf+offset,
114                                         words * sizeof(u32));
115                 }
116                 __entry->cmdbuf = cmdbuf;
117                 __entry->name = name;
118                 __entry->bo = bo;
119                 __entry->words = words;
120                 __entry->offset = offset;
121         ),
122
123         TP_printk("name=%s, bo=%p, words=%u, offset=%d, contents=[%s]",
124           __entry->name, __entry->bo,
125           __entry->words, __entry->offset,
126           __print_hex(__get_dynamic_array(cmdbuf),
127                   __entry->cmdbuf ? __entry->words * 4 : 0))
128 );
129
130 TRACE_EVENT(host1x_channel_submit,
131         TP_PROTO(const char *name, u32 cmdbufs, u32 relocs, u32 syncpt_id,
132                  u32 syncpt_incrs),
133
134         TP_ARGS(name, cmdbufs, relocs, syncpt_id, syncpt_incrs),
135
136         TP_STRUCT__entry(
137                 __field(const char *, name)
138                 __field(u32, cmdbufs)
139                 __field(u32, relocs)
140                 __field(u32, syncpt_id)
141                 __field(u32, syncpt_incrs)
142         ),
143
144         TP_fast_assign(
145                 __entry->name = name;
146                 __entry->cmdbufs = cmdbufs;
147                 __entry->relocs = relocs;
148                 __entry->syncpt_id = syncpt_id;
149                 __entry->syncpt_incrs = syncpt_incrs;
150         ),
151
152         TP_printk("name=%s, cmdbufs=%u, relocs=%u, syncpt_id=%u, "
153                   "syncpt_incrs=%u",
154                   __entry->name, __entry->cmdbufs, __entry->relocs,
155                   __entry->syncpt_id, __entry->syncpt_incrs)
156 );
157
158 TRACE_EVENT(host1x_channel_submitted,
159         TP_PROTO(const char *name, u32 syncpt_base, u32 syncpt_max),
160
161         TP_ARGS(name, syncpt_base, syncpt_max),
162
163         TP_STRUCT__entry(
164                 __field(const char *, name)
165                 __field(u32, syncpt_base)
166                 __field(u32, syncpt_max)
167         ),
168
169         TP_fast_assign(
170                 __entry->name = name;
171                 __entry->syncpt_base = syncpt_base;
172                 __entry->syncpt_max = syncpt_max;
173         ),
174
175         TP_printk("name=%s, syncpt_base=%d, syncpt_max=%d",
176                 __entry->name, __entry->syncpt_base, __entry->syncpt_max)
177 );
178
179 TRACE_EVENT(host1x_channel_submit_complete,
180         TP_PROTO(const char *name, int count, u32 thresh),
181
182         TP_ARGS(name, count, thresh),
183
184         TP_STRUCT__entry(
185                 __field(const char *, name)
186                 __field(int, count)
187                 __field(u32, thresh)
188         ),
189
190         TP_fast_assign(
191                 __entry->name = name;
192                 __entry->count = count;
193                 __entry->thresh = thresh;
194         ),
195
196         TP_printk("name=%s, count=%d, thresh=%d",
197                 __entry->name, __entry->count, __entry->thresh)
198 );
199
200 TRACE_EVENT(host1x_wait_cdma,
201         TP_PROTO(const char *name, u32 eventid),
202
203         TP_ARGS(name, eventid),
204
205         TP_STRUCT__entry(
206                 __field(const char *, name)
207                 __field(u32, eventid)
208         ),
209
210         TP_fast_assign(
211                 __entry->name = name;
212                 __entry->eventid = eventid;
213         ),
214
215         TP_printk("name=%s, event=%d", __entry->name, __entry->eventid)
216 );
217
218 TRACE_EVENT(host1x_syncpt_load_min,
219         TP_PROTO(u32 id, u32 val),
220
221         TP_ARGS(id, val),
222
223         TP_STRUCT__entry(
224                 __field(u32, id)
225                 __field(u32, val)
226         ),
227
228         TP_fast_assign(
229                 __entry->id = id;
230                 __entry->val = val;
231         ),
232
233         TP_printk("id=%d, val=%d", __entry->id, __entry->val)
234 );
235
236 TRACE_EVENT(host1x_syncpt_wait_check,
237         TP_PROTO(struct host1x_bo *bo, u32 offset, u32 syncpt_id, u32 thresh,
238                  u32 min),
239
240         TP_ARGS(bo, offset, syncpt_id, thresh, min),
241
242         TP_STRUCT__entry(
243                 __field(struct host1x_bo *, bo)
244                 __field(u32, offset)
245                 __field(u32, syncpt_id)
246                 __field(u32, thresh)
247                 __field(u32, min)
248         ),
249
250         TP_fast_assign(
251                 __entry->bo = bo;
252                 __entry->offset = offset;
253                 __entry->syncpt_id = syncpt_id;
254                 __entry->thresh = thresh;
255                 __entry->min = min;
256         ),
257
258         TP_printk("bo=%p, offset=%05x, id=%d, thresh=%d, current=%d",
259                 __entry->bo, __entry->offset,
260                 __entry->syncpt_id, __entry->thresh,
261                 __entry->min)
262 );
263
264 #endif /*  _TRACE_HOST1X_H */
265
266 /* This part must be outside protection */
267 #include <trace/define_trace.h>