87 lines
3.2 KiB
Diff
87 lines
3.2 KiB
Diff
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
|
|
|