diff options
author | Derek Fang <derek.fang@realtek.com> | 2021-10-01 10:41:12 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2021-10-01 21:35:03 +0300 |
commit | 04a8374c321db55834d5a9f3a9ceecb04b3cfbf5 (patch) | |
tree | 56b3de1be19b5fadf50ab42ebca59e4388bc5354 /sound/soc/codecs/rt5682s.c | |
parent | bd8bec1408ab2336939bd69d93897bf19d0325ed (diff) | |
download | linux-04a8374c321db55834d5a9f3a9ceecb04b3cfbf5.tar.xz |
ASoC: rt5682s: Enable ASRC auto-disable to fix pop during jack plug-in while playback
When codec's ASRC was enabled, the DA and AD filters use
the reference clk which tracks the I2S clks.
And if the I2S clks' timing of open and close are not expected,
this patch allows the filters to switch to use sysclk if
ASRC's ref clks disappeared and could fix the below possible issues:
1. Avoid DA filter to keep surplus samples.
2. Avoid that AD filter works failed during dapm's power on.
For example,
if I2S clks were closed before dacdat during playback off
due to jack unplug, it causes ref clks disappeared and
DA filter remained some samples which will produce pop noise
on the next HP playback.
ASRC auto-disable could clear the samples during the playback off.
Signed-off-by: Derek Fang <derek.fang@realtek.com>
Link: https://lore.kernel.org/r/20211001074113.2223-1-derek.fang@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs/rt5682s.c')
-rw-r--r-- | sound/soc/codecs/rt5682s.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/soc/codecs/rt5682s.c b/sound/soc/codecs/rt5682s.c index 122adeb7beb1..5ae54a51ff9e 100644 --- a/sound/soc/codecs/rt5682s.c +++ b/sound/soc/codecs/rt5682s.c @@ -1061,6 +1061,9 @@ int rt5682s_sel_asrc_clk_src(struct snd_soc_component *component, RT5682S_FILTER_CLK_SEL_MASK, clk_src << RT5682S_FILTER_CLK_SEL_SFT); } + snd_soc_component_update_bits(component, RT5682S_PLL_TRACK_11, + RT5682S_ASRCIN_AUTO_CLKOUT_MASK, RT5682S_ASRCIN_AUTO_CLKOUT_EN); + return 0; } EXPORT_SYMBOL_GPL(rt5682s_sel_asrc_clk_src); |