xref: /openbmc/linux/include/trace/events/asoc.h (revision b181f7029bd71238ac2754ce7052dffd69432085)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2a8b1d34fSMark Brown #undef TRACE_SYSTEM
3a8b1d34fSMark Brown #define TRACE_SYSTEM asoc
4a8b1d34fSMark Brown 
5a8b1d34fSMark Brown #if !defined(_TRACE_ASOC_H) || defined(TRACE_HEADER_MULTI_READ)
6a8b1d34fSMark Brown #define _TRACE_ASOC_H
7a8b1d34fSMark Brown 
8a8b1d34fSMark Brown #include <linux/ktime.h>
9a8b1d34fSMark Brown #include <linux/tracepoint.h>
109e8434a0SKuninori Morimoto #include <sound/jack.h>
11a8b1d34fSMark Brown 
12ec2e3031SLiam Girdwood #define DAPM_DIRECT "(direct)"
136e588a0dSLars-Peter Clausen #define DAPM_ARROW(dir) (((dir) == SND_SOC_DAPM_DIR_OUT) ? "->" : "<-")
14ec2e3031SLiam Girdwood 
15*656fb206SSteven Rostedt TRACE_DEFINE_ENUM(SND_SOC_DAPM_DIR_OUT);
16*656fb206SSteven Rostedt 
173028eb8cSMark Brown struct snd_soc_jack;
1884e90930SMark Brown struct snd_soc_card;
1984e90930SMark Brown struct snd_soc_dapm_widget;
2056fb7421SLiam Girdwood struct snd_soc_dapm_path;
21a8b1d34fSMark Brown 
2284e90930SMark Brown DECLARE_EVENT_CLASS(snd_soc_card,
23a8b1d34fSMark Brown 
2484e90930SMark Brown 	TP_PROTO(struct snd_soc_card *card, int val),
2584e90930SMark Brown 
2684e90930SMark Brown 	TP_ARGS(card, val),
2784e90930SMark Brown 
2884e90930SMark Brown 	TP_STRUCT__entry(
2984e90930SMark Brown 		__string(	name,		card->name	)
3084e90930SMark Brown 		__field(	int,		val		)
3184e90930SMark Brown 	),
3284e90930SMark Brown 
3384e90930SMark Brown 	TP_fast_assign(
3484e90930SMark Brown 		__assign_str(name, card->name);
3584e90930SMark Brown 		__entry->val = val;
3684e90930SMark Brown 	),
3784e90930SMark Brown 
3884e90930SMark Brown 	TP_printk("card=%s val=%d", __get_str(name), (int)__entry->val)
3984e90930SMark Brown );
4084e90930SMark Brown 
4184e90930SMark Brown DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_start,
4284e90930SMark Brown 
4384e90930SMark Brown 	TP_PROTO(struct snd_soc_card *card, int val),
4484e90930SMark Brown 
4584e90930SMark Brown 	TP_ARGS(card, val)
4684e90930SMark Brown 
4784e90930SMark Brown );
4884e90930SMark Brown 
4984e90930SMark Brown DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_done,
5084e90930SMark Brown 
5184e90930SMark Brown 	TP_PROTO(struct snd_soc_card *card, int val),
5284e90930SMark Brown 
5384e90930SMark Brown 	TP_ARGS(card, val)
5484e90930SMark Brown 
5584e90930SMark Brown );
5684e90930SMark Brown 
5784e90930SMark Brown DECLARE_EVENT_CLASS(snd_soc_dapm_basic,
5884e90930SMark Brown 
5984e90930SMark Brown 	TP_PROTO(struct snd_soc_card *card),
6084e90930SMark Brown 
6184e90930SMark Brown 	TP_ARGS(card),
6284e90930SMark Brown 
6384e90930SMark Brown 	TP_STRUCT__entry(
6484e90930SMark Brown 		__string(	name,	card->name	)
6584e90930SMark Brown 	),
6684e90930SMark Brown 
6784e90930SMark Brown 	TP_fast_assign(
6884e90930SMark Brown 		__assign_str(name, card->name);
6984e90930SMark Brown 	),
7084e90930SMark Brown 
7184e90930SMark Brown 	TP_printk("card=%s", __get_str(name))
7284e90930SMark Brown );
7384e90930SMark Brown 
7484e90930SMark Brown DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_start,
7584e90930SMark Brown 
7684e90930SMark Brown 	TP_PROTO(struct snd_soc_card *card),
7784e90930SMark Brown 
7884e90930SMark Brown 	TP_ARGS(card)
7984e90930SMark Brown 
8084e90930SMark Brown );
8184e90930SMark Brown 
8284e90930SMark Brown DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_done,
8384e90930SMark Brown 
8484e90930SMark Brown 	TP_PROTO(struct snd_soc_card *card),
8584e90930SMark Brown 
8684e90930SMark Brown 	TP_ARGS(card)
8784e90930SMark Brown 
8884e90930SMark Brown );
8984e90930SMark Brown 
9084e90930SMark Brown DECLARE_EVENT_CLASS(snd_soc_dapm_widget,
9184e90930SMark Brown 
9284e90930SMark Brown 	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
9384e90930SMark Brown 
9484e90930SMark Brown 	TP_ARGS(w, val),
9584e90930SMark Brown 
9684e90930SMark Brown 	TP_STRUCT__entry(
9784e90930SMark Brown 		__string(	name,	w->name		)
9884e90930SMark Brown 		__field(	int,	val		)
9984e90930SMark Brown 	),
10084e90930SMark Brown 
10184e90930SMark Brown 	TP_fast_assign(
10284e90930SMark Brown 		__assign_str(name, w->name);
10384e90930SMark Brown 		__entry->val = val;
10484e90930SMark Brown 	),
10584e90930SMark Brown 
10684e90930SMark Brown 	TP_printk("widget=%s val=%d", __get_str(name),
10784e90930SMark Brown 		  (int)__entry->val)
10884e90930SMark Brown );
10984e90930SMark Brown 
11084e90930SMark Brown DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_power,
11184e90930SMark Brown 
11284e90930SMark Brown 	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
11384e90930SMark Brown 
11484e90930SMark Brown 	TP_ARGS(w, val)
11584e90930SMark Brown 
11684e90930SMark Brown );
11784e90930SMark Brown 
11884e90930SMark Brown DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_start,
11984e90930SMark Brown 
12084e90930SMark Brown 	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
12184e90930SMark Brown 
12284e90930SMark Brown 	TP_ARGS(w, val)
12384e90930SMark Brown 
12484e90930SMark Brown );
12584e90930SMark Brown 
12684e90930SMark Brown DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_done,
12784e90930SMark Brown 
12884e90930SMark Brown 	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
12984e90930SMark Brown 
13084e90930SMark Brown 	TP_ARGS(w, val)
13184e90930SMark Brown 
13284e90930SMark Brown );
133a8b1d34fSMark Brown 
134de02d078SMark Brown TRACE_EVENT(snd_soc_dapm_walk_done,
135de02d078SMark Brown 
136de02d078SMark Brown 	TP_PROTO(struct snd_soc_card *card),
137de02d078SMark Brown 
138de02d078SMark Brown 	TP_ARGS(card),
139de02d078SMark Brown 
140de02d078SMark Brown 	TP_STRUCT__entry(
141de02d078SMark Brown 		__string(	name,	card->name		)
142de02d078SMark Brown 		__field(	int,	power_checks		)
143de02d078SMark Brown 		__field(	int,	path_checks		)
144e56235e0SMark Brown 		__field(	int,	neighbour_checks	)
145de02d078SMark Brown 	),
146de02d078SMark Brown 
147de02d078SMark Brown 	TP_fast_assign(
148de02d078SMark Brown 		__assign_str(name, card->name);
149de02d078SMark Brown 		__entry->power_checks = card->dapm_stats.power_checks;
150de02d078SMark Brown 		__entry->path_checks = card->dapm_stats.path_checks;
151e56235e0SMark Brown 		__entry->neighbour_checks = card->dapm_stats.neighbour_checks;
152de02d078SMark Brown 	),
153de02d078SMark Brown 
154e56235e0SMark Brown 	TP_printk("%s: checks %d power, %d path, %d neighbour",
155e56235e0SMark Brown 		  __get_str(name), (int)__entry->power_checks,
156e56235e0SMark Brown 		  (int)__entry->path_checks, (int)__entry->neighbour_checks)
157de02d078SMark Brown );
158de02d078SMark Brown 
1596e588a0dSLars-Peter Clausen TRACE_EVENT(snd_soc_dapm_path,
160ec2e3031SLiam Girdwood 
161ec2e3031SLiam Girdwood 	TP_PROTO(struct snd_soc_dapm_widget *widget,
1626e588a0dSLars-Peter Clausen 		enum snd_soc_dapm_direction dir,
163ec2e3031SLiam Girdwood 		struct snd_soc_dapm_path *path),
164ec2e3031SLiam Girdwood 
1656e588a0dSLars-Peter Clausen 	TP_ARGS(widget, dir, path),
166ec2e3031SLiam Girdwood 
167ec2e3031SLiam Girdwood 	TP_STRUCT__entry(
168ec2e3031SLiam Girdwood 		__string(	wname,	widget->name		)
169ec2e3031SLiam Girdwood 		__string(	pname,	path->name ? path->name : DAPM_DIRECT)
1706e588a0dSLars-Peter Clausen 		__string(	pnname,	path->node[dir]->name	)
1716e588a0dSLars-Peter Clausen 		__field(	int,	path_node		)
172ec2e3031SLiam Girdwood 		__field(	int,	path_connect		)
1736e588a0dSLars-Peter Clausen 		__field(	int,	path_dir		)
174ec2e3031SLiam Girdwood 	),
175ec2e3031SLiam Girdwood 
176ec2e3031SLiam Girdwood 	TP_fast_assign(
177ec2e3031SLiam Girdwood 		__assign_str(wname, widget->name);
178ec2e3031SLiam Girdwood 		__assign_str(pname, path->name ? path->name : DAPM_DIRECT);
1796e588a0dSLars-Peter Clausen 		__assign_str(pnname, path->node[dir]->name);
180ec2e3031SLiam Girdwood 		__entry->path_connect = path->connect;
1816e588a0dSLars-Peter Clausen 		__entry->path_node = (long)path->node[dir];
1826e588a0dSLars-Peter Clausen 		__entry->path_dir = dir;
183ec2e3031SLiam Girdwood 	),
184ec2e3031SLiam Girdwood 
1856e588a0dSLars-Peter Clausen 	TP_printk("%c%s %s %s %s %s",
1866e588a0dSLars-Peter Clausen 		(int) __entry->path_node &&
187ec2e3031SLiam Girdwood 		(int) __entry->path_connect ? '*' : ' ',
1886e588a0dSLars-Peter Clausen 		__get_str(wname), DAPM_ARROW(__entry->path_dir),
1896e588a0dSLars-Peter Clausen 		__get_str(pname), DAPM_ARROW(__entry->path_dir),
1906e588a0dSLars-Peter Clausen 		__get_str(pnname))
191ec2e3031SLiam Girdwood );
192ec2e3031SLiam Girdwood 
193ec2e3031SLiam Girdwood TRACE_EVENT(snd_soc_dapm_connected,
194ec2e3031SLiam Girdwood 
195ec2e3031SLiam Girdwood 	TP_PROTO(int paths, int stream),
196ec2e3031SLiam Girdwood 
197ec2e3031SLiam Girdwood 	TP_ARGS(paths, stream),
198ec2e3031SLiam Girdwood 
199ec2e3031SLiam Girdwood 	TP_STRUCT__entry(
200ec2e3031SLiam Girdwood 		__field(	int,	paths		)
201ec2e3031SLiam Girdwood 		__field(	int,	stream		)
202ec2e3031SLiam Girdwood 	),
203ec2e3031SLiam Girdwood 
204ec2e3031SLiam Girdwood 	TP_fast_assign(
205ec2e3031SLiam Girdwood 		__entry->paths = paths;
206ec2e3031SLiam Girdwood 		__entry->stream = stream;
207ec2e3031SLiam Girdwood 	),
208ec2e3031SLiam Girdwood 
209e03f73a0SAnatol Pomozov 	TP_printk("%s: found %d paths",
210ec2e3031SLiam Girdwood 		__entry->stream ? "capture" : "playback", __entry->paths)
211ec2e3031SLiam Girdwood );
212ec2e3031SLiam Girdwood 
2133028eb8cSMark Brown TRACE_EVENT(snd_soc_jack_irq,
2143028eb8cSMark Brown 
2153028eb8cSMark Brown 	TP_PROTO(const char *name),
2163028eb8cSMark Brown 
2173028eb8cSMark Brown 	TP_ARGS(name),
2183028eb8cSMark Brown 
2193028eb8cSMark Brown 	TP_STRUCT__entry(
2203028eb8cSMark Brown 		__string(	name,	name		)
2213028eb8cSMark Brown 	),
2223028eb8cSMark Brown 
2233028eb8cSMark Brown 	TP_fast_assign(
2243028eb8cSMark Brown 		__assign_str(name, name);
2253028eb8cSMark Brown 	),
2263028eb8cSMark Brown 
2273028eb8cSMark Brown 	TP_printk("%s", __get_str(name))
2283028eb8cSMark Brown );
2293028eb8cSMark Brown 
2303028eb8cSMark Brown TRACE_EVENT(snd_soc_jack_report,
2313028eb8cSMark Brown 
2323028eb8cSMark Brown 	TP_PROTO(struct snd_soc_jack *jack, int mask, int val),
2333028eb8cSMark Brown 
2343028eb8cSMark Brown 	TP_ARGS(jack, mask, val),
2353028eb8cSMark Brown 
2363028eb8cSMark Brown 	TP_STRUCT__entry(
237f4833a51SArnd Bergmann 		__string(	name,		jack->jack->id		)
2383028eb8cSMark Brown 		__field(	int,		mask			)
2393028eb8cSMark Brown 		__field(	int,		val			)
2403028eb8cSMark Brown 	),
2413028eb8cSMark Brown 
2423028eb8cSMark Brown 	TP_fast_assign(
243f4833a51SArnd Bergmann 		__assign_str(name, jack->jack->id);
2443028eb8cSMark Brown 		__entry->mask = mask;
2453028eb8cSMark Brown 		__entry->val = val;
2463028eb8cSMark Brown 	),
2473028eb8cSMark Brown 
2483028eb8cSMark Brown 	TP_printk("jack=%s %x/%x", __get_str(name), (int)__entry->val,
2493028eb8cSMark Brown 		  (int)__entry->mask)
2503028eb8cSMark Brown );
2513028eb8cSMark Brown 
2523028eb8cSMark Brown TRACE_EVENT(snd_soc_jack_notify,
2533028eb8cSMark Brown 
2543028eb8cSMark Brown 	TP_PROTO(struct snd_soc_jack *jack, int val),
2553028eb8cSMark Brown 
2563028eb8cSMark Brown 	TP_ARGS(jack, val),
2573028eb8cSMark Brown 
2583028eb8cSMark Brown 	TP_STRUCT__entry(
259f4833a51SArnd Bergmann 		__string(	name,		jack->jack->id		)
2603028eb8cSMark Brown 		__field(	int,		val			)
2613028eb8cSMark Brown 	),
2623028eb8cSMark Brown 
2633028eb8cSMark Brown 	TP_fast_assign(
264f4833a51SArnd Bergmann 		__assign_str(name, jack->jack->id);
2653028eb8cSMark Brown 		__entry->val = val;
2663028eb8cSMark Brown 	),
2673028eb8cSMark Brown 
2683028eb8cSMark Brown 	TP_printk("jack=%s %x", __get_str(name), (int)__entry->val)
2693028eb8cSMark Brown );
2703028eb8cSMark Brown 
271a8b1d34fSMark Brown #endif /* _TRACE_ASOC_H */
272a8b1d34fSMark Brown 
273a8b1d34fSMark Brown /* This part must be outside protection */
274a8b1d34fSMark Brown #include <trace/define_trace.h>
275