aboutsummaryrefslogtreecommitdiffstats
path: root/include/sound
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-10-04 22:15:59 +0100
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-10-05 11:22:22 +0100
commit9b8a83b205bd07b06784028effd94515fe9278c3 (patch)
tree82e015462cf5e36769c2da61d3bf49f6d2873e63 /include/sound
parentASoC: Add verbose debugging showing why widgets get marked dirty (diff)
downloadlinux-dev-9b8a83b205bd07b06784028effd94515fe9278c3.tar.xz
linux-dev-9b8a83b205bd07b06784028effd94515fe9278c3.zip
ASoC: Only run power_check() on a widget once per run
Some widgets will get power_check() run on them more than once during a DAPM run, most commonly due to supply widgets checking to see if their consumers are powered up. It's wasteful to do this so cache the result of power_check() during a run. For one system I tested this on I got an improvement of: Power Path Neighbour Before: 106 970 1186 After: 69 727 905 from this. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'include/sound')
-rw-r--r--include/sound/soc-dapm.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index c080635b3c35..e2853daf802c 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -473,6 +473,8 @@ struct snd_soc_dapm_widget {
unsigned char ext:1; /* has external widgets */
unsigned char force:1; /* force state */
unsigned char ignore_suspend:1; /* kept enabled over suspend */
+ unsigned char new_power:1; /* power from this run */
+ unsigned char power_checked:1; /* power checked this run */
int subseq; /* sort within widget type */
int (*power_check)(struct snd_soc_dapm_widget *w);