aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSeth Forshee <seth.forshee@gmail.com>2007-04-16 09:36:42 -0400
committerJaroslav Kysela <perex@suse.cz>2007-05-11 10:56:00 -0400
commit1e39221eba72e4af37b40e71749b0c18bb16b9a6 (patch)
treed304dcd1f69e9311a327edd21b3f22abdd2b2ddc
parent30652c4506c8bbfdf869ddc4c238e07de038f02a (diff)
[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>
-rw-r--r--sound/soc/soc-dapm.c6
1 files changed, 4 insertions, 2 deletions
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,
882 if (wsink->id == snd_soc_dapm_input) { 882 if (wsink->id == snd_soc_dapm_input) {
883 if (wsource->id == snd_soc_dapm_micbias || 883 if (wsource->id == snd_soc_dapm_micbias ||
884 wsource->id == snd_soc_dapm_mic || 884 wsource->id == snd_soc_dapm_mic ||
885 wsink->id == snd_soc_dapm_line) 885 wsink->id == snd_soc_dapm_line ||
886 wsink->id == snd_soc_dapm_output)
886 wsink->ext = 1; 887 wsink->ext = 1;
887 } 888 }
888 if (wsource->id == snd_soc_dapm_output) { 889 if (wsource->id == snd_soc_dapm_output) {
889 if (wsink->id == snd_soc_dapm_spk || 890 if (wsink->id == snd_soc_dapm_spk ||
890 wsink->id == snd_soc_dapm_hp || 891 wsink->id == snd_soc_dapm_hp ||
891 wsink->id == snd_soc_dapm_line) 892 wsink->id == snd_soc_dapm_line ||
893 wsink->id == snd_soc_dapm_input)
892 wsource->ext = 1; 894 wsource->ext = 1;
893 } 895 }
894 896