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