| From f7b50a8019dcc33201f5a7c146dfc0d321dfadcb Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 3 May 2020 23:24:47 +0800 |
| Subject: ALSA: hda/realtek - Fix S3 pop noise on Dell Wyse |
| |
| From: Kai-Heng Feng <kai.heng.feng@canonical.com> |
| |
| [ Upstream commit 52e4e36807aeac1cdd07b14e509c8a64101e1a09 ] |
| |
| Commit 317d9313925c ("ALSA: hda/realtek - Set default power save node to |
| 0") makes the ALC225 have pop noise on S3 resume and cold boot. |
| |
| The previous fix enable power save node universally for ALC225, however |
| it makes some ALC225 systems unable to produce any sound. |
| |
| So let's only enable power save node for the affected Dell Wyse |
| platform. |
| |
| Fixes: 317d9313925c ("ALSA: hda/realtek - Set default power save node to 0") |
| BugLink: https://bugs.launchpad.net/bugs/1866357 |
| Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> |
| Link: https://lore.kernel.org/r/20200503152449.22761-2-kai.heng.feng@canonical.com |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/pci/hda/patch_realtek.c | 16 ++++++++++++++++ |
| 1 file changed, 16 insertions(+) |
| |
| diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c |
| index da4863d7f7f24..611498270c5e6 100644 |
| --- a/sound/pci/hda/patch_realtek.c |
| +++ b/sound/pci/hda/patch_realtek.c |
| @@ -5743,6 +5743,15 @@ static void alc233_alc662_fixup_lenovo_dual_codecs(struct hda_codec *codec, |
| } |
| } |
| |
| +static void alc225_fixup_s3_pop_noise(struct hda_codec *codec, |
| + const struct hda_fixup *fix, int action) |
| +{ |
| + if (action != HDA_FIXUP_ACT_PRE_PROBE) |
| + return; |
| + |
| + codec->power_save_node = 1; |
| +} |
| + |
| /* Forcibly assign NID 0x03 to HP/LO while NID 0x02 to SPK for EQ */ |
| static void alc274_fixup_bind_dacs(struct hda_codec *codec, |
| const struct hda_fixup *fix, int action) |
| @@ -5932,6 +5941,7 @@ enum { |
| ALC233_FIXUP_ACER_HEADSET_MIC, |
| ALC294_FIXUP_LENOVO_MIC_LOCATION, |
| ALC225_FIXUP_DELL_WYSE_MIC_NO_PRESENCE, |
| + ALC225_FIXUP_S3_POP_NOISE, |
| ALC700_FIXUP_INTEL_REFERENCE, |
| ALC274_FIXUP_DELL_BIND_DACS, |
| ALC274_FIXUP_DELL_AIO_LINEOUT_VERB, |
| @@ -6817,6 +6827,12 @@ static const struct hda_fixup alc269_fixups[] = { |
| { } |
| }, |
| .chained = true, |
| + .chain_id = ALC225_FIXUP_S3_POP_NOISE |
| + }, |
| + [ALC225_FIXUP_S3_POP_NOISE] = { |
| + .type = HDA_FIXUP_FUNC, |
| + .v.func = alc225_fixup_s3_pop_noise, |
| + .chained = true, |
| .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC |
| }, |
| [ALC700_FIXUP_INTEL_REFERENCE] = { |
| -- |
| 2.20.1 |
| |