summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2011-08-09 14:22:44 +0200
committerTakashi Iwai <tiwai@suse.de>2011-08-09 14:24:17 +0200
commitecf726f5414489fe749477eb77d6cb12bb93c8bc (patch)
tree5dd0bea16d7b627091b16f295fc8f553ec266014
parentd11b7fa3d5b6d4b3a730f563e7b14dfc859c40c6 (diff)
ALSA: hda - Add tracepoint for unsolicited events
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--Documentation/sound/alsa/HD-Audio.txt3
-rw-r--r--sound/pci/hda/hda_codec.c1
-rw-r--r--sound/pci/hda/hda_trace.h22
3 files changed, 25 insertions, 1 deletions
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt
index ba2a155f3a3..850b1b3956a 100644
--- a/Documentation/sound/alsa/HD-Audio.txt
+++ b/Documentation/sound/alsa/HD-Audio.txt
@@ -529,7 +529,8 @@ Tracepoints
The hd-audio driver gives a few basic tracepoints.
`hda:hda_send_cmd` traces each CORB write while `hda:hda_get_response`
traces the response from RIRB (only when read from the codec driver).
-`hda:hda_bus_reset` traces the bus-reset due to fatal error, etc, and
+`hda:hda_bus_reset` traces the bus-reset due to fatal error, etc,
+`hda:hda_unsol_event` traces the unsolicited events, and
`hda:hda_power_down` and `hda:hda_power_up` trace the power down/up
via power-saving behavior.
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index e105b653130..2a8d447c8ed 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -610,6 +610,7 @@ int snd_hda_queue_unsol_event(struct hda_bus *bus, u32 res, u32 res_ex)
struct hda_bus_unsolicited *unsol;
unsigned int wp;
+ trace_hda_unsol_event(bus, res, res_ex);
unsol = bus->unsol;
if (!unsol)
return 0;
diff --git a/sound/pci/hda/hda_trace.h b/sound/pci/hda/hda_trace.h
index b446cfcf60d..9884871ddb0 100644
--- a/sound/pci/hda/hda_trace.h
+++ b/sound/pci/hda/hda_trace.h
@@ -87,6 +87,28 @@ DEFINE_EVENT(hda_power, hda_power_up,
TP_ARGS(codec)
);
+TRACE_EVENT(hda_unsol_event,
+
+ TP_PROTO(struct hda_bus *bus, u32 res, u32 res_ex),
+
+ TP_ARGS(bus, res, res_ex),
+
+ TP_STRUCT__entry(
+ __field( unsigned int, card )
+ __field( u32, res )
+ __field( u32, res_ex )
+ ),
+
+ TP_fast_assign(
+ __entry->card = (bus)->card->number;
+ __entry->res = res;
+ __entry->res_ex = res_ex;
+ ),
+
+ TP_printk("[%d] res=%x, res_ex=%x", __entry->card,
+ __entry->res, __entry->res_ex)
+);
+
#endif /* _TRACE_HDA_H */
/* This part must be outside protection */