ASoC: dapm: don't skip evaluate the power of widget with force set
diff mbox

Message ID 1397378240-20821-1-git-send-email-xiaoxiang@xiaomi.com
State New, archived
Headers show

Commit Message

Xiang Xiao April 13, 2014, 8:37 a.m. UTC
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
---
 sound/soc/soc-dapm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Mark Brown April 14, 2014, 8:36 p.m. UTC | #1
On Sun, Apr 13, 2014 at 04:37:20PM +0800, Xiang Xiao wrote:
> Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>

You should explain why you want to do this in the changelog - what's the
problem that's being fixed or benefit?

> -	if (power != peer->power)
> +	if (peer->force || power != peer->power)
>  		dapm_mark_dirty(peer, "peer state change");

This doesn't correspond to your changelog - it *will* skip evaluating
the widget power if the widget is forced.  It's not clear why this would
be a benefit.

> -	if (w->power == power)
> +	if (!w->force && w->power == power)
>  		return;

Similarly here.

Patch
diff mbox

diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index c8a780d..14af77e 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -1673,7 +1673,7 @@  static void dapm_widget_set_peer_power(struct snd_soc_dapm_widget *peer,
 
 	/* If the peer is already in the state we're moving to then we
 	 * won't have an impact on it. */
-	if (power != peer->power)
+	if (peer->force || power != peer->power)
 		dapm_mark_dirty(peer, "peer state change");
 }
 
@@ -1683,7 +1683,7 @@  static void dapm_widget_set_power(struct snd_soc_dapm_widget *w, bool power,
 {
 	struct snd_soc_dapm_path *path;
 
-	if (w->power == power)
+	if (!w->force && w->power == power)
 		return;
 
 	trace_snd_soc_dapm_widget_power(w, power);