ALSA: hda - Add tracepoints at snd_hda_power_up/down entrances.
authorTakashi Iwai <tiwai@suse.de>
Mon, 20 Aug 2012 08:22:25 +0000 (10:22 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 20 Aug 2012 09:24:29 +0000 (11:24 +0200)
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_trace.h

index 408babc..ad0101e 100644 (file)
@@ -4417,6 +4417,7 @@ static void __snd_hda_power_up(struct hda_codec *codec, bool wait_power_down)
 
        spin_lock(&codec->power_lock);
        codec->power_count++;
+       trace_hda_power_count(codec);
        /* Return if power_on or transitioning to power_on, unless currently
         * powering down. */
        if ((codec->power_on || codec->power_transition > 0) &&
@@ -4496,6 +4497,7 @@ void snd_hda_power_down(struct hda_codec *codec)
 {
        spin_lock(&codec->power_lock);
        --codec->power_count;
+       trace_hda_power_count(codec);
        if (!codec->power_on || codec->power_count || codec->power_transition) {
                spin_unlock(&codec->power_lock);
                return;
index 9884871..9a34b86 100644 (file)
@@ -87,6 +87,30 @@ DEFINE_EVENT(hda_power, hda_power_up,
        TP_ARGS(codec)
 );
 
+TRACE_EVENT(hda_power_count,
+       TP_PROTO(struct hda_codec *codec),
+       TP_ARGS(codec),
+       TP_STRUCT__entry(
+               __field( unsigned int, card )
+               __field( unsigned int, addr )
+               __field( int, power_count )
+               __field( int, power_on )
+               __field( int, power_transition )
+       ),
+
+       TP_fast_assign(
+               __entry->card = (codec)->bus->card->number;
+               __entry->addr = (codec)->addr;
+               __entry->power_count = (codec)->power_count;
+               __entry->power_on = (codec)->power_on;
+               __entry->power_transition = (codec)->power_transition;
+       ),
+
+       TP_printk("[%d:%d] power_count=%d, power_on=%d, power_transition=%d",
+                 __entry->card, __entry->addr, __entry->power_count,
+                 __entry->power_on, __entry->power_transition)
+);
+
 TRACE_EVENT(hda_unsol_event,
 
        TP_PROTO(struct hda_bus *bus, u32 res, u32 res_ex),