blob: 22bc5763d04a6904a7238ad841a46474362fee5f [file] [log] [blame]
Jeremy Gebbena5859272012-03-01 12:46:28 -07001/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Norman Geed7402ff2011-10-28 08:51:11 -06002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#if !defined(_KGSL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
15#define _KGSL_TRACE_H
16
17#undef TRACE_SYSTEM
18#define TRACE_SYSTEM kgsl
19#undef TRACE_INCLUDE_PATH
20#define TRACE_INCLUDE_PATH .
21#undef TRACE_INCLUDE_FILE
22#define TRACE_INCLUDE_FILE kgsl_trace
23
24#include <linux/tracepoint.h>
25
26struct kgsl_device;
27struct kgsl_ringbuffer_issueibcmds;
28struct kgsl_device_waittimestamp;
29
30/*
31 * Tracepoint for kgsl issue ib commands
32 */
33TRACE_EVENT(kgsl_issueibcmds,
34
35 TP_PROTO(struct kgsl_device *device,
36 struct kgsl_ringbuffer_issueibcmds *cmd, int result),
37
38 TP_ARGS(device, cmd, result),
39
40 TP_STRUCT__entry(
41 __string(device_name, device->name)
42 __field(unsigned int, drawctxt_id)
43 __field(unsigned int, ibdesc_addr)
44 __field(unsigned int, numibs)
45 __field(unsigned int, timestamp)
46 __field(unsigned int, flags)
47 __field(int, result)
48 ),
49
50 TP_fast_assign(
51 __assign_str(device_name, device->name);
52 __entry->drawctxt_id = cmd->drawctxt_id;
53 __entry->ibdesc_addr = cmd->ibdesc_addr;
54 __entry->numibs = cmd->numibs;
55 __entry->timestamp = cmd->timestamp;
56 __entry->flags = cmd->flags;
57 __entry->result = result;
58 ),
59
60 TP_printk(
61 "d_name=%s ctx=%u ib=%u numibs=%u timestamp=%u "
62 "flags=%u result=%d",
63 __get_str(device_name),
64 __entry->drawctxt_id,
65 __entry->ibdesc_addr,
66 __entry->numibs,
67 __entry->timestamp,
68 __entry->flags,
69 __entry->result
70 )
71);
72
73/*
74 * Tracepoint for kgsl readtimestamp
75 */
76TRACE_EVENT(kgsl_readtimestamp,
77
78 TP_PROTO(struct kgsl_device *device,
79 struct kgsl_cmdstream_readtimestamp *cmd),
80
81 TP_ARGS(device, cmd),
82
83 TP_STRUCT__entry(
84 __string(device_name, device->name)
85 __field(unsigned int, type)
86 __field(unsigned int, timestamp)
87 ),
88
89 TP_fast_assign(
90 __assign_str(device_name, device->name);
91 __entry->type = cmd->type;
92 __entry->timestamp = cmd->timestamp;
93 ),
94
95 TP_printk(
96 "d_name=%s type=%u timestamp=%u",
97 __get_str(device_name),
98 __entry->type,
99 __entry->timestamp
100 )
101);
102
103/*
104 * Tracepoint for kgsl waittimestamp entry
105 */
106TRACE_EVENT(kgsl_waittimestamp_entry,
107
108 TP_PROTO(struct kgsl_device *device,
109 struct kgsl_device_waittimestamp *cmd),
110
111 TP_ARGS(device, cmd),
112
113 TP_STRUCT__entry(
114 __string(device_name, device->name)
115 __field(unsigned int, timestamp)
116 __field(unsigned int, timeout)
117 ),
118
119 TP_fast_assign(
120 __assign_str(device_name, device->name);
121 __entry->timestamp = cmd->timestamp;
122 __entry->timeout = cmd->timeout;
123 ),
124
125 TP_printk(
126 "d_name=%s timestamp=%u timeout=%u",
127 __get_str(device_name),
128 __entry->timestamp,
129 __entry->timeout
130 )
131);
132
133/*
134 * Tracepoint for kgsl waittimestamp exit
135 */
136TRACE_EVENT(kgsl_waittimestamp_exit,
137
138 TP_PROTO(struct kgsl_device *device, int result),
139
140 TP_ARGS(device, result),
141
142 TP_STRUCT__entry(
143 __string(device_name, device->name)
144 __field(int, result)
145 ),
146
147 TP_fast_assign(
148 __assign_str(device_name, device->name);
149 __entry->result = result;
150 ),
151
152 TP_printk(
153 "d_name=%s result=%d",
154 __get_str(device_name),
155 __entry->result
156 )
157);
Jeremy Gebbenb50f3312011-12-16 08:58:33 -0700158
159DECLARE_EVENT_CLASS(kgsl_pwr_template,
160 TP_PROTO(struct kgsl_device *device, int on),
161
162 TP_ARGS(device, on),
163
164 TP_STRUCT__entry(
165 __string(device_name, device->name)
166 __field(int, on)
167 ),
168
169 TP_fast_assign(
170 __assign_str(device_name, device->name);
171 __entry->on = on;
172 ),
173
174 TP_printk(
175 "d_name=%s %s",
176 __get_str(device_name),
177 __entry->on ? "on" : "off"
178 )
179);
180
181DEFINE_EVENT(kgsl_pwr_template, kgsl_clk,
182 TP_PROTO(struct kgsl_device *device, int on),
183 TP_ARGS(device, on)
184);
185
186DEFINE_EVENT(kgsl_pwr_template, kgsl_irq,
187 TP_PROTO(struct kgsl_device *device, int on),
188 TP_ARGS(device, on)
189);
190
191DEFINE_EVENT(kgsl_pwr_template, kgsl_bus,
192 TP_PROTO(struct kgsl_device *device, int on),
193 TP_ARGS(device, on)
194);
195
196DEFINE_EVENT(kgsl_pwr_template, kgsl_rail,
197 TP_PROTO(struct kgsl_device *device, int on),
198 TP_ARGS(device, on)
199);
200
201TRACE_EVENT(kgsl_pwrlevel,
202
203 TP_PROTO(struct kgsl_device *device, unsigned int pwrlevel,
204 unsigned int freq),
205
206 TP_ARGS(device, pwrlevel, freq),
207
208 TP_STRUCT__entry(
209 __string(device_name, device->name)
210 __field(unsigned int, pwrlevel)
211 __field(unsigned int, freq)
212 ),
213
214 TP_fast_assign(
215 __assign_str(device_name, device->name);
216 __entry->pwrlevel = pwrlevel;
217 __entry->freq = freq;
218 ),
219
220 TP_printk(
221 "d_name=%s pwrlevel=%d freq=%d",
222 __get_str(device_name),
223 __entry->pwrlevel,
224 __entry->freq
225 )
226);
227
228DECLARE_EVENT_CLASS(kgsl_pwrstate_template,
229 TP_PROTO(struct kgsl_device *device, unsigned int state),
230
231 TP_ARGS(device, state),
232
233 TP_STRUCT__entry(
234 __string(device_name, device->name)
235 __field(unsigned int, state)
236 ),
237
238 TP_fast_assign(
239 __assign_str(device_name, device->name);
240 __entry->state = state;
241 ),
242
243 TP_printk(
244 "d_name=%s %s",
245 __get_str(device_name),
246 kgsl_pwrstate_to_str(__entry->state)
247 )
248);
249
250DEFINE_EVENT(kgsl_pwrstate_template, kgsl_pwr_set_state,
251 TP_PROTO(struct kgsl_device *device, unsigned int state),
252 TP_ARGS(device, state)
253);
254
255DEFINE_EVENT(kgsl_pwrstate_template, kgsl_pwr_request_state,
256 TP_PROTO(struct kgsl_device *device, unsigned int state),
257 TP_ARGS(device, state)
258);
259
Jeremy Gebbena5859272012-03-01 12:46:28 -0700260TRACE_EVENT(kgsl_mem_alloc,
261
262 TP_PROTO(struct kgsl_mem_entry *mem_entry),
263
264 TP_ARGS(mem_entry),
265
266 TP_STRUCT__entry(
267 __field(unsigned int, gpuaddr)
268 __field(unsigned int, size)
269 ),
270
271 TP_fast_assign(
272 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
273 __entry->size = mem_entry->memdesc.size;
274 ),
275
276 TP_printk(
277 "gpuaddr=0x%08x size=%d",
278 __entry->gpuaddr, __entry->size
279 )
280);
281
282TRACE_EVENT(kgsl_mem_map,
283
284 TP_PROTO(struct kgsl_mem_entry *mem_entry, int fd),
285
286 TP_ARGS(mem_entry, fd),
287
288 TP_STRUCT__entry(
289 __field(unsigned int, gpuaddr)
290 __field(unsigned int, size)
291 __field(int, fd)
292 __field(int, type)
293 ),
294
295 TP_fast_assign(
296 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
297 __entry->size = mem_entry->memdesc.size;
298 __entry->fd = fd;
299 __entry->type = mem_entry->memtype;
300 ),
301
302 TP_printk(
303 "gpuaddr=0x%08x size=%d type=%d fd=%d",
304 __entry->gpuaddr, __entry->size,
305 __entry->type, __entry->fd
306 )
307);
308
309TRACE_EVENT(kgsl_mem_free,
310
311 TP_PROTO(struct kgsl_mem_entry *mem_entry),
312
313 TP_ARGS(mem_entry),
314
315 TP_STRUCT__entry(
316 __field(unsigned int, gpuaddr)
317 __field(unsigned int, size)
318 __field(int, type)
319 __field(int, fd)
320 ),
321
322 TP_fast_assign(
323 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
324 __entry->size = mem_entry->memdesc.size;
325 __entry->type = mem_entry->memtype;
326 ),
327
328 TP_printk(
329 "gpuaddr=0x%08x size=%d type=%d",
330 __entry->gpuaddr, __entry->size, __entry->type
331 )
332);
333
334DECLARE_EVENT_CLASS(kgsl_mem_timestamp_template,
335
336 TP_PROTO(struct kgsl_mem_entry *mem_entry, unsigned int curr_ts),
337
338 TP_ARGS(mem_entry, curr_ts),
339
340 TP_STRUCT__entry(
341 __field(unsigned int, gpuaddr)
342 __field(unsigned int, size)
343 __field(int, type)
344 __field(unsigned int, drawctxt_id)
345 __field(unsigned int, curr_ts)
346 __field(unsigned int, free_ts)
347 ),
348
349 TP_fast_assign(
350 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
351 __entry->size = mem_entry->memdesc.size;
352 __entry->drawctxt_id = 1337;
353 __entry->type = mem_entry->memtype;
354 __entry->curr_ts = curr_ts;
355 __entry->free_ts = mem_entry->free_timestamp;
356 ),
357
358 TP_printk(
359 "gpuaddr=0x%08x size=%d type=%d ctx=%u curr_ts=0x%08x free_ts=0x%08x",
360 __entry->gpuaddr, __entry->size, __entry->type,
361 __entry->drawctxt_id, __entry->curr_ts, __entry->free_ts
362 )
363);
364
365DEFINE_EVENT(kgsl_mem_timestamp_template, kgsl_mem_timestamp_queue,
366 TP_PROTO(struct kgsl_mem_entry *mem_entry, unsigned int curr_ts),
367 TP_ARGS(mem_entry, curr_ts)
368);
369
370DEFINE_EVENT(kgsl_mem_timestamp_template, kgsl_mem_timestamp_free,
371 TP_PROTO(struct kgsl_mem_entry *mem_entry, unsigned int curr_ts),
372 TP_ARGS(mem_entry, curr_ts)
373);
374
375
Norman Geed7402ff2011-10-28 08:51:11 -0600376#endif /* _KGSL_TRACE_H */
377
378/* This part must be outside protection */
379#include <trace/define_trace.h>