[PATCH 2/2] ALSA: hda/realtek: Fix ALC662 codec pop noise on recording
wangdich9700 at 163.com
wangdich9700 at 163.com
Sun Aug 3 20:05:18 PDT 2025
From: wangdicheng <wangdicheng at 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 at 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);
--
2.25.1
More information about the linux-arm-kernel
mailing list