diff --git a/sound/soc/codecs/rk817_codec.c b/sound/soc/codecs/rk817_codec.c index 4ed82d328704..645a4538cef5 100644 --- a/sound/soc/codecs/rk817_codec.c +++ b/sound/soc/codecs/rk817_codec.c @@ -941,26 +941,27 @@ static int rk817_digital_mute(struct snd_soc_dai *dai, int mute, int stream) struct rk817_codec_priv *rk817 = snd_soc_component_get_drvdata(component); DBG("%s %d\n", __func__, mute); + if (mute) { + rk817_codec_ctl_gpio(rk817, CODEC_SET_SPK, 0); + rk817_codec_ctl_gpio(rk817, CODEC_SET_HP, 0); + snd_soc_component_update_bits(component, RK817_CODEC_DDAC_MUTE_MIXCTL, DACMT_ENABLE, DACMT_ENABLE); + snd_soc_component_write(component, RK817_CODEC_ADAC_CFG1, + PWD_DACBIAS_DOWN | PWD_DACD_DOWN | + PWD_DACL_DOWN | PWD_DACR_DOWN); /* Reset DAC DTOP_DIGEN_CLKE for playback stopped */ snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, DAC_DIG_CLK_EN, DAC_DIG_CLK_DIS); snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, DAC_DIG_CLK_EN, DAC_DIG_CLK_EN); - } else { snd_soc_component_update_bits(component, RK817_CODEC_DDAC_MUTE_MIXCTL, DACMT_ENABLE, DACMT_DISABLE); - } - if (mute) { - rk817_codec_ctl_gpio(rk817, CODEC_SET_SPK, 0); - rk817_codec_ctl_gpio(rk817, CODEC_SET_HP, 0); - } else { switch (rk817->playback_path) { case SPK_PATH: case RING_SPK: