From: Seth Forshee <seth.forshee@gmail.com>
Date: Mon, 16 Apr 2007 13:36:42 +0000 (+0200)
Subject: [ALSA] ASoC DAPM switching for reentrant codec paths
X-Git-Tag: firefly_0821_release~29172^2~49
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1e39221eba72e4af37b40e71749b0c18bb16b9a6;p=firefly-linux-kernel-4.4.55.git

[ALSA] ASoC DAPM switching for reentrant codec paths

This patch fixes an issue whereby power was applied to any inactive
analog path that would leave and reenter a codec (e.g. ACOP -> ACIN on
WM8753).  This change now checks for such paths and DAPM will power them
down when not in use.

Signed-off-by: Seth Forshee <seth.forshee@gmail.com>
Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
---

diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 7caf8c7b0ac5..96bce55572a0 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -882,13 +882,15 @@ int snd_soc_dapm_connect_input(struct snd_soc_codec *codec, const char *sink,
 	if (wsink->id == snd_soc_dapm_input) {
 		if (wsource->id == snd_soc_dapm_micbias ||
 			wsource->id == snd_soc_dapm_mic ||
-			wsink->id == snd_soc_dapm_line)
+			wsink->id == snd_soc_dapm_line ||
+			wsink->id == snd_soc_dapm_output)
 			wsink->ext = 1;
 	}
 	if (wsource->id == snd_soc_dapm_output) {
 		if (wsink->id == snd_soc_dapm_spk ||
 			wsink->id == snd_soc_dapm_hp ||
-			wsink->id == snd_soc_dapm_line)
+			wsink->id == snd_soc_dapm_line ||
+			wsink->id == snd_soc_dapm_input)
 			wsource->ext = 1;
 	}