Loading sound/soc/codecs/wm8958-dsp2.c +14 −21 Original line number Diff line number Diff line Loading @@ -69,6 +69,13 @@ static void wm8958_mbc_apply(struct snd_soc_codec *codec, int mbc, int start) if (reg & WM8958_DSP2_ENA) return; /* If neither AIFnCLK is not yet enabled postpone */ if (!(snd_soc_read(codec, WM8994_AIF1_CLOCKING_1) & WM8994_AIF1CLK_ENA_MASK) && !(snd_soc_read(codec, WM8994_AIF2_CLOCKING_1) & WM8994_AIF2CLK_ENA_MASK)) return; /* Switch the clock over to the appropriate AIF */ snd_soc_update_bits(codec, WM8994_CLOCKING_1, WM8958_DSP2CLK_SRC | WM8958_DSP2CLK_ENA, Loading Loading @@ -120,32 +127,18 @@ int wm8958_aif_ev(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = w->codec; int mbc; switch (w->shift) { case 13: case 12: mbc = 2; break; case 11: case 10: mbc = 1; break; case 9: case 8: mbc = 0; break; default: BUG(); return -EINVAL; } int i; switch (event) { case SND_SOC_DAPM_POST_PMU: wm8958_mbc_apply(codec, mbc, 1); case SND_SOC_DAPM_PRE_PMU: for (i = 0; i < 3; i++) wm8958_mbc_apply(codec, i, 1); break; case SND_SOC_DAPM_POST_PMD: wm8958_mbc_apply(codec, mbc, 0); case SND_SOC_DAPM_PRE_PMD: for (i = 0; i < 3; i++) wm8958_mbc_apply(codec, i, 0); break; } Loading sound/soc/codecs/wm8994.c +3 −0 Original line number Diff line number Diff line Loading @@ -759,6 +759,9 @@ static int late_enable_ev(struct snd_soc_dapm_widget *w, break; } /* We may also have postponed startup of DSP, handle that. */ wm8958_aif_ev(w, kcontrol, event); return 0; } Loading Loading
sound/soc/codecs/wm8958-dsp2.c +14 −21 Original line number Diff line number Diff line Loading @@ -69,6 +69,13 @@ static void wm8958_mbc_apply(struct snd_soc_codec *codec, int mbc, int start) if (reg & WM8958_DSP2_ENA) return; /* If neither AIFnCLK is not yet enabled postpone */ if (!(snd_soc_read(codec, WM8994_AIF1_CLOCKING_1) & WM8994_AIF1CLK_ENA_MASK) && !(snd_soc_read(codec, WM8994_AIF2_CLOCKING_1) & WM8994_AIF2CLK_ENA_MASK)) return; /* Switch the clock over to the appropriate AIF */ snd_soc_update_bits(codec, WM8994_CLOCKING_1, WM8958_DSP2CLK_SRC | WM8958_DSP2CLK_ENA, Loading Loading @@ -120,32 +127,18 @@ int wm8958_aif_ev(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = w->codec; int mbc; switch (w->shift) { case 13: case 12: mbc = 2; break; case 11: case 10: mbc = 1; break; case 9: case 8: mbc = 0; break; default: BUG(); return -EINVAL; } int i; switch (event) { case SND_SOC_DAPM_POST_PMU: wm8958_mbc_apply(codec, mbc, 1); case SND_SOC_DAPM_PRE_PMU: for (i = 0; i < 3; i++) wm8958_mbc_apply(codec, i, 1); break; case SND_SOC_DAPM_POST_PMD: wm8958_mbc_apply(codec, mbc, 0); case SND_SOC_DAPM_PRE_PMD: for (i = 0; i < 3; i++) wm8958_mbc_apply(codec, i, 0); break; } Loading
sound/soc/codecs/wm8994.c +3 −0 Original line number Diff line number Diff line Loading @@ -759,6 +759,9 @@ static int late_enable_ev(struct snd_soc_dapm_widget *w, break; } /* We may also have postponed startup of DSP, handle that. */ wm8958_aif_ev(w, kcontrol, event); return 0; } Loading