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