[ALSA] ASoC DAPM switching for reentrant codec paths
authorSeth Forshee <seth.forshee@gmail.com>
Mon, 16 Apr 2007 13:36:42 +0000 (15:36 +0200)
committerJaroslav Kysela <perex@suse.cz>
Fri, 11 May 2007 14:56:00 +0000 (16:56 +0200)
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>
sound/soc/soc-dapm.c

index 7caf8c7..96bce55 100644 (file)
@@ -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;
        }