1/*
2 * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
3 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 * GNU General Public License for more details.
12 */
13#undef TRACE_SYSTEM
14#define TRACE_SYSTEM clk
15
16#if !defined(_TRACE_CLK_H) || defined(TRACE_HEADER_MULTI_READ)
17#define _TRACE_CLK_H
18
19#include <linux/tracepoint.h>
20
21struct clk_core;
22
23DECLARE_EVENT_CLASS(clk,
24
25	TP_PROTO(struct clk_core *core),
26
27	TP_ARGS(core),
28
29	TP_STRUCT__entry(
30		__string(        name,           core->name       )
31	),
32
33	TP_fast_assign(
34		__assign_str(name, core->name);
35	),
36
37	TP_printk("%s", __get_str(name))
38);
39
40DEFINE_EVENT(clk, clk_enable,
41
42	TP_PROTO(struct clk_core *core),
43
44	TP_ARGS(core)
45);
46
47DEFINE_EVENT(clk, clk_enable_complete,
48
49	TP_PROTO(struct clk_core *core),
50
51	TP_ARGS(core)
52);
53
54DEFINE_EVENT(clk, clk_disable,
55
56	TP_PROTO(struct clk_core *core),
57
58	TP_ARGS(core)
59);
60
61DEFINE_EVENT(clk, clk_disable_complete,
62
63	TP_PROTO(struct clk_core *core),
64
65	TP_ARGS(core)
66);
67
68DEFINE_EVENT(clk, clk_prepare,
69
70	TP_PROTO(struct clk_core *core),
71
72	TP_ARGS(core)
73);
74
75DEFINE_EVENT(clk, clk_prepare_complete,
76
77	TP_PROTO(struct clk_core *core),
78
79	TP_ARGS(core)
80);
81
82DEFINE_EVENT(clk, clk_unprepare,
83
84	TP_PROTO(struct clk_core *core),
85
86	TP_ARGS(core)
87);
88
89DEFINE_EVENT(clk, clk_unprepare_complete,
90
91	TP_PROTO(struct clk_core *core),
92
93	TP_ARGS(core)
94);
95
96DECLARE_EVENT_CLASS(clk_rate,
97
98	TP_PROTO(struct clk_core *core, unsigned long rate),
99
100	TP_ARGS(core, rate),
101
102	TP_STRUCT__entry(
103		__string(        name,           core->name                )
104		__field(unsigned long,           rate                      )
105	),
106
107	TP_fast_assign(
108		__assign_str(name, core->name);
109		__entry->rate = rate;
110	),
111
112	TP_printk("%s %lu", __get_str(name), (unsigned long)__entry->rate)
113);
114
115DEFINE_EVENT(clk_rate, clk_set_rate,
116
117	TP_PROTO(struct clk_core *core, unsigned long rate),
118
119	TP_ARGS(core, rate)
120);
121
122DEFINE_EVENT(clk_rate, clk_set_rate_complete,
123
124	TP_PROTO(struct clk_core *core, unsigned long rate),
125
126	TP_ARGS(core, rate)
127);
128
129DECLARE_EVENT_CLASS(clk_parent,
130
131	TP_PROTO(struct clk_core *core, struct clk_core *parent),
132
133	TP_ARGS(core, parent),
134
135	TP_STRUCT__entry(
136		__string(        name,           core->name                )
137		__string(        pname,          parent->name              )
138	),
139
140	TP_fast_assign(
141		__assign_str(name, core->name);
142		__assign_str(pname, parent->name);
143	),
144
145	TP_printk("%s %s", __get_str(name), __get_str(pname))
146);
147
148DEFINE_EVENT(clk_parent, clk_set_parent,
149
150	TP_PROTO(struct clk_core *core, struct clk_core *parent),
151
152	TP_ARGS(core, parent)
153);
154
155DEFINE_EVENT(clk_parent, clk_set_parent_complete,
156
157	TP_PROTO(struct clk_core *core, struct clk_core *parent),
158
159	TP_ARGS(core, parent)
160);
161
162DECLARE_EVENT_CLASS(clk_phase,
163
164	TP_PROTO(struct clk_core *core, int phase),
165
166	TP_ARGS(core, phase),
167
168	TP_STRUCT__entry(
169		__string(        name,           core->name                )
170		__field(	  int,           phase                     )
171	),
172
173	TP_fast_assign(
174		__assign_str(name, core->name);
175		__entry->phase = phase;
176	),
177
178	TP_printk("%s %d", __get_str(name), (int)__entry->phase)
179);
180
181DEFINE_EVENT(clk_phase, clk_set_phase,
182
183	TP_PROTO(struct clk_core *core, int phase),
184
185	TP_ARGS(core, phase)
186);
187
188DEFINE_EVENT(clk_phase, clk_set_phase_complete,
189
190	TP_PROTO(struct clk_core *core, int phase),
191
192	TP_ARGS(core, phase)
193);
194
195#endif /* _TRACE_CLK_H */
196
197/* This part must be outside protection */
198#include <trace/define_trace.h>
199