diff options
Diffstat (limited to 'SOURCES/0001-ALSA-hda-via-Fix-runtime-PM-for-Clevo-W35xSS.patch')
-rw-r--r-- | SOURCES/0001-ALSA-hda-via-Fix-runtime-PM-for-Clevo-W35xSS.patch | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/SOURCES/0001-ALSA-hda-via-Fix-runtime-PM-for-Clevo-W35xSS.patch b/SOURCES/0001-ALSA-hda-via-Fix-runtime-PM-for-Clevo-W35xSS.patch new file mode 100644 index 0000000..fb9b5f5 --- /dev/null +++ b/SOURCES/0001-ALSA-hda-via-Fix-runtime-PM-for-Clevo-W35xSS.patch @@ -0,0 +1,86 @@ +From 4bfd6247fa9164c8e193a55ef9c0ea3ee22f82d8 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai <tiwai@suse.de> +Date: Mon, 4 Jan 2021 16:30:46 +0100 +Subject: [PATCH] ALSA: hda/via: Fix runtime PM for Clevo W35xSS + +Clevo W35xSS_370SS with VIA codec has had the runtime PM problem that +looses the power state of some nodes after the runtime resume. This +was worked around by disabling the default runtime PM via a denylist +entry. Since 5.10.x made the runtime PM applied (casually) even +though it's disabled in the denylist, this problem was revisited. The +result was that disabling power_save_node feature suffices for the +runtime PM problem. + +This patch implements the disablement of power_save_node feature in +VIA codec for the device. It also drops the former denylist entry, +too, as the runtime PM should work in the codec side properly now. + +Fixes: b529ef2464ad ("ALSA: hda: Add Clevo W35xSS_370SS to the power_save blacklist") +Reported-by: Christian Labisch <clnetbox@gmail.com> +Cc: <stable@vger.kernel.org> +Link: https://lore.kernel.org/r/20210104153046.19993-1-tiwai@suse.de +Signed-off-by: Takashi Iwai <tiwai@suse.de> +--- + sound/pci/hda/hda_intel.c | 2 -- + sound/pci/hda/patch_via.c | 13 +++++++++++++ + 2 files changed, 13 insertions(+), 2 deletions(-) + +diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c +index 6852668f1bcb..770ad25f1907 100644 +--- a/sound/pci/hda/hda_intel.c ++++ b/sound/pci/hda/hda_intel.c +@@ -2220,8 +2220,6 @@ static const struct snd_pci_quirk power_save_denylist[] = { + SND_PCI_QUIRK(0x1849, 0x7662, "Asrock H81M-HDS", 0), + /* https://bugzilla.redhat.com/show_bug.cgi?id=1525104 */ + SND_PCI_QUIRK(0x1043, 0x8733, "Asus Prime X370-Pro", 0), +- /* https://bugzilla.redhat.com/show_bug.cgi?id=1581607 */ +- SND_PCI_QUIRK(0x1558, 0x3501, "Clevo W35xSS_370SS", 0), + /* https://bugzilla.redhat.com/show_bug.cgi?id=1525104 */ + SND_PCI_QUIRK(0x1558, 0x6504, "Clevo W65_67SB", 0), + /* https://bugzilla.redhat.com/show_bug.cgi?id=1525104 */ +diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c +index 7ef8f3105cdb..0ab40a8a68fb 100644 +--- a/sound/pci/hda/patch_via.c ++++ b/sound/pci/hda/patch_via.c +@@ -1002,6 +1002,7 @@ static const struct hda_verb vt1802_init_verbs[] = { + enum { + VIA_FIXUP_INTMIC_BOOST, + VIA_FIXUP_ASUS_G75, ++ VIA_FIXUP_POWER_SAVE, + }; + + static void via_fixup_intmic_boost(struct hda_codec *codec, +@@ -1011,6 +1012,13 @@ static void via_fixup_intmic_boost(struct hda_codec *codec, + override_mic_boost(codec, 0x30, 0, 2, 40); + } + ++static void via_fixup_power_save(struct hda_codec *codec, ++ const struct hda_fixup *fix, int action) ++{ ++ if (action == HDA_FIXUP_ACT_PRE_PROBE) ++ codec->power_save_node = 0; ++} ++ + static const struct hda_fixup via_fixups[] = { + [VIA_FIXUP_INTMIC_BOOST] = { + .type = HDA_FIXUP_FUNC, +@@ -1025,11 +1033,16 @@ static const struct hda_fixup via_fixups[] = { + { } + } + }, ++ [VIA_FIXUP_POWER_SAVE] = { ++ .type = HDA_FIXUP_FUNC, ++ .v.func = via_fixup_power_save, ++ }, + }; + + static const struct snd_pci_quirk vt2002p_fixups[] = { + SND_PCI_QUIRK(0x1043, 0x1487, "Asus G75", VIA_FIXUP_ASUS_G75), + SND_PCI_QUIRK(0x1043, 0x8532, "Asus X202E", VIA_FIXUP_INTMIC_BOOST), ++ SND_PCI_QUIRK(0x1558, 0x3501, "Clevo W35xSS_370SS", VIA_FIXUP_POWER_SAVE), + {} + }; + +-- +2.29.2 + |