blob: 84d7f946f85f1d611245ebd0f978ac048d72b5e6 [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,
Carter Cooper7e7f02e2012-02-15 09:36:31 -070079 unsigned int context_id,
80 unsigned int type,
81 unsigned int timestamp),
Norman Geed7402ff2011-10-28 08:51:11 -060082
Carter Cooper7e7f02e2012-02-15 09:36:31 -070083 TP_ARGS(device, context_id, type, timestamp),
Norman Geed7402ff2011-10-28 08:51:11 -060084
85 TP_STRUCT__entry(
86 __string(device_name, device->name)
Carter Cooper7e7f02e2012-02-15 09:36:31 -070087 __field(unsigned int, context_id)
Norman Geed7402ff2011-10-28 08:51:11 -060088 __field(unsigned int, type)
89 __field(unsigned int, timestamp)
90 ),
91
92 TP_fast_assign(
93 __assign_str(device_name, device->name);
Carter Cooper7e7f02e2012-02-15 09:36:31 -070094 __entry->context_id = context_id;
95 __entry->type = type;
96 __entry->timestamp = timestamp;
Norman Geed7402ff2011-10-28 08:51:11 -060097 ),
98
99 TP_printk(
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700100 "d_name=%s context_id=%u type=%u timestamp=%u",
Norman Geed7402ff2011-10-28 08:51:11 -0600101 __get_str(device_name),
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700102 __entry->context_id,
Norman Geed7402ff2011-10-28 08:51:11 -0600103 __entry->type,
104 __entry->timestamp
105 )
106);
107
108/*
109 * Tracepoint for kgsl waittimestamp entry
110 */
111TRACE_EVENT(kgsl_waittimestamp_entry,
112
113 TP_PROTO(struct kgsl_device *device,
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700114 unsigned int context_id,
115 unsigned int timestamp,
116 unsigned int timeout),
Norman Geed7402ff2011-10-28 08:51:11 -0600117
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700118 TP_ARGS(device, context_id, timestamp, timeout),
Norman Geed7402ff2011-10-28 08:51:11 -0600119
120 TP_STRUCT__entry(
121 __string(device_name, device->name)
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700122 __field(unsigned int, context_id)
Norman Geed7402ff2011-10-28 08:51:11 -0600123 __field(unsigned int, timestamp)
124 __field(unsigned int, timeout)
125 ),
126
127 TP_fast_assign(
128 __assign_str(device_name, device->name);
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700129 __entry->context_id = context_id;
130 __entry->timestamp = timestamp;
131 __entry->timeout = timeout;
Norman Geed7402ff2011-10-28 08:51:11 -0600132 ),
133
134 TP_printk(
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700135 "d_name=%s context_id=%u timestamp=%u timeout=%u",
Norman Geed7402ff2011-10-28 08:51:11 -0600136 __get_str(device_name),
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700137 __entry->context_id,
Norman Geed7402ff2011-10-28 08:51:11 -0600138 __entry->timestamp,
139 __entry->timeout
140 )
141);
142
143/*
144 * Tracepoint for kgsl waittimestamp exit
145 */
146TRACE_EVENT(kgsl_waittimestamp_exit,
147
148 TP_PROTO(struct kgsl_device *device, int result),
149
150 TP_ARGS(device, result),
151
152 TP_STRUCT__entry(
153 __string(device_name, device->name)
154 __field(int, result)
155 ),
156
157 TP_fast_assign(
158 __assign_str(device_name, device->name);
159 __entry->result = result;
160 ),
161
162 TP_printk(
163 "d_name=%s result=%d",
164 __get_str(device_name),
165 __entry->result
166 )
167);
Jeremy Gebbenb50f3312011-12-16 08:58:33 -0700168
169DECLARE_EVENT_CLASS(kgsl_pwr_template,
170 TP_PROTO(struct kgsl_device *device, int on),
171
172 TP_ARGS(device, on),
173
174 TP_STRUCT__entry(
175 __string(device_name, device->name)
176 __field(int, on)
177 ),
178
179 TP_fast_assign(
180 __assign_str(device_name, device->name);
181 __entry->on = on;
182 ),
183
184 TP_printk(
185 "d_name=%s %s",
186 __get_str(device_name),
187 __entry->on ? "on" : "off"
188 )
189);
190
191DEFINE_EVENT(kgsl_pwr_template, kgsl_clk,
192 TP_PROTO(struct kgsl_device *device, int on),
193 TP_ARGS(device, on)
194);
195
196DEFINE_EVENT(kgsl_pwr_template, kgsl_irq,
197 TP_PROTO(struct kgsl_device *device, int on),
198 TP_ARGS(device, on)
199);
200
201DEFINE_EVENT(kgsl_pwr_template, kgsl_bus,
202 TP_PROTO(struct kgsl_device *device, int on),
203 TP_ARGS(device, on)
204);
205
206DEFINE_EVENT(kgsl_pwr_template, kgsl_rail,
207 TP_PROTO(struct kgsl_device *device, int on),
208 TP_ARGS(device, on)
209);
210
211TRACE_EVENT(kgsl_pwrlevel,
212
213 TP_PROTO(struct kgsl_device *device, unsigned int pwrlevel,
214 unsigned int freq),
215
216 TP_ARGS(device, pwrlevel, freq),
217
218 TP_STRUCT__entry(
219 __string(device_name, device->name)
220 __field(unsigned int, pwrlevel)
221 __field(unsigned int, freq)
222 ),
223
224 TP_fast_assign(
225 __assign_str(device_name, device->name);
226 __entry->pwrlevel = pwrlevel;
227 __entry->freq = freq;
228 ),
229
230 TP_printk(
231 "d_name=%s pwrlevel=%d freq=%d",
232 __get_str(device_name),
233 __entry->pwrlevel,
234 __entry->freq
235 )
236);
237
238DECLARE_EVENT_CLASS(kgsl_pwrstate_template,
239 TP_PROTO(struct kgsl_device *device, unsigned int state),
240
241 TP_ARGS(device, state),
242
243 TP_STRUCT__entry(
244 __string(device_name, device->name)
245 __field(unsigned int, state)
246 ),
247
248 TP_fast_assign(
249 __assign_str(device_name, device->name);
250 __entry->state = state;
251 ),
252
253 TP_printk(
254 "d_name=%s %s",
255 __get_str(device_name),
256 kgsl_pwrstate_to_str(__entry->state)
257 )
258);
259
260DEFINE_EVENT(kgsl_pwrstate_template, kgsl_pwr_set_state,
261 TP_PROTO(struct kgsl_device *device, unsigned int state),
262 TP_ARGS(device, state)
263);
264
265DEFINE_EVENT(kgsl_pwrstate_template, kgsl_pwr_request_state,
266 TP_PROTO(struct kgsl_device *device, unsigned int state),
267 TP_ARGS(device, state)
268);
269
Jeremy Gebbena5859272012-03-01 12:46:28 -0700270TRACE_EVENT(kgsl_mem_alloc,
271
272 TP_PROTO(struct kgsl_mem_entry *mem_entry),
273
274 TP_ARGS(mem_entry),
275
276 TP_STRUCT__entry(
277 __field(unsigned int, gpuaddr)
278 __field(unsigned int, size)
279 ),
280
281 TP_fast_assign(
282 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
283 __entry->size = mem_entry->memdesc.size;
284 ),
285
286 TP_printk(
287 "gpuaddr=0x%08x size=%d",
288 __entry->gpuaddr, __entry->size
289 )
290);
291
292TRACE_EVENT(kgsl_mem_map,
293
294 TP_PROTO(struct kgsl_mem_entry *mem_entry, int fd),
295
296 TP_ARGS(mem_entry, fd),
297
298 TP_STRUCT__entry(
299 __field(unsigned int, gpuaddr)
300 __field(unsigned int, size)
301 __field(int, fd)
302 __field(int, type)
303 ),
304
305 TP_fast_assign(
306 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
307 __entry->size = mem_entry->memdesc.size;
308 __entry->fd = fd;
309 __entry->type = mem_entry->memtype;
310 ),
311
312 TP_printk(
313 "gpuaddr=0x%08x size=%d type=%d fd=%d",
314 __entry->gpuaddr, __entry->size,
315 __entry->type, __entry->fd
316 )
317);
318
319TRACE_EVENT(kgsl_mem_free,
320
321 TP_PROTO(struct kgsl_mem_entry *mem_entry),
322
323 TP_ARGS(mem_entry),
324
325 TP_STRUCT__entry(
326 __field(unsigned int, gpuaddr)
327 __field(unsigned int, size)
328 __field(int, type)
329 __field(int, fd)
330 ),
331
332 TP_fast_assign(
333 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
334 __entry->size = mem_entry->memdesc.size;
335 __entry->type = mem_entry->memtype;
336 ),
337
338 TP_printk(
339 "gpuaddr=0x%08x size=%d type=%d",
340 __entry->gpuaddr, __entry->size, __entry->type
341 )
342);
343
344DECLARE_EVENT_CLASS(kgsl_mem_timestamp_template,
345
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700346 TP_PROTO(struct kgsl_mem_entry *mem_entry, unsigned int id,
347 unsigned int curr_ts),
Jeremy Gebbena5859272012-03-01 12:46:28 -0700348
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700349 TP_ARGS(mem_entry, id, curr_ts),
Jeremy Gebbena5859272012-03-01 12:46:28 -0700350
351 TP_STRUCT__entry(
352 __field(unsigned int, gpuaddr)
353 __field(unsigned int, size)
354 __field(int, type)
355 __field(unsigned int, drawctxt_id)
356 __field(unsigned int, curr_ts)
357 __field(unsigned int, free_ts)
358 ),
359
360 TP_fast_assign(
361 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
362 __entry->size = mem_entry->memdesc.size;
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700363 __entry->drawctxt_id = id;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700364 __entry->type = mem_entry->memtype;
365 __entry->curr_ts = curr_ts;
366 __entry->free_ts = mem_entry->free_timestamp;
367 ),
368
369 TP_printk(
370 "gpuaddr=0x%08x size=%d type=%d ctx=%u curr_ts=0x%08x free_ts=0x%08x",
371 __entry->gpuaddr, __entry->size, __entry->type,
372 __entry->drawctxt_id, __entry->curr_ts, __entry->free_ts
373 )
374);
375
376DEFINE_EVENT(kgsl_mem_timestamp_template, kgsl_mem_timestamp_queue,
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700377 TP_PROTO(struct kgsl_mem_entry *mem_entry, unsigned int id,
378 unsigned int curr_ts),
379 TP_ARGS(mem_entry, id, curr_ts)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700380);
381
382DEFINE_EVENT(kgsl_mem_timestamp_template, kgsl_mem_timestamp_free,
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700383 TP_PROTO(struct kgsl_mem_entry *mem_entry, unsigned int id,
384 unsigned int curr_ts),
385 TP_ARGS(mem_entry, id, curr_ts)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700386);
387
388
Norman Geed7402ff2011-10-28 08:51:11 -0600389#endif /* _KGSL_TRACE_H */
390
391/* This part must be outside protection */
392#include <trace/define_trace.h>