Linux Audio

Check our new training course

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