| From ecb2795c08bc825ebd604997e5be440b060c5b18 Mon Sep 17 00:00:00 2001 |
| From: Jon Hunter <jonathanh@nvidia.com> |
| Date: Wed, 1 May 2019 15:29:38 +0100 |
| Subject: ASoC: max98090: Fix restore of DAPM Muxes |
| |
| From: Jon Hunter <jonathanh@nvidia.com> |
| |
| commit ecb2795c08bc825ebd604997e5be440b060c5b18 upstream. |
| |
| The max98090 driver defines 3 DAPM muxes; one for the right line output |
| (LINMOD Mux), one for the left headphone mixer source (MIXHPLSEL Mux) |
| and one for the right headphone mixer source (MIXHPRSEL Mux). The same |
| bit is used for the mux as well as the DAPM enable, and although the mux |
| can be correctly configured, after playback has completed, the mux will |
| be reset during the disable phase. This is preventing the state of these |
| muxes from being saved and restored correctly on system reboot. Fix this |
| by marking these muxes as SND_SOC_NOPM. |
| |
| Note this has been verified this on the Tegra124 Nyan Big which features |
| the MAX98090 codec. |
| |
| Signed-off-by: Jon Hunter <jonathanh@nvidia.com> |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/soc/codecs/max98090.c | 12 ++++++------ |
| 1 file changed, 6 insertions(+), 6 deletions(-) |
| |
| --- a/sound/soc/codecs/max98090.c |
| +++ b/sound/soc/codecs/max98090.c |
| @@ -1209,14 +1209,14 @@ static const struct snd_soc_dapm_widget |
| &max98090_right_rcv_mixer_controls[0], |
| ARRAY_SIZE(max98090_right_rcv_mixer_controls)), |
| |
| - SND_SOC_DAPM_MUX("LINMOD Mux", M98090_REG_LOUTR_MIXER, |
| - M98090_LINMOD_SHIFT, 0, &max98090_linmod_mux), |
| + SND_SOC_DAPM_MUX("LINMOD Mux", SND_SOC_NOPM, 0, 0, |
| + &max98090_linmod_mux), |
| |
| - SND_SOC_DAPM_MUX("MIXHPLSEL Mux", M98090_REG_HP_CONTROL, |
| - M98090_MIXHPLSEL_SHIFT, 0, &max98090_mixhplsel_mux), |
| + SND_SOC_DAPM_MUX("MIXHPLSEL Mux", SND_SOC_NOPM, 0, 0, |
| + &max98090_mixhplsel_mux), |
| |
| - SND_SOC_DAPM_MUX("MIXHPRSEL Mux", M98090_REG_HP_CONTROL, |
| - M98090_MIXHPRSEL_SHIFT, 0, &max98090_mixhprsel_mux), |
| + SND_SOC_DAPM_MUX("MIXHPRSEL Mux", SND_SOC_NOPM, 0, 0, |
| + &max98090_mixhprsel_mux), |
| |
| SND_SOC_DAPM_PGA("HP Left Out", M98090_REG_OUTPUT_ENABLE, |
| M98090_HPLEN_SHIFT, 0, NULL, 0), |