Linux Audio

Check our new training course

Loading...
v6.13.7
  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#include <sound/pcm.h>
 12
 13#define DAPM_DIRECT "(direct)"
 14#define DAPM_ARROW(dir) (((dir) == SND_SOC_DAPM_DIR_OUT) ? "->" : "<-")
 15
 16TRACE_DEFINE_ENUM(SND_SOC_DAPM_DIR_OUT);
 17
 18struct snd_soc_jack;
 
 
 19struct snd_soc_card;
 20struct snd_soc_dapm_widget;
 21struct snd_soc_dapm_path;
 22
 23DECLARE_EVENT_CLASS(snd_soc_dapm,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 24
 25	TP_PROTO(struct snd_soc_dapm_context *dapm, int val),
 26
 27	TP_ARGS(dapm, val),
 28
 29	TP_STRUCT__entry(
 30		__string(	card_name,	dapm->card->name)
 31		__string(	comp_name,	dapm->component ? dapm->component->name : "(none)")
 32		__field(	int,		val)
 33	),
 34
 35	TP_fast_assign(
 36		__assign_str(card_name);
 37		__assign_str(comp_name);
 38		__entry->val = val;
 39	),
 40
 41	TP_printk("card=%s component=%s val=%d",
 42		  __get_str(card_name), __get_str(comp_name), (int)__entry->val)
 43);
 44
 45DEFINE_EVENT(snd_soc_dapm, snd_soc_bias_level_start,
 46
 47	TP_PROTO(struct snd_soc_dapm_context *dapm, int val),
 48
 49	TP_ARGS(dapm, val)
 50
 51);
 52
 53DEFINE_EVENT(snd_soc_dapm, snd_soc_bias_level_done,
 54
 55	TP_PROTO(struct snd_soc_dapm_context *dapm, int val),
 56
 57	TP_ARGS(dapm, val)
 58
 59);
 60
 61DECLARE_EVENT_CLASS(snd_soc_dapm_basic,
 62
 63	TP_PROTO(struct snd_soc_card *card, int event),
 64
 65	TP_ARGS(card, event),
 66
 67	TP_STRUCT__entry(
 68		__string(	name,	card->name	)
 69		__field(	int,	event		)
 70	),
 71
 72	TP_fast_assign(
 73		__assign_str(name);
 74		__entry->event = event;
 75	),
 76
 77	TP_printk("card=%s event=%d", __get_str(name), (int)__entry->event)
 78);
 79
 80DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_start,
 81
 82	TP_PROTO(struct snd_soc_card *card, int event),
 83
 84	TP_ARGS(card, event)
 85
 86);
 87
 88DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_done,
 89
 90	TP_PROTO(struct snd_soc_card *card, int event),
 91
 92	TP_ARGS(card, event)
 93
 94);
 95
 96DECLARE_EVENT_CLASS(snd_soc_dapm_widget,
 97
 98	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
 99
100	TP_ARGS(w, val),
101
102	TP_STRUCT__entry(
103		__string(	name,	w->name		)
104		__field(	int,	val		)
105	),
106
107	TP_fast_assign(
108		__assign_str(name);
109		__entry->val = val;
110	),
111
112	TP_printk("widget=%s val=%d", __get_str(name),
113		  (int)__entry->val)
114);
115
116DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_power,
117
118	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
119
120	TP_ARGS(w, val)
121
122);
123
124DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_start,
125
126	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
127
128	TP_ARGS(w, val)
129
130);
131
132DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_done,
133
134	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
135
136	TP_ARGS(w, val)
137
138);
139
140TRACE_EVENT(snd_soc_dapm_walk_done,
141
142	TP_PROTO(struct snd_soc_card *card),
143
144	TP_ARGS(card),
145
146	TP_STRUCT__entry(
147		__string(	name,	card->name		)
148		__field(	int,	power_checks		)
149		__field(	int,	path_checks		)
150		__field(	int,	neighbour_checks	)
151	),
152
153	TP_fast_assign(
154		__assign_str(name);
155		__entry->power_checks = card->dapm_stats.power_checks;
156		__entry->path_checks = card->dapm_stats.path_checks;
157		__entry->neighbour_checks = card->dapm_stats.neighbour_checks;
158	),
159
160	TP_printk("%s: checks %d power, %d path, %d neighbour",
161		  __get_str(name), (int)__entry->power_checks,
162		  (int)__entry->path_checks, (int)__entry->neighbour_checks)
163);
164
165TRACE_EVENT(snd_soc_dapm_path,
166
167	TP_PROTO(struct snd_soc_dapm_widget *widget,
168		enum snd_soc_dapm_direction dir,
169		struct snd_soc_dapm_path *path),
170
171	TP_ARGS(widget, dir, path),
172
173	TP_STRUCT__entry(
174		__string(	wname,	widget->name		)
175		__string(	pname,	path->name ? path->name : DAPM_DIRECT)
176		__string(	pnname,	path->node[dir]->name	)
177		__field(	int,	path_node		)
178		__field(	int,	path_connect		)
179		__field(	int,	path_dir		)
180	),
181
182	TP_fast_assign(
183		__assign_str(wname);
184		__assign_str(pname);
185		__assign_str(pnname);
186		__entry->path_connect = path->connect;
187		__entry->path_node = (long)path->node[dir];
188		__entry->path_dir = dir;
189	),
190
191	TP_printk("%c%s %s %s %s %s",
192		(int) __entry->path_node &&
193		(int) __entry->path_connect ? '*' : ' ',
194		__get_str(wname), DAPM_ARROW(__entry->path_dir),
195		__get_str(pname), DAPM_ARROW(__entry->path_dir),
196		__get_str(pnname))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197);
198
199TRACE_EVENT(snd_soc_dapm_connected,
200
201	TP_PROTO(int paths, int stream),
202
203	TP_ARGS(paths, stream),
204
205	TP_STRUCT__entry(
206		__field(	int,	paths		)
207		__field(	int,	stream		)
208	),
209
210	TP_fast_assign(
211		__entry->paths = paths;
212		__entry->stream = stream;
213	),
214
215	TP_printk("%s: found %d paths",
216		  snd_pcm_direction_name(__entry->stream), __entry->paths)
217);
218
219TRACE_EVENT(snd_soc_jack_irq,
220
221	TP_PROTO(const char *name),
222
223	TP_ARGS(name),
224
225	TP_STRUCT__entry(
226		__string(	name,	name		)
227	),
228
229	TP_fast_assign(
230		__assign_str(name);
231	),
232
233	TP_printk("%s", __get_str(name))
234);
235
236TRACE_EVENT(snd_soc_jack_report,
237
238	TP_PROTO(struct snd_soc_jack *jack, int mask, int val),
239
240	TP_ARGS(jack, mask, val),
241
242	TP_STRUCT__entry(
243		__string(	name,		jack->jack->id		)
244		__field(	int,		mask			)
245		__field(	int,		val			)
246	),
247
248	TP_fast_assign(
249		__assign_str(name);
250		__entry->mask = mask;
251		__entry->val = val;
252	),
253
254	TP_printk("jack=%s %x/%x", __get_str(name), (int)__entry->val,
255		  (int)__entry->mask)
256);
257
258TRACE_EVENT(snd_soc_jack_notify,
259
260	TP_PROTO(struct snd_soc_jack *jack, int val),
261
262	TP_ARGS(jack, val),
263
264	TP_STRUCT__entry(
265		__string(	name,		jack->jack->id		)
266		__field(	int,		val			)
267	),
268
269	TP_fast_assign(
270		__assign_str(name);
271		__entry->val = val;
272	),
273
274	TP_printk("jack=%s %x", __get_str(name), (int)__entry->val)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275);
276
277#endif /* _TRACE_ASOC_H */
278
279/* This part must be outside protection */
280#include <trace/define_trace.h>
v3.15
 
  1#undef TRACE_SYSTEM
  2#define TRACE_SYSTEM asoc
  3
  4#if !defined(_TRACE_ASOC_H) || defined(TRACE_HEADER_MULTI_READ)
  5#define _TRACE_ASOC_H
  6
  7#include <linux/ktime.h>
  8#include <linux/tracepoint.h>
 
 
  9
 10#define DAPM_DIRECT "(direct)"
 
 
 
 11
 12struct snd_soc_jack;
 13struct snd_soc_codec;
 14struct snd_soc_platform;
 15struct snd_soc_card;
 16struct snd_soc_dapm_widget;
 17struct snd_soc_dapm_path;
 18
 19/*
 20 * Log register events
 21 */
 22DECLARE_EVENT_CLASS(snd_soc_reg,
 23
 24	TP_PROTO(struct snd_soc_codec *codec, unsigned int reg,
 25		 unsigned int val),
 26
 27	TP_ARGS(codec, reg, val),
 28
 29	TP_STRUCT__entry(
 30		__string(	name,		codec->name	)
 31		__field(	int,		id		)
 32		__field(	unsigned int,	reg		)
 33		__field(	unsigned int,	val		)
 34	),
 35
 36	TP_fast_assign(
 37		__assign_str(name, codec->name);
 38		__entry->id = codec->id;
 39		__entry->reg = reg;
 40		__entry->val = val;
 41	),
 42
 43	TP_printk("codec=%s.%d reg=%x val=%x", __get_str(name),
 44		  (int)__entry->id, (unsigned int)__entry->reg,
 45		  (unsigned int)__entry->val)
 46);
 47
 48DEFINE_EVENT(snd_soc_reg, snd_soc_reg_write,
 49
 50	TP_PROTO(struct snd_soc_codec *codec, unsigned int reg,
 51		 unsigned int val),
 52
 53	TP_ARGS(codec, reg, val)
 54
 55);
 56
 57DEFINE_EVENT(snd_soc_reg, snd_soc_reg_read,
 58
 59	TP_PROTO(struct snd_soc_codec *codec, unsigned int reg,
 60		 unsigned int val),
 61
 62	TP_ARGS(codec, reg, val)
 63
 64);
 65
 66DECLARE_EVENT_CLASS(snd_soc_preg,
 67
 68	TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
 69		 unsigned int val),
 70
 71	TP_ARGS(platform, reg, val),
 72
 73	TP_STRUCT__entry(
 74		__string(	name,		platform->name	)
 75		__field(	int,		id		)
 76		__field(	unsigned int,	reg		)
 77		__field(	unsigned int,	val		)
 78	),
 79
 80	TP_fast_assign(
 81		__assign_str(name, platform->name);
 82		__entry->id = platform->id;
 83		__entry->reg = reg;
 84		__entry->val = val;
 85	),
 86
 87	TP_printk("platform=%s.%d reg=%x val=%x", __get_str(name),
 88		  (int)__entry->id, (unsigned int)__entry->reg,
 89		  (unsigned int)__entry->val)
 90);
 91
 92DEFINE_EVENT(snd_soc_preg, snd_soc_preg_write,
 93
 94	TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
 95		 unsigned int val),
 96
 97	TP_ARGS(platform, reg, val)
 98
 99);
100
101DEFINE_EVENT(snd_soc_preg, snd_soc_preg_read,
102
103	TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
104		 unsigned int val),
105
106	TP_ARGS(platform, reg, val)
107
108);
109
110DECLARE_EVENT_CLASS(snd_soc_card,
111
112	TP_PROTO(struct snd_soc_card *card, int val),
113
114	TP_ARGS(card, val),
115
116	TP_STRUCT__entry(
117		__string(	name,		card->name	)
118		__field(	int,		val		)
 
119	),
120
121	TP_fast_assign(
122		__assign_str(name, card->name);
 
123		__entry->val = val;
124	),
125
126	TP_printk("card=%s val=%d", __get_str(name), (int)__entry->val)
 
127);
128
129DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_start,
130
131	TP_PROTO(struct snd_soc_card *card, int val),
132
133	TP_ARGS(card, val)
134
135);
136
137DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_done,
138
139	TP_PROTO(struct snd_soc_card *card, int val),
140
141	TP_ARGS(card, val)
142
143);
144
145DECLARE_EVENT_CLASS(snd_soc_dapm_basic,
146
147	TP_PROTO(struct snd_soc_card *card),
148
149	TP_ARGS(card),
150
151	TP_STRUCT__entry(
152		__string(	name,	card->name	)
 
153	),
154
155	TP_fast_assign(
156		__assign_str(name, card->name);
 
157	),
158
159	TP_printk("card=%s", __get_str(name))
160);
161
162DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_start,
163
164	TP_PROTO(struct snd_soc_card *card),
165
166	TP_ARGS(card)
167
168);
169
170DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_done,
171
172	TP_PROTO(struct snd_soc_card *card),
173
174	TP_ARGS(card)
175
176);
177
178DECLARE_EVENT_CLASS(snd_soc_dapm_widget,
179
180	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
181
182	TP_ARGS(w, val),
183
184	TP_STRUCT__entry(
185		__string(	name,	w->name		)
186		__field(	int,	val		)
187	),
188
189	TP_fast_assign(
190		__assign_str(name, w->name);
191		__entry->val = val;
192	),
193
194	TP_printk("widget=%s val=%d", __get_str(name),
195		  (int)__entry->val)
196);
197
198DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_power,
199
200	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
201
202	TP_ARGS(w, val)
203
204);
205
206DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_start,
207
208	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
209
210	TP_ARGS(w, val)
211
212);
213
214DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_done,
215
216	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
217
218	TP_ARGS(w, val)
219
220);
221
222TRACE_EVENT(snd_soc_dapm_walk_done,
223
224	TP_PROTO(struct snd_soc_card *card),
225
226	TP_ARGS(card),
227
228	TP_STRUCT__entry(
229		__string(	name,	card->name		)
230		__field(	int,	power_checks		)
231		__field(	int,	path_checks		)
232		__field(	int,	neighbour_checks	)
233	),
234
235	TP_fast_assign(
236		__assign_str(name, card->name);
237		__entry->power_checks = card->dapm_stats.power_checks;
238		__entry->path_checks = card->dapm_stats.path_checks;
239		__entry->neighbour_checks = card->dapm_stats.neighbour_checks;
240	),
241
242	TP_printk("%s: checks %d power, %d path, %d neighbour",
243		  __get_str(name), (int)__entry->power_checks,
244		  (int)__entry->path_checks, (int)__entry->neighbour_checks)
245);
246
247TRACE_EVENT(snd_soc_dapm_output_path,
248
249	TP_PROTO(struct snd_soc_dapm_widget *widget,
 
250		struct snd_soc_dapm_path *path),
251
252	TP_ARGS(widget, path),
253
254	TP_STRUCT__entry(
255		__string(	wname,	widget->name		)
256		__string(	pname,	path->name ? path->name : DAPM_DIRECT)
257		__string(	psname,	path->sink->name	)
258		__field(	int,	path_sink		)
259		__field(	int,	path_connect		)
 
260	),
261
262	TP_fast_assign(
263		__assign_str(wname, widget->name);
264		__assign_str(pname, path->name ? path->name : DAPM_DIRECT);
265		__assign_str(psname, path->sink->name);
266		__entry->path_connect = path->connect;
267		__entry->path_sink = (long)path->sink;
 
268	),
269
270	TP_printk("%c%s -> %s -> %s\n",
271		(int) __entry->path_sink &&
272		(int) __entry->path_connect ? '*' : ' ',
273		__get_str(wname), __get_str(pname), __get_str(psname))
274);
275
276TRACE_EVENT(snd_soc_dapm_input_path,
277
278	TP_PROTO(struct snd_soc_dapm_widget *widget,
279		struct snd_soc_dapm_path *path),
280
281	TP_ARGS(widget, path),
282
283	TP_STRUCT__entry(
284		__string(	wname,	widget->name		)
285		__string(	pname,	path->name ? path->name : DAPM_DIRECT)
286		__string(	psname,	path->source->name	)
287		__field(	int,	path_source		)
288		__field(	int,	path_connect		)
289	),
290
291	TP_fast_assign(
292		__assign_str(wname, widget->name);
293		__assign_str(pname, path->name ? path->name : DAPM_DIRECT);
294		__assign_str(psname, path->source->name);
295		__entry->path_connect = path->connect;
296		__entry->path_source = (long)path->source;
297	),
298
299	TP_printk("%c%s <- %s <- %s\n",
300		(int) __entry->path_source &&
301		(int) __entry->path_connect ? '*' : ' ',
302		__get_str(wname), __get_str(pname), __get_str(psname))
303);
304
305TRACE_EVENT(snd_soc_dapm_connected,
306
307	TP_PROTO(int paths, int stream),
308
309	TP_ARGS(paths, stream),
310
311	TP_STRUCT__entry(
312		__field(	int,	paths		)
313		__field(	int,	stream		)
314	),
315
316	TP_fast_assign(
317		__entry->paths = paths;
318		__entry->stream = stream;
319	),
320
321	TP_printk("%s: found %d paths\n",
322		__entry->stream ? "capture" : "playback", __entry->paths)
323);
324
325TRACE_EVENT(snd_soc_jack_irq,
326
327	TP_PROTO(const char *name),
328
329	TP_ARGS(name),
330
331	TP_STRUCT__entry(
332		__string(	name,	name		)
333	),
334
335	TP_fast_assign(
336		__assign_str(name, name);
337	),
338
339	TP_printk("%s", __get_str(name))
340);
341
342TRACE_EVENT(snd_soc_jack_report,
343
344	TP_PROTO(struct snd_soc_jack *jack, int mask, int val),
345
346	TP_ARGS(jack, mask, val),
347
348	TP_STRUCT__entry(
349		__string(	name,		jack->jack->name	)
350		__field(	int,		mask			)
351		__field(	int,		val			)
352	),
353
354	TP_fast_assign(
355		__assign_str(name, jack->jack->name);
356		__entry->mask = mask;
357		__entry->val = val;
358	),
359
360	TP_printk("jack=%s %x/%x", __get_str(name), (int)__entry->val,
361		  (int)__entry->mask)
362);
363
364TRACE_EVENT(snd_soc_jack_notify,
365
366	TP_PROTO(struct snd_soc_jack *jack, int val),
367
368	TP_ARGS(jack, val),
369
370	TP_STRUCT__entry(
371		__string(	name,		jack->jack->name	)
372		__field(	int,		val			)
373	),
374
375	TP_fast_assign(
376		__assign_str(name, jack->jack->name);
377		__entry->val = val;
378	),
379
380	TP_printk("jack=%s %x", __get_str(name), (int)__entry->val)
381);
382
383TRACE_EVENT(snd_soc_cache_sync,
384
385	TP_PROTO(struct snd_soc_codec *codec, const char *type,
386		 const char *status),
387
388	TP_ARGS(codec, type, status),
389
390	TP_STRUCT__entry(
391		__string(	name,		codec->name	)
392		__string(	status,		status		)
393		__string(	type,		type		)
394		__field(	int,		id		)
395	),
396
397	TP_fast_assign(
398		__assign_str(name, codec->name);
399		__assign_str(status, status);
400		__assign_str(type, type);
401		__entry->id = codec->id;
402	),
403
404	TP_printk("codec=%s.%d type=%s status=%s", __get_str(name),
405		  (int)__entry->id, __get_str(type), __get_str(status))
406);
407
408#endif /* _TRACE_ASOC_H */
409
410/* This part must be outside protection */
411#include <trace/define_trace.h>