From: Charles Keepax Date: Wed, 2 Dec 2015 10:22:16 +0000 (+0000) Subject: ASoC: dapm: Make enable/disable_pin work with always on widgets X-Git-Tag: v4.5-rc1~80^2~26^2~1^2~15^2 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=20bb0184f24df64d1ed4fa07c8feeeffda9b7721;p=karo-tx-linux.git ASoC: dapm: Make enable/disable_pin work with always on widgets Always on widgets currently have some odd interactions with DAPM. Enabling/disabling a widget (snd_soc_dapm_enable_pin) then connecting it to a path works as expected, ie. when the widget is disabled the path doesn't power up and it does when the widget is enabled. However once in a path enabling the widget does not cause anything to power up, dapm_widget_set_power will return the current power state of the widget as 1, meaning we never check peer power states. This patch updates dapm_always_on_check_power to return w->connected such that it is effected by snd_soc_dapm_enable_pin and the like. Signed-off-by: Charles Keepax Signed-off-by: Mark Brown --- diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 6760044f6aae..4ecacdcba484 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -1300,7 +1300,7 @@ static int dapm_supply_check_power(struct snd_soc_dapm_widget *w) static int dapm_always_on_check_power(struct snd_soc_dapm_widget *w) { - return 1; + return w->connected; } static int dapm_seq_compare(struct snd_soc_dapm_widget *a,