summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-09-21 21:19:14 +0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-09-22 20:24:40 +0400
commite56235e099d7290a2331b984a79f75bbe0865fe8 (patch)
tree7fdd1e4603b12a56502242f32e02c1d97fe23231
parent7aefb086c15fc44066e705e479d012d46476d8c5 (diff)
downloadlinux-e56235e099d7290a2331b984a79f75bbe0865fe8.tar.xz
ASoC: Add another DAPM stat for neighbour checks
The number of times we look at a potentially connected neighbour is just as important as the number of times we actually recurse into looking at that neighbour so also collect that statistic. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--include/sound/soc-dapm.h1
-rw-r--r--include/trace/events/asoc.h7
-rw-r--r--sound/soc/soc-dapm.c4
3 files changed, 10 insertions, 2 deletions
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index 0e2d01713cb6..bb5953219d0b 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -540,6 +540,7 @@ struct snd_soc_dapm_widget_list {
struct snd_soc_dapm_stats {
int power_checks;
int path_checks;
+ int neighbour_checks;
};
#endif
diff --git a/include/trace/events/asoc.h b/include/trace/events/asoc.h
index 2e1adf62e0a8..ab26f8aa3c78 100644
--- a/include/trace/events/asoc.h
+++ b/include/trace/events/asoc.h
@@ -226,16 +226,19 @@ TRACE_EVENT(snd_soc_dapm_walk_done,
__string( name, card->name )
__field( int, power_checks )
__field( int, path_checks )
+ __field( int, neighbour_checks )
),
TP_fast_assign(
__assign_str(name, card->name);
__entry->power_checks = card->dapm_stats.power_checks;
__entry->path_checks = card->dapm_stats.path_checks;
+ __entry->neighbour_checks = card->dapm_stats.neighbour_checks;
),
- TP_printk("%s: %d power checks, %d path checks", __get_str(name),
- (int)__entry->power_checks, (int)__entry->path_checks)
+ TP_printk("%s: checks %d power, %d path, %d neighbour",
+ __get_str(name), (int)__entry->power_checks,
+ (int)__entry->path_checks, (int)__entry->neighbour_checks)
);
TRACE_EVENT(snd_soc_jack_irq,
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 84d1d799a0df..6cac04595ccd 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -677,6 +677,8 @@ static int is_connected_output_ep(struct snd_soc_dapm_widget *widget)
}
list_for_each_entry(path, &widget->sinks, list_source) {
+ DAPM_UPDATE_STAT(widget, neighbour_checks);
+
if (path->weak)
continue;
@@ -732,6 +734,8 @@ static int is_connected_input_ep(struct snd_soc_dapm_widget *widget)
}
list_for_each_entry(path, &widget->sources, list_sink) {
+ DAPM_UPDATE_STAT(widget, neighbour_checks);
+
if (path->weak)
continue;