blob: ef4cdeb500144a805e4992b385a4fb293b320178 [file] [log] [blame]
Alan Kwongdce56da2017-04-27 15:50:34 -07001/* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved.
Alan Kwong1a00e4d2016-07-18 09:42:30 -04002 *
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#if !defined(_SDE_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
14#define _SDE_TRACE_H_
15
16#include <linux/stringify.h>
17#include <linux/types.h>
18#include <linux/tracepoint.h>
19
20#undef TRACE_SYSTEM
21#define TRACE_SYSTEM sde
22#undef TRACE_INCLUDE_FILE
23#define TRACE_INCLUDE_FILE sde_trace
24
25TRACE_EVENT(sde_perf_set_qos_luts,
26 TP_PROTO(u32 pnum, u32 fmt, bool rt, u32 fl,
Alan Kwongdce56da2017-04-27 15:50:34 -070027 u32 lut, u32 lut_usage),
28 TP_ARGS(pnum, fmt, rt, fl, lut, lut_usage),
Alan Kwong1a00e4d2016-07-18 09:42:30 -040029 TP_STRUCT__entry(
30 __field(u32, pnum)
31 __field(u32, fmt)
32 __field(bool, rt)
33 __field(u32, fl)
Alan Kwongdce56da2017-04-27 15:50:34 -070034 __field(u64, lut)
35 __field(u32, lut_usage)
Alan Kwong1a00e4d2016-07-18 09:42:30 -040036 ),
37 TP_fast_assign(
38 __entry->pnum = pnum;
39 __entry->fmt = fmt;
40 __entry->rt = rt;
41 __entry->fl = fl;
42 __entry->lut = lut;
Alan Kwongdce56da2017-04-27 15:50:34 -070043 __entry->lut_usage = lut_usage;
Alan Kwong1a00e4d2016-07-18 09:42:30 -040044 ),
Alan Kwongdce56da2017-04-27 15:50:34 -070045 TP_printk("pnum=%d fmt=%x rt=%d fl=%d lut=0x%llx lut_usage=%d",
Alan Kwong1a00e4d2016-07-18 09:42:30 -040046 __entry->pnum, __entry->fmt,
47 __entry->rt, __entry->fl,
Alan Kwongdce56da2017-04-27 15:50:34 -070048 __entry->lut, __entry->lut_usage)
Alan Kwong1a00e4d2016-07-18 09:42:30 -040049);
50
51TRACE_EVENT(sde_perf_set_danger_luts,
52 TP_PROTO(u32 pnum, u32 fmt, u32 mode, u32 danger_lut,
53 u32 safe_lut),
54 TP_ARGS(pnum, fmt, mode, danger_lut, safe_lut),
55 TP_STRUCT__entry(
56 __field(u32, pnum)
57 __field(u32, fmt)
58 __field(u32, mode)
59 __field(u32, danger_lut)
60 __field(u32, safe_lut)
61 ),
62 TP_fast_assign(
63 __entry->pnum = pnum;
64 __entry->fmt = fmt;
65 __entry->mode = mode;
66 __entry->danger_lut = danger_lut;
67 __entry->safe_lut = safe_lut;
68 ),
69 TP_printk("pnum=%d fmt=%x mode=%d luts[0x%x, 0x%x]",
70 __entry->pnum, __entry->fmt,
71 __entry->mode, __entry->danger_lut,
72 __entry->safe_lut)
73);
74
Alan Kwong5d324e42016-07-28 22:56:18 -040075TRACE_EVENT(sde_perf_set_ot,
76 TP_PROTO(u32 pnum, u32 xin_id, u32 rd_lim, u32 vbif_idx),
77 TP_ARGS(pnum, xin_id, rd_lim, vbif_idx),
78 TP_STRUCT__entry(
79 __field(u32, pnum)
80 __field(u32, xin_id)
81 __field(u32, rd_lim)
82 __field(u32, vbif_idx)
83 ),
84 TP_fast_assign(
85 __entry->pnum = pnum;
86 __entry->xin_id = xin_id;
87 __entry->rd_lim = rd_lim;
88 __entry->vbif_idx = vbif_idx;
89 ),
90 TP_printk("pnum:%d xin_id:%d ot:%d vbif:%d",
91 __entry->pnum, __entry->xin_id, __entry->rd_lim,
92 __entry->vbif_idx)
93)
94
Alan Kwong67a3f792016-11-01 23:16:53 -040095TRACE_EVENT(sde_perf_update_bus,
96 TP_PROTO(int client, unsigned long long ab_quota,
97 unsigned long long ib_quota),
98 TP_ARGS(client, ab_quota, ib_quota),
99 TP_STRUCT__entry(
100 __field(int, client)
101 __field(u64, ab_quota)
102 __field(u64, ib_quota)
103 ),
104 TP_fast_assign(
105 __entry->client = client;
106 __entry->ab_quota = ab_quota;
107 __entry->ib_quota = ib_quota;
108 ),
109 TP_printk("Request client:%d ab=%llu ib=%llu",
110 __entry->client,
111 __entry->ab_quota,
112 __entry->ib_quota)
113)
114
Alan Kwongc4c5a0e2016-10-28 08:59:48 -0400115
Alan Kwong9aa061c2016-11-06 21:17:12 -0500116TRACE_EVENT(sde_cmd_release_bw,
117 TP_PROTO(u32 crtc_id),
118 TP_ARGS(crtc_id),
119 TP_STRUCT__entry(
120 __field(u32, crtc_id)
121 ),
122 TP_fast_assign(
123 __entry->crtc_id = crtc_id;
124 ),
125 TP_printk("crtc:%d", __entry->crtc_id)
126);
127
Ingrid Gallardo36ee68d2017-08-30 17:14:33 -0700128TRACE_EVENT(sde_encoder_underrun,
129 TP_PROTO(u32 enc_id, u32 underrun_cnt),
130 TP_ARGS(enc_id, underrun_cnt),
131 TP_STRUCT__entry(
132 __field(u32, enc_id)
133 __field(u32, underrun_cnt)
134 ),
135 TP_fast_assign(
136 __entry->enc_id = enc_id;
137 __entry->underrun_cnt = underrun_cnt;
138
139 ),
140 TP_printk("enc:%d underrun_cnt:%d", __entry->enc_id,
141 __entry->underrun_cnt)
142);
143
Veera Sundaram Sankarana90e1392017-07-06 15:00:09 -0700144TRACE_EVENT(tracing_mark_write,
Alan Kwongc4c5a0e2016-10-28 08:59:48 -0400145 TP_PROTO(int pid, const char *name, bool trace_begin),
146 TP_ARGS(pid, name, trace_begin),
147 TP_STRUCT__entry(
148 __field(int, pid)
149 __string(trace_name, name)
150 __field(bool, trace_begin)
151 ),
152 TP_fast_assign(
153 __entry->pid = pid;
154 __assign_str(trace_name, name);
155 __entry->trace_begin = trace_begin;
156 ),
157 TP_printk("%s|%d|%s", __entry->trace_begin ? "B" : "E",
158 __entry->pid, __get_str(trace_name))
159)
160
161TRACE_EVENT(sde_trace_counter,
162 TP_PROTO(int pid, char *name, int value),
163 TP_ARGS(pid, name, value),
164 TP_STRUCT__entry(
165 __field(int, pid)
166 __string(counter_name, name)
167 __field(int, value)
168 ),
169 TP_fast_assign(
170 __entry->pid = current->tgid;
171 __assign_str(counter_name, name);
172 __entry->value = value;
173 ),
174 TP_printk("%d|%s|%d", __entry->pid,
175 __get_str(counter_name), __entry->value)
176)
177
Alan Kwong037373e2017-06-05 15:52:51 -0400178#define SDE_TRACE_EVTLOG_SIZE 15
Alan Kwong044b3e02016-11-03 13:06:57 -0400179TRACE_EVENT(sde_evtlog,
Alan Kwong037373e2017-06-05 15:52:51 -0400180 TP_PROTO(const char *tag, u32 tag_id, u32 cnt, u32 data[]),
181 TP_ARGS(tag, tag_id, cnt, data),
Alan Kwong044b3e02016-11-03 13:06:57 -0400182 TP_STRUCT__entry(
183 __field(int, pid)
184 __string(evtlog_tag, tag)
185 __field(u32, tag_id)
Alan Kwong037373e2017-06-05 15:52:51 -0400186 __array(u32, data, SDE_TRACE_EVTLOG_SIZE)
Alan Kwong044b3e02016-11-03 13:06:57 -0400187 ),
188 TP_fast_assign(
189 __entry->pid = current->tgid;
190 __assign_str(evtlog_tag, tag);
191 __entry->tag_id = tag_id;
Alan Kwong037373e2017-06-05 15:52:51 -0400192 if (cnt > SDE_TRACE_EVTLOG_SIZE)
193 cnt = SDE_TRACE_EVTLOG_SIZE;
194 memcpy(__entry->data, data, cnt * sizeof(u32));
195 memset(&__entry->data[cnt], 0,
196 (SDE_TRACE_EVTLOG_SIZE - cnt) * sizeof(u32));
Alan Kwong044b3e02016-11-03 13:06:57 -0400197 ),
Alan Kwongaa53e682017-07-31 18:21:15 -0400198 TP_printk("%d|%s:%d|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x",
Alan Kwong037373e2017-06-05 15:52:51 -0400199 __entry->pid, __get_str(evtlog_tag),
200 __entry->tag_id,
201 __entry->data[0], __entry->data[1],
202 __entry->data[2], __entry->data[3],
203 __entry->data[4], __entry->data[5],
204 __entry->data[6], __entry->data[7],
205 __entry->data[8], __entry->data[9],
206 __entry->data[10], __entry->data[11],
207 __entry->data[12], __entry->data[13],
208 __entry->data[14])
Alan Kwong044b3e02016-11-03 13:06:57 -0400209)
210
Narendra Muppalla8f2a1262017-05-23 20:02:34 -0700211TRACE_EVENT(sde_perf_crtc_update,
Alan Kwong0230a102017-05-16 11:36:44 -0700212 TP_PROTO(u32 crtc, u64 bw_ctl_mnoc, u64 bw_ctl_llcc,
213 u64 bw_ctl_ebi, u32 core_clk_rate,
214 bool stop_req, u32 update_bus, u32 update_clk),
215 TP_ARGS(crtc, bw_ctl_mnoc, bw_ctl_llcc, bw_ctl_ebi, core_clk_rate,
Narendra Muppalla8f2a1262017-05-23 20:02:34 -0700216 stop_req, update_bus, update_clk),
217 TP_STRUCT__entry(
218 __field(u32, crtc)
Alan Kwong0230a102017-05-16 11:36:44 -0700219 __field(u64, bw_ctl_mnoc)
220 __field(u64, bw_ctl_llcc)
221 __field(u64, bw_ctl_ebi)
Narendra Muppalla8f2a1262017-05-23 20:02:34 -0700222 __field(u32, core_clk_rate)
223 __field(bool, stop_req)
224 __field(u32, update_bus)
225 __field(u32, update_clk)
226 ),
227 TP_fast_assign(
228 __entry->crtc = crtc;
Alan Kwong0230a102017-05-16 11:36:44 -0700229 __entry->bw_ctl_mnoc = bw_ctl_mnoc;
230 __entry->bw_ctl_llcc = bw_ctl_llcc;
231 __entry->bw_ctl_ebi = bw_ctl_ebi;
Narendra Muppalla8f2a1262017-05-23 20:02:34 -0700232 __entry->core_clk_rate = core_clk_rate;
233 __entry->stop_req = stop_req;
234 __entry->update_bus = update_bus;
235 __entry->update_clk = update_clk;
236 ),
Alan Kwong0230a102017-05-16 11:36:44 -0700237 TP_printk(
238 "crtc=%d bw_mnoc=%llu bw_llcc=%llu bw_ebi=%llu clk_rate=%u stop_req=%d u_bus=%d u_clk=%d",
239 __entry->crtc,
240 __entry->bw_ctl_mnoc,
241 __entry->bw_ctl_llcc,
242 __entry->bw_ctl_ebi,
243 __entry->core_clk_rate,
244 __entry->stop_req,
245 __entry->update_bus,
246 __entry->update_clk)
Narendra Muppalla8f2a1262017-05-23 20:02:34 -0700247);
248
Veera Sundaram Sankarana90e1392017-07-06 15:00:09 -0700249#define SDE_ATRACE_END(name) trace_tracing_mark_write(current->tgid, name, 0)
250#define SDE_ATRACE_BEGIN(name) trace_tracing_mark_write(current->tgid, name, 1)
Alan Kwongc4c5a0e2016-10-28 08:59:48 -0400251#define SDE_ATRACE_FUNC() SDE_ATRACE_BEGIN(__func__)
252
253#define SDE_ATRACE_INT(name, value) \
254 trace_sde_trace_counter(current->tgid, name, value)
255
Alan Kwong1a00e4d2016-07-18 09:42:30 -0400256#endif /* _SDE_TRACE_H_ */
257
258/* This part must be outside protection */
259#undef TRACE_INCLUDE_PATH
260#define TRACE_INCLUDE_PATH .
261#include <trace/define_trace.h>