xref: /linux/include/trace/events/clk.h (revision 1a69f7a161a78aead07cd4b811d796950e892fa4)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
4  */
5 #undef TRACE_SYSTEM
6 #define TRACE_SYSTEM clk
7 
8 #if !defined(_TRACE_CLK_H) || defined(TRACE_HEADER_MULTI_READ)
9 #define _TRACE_CLK_H
10 
11 #include <linux/tracepoint.h>
12 
13 struct clk_core;
14 
15 DECLARE_EVENT_CLASS(clk,
16 
17 	TP_PROTO(struct clk_core *core),
18 
19 	TP_ARGS(core),
20 
21 	TP_STRUCT__entry(
22 		__string(        name,           core->name       )
23 	),
24 
25 	TP_fast_assign(
26 		__assign_str(name, core->name);
27 	),
28 
29 	TP_printk("%s", __get_str(name))
30 );
31 
32 DEFINE_EVENT(clk, clk_enable,
33 
34 	TP_PROTO(struct clk_core *core),
35 
36 	TP_ARGS(core)
37 );
38 
39 DEFINE_EVENT(clk, clk_enable_complete,
40 
41 	TP_PROTO(struct clk_core *core),
42 
43 	TP_ARGS(core)
44 );
45 
46 DEFINE_EVENT(clk, clk_disable,
47 
48 	TP_PROTO(struct clk_core *core),
49 
50 	TP_ARGS(core)
51 );
52 
53 DEFINE_EVENT(clk, clk_disable_complete,
54 
55 	TP_PROTO(struct clk_core *core),
56 
57 	TP_ARGS(core)
58 );
59 
60 DEFINE_EVENT(clk, clk_prepare,
61 
62 	TP_PROTO(struct clk_core *core),
63 
64 	TP_ARGS(core)
65 );
66 
67 DEFINE_EVENT(clk, clk_prepare_complete,
68 
69 	TP_PROTO(struct clk_core *core),
70 
71 	TP_ARGS(core)
72 );
73 
74 DEFINE_EVENT(clk, clk_unprepare,
75 
76 	TP_PROTO(struct clk_core *core),
77 
78 	TP_ARGS(core)
79 );
80 
81 DEFINE_EVENT(clk, clk_unprepare_complete,
82 
83 	TP_PROTO(struct clk_core *core),
84 
85 	TP_ARGS(core)
86 );
87 
88 DECLARE_EVENT_CLASS(clk_rate,
89 
90 	TP_PROTO(struct clk_core *core, unsigned long rate),
91 
92 	TP_ARGS(core, rate),
93 
94 	TP_STRUCT__entry(
95 		__string(        name,           core->name                )
96 		__field(unsigned long,           rate                      )
97 	),
98 
99 	TP_fast_assign(
100 		__assign_str(name, core->name);
101 		__entry->rate = rate;
102 	),
103 
104 	TP_printk("%s %lu", __get_str(name), (unsigned long)__entry->rate)
105 );
106 
107 DEFINE_EVENT(clk_rate, clk_set_rate,
108 
109 	TP_PROTO(struct clk_core *core, unsigned long rate),
110 
111 	TP_ARGS(core, rate)
112 );
113 
114 DEFINE_EVENT(clk_rate, clk_set_rate_complete,
115 
116 	TP_PROTO(struct clk_core *core, unsigned long rate),
117 
118 	TP_ARGS(core, rate)
119 );
120 
121 DEFINE_EVENT(clk_rate, clk_set_min_rate,
122 
123 	TP_PROTO(struct clk_core *core, unsigned long rate),
124 
125 	TP_ARGS(core, rate)
126 );
127 
128 DEFINE_EVENT(clk_rate, clk_set_max_rate,
129 
130 	TP_PROTO(struct clk_core *core, unsigned long rate),
131 
132 	TP_ARGS(core, rate)
133 );
134 
135 DECLARE_EVENT_CLASS(clk_rate_range,
136 
137 	TP_PROTO(struct clk_core *core, unsigned long min, unsigned long max),
138 
139 	TP_ARGS(core, min, max),
140 
141 	TP_STRUCT__entry(
142 		__string(        name,           core->name                )
143 		__field(unsigned long,           min                       )
144 		__field(unsigned long,           max                       )
145 	),
146 
147 	TP_fast_assign(
148 		__assign_str(name, core->name);
149 		__entry->min = min;
150 		__entry->max = max;
151 	),
152 
153 	TP_printk("%s min %lu max %lu", __get_str(name),
154 		  (unsigned long)__entry->min,
155 		  (unsigned long)__entry->max)
156 );
157 
158 DEFINE_EVENT(clk_rate_range, clk_set_rate_range,
159 
160 	TP_PROTO(struct clk_core *core, unsigned long min, unsigned long max),
161 
162 	TP_ARGS(core, min, max)
163 );
164 
165 DECLARE_EVENT_CLASS(clk_parent,
166 
167 	TP_PROTO(struct clk_core *core, struct clk_core *parent),
168 
169 	TP_ARGS(core, parent),
170 
171 	TP_STRUCT__entry(
172 		__string(        name,           core->name                )
173 		__string(        pname, parent ? parent->name : "none"     )
174 	),
175 
176 	TP_fast_assign(
177 		__assign_str(name, core->name);
178 		__assign_str(pname, parent ? parent->name : "none");
179 	),
180 
181 	TP_printk("%s %s", __get_str(name), __get_str(pname))
182 );
183 
184 DEFINE_EVENT(clk_parent, clk_set_parent,
185 
186 	TP_PROTO(struct clk_core *core, struct clk_core *parent),
187 
188 	TP_ARGS(core, parent)
189 );
190 
191 DEFINE_EVENT(clk_parent, clk_set_parent_complete,
192 
193 	TP_PROTO(struct clk_core *core, struct clk_core *parent),
194 
195 	TP_ARGS(core, parent)
196 );
197 
198 DECLARE_EVENT_CLASS(clk_phase,
199 
200 	TP_PROTO(struct clk_core *core, int phase),
201 
202 	TP_ARGS(core, phase),
203 
204 	TP_STRUCT__entry(
205 		__string(        name,           core->name                )
206 		__field(	  int,           phase                     )
207 	),
208 
209 	TP_fast_assign(
210 		__assign_str(name, core->name);
211 		__entry->phase = phase;
212 	),
213 
214 	TP_printk("%s %d", __get_str(name), (int)__entry->phase)
215 );
216 
217 DEFINE_EVENT(clk_phase, clk_set_phase,
218 
219 	TP_PROTO(struct clk_core *core, int phase),
220 
221 	TP_ARGS(core, phase)
222 );
223 
224 DEFINE_EVENT(clk_phase, clk_set_phase_complete,
225 
226 	TP_PROTO(struct clk_core *core, int phase),
227 
228 	TP_ARGS(core, phase)
229 );
230 
231 DECLARE_EVENT_CLASS(clk_duty_cycle,
232 
233 	TP_PROTO(struct clk_core *core, struct clk_duty *duty),
234 
235 	TP_ARGS(core, duty),
236 
237 	TP_STRUCT__entry(
238 		__string(        name,           core->name              )
239 		__field( unsigned int,           num                     )
240 		__field( unsigned int,           den                     )
241 	),
242 
243 	TP_fast_assign(
244 		__assign_str(name, core->name);
245 		__entry->num = duty->num;
246 		__entry->den = duty->den;
247 	),
248 
249 	TP_printk("%s %u/%u", __get_str(name), (unsigned int)__entry->num,
250 		  (unsigned int)__entry->den)
251 );
252 
253 DEFINE_EVENT(clk_duty_cycle, clk_set_duty_cycle,
254 
255 	TP_PROTO(struct clk_core *core, struct clk_duty *duty),
256 
257 	TP_ARGS(core, duty)
258 );
259 
260 DEFINE_EVENT(clk_duty_cycle, clk_set_duty_cycle_complete,
261 
262 	TP_PROTO(struct clk_core *core, struct clk_duty *duty),
263 
264 	TP_ARGS(core, duty)
265 );
266 
267 DECLARE_EVENT_CLASS(clk_rate_request,
268 
269 	TP_PROTO(struct clk_rate_request *req),
270 
271 	TP_ARGS(req),
272 
273 	TP_STRUCT__entry(
274 		__string(        name, req->core ? req->core->name : "none")
275 		__string(       pname, req->best_parent_hw ? clk_hw_get_name(req->best_parent_hw) : "none" )
276 		__field(unsigned long,           min                       )
277 		__field(unsigned long,           max                       )
278 		__field(unsigned long,           prate                     )
279 	),
280 
281 	TP_fast_assign(
282 		__assign_str(name, req->core ? req->core->name : "none");
283 		__assign_str(pname, req->best_parent_hw ? clk_hw_get_name(req->best_parent_hw) : "none");
284 		__entry->min = req->min_rate;
285 		__entry->max = req->max_rate;
286 		__entry->prate = req->best_parent_rate;
287 	),
288 
289 	TP_printk("%s min %lu max %lu, parent %s (%lu)", __get_str(name),
290 		  (unsigned long)__entry->min,
291 		  (unsigned long)__entry->max,
292 		  __get_str(pname),
293 		  (unsigned long)__entry->prate)
294 );
295 
296 DEFINE_EVENT(clk_rate_request, clk_rate_request_start,
297 
298 	TP_PROTO(struct clk_rate_request *req),
299 
300 	TP_ARGS(req)
301 );
302 
303 DEFINE_EVENT(clk_rate_request, clk_rate_request_done,
304 
305 	TP_PROTO(struct clk_rate_request *req),
306 
307 	TP_ARGS(req)
308 );
309 
310 #endif /* _TRACE_CLK_H */
311 
312 /* This part must be outside protection */
313 #include <trace/define_trace.h>
314