
From: wangdicheng wangdicheng@kylinos.cn
Pop noise originates from unstable mic_vref during power_save transitions. Remediation: Disable VREF at resume, delay 1000ms before re-enabling to guarantee circuit stabilization pre-capture.
Signed-off-by: wangdicheng wangdicheng@kylinos.cn --- sound/pci/hda/patch_realtek.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 88675eae9447..665e291dea75 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -997,16 +997,21 @@ static int alc_suspend(struct hda_codec *codec) static int alc_resume(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; + int vref_delay = 0;
if (!spec->no_depop_delay) msleep(150); /* to avoid pop noise */ codec->patch_ops.init(codec);
- if (codec->core.subsystem_id == 0x10ec1304) { + if (codec->core.subsystem_id == 0x10ec1304) + vref_delay = 2000; + else if (codec->core.subsystem_id == 0x1b505809) + vref_delay = 1000; + if (vref_delay > 0) { snd_hda_codec_write(codec, 0x19, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x04); msleep(50); snd_hda_codec_write(codec, 0x19, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x44); - msleep(2000); + msleep(vref_delay); snd_hda_codec_write(codec, 0x19, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80); } snd_hda_regmap_sync(codec);