]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
ALSA: hda/realtek: Add mute LED quirk for HP Pavilion x360 14-dy1xxx
authorNavon John Lukose <navonjohnlukose@gmail.com>
Fri, 7 Mar 2025 21:33:19 +0000 (03:03 +0530)
committerTakashi Iwai <tiwai@suse.de>
Wed, 12 Mar 2025 14:58:19 +0000 (15:58 +0100)
Add a fixup to enable the mute LED on HP Pavilion x360 Convertible
14-dy1xxx with ALC295 codec. The appropriate coefficient index and bits
were identified through a brute-force method, as detailed in
https://bbs.archlinux.org/viewtopic.php?pid=2079504#p2079504.

Signed-off-by: Navon John Lukose <navonjohnlukose@gmail.com>
Link: https://patch.msgid.link/20250307213319.35507-1-navonjohnlukose@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_realtek.c

index d2a1f836dbbf714c26be682133b44cc0bd173ad9..a84857a3c2bfbe7f724cc960f877e9bfcf8ed613 100644 (file)
@@ -4790,6 +4790,21 @@ static void alc236_fixup_hp_coef_micmute_led(struct hda_codec *codec,
        }
 }
 
+static void alc295_fixup_hp_mute_led_coefbit11(struct hda_codec *codec,
+                               const struct hda_fixup *fix, int action)
+{
+       struct alc_spec *spec = codec->spec;
+
+       if (action == HDA_FIXUP_ACT_PRE_PROBE) {
+               spec->mute_led_polarity = 0;
+               spec->mute_led_coef.idx = 0xb;
+               spec->mute_led_coef.mask = 3 << 3;
+               spec->mute_led_coef.on = 1 << 3;
+               spec->mute_led_coef.off = 1 << 4;
+               snd_hda_gen_add_mute_led_cdev(codec, coef_mute_led_set);
+       }
+}
+
 static void alc285_fixup_hp_mute_led(struct hda_codec *codec,
                                const struct hda_fixup *fix, int action)
 {
@@ -7656,6 +7671,7 @@ enum {
        ALC290_FIXUP_MONO_SPEAKERS_HSJACK,
        ALC290_FIXUP_SUBWOOFER,
        ALC290_FIXUP_SUBWOOFER_HSJACK,
+       ALC295_FIXUP_HP_MUTE_LED_COEFBIT11,
        ALC269_FIXUP_THINKPAD_ACPI,
        ALC269_FIXUP_LENOVO_XPAD_ACPI,
        ALC269_FIXUP_DMIC_THINKPAD_ACPI,
@@ -9401,6 +9417,10 @@ static const struct hda_fixup alc269_fixups[] = {
                .chained = true,
                .chain_id = ALC283_FIXUP_INT_MIC,
        },
+       [ALC295_FIXUP_HP_MUTE_LED_COEFBIT11] = {
+               .type = HDA_FIXUP_FUNC,
+               .v.func = alc295_fixup_hp_mute_led_coefbit11,
+       },
        [ALC298_FIXUP_SAMSUNG_AMP] = {
                .type = HDA_FIXUP_FUNC,
                .v.func = alc298_fixup_samsung_amp,
@@ -10451,6 +10471,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
        SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3),
        SND_PCI_QUIRK(0x103c, 0x8519, "HP Spectre x360 15-df0xxx", ALC285_FIXUP_HP_SPECTRE_X360),
        SND_PCI_QUIRK(0x103c, 0x8537, "HP ProBook 440 G6", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
+       SND_PCI_QUIRK(0x103c, 0x85c6, "HP Pavilion x360 Convertible 14-dy1xxx", ALC295_FIXUP_HP_MUTE_LED_COEFBIT11),
        SND_PCI_QUIRK(0x103c, 0x85de, "HP Envy x360 13-ar0xxx", ALC285_FIXUP_HP_ENVY_X360),
        SND_PCI_QUIRK(0x103c, 0x860f, "HP ZBook 15 G6", ALC285_FIXUP_HP_GPIO_AMP_INIT),
        SND_PCI_QUIRK(0x103c, 0x861f, "HP Elite Dragonfly G1", ALC285_FIXUP_HP_GPIO_AMP_INIT),