ASoC: core - Add platform IO tracing
Liam Girdwood [Mon, 4 Jul 2011 21:10:50 +0000 (22:10 +0100)]
Trace platform IO just like CODEC IO.

Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

include/trace/events/asoc.h
sound/soc/soc-core.c

index ae973d2..603f5a0 100644 (file)
@@ -9,6 +9,7 @@
 
 struct snd_soc_jack;
 struct snd_soc_codec;
+struct snd_soc_platform;
 struct snd_soc_card;
 struct snd_soc_dapm_widget;
 
@@ -59,6 +60,50 @@ DEFINE_EVENT(snd_soc_reg, snd_soc_reg_read,
 
 );
 
+DECLARE_EVENT_CLASS(snd_soc_preg,
+
+       TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
+                unsigned int val),
+
+       TP_ARGS(platform, reg, val),
+
+       TP_STRUCT__entry(
+               __string(       name,           platform->name  )
+               __field(        int,            id              )
+               __field(        unsigned int,   reg             )
+               __field(        unsigned int,   val             )
+       ),
+
+       TP_fast_assign(
+               __assign_str(name, platform->name);
+               __entry->id = platform->id;
+               __entry->reg = reg;
+               __entry->val = val;
+       ),
+
+       TP_printk("platform=%s.%d reg=%x val=%x", __get_str(name),
+                 (int)__entry->id, (unsigned int)__entry->reg,
+                 (unsigned int)__entry->val)
+);
+
+DEFINE_EVENT(snd_soc_preg, snd_soc_preg_write,
+
+       TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
+                unsigned int val),
+
+       TP_ARGS(platform, reg, val)
+
+);
+
+DEFINE_EVENT(snd_soc_preg, snd_soc_preg_read,
+
+       TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
+                unsigned int val),
+
+       TP_ARGS(platform, reg, val)
+
+);
+
 DECLARE_EVENT_CLASS(snd_soc_card,
 
        TP_PROTO(struct snd_soc_card *card, int val),
index 3049c37..70f4779 100644 (file)
@@ -1665,6 +1665,7 @@ int snd_soc_platform_read(struct snd_soc_platform *platform,
 
        ret = platform->driver->read(platform, reg);
        dev_dbg(platform->dev, "read %x => %x\n", reg, ret);
+       trace_snd_soc_preg_read(platform, reg, ret);
 
        return ret;
 }
@@ -1679,6 +1680,7 @@ int snd_soc_platform_write(struct snd_soc_platform *platform,
        }
 
        dev_dbg(platform->dev, "write %x = %x\n", reg, val);
+       trace_snd_soc_preg_write(platform, reg, val);
        return platform->driver->write(platform, reg, val);
 }
 EXPORT_SYMBOL_GPL(snd_soc_platform_write);