Commit 6ed8f148 authored by Mark Brown's avatar Mark Brown

ASoC: Improve WM8994 digital power sequencing

On WM8994 revision D and earlier ensure optimal sequencing with
simultaneous usage of AIF1 and AIF2 by tying the signals together
so if paths through both are connected the streams are started
simultaneously.
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Cc: stable@kernel.org
parent 7f94de48
...@@ -1584,6 +1584,13 @@ static const struct snd_soc_dapm_route intercon[] = { ...@@ -1584,6 +1584,13 @@ static const struct snd_soc_dapm_route intercon[] = {
{ "Right Headphone Mux", "DAC", "DAC1R" }, { "Right Headphone Mux", "DAC", "DAC1R" },
}; };
static const struct snd_soc_dapm_route wm8994_revd_intercon[] = {
{ "AIF1DACDAT", NULL, "AIF2DACDAT" },
{ "AIF2DACDAT", NULL, "AIF1DACDAT" },
{ "AIF1ADCDAT", NULL, "AIF2ADCDAT" },
{ "AIF2ADCDAT", NULL, "AIF1ADCDAT" },
};
static const struct snd_soc_dapm_route wm8994_intercon[] = { static const struct snd_soc_dapm_route wm8994_intercon[] = {
{ "AIF2DACL", NULL, "AIF2DAC Mux" }, { "AIF2DACL", NULL, "AIF2DAC Mux" },
{ "AIF2DACR", NULL, "AIF2DAC Mux" }, { "AIF2DACR", NULL, "AIF2DAC Mux" },
...@@ -3135,6 +3142,11 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) ...@@ -3135,6 +3142,11 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
case WM8994: case WM8994:
snd_soc_dapm_add_routes(dapm, wm8994_intercon, snd_soc_dapm_add_routes(dapm, wm8994_intercon,
ARRAY_SIZE(wm8994_intercon)); ARRAY_SIZE(wm8994_intercon));
if (wm8994->revision < 4)
snd_soc_dapm_add_routes(dapm, wm8994_revd_intercon,
ARRAY_SIZE(wm8994_revd_intercon));
break; break;
case WM8958: case WM8958:
snd_soc_dapm_add_routes(dapm, wm8958_intercon, snd_soc_dapm_add_routes(dapm, wm8958_intercon,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment