ALSA: hda/realtek: Fix mic mute LED for the HP Spectre x360 14
authorJohnathon Clark <john.clark@cantab.net>
Wed, 20 Oct 2021 13:12:51 +0000 (14:12 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 21 Oct 2021 05:06:49 +0000 (07:06 +0200)
On the 'HP Spectre x360 Convertible 14-ea0xx' the microphone mute led is
controlled by GPIO 0x04. The speaker mute LED does not seem to be
exposed by GPIO and is there not set.

[ a slight coding-style fix by tiwai ]

Fixes: c3bb2b521944 ("ALSA: hda/realtek: Quirk for HP Spectre x360 14 amp setup")
Signed-off-by: Johnathon Clark <john.clark@cantab.net>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20211020131253.35894-1-john.clark@cantab.net
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_realtek.c

index 965b096..e82d756 100644 (file)
@@ -4355,6 +4355,16 @@ static void alc287_fixup_hp_gpio_led(struct hda_codec *codec,
        alc_fixup_hp_gpio_led(codec, action, 0x10, 0);
 }
 
+static void alc245_fixup_hp_gpio_led(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->micmute_led_polarity = 1;
+       alc_fixup_hp_gpio_led(codec, action, 0, 0x04);
+}
+
 /* turn on/off mic-mute LED per capture hook via VREF change */
 static int vref_micmute_led_set(struct led_classdev *led_cdev,
                                enum led_brightness brightness)
@@ -6709,6 +6719,7 @@ enum {
        ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK,
        ALC287_FIXUP_HP_GPIO_LED,
        ALC256_FIXUP_HP_HEADSET_MIC,
+       ALC245_FIXUP_HP_GPIO_LED,
        ALC236_FIXUP_DELL_AIO_HEADSET_MIC,
        ALC282_FIXUP_ACER_DISABLE_LINEOUT,
        ALC255_FIXUP_ACER_LIMIT_INT_MIC_BOOST,
@@ -7333,6 +7344,8 @@ static const struct hda_fixup alc269_fixups[] = {
        [ALC245_FIXUP_HP_X360_AMP] = {
                .type = HDA_FIXUP_FUNC,
                .v.func = alc245_fixup_hp_x360_amp,
+               .chained = true,
+               .chain_id = ALC245_FIXUP_HP_GPIO_LED
        },
        [ALC288_FIXUP_DELL_HEADSET_MODE] = {
                .type = HDA_FIXUP_FUNC,
@@ -8432,6 +8445,10 @@ static const struct hda_fixup alc269_fixups[] = {
                .type = HDA_FIXUP_FUNC,
                .v.func = alc256_fixup_tongfang_reset_persistent_settings,
        },
+       [ALC245_FIXUP_HP_GPIO_LED] = {
+               .type = HDA_FIXUP_FUNC,
+               .v.func = alc245_fixup_hp_gpio_led,
+       },
 };
 
 static const struct snd_pci_quirk alc269_fixup_tbl[] = {