diff --git a/sound/soc/codecs/rk817_codec.c b/sound/soc/codecs/rk817_codec.c index ea3dd2d7d448..7e13ea3e7586 100644 --- a/sound/soc/codecs/rk817_codec.c +++ b/sound/soc/codecs/rk817_codec.c @@ -355,6 +355,13 @@ static int rk817_codec_power_up(struct snd_soc_component *component, int type) playback_power_up_list[i].reg, playback_power_up_list[i].value); } + + snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, + DAC_DIG_CLK_MASK, DAC_DIG_CLK_DIS); + usleep_range(2000, 2500); + snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, + DAC_DIG_CLK_MASK, DAC_DIG_CLK_EN); + DBG("%s: %d - Playback DIG CLK OPS\n", __func__, __LINE__); } if (type & RK817_CODEC_CAPTURE) { @@ -368,6 +375,13 @@ static int rk817_codec_power_up(struct snd_soc_component *component, int type) capture_power_up_list[i].value); } + snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, + ADC_DIG_CLK_MASK, DAC_DIG_CLK_DIS); + usleep_range(2000, 2500); + snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, + ADC_DIG_CLK_MASK, ADC_DIG_CLK_EN); + DBG("%s: %d - Capture DIG CLK OPS\n", __func__, __LINE__); + if (rk817->mic_in_differential) snd_soc_component_update_bits(component, RK817_CODEC_AMIC_CFG0,