ASoC: Add DAPM trace events
Trace events for DAPM allow us to monitor the performance and behaviour of DAPM with logging which can be built into the kernel permanantly, is more suited to automated analysis and display and less likely to suffer interference from other logging activity. Currently trace events are generated for: - Start and stop of DAPM processing - Start and stop of bias level changes - Power decisions for widgets - Widget event execution start and stop giving some view as to what is happening and where latencies occur. Actual changes in widget power can be seen via the register write trace in soc-core. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
parent
a8b1d34f3e
commit
84e909303d
2 changed files with 126 additions and 0 deletions
|
@ -8,6 +8,8 @@
|
|||
#include <linux/tracepoint.h>
|
||||
|
||||
struct snd_soc_codec;
|
||||
struct snd_soc_card;
|
||||
struct snd_soc_dapm_widget;
|
||||
|
||||
/*
|
||||
* Log register events
|
||||
|
@ -56,7 +58,117 @@ DEFINE_EVENT(snd_soc_reg, snd_soc_reg_read,
|
|||
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(snd_soc_card,
|
||||
|
||||
TP_PROTO(struct snd_soc_card *card, int val),
|
||||
|
||||
TP_ARGS(card, val),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string( name, card->name )
|
||||
__field( int, val )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(name, card->name);
|
||||
__entry->val = val;
|
||||
),
|
||||
|
||||
TP_printk("card=%s val=%d", __get_str(name), (int)__entry->val)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_start,
|
||||
|
||||
TP_PROTO(struct snd_soc_card *card, int val),
|
||||
|
||||
TP_ARGS(card, val)
|
||||
|
||||
);
|
||||
|
||||
DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_done,
|
||||
|
||||
TP_PROTO(struct snd_soc_card *card, int val),
|
||||
|
||||
TP_ARGS(card, val)
|
||||
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(snd_soc_dapm_basic,
|
||||
|
||||
TP_PROTO(struct snd_soc_card *card),
|
||||
|
||||
TP_ARGS(card),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string( name, card->name )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(name, card->name);
|
||||
),
|
||||
|
||||
TP_printk("card=%s", __get_str(name))
|
||||
);
|
||||
|
||||
DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_start,
|
||||
|
||||
TP_PROTO(struct snd_soc_card *card),
|
||||
|
||||
TP_ARGS(card)
|
||||
|
||||
);
|
||||
|
||||
DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_done,
|
||||
|
||||
TP_PROTO(struct snd_soc_card *card),
|
||||
|
||||
TP_ARGS(card)
|
||||
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(snd_soc_dapm_widget,
|
||||
|
||||
TP_PROTO(struct snd_soc_dapm_widget *w, int val),
|
||||
|
||||
TP_ARGS(w, val),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string( name, w->name )
|
||||
__field( int, val )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(name, w->name);
|
||||
__entry->val = val;
|
||||
),
|
||||
|
||||
TP_printk("widget=%s val=%d", __get_str(name),
|
||||
(int)__entry->val)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_power,
|
||||
|
||||
TP_PROTO(struct snd_soc_dapm_widget *w, int val),
|
||||
|
||||
TP_ARGS(w, val)
|
||||
|
||||
);
|
||||
|
||||
DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_start,
|
||||
|
||||
TP_PROTO(struct snd_soc_dapm_widget *w, int val),
|
||||
|
||||
TP_ARGS(w, val)
|
||||
|
||||
);
|
||||
|
||||
DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_done,
|
||||
|
||||
TP_PROTO(struct snd_soc_dapm_widget *w, int val),
|
||||
|
||||
TP_ARGS(w, val)
|
||||
|
||||
);
|
||||
|
||||
#endif /* _TRACE_ASOC_H */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue