xref: /OK3568_Linux_fs/kernel/include/trace/events/asoc.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #undef TRACE_SYSTEM
3*4882a593Smuzhiyun #define TRACE_SYSTEM asoc
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #if !defined(_TRACE_ASOC_H) || defined(TRACE_HEADER_MULTI_READ)
6*4882a593Smuzhiyun #define _TRACE_ASOC_H
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #include <linux/ktime.h>
9*4882a593Smuzhiyun #include <linux/tracepoint.h>
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #define DAPM_DIRECT "(direct)"
12*4882a593Smuzhiyun #define DAPM_ARROW(dir) (((dir) == SND_SOC_DAPM_DIR_OUT) ? "->" : "<-")
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun struct snd_soc_jack;
15*4882a593Smuzhiyun struct snd_soc_card;
16*4882a593Smuzhiyun struct snd_soc_dapm_widget;
17*4882a593Smuzhiyun struct snd_soc_dapm_path;
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun DECLARE_EVENT_CLASS(snd_soc_card,
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_card *card, int val),
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun 	TP_ARGS(card, val),
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun 	TP_STRUCT__entry(
26*4882a593Smuzhiyun 		__string(	name,		card->name	)
27*4882a593Smuzhiyun 		__field(	int,		val		)
28*4882a593Smuzhiyun 	),
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun 	TP_fast_assign(
31*4882a593Smuzhiyun 		__assign_str(name, card->name);
32*4882a593Smuzhiyun 		__entry->val = val;
33*4882a593Smuzhiyun 	),
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun 	TP_printk("card=%s val=%d", __get_str(name), (int)__entry->val)
36*4882a593Smuzhiyun );
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_start,
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_card *card, int val),
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun 	TP_ARGS(card, val)
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun );
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_done,
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_card *card, int val),
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun 	TP_ARGS(card, val)
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun );
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun DECLARE_EVENT_CLASS(snd_soc_dapm_basic,
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_card *card),
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun 	TP_ARGS(card),
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun 	TP_STRUCT__entry(
61*4882a593Smuzhiyun 		__string(	name,	card->name	)
62*4882a593Smuzhiyun 	),
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun 	TP_fast_assign(
65*4882a593Smuzhiyun 		__assign_str(name, card->name);
66*4882a593Smuzhiyun 	),
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun 	TP_printk("card=%s", __get_str(name))
69*4882a593Smuzhiyun );
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_start,
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_card *card),
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun 	TP_ARGS(card)
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun );
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_done,
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_card *card),
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun 	TP_ARGS(card)
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun );
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun DECLARE_EVENT_CLASS(snd_soc_dapm_widget,
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun 	TP_ARGS(w, val),
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun 	TP_STRUCT__entry(
94*4882a593Smuzhiyun 		__string(	name,	w->name		)
95*4882a593Smuzhiyun 		__field(	int,	val		)
96*4882a593Smuzhiyun 	),
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun 	TP_fast_assign(
99*4882a593Smuzhiyun 		__assign_str(name, w->name);
100*4882a593Smuzhiyun 		__entry->val = val;
101*4882a593Smuzhiyun 	),
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun 	TP_printk("widget=%s val=%d", __get_str(name),
104*4882a593Smuzhiyun 		  (int)__entry->val)
105*4882a593Smuzhiyun );
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_power,
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun 	TP_ARGS(w, val)
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun );
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_start,
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun 	TP_ARGS(w, val)
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun );
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_done,
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
126*4882a593Smuzhiyun 
127*4882a593Smuzhiyun 	TP_ARGS(w, val)
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun );
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun TRACE_EVENT(snd_soc_dapm_walk_done,
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_card *card),
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun 	TP_ARGS(card),
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun 	TP_STRUCT__entry(
138*4882a593Smuzhiyun 		__string(	name,	card->name		)
139*4882a593Smuzhiyun 		__field(	int,	power_checks		)
140*4882a593Smuzhiyun 		__field(	int,	path_checks		)
141*4882a593Smuzhiyun 		__field(	int,	neighbour_checks	)
142*4882a593Smuzhiyun 	),
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun 	TP_fast_assign(
145*4882a593Smuzhiyun 		__assign_str(name, card->name);
146*4882a593Smuzhiyun 		__entry->power_checks = card->dapm_stats.power_checks;
147*4882a593Smuzhiyun 		__entry->path_checks = card->dapm_stats.path_checks;
148*4882a593Smuzhiyun 		__entry->neighbour_checks = card->dapm_stats.neighbour_checks;
149*4882a593Smuzhiyun 	),
150*4882a593Smuzhiyun 
151*4882a593Smuzhiyun 	TP_printk("%s: checks %d power, %d path, %d neighbour",
152*4882a593Smuzhiyun 		  __get_str(name), (int)__entry->power_checks,
153*4882a593Smuzhiyun 		  (int)__entry->path_checks, (int)__entry->neighbour_checks)
154*4882a593Smuzhiyun );
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun TRACE_EVENT(snd_soc_dapm_path,
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_dapm_widget *widget,
159*4882a593Smuzhiyun 		enum snd_soc_dapm_direction dir,
160*4882a593Smuzhiyun 		struct snd_soc_dapm_path *path),
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun 	TP_ARGS(widget, dir, path),
163*4882a593Smuzhiyun 
164*4882a593Smuzhiyun 	TP_STRUCT__entry(
165*4882a593Smuzhiyun 		__string(	wname,	widget->name		)
166*4882a593Smuzhiyun 		__string(	pname,	path->name ? path->name : DAPM_DIRECT)
167*4882a593Smuzhiyun 		__string(	pnname,	path->node[dir]->name	)
168*4882a593Smuzhiyun 		__field(	int,	path_node		)
169*4882a593Smuzhiyun 		__field(	int,	path_connect		)
170*4882a593Smuzhiyun 		__field(	int,	path_dir		)
171*4882a593Smuzhiyun 	),
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun 	TP_fast_assign(
174*4882a593Smuzhiyun 		__assign_str(wname, widget->name);
175*4882a593Smuzhiyun 		__assign_str(pname, path->name ? path->name : DAPM_DIRECT);
176*4882a593Smuzhiyun 		__assign_str(pnname, path->node[dir]->name);
177*4882a593Smuzhiyun 		__entry->path_connect = path->connect;
178*4882a593Smuzhiyun 		__entry->path_node = (long)path->node[dir];
179*4882a593Smuzhiyun 		__entry->path_dir = dir;
180*4882a593Smuzhiyun 	),
181*4882a593Smuzhiyun 
182*4882a593Smuzhiyun 	TP_printk("%c%s %s %s %s %s",
183*4882a593Smuzhiyun 		(int) __entry->path_node &&
184*4882a593Smuzhiyun 		(int) __entry->path_connect ? '*' : ' ',
185*4882a593Smuzhiyun 		__get_str(wname), DAPM_ARROW(__entry->path_dir),
186*4882a593Smuzhiyun 		__get_str(pname), DAPM_ARROW(__entry->path_dir),
187*4882a593Smuzhiyun 		__get_str(pnname))
188*4882a593Smuzhiyun );
189*4882a593Smuzhiyun 
190*4882a593Smuzhiyun TRACE_EVENT(snd_soc_dapm_connected,
191*4882a593Smuzhiyun 
192*4882a593Smuzhiyun 	TP_PROTO(int paths, int stream),
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun 	TP_ARGS(paths, stream),
195*4882a593Smuzhiyun 
196*4882a593Smuzhiyun 	TP_STRUCT__entry(
197*4882a593Smuzhiyun 		__field(	int,	paths		)
198*4882a593Smuzhiyun 		__field(	int,	stream		)
199*4882a593Smuzhiyun 	),
200*4882a593Smuzhiyun 
201*4882a593Smuzhiyun 	TP_fast_assign(
202*4882a593Smuzhiyun 		__entry->paths = paths;
203*4882a593Smuzhiyun 		__entry->stream = stream;
204*4882a593Smuzhiyun 	),
205*4882a593Smuzhiyun 
206*4882a593Smuzhiyun 	TP_printk("%s: found %d paths",
207*4882a593Smuzhiyun 		__entry->stream ? "capture" : "playback", __entry->paths)
208*4882a593Smuzhiyun );
209*4882a593Smuzhiyun 
210*4882a593Smuzhiyun TRACE_EVENT(snd_soc_jack_irq,
211*4882a593Smuzhiyun 
212*4882a593Smuzhiyun 	TP_PROTO(const char *name),
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun 	TP_ARGS(name),
215*4882a593Smuzhiyun 
216*4882a593Smuzhiyun 	TP_STRUCT__entry(
217*4882a593Smuzhiyun 		__string(	name,	name		)
218*4882a593Smuzhiyun 	),
219*4882a593Smuzhiyun 
220*4882a593Smuzhiyun 	TP_fast_assign(
221*4882a593Smuzhiyun 		__assign_str(name, name);
222*4882a593Smuzhiyun 	),
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun 	TP_printk("%s", __get_str(name))
225*4882a593Smuzhiyun );
226*4882a593Smuzhiyun 
227*4882a593Smuzhiyun TRACE_EVENT(snd_soc_jack_report,
228*4882a593Smuzhiyun 
229*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_jack *jack, int mask, int val),
230*4882a593Smuzhiyun 
231*4882a593Smuzhiyun 	TP_ARGS(jack, mask, val),
232*4882a593Smuzhiyun 
233*4882a593Smuzhiyun 	TP_STRUCT__entry(
234*4882a593Smuzhiyun 		__string(	name,		jack->jack->id		)
235*4882a593Smuzhiyun 		__field(	int,		mask			)
236*4882a593Smuzhiyun 		__field(	int,		val			)
237*4882a593Smuzhiyun 	),
238*4882a593Smuzhiyun 
239*4882a593Smuzhiyun 	TP_fast_assign(
240*4882a593Smuzhiyun 		__assign_str(name, jack->jack->id);
241*4882a593Smuzhiyun 		__entry->mask = mask;
242*4882a593Smuzhiyun 		__entry->val = val;
243*4882a593Smuzhiyun 	),
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun 	TP_printk("jack=%s %x/%x", __get_str(name), (int)__entry->val,
246*4882a593Smuzhiyun 		  (int)__entry->mask)
247*4882a593Smuzhiyun );
248*4882a593Smuzhiyun 
249*4882a593Smuzhiyun TRACE_EVENT(snd_soc_jack_notify,
250*4882a593Smuzhiyun 
251*4882a593Smuzhiyun 	TP_PROTO(struct snd_soc_jack *jack, int val),
252*4882a593Smuzhiyun 
253*4882a593Smuzhiyun 	TP_ARGS(jack, val),
254*4882a593Smuzhiyun 
255*4882a593Smuzhiyun 	TP_STRUCT__entry(
256*4882a593Smuzhiyun 		__string(	name,		jack->jack->id		)
257*4882a593Smuzhiyun 		__field(	int,		val			)
258*4882a593Smuzhiyun 	),
259*4882a593Smuzhiyun 
260*4882a593Smuzhiyun 	TP_fast_assign(
261*4882a593Smuzhiyun 		__assign_str(name, jack->jack->id);
262*4882a593Smuzhiyun 		__entry->val = val;
263*4882a593Smuzhiyun 	),
264*4882a593Smuzhiyun 
265*4882a593Smuzhiyun 	TP_printk("jack=%s %x", __get_str(name), (int)__entry->val)
266*4882a593Smuzhiyun );
267*4882a593Smuzhiyun 
268*4882a593Smuzhiyun #endif /* _TRACE_ASOC_H */
269*4882a593Smuzhiyun 
270*4882a593Smuzhiyun /* This part must be outside protection */
271*4882a593Smuzhiyun #include <trace/define_trace.h>
272