lkml.org 
[lkml]   [2020]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.6 057/126] ALSA: hda/realtek - Add HP new mute led supported for ALC236
    Date
    From: Kailang Yang <kailang@realtek.com>

    [ Upstream commit 24164f434dc9c23cd34fca1e36acea9d0581bdde ]

    HP new platform has new mute led feature.
    COEF index 0x34 bit 5 to control playback mute led.
    COEF index 0x35 bit 2 and bit 3 to control Mic mute led.

    [ corrected typos by tiwai ]

    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Link: https://lore.kernel.org/r/6741211598ba499687362ff2aa30626b@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/pci/hda/patch_realtek.c | 44 +++++++++++++++++++++++++++++++++++
    1 file changed, 44 insertions(+)

    diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
    index 44fbd5d2d89c..368ed3678fc2 100644
    --- a/sound/pci/hda/patch_realtek.c
    +++ b/sound/pci/hda/patch_realtek.c
    @@ -4223,6 +4223,23 @@ static void alc285_fixup_hp_mute_led_coefbit(struct hda_codec *codec,
    }
    }

    +static void alc236_fixup_hp_mute_led_coefbit(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 = 0x34;
    + spec->mute_led_coefbit_mask = 1<<5;
    + spec->mute_led_coefbit_on = 0;
    + spec->mute_led_coefbit_off = 1<<5;
    + spec->gen.vmaster_mute.hook = alc_fixup_mute_led_coefbit_hook;
    + spec->gen.vmaster_mute_enum = 1;
    + }
    +}
    +
    /* turn on/off mic-mute LED per capture hook by coef bit */
    static void alc_hp_cap_micmute_update(struct hda_codec *codec)
    {
    @@ -4250,6 +4267,20 @@ static void alc285_fixup_hp_coef_micmute_led(struct hda_codec *codec,
    }
    }

    +static void alc236_fixup_hp_coef_micmute_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->mic_led_coef_idx = 0x35;
    + spec->mic_led_coefbit_mask = 3<<2;
    + spec->mic_led_coefbit_on = 2<<2;
    + spec->mic_led_coefbit_off = 1<<2;
    + snd_hda_gen_add_micmute_led(codec, alc_hp_cap_micmute_update);
    + }
    +}
    +
    static void alc285_fixup_hp_mute_led(struct hda_codec *codec,
    const struct hda_fixup *fix, int action)
    {
    @@ -4257,6 +4288,13 @@ static void alc285_fixup_hp_mute_led(struct hda_codec *codec,
    alc285_fixup_hp_coef_micmute_led(codec, fix, action);
    }

    +static void alc236_fixup_hp_mute_led(struct hda_codec *codec,
    + const struct hda_fixup *fix, int action)
    +{
    + alc236_fixup_hp_mute_led_coefbit(codec, fix, action);
    + alc236_fixup_hp_coef_micmute_led(codec, fix, action);
    +}
    +
    #if IS_REACHABLE(CONFIG_INPUT)
    static void gpio2_mic_hotkey_event(struct hda_codec *codec,
    struct hda_jack_callback *event)
    @@ -6056,6 +6094,7 @@ enum {
    ALC294_FIXUP_ASUS_COEF_1B,
    ALC285_FIXUP_HP_GPIO_LED,
    ALC285_FIXUP_HP_MUTE_LED,
    + ALC236_FIXUP_HP_MUTE_LED,
    };

    static const struct hda_fixup alc269_fixups[] = {
    @@ -7208,6 +7247,10 @@ static const struct hda_fixup alc269_fixups[] = {
    .type = HDA_FIXUP_FUNC,
    .v.func = alc285_fixup_hp_mute_led,
    },
    + [ALC236_FIXUP_HP_MUTE_LED] = {
    + .type = HDA_FIXUP_FUNC,
    + .v.func = alc236_fixup_hp_mute_led,
    + },
    };

    static const struct snd_pci_quirk alc269_fixup_tbl[] = {
    @@ -7354,6 +7397,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
    SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3),
    SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_LED),
    SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED),
    + SND_PCI_QUIRK(0x103c, 0x877d, "HP", ALC236_FIXUP_HP_MUTE_LED),
    SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC),
    SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300),
    SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-05-26 21:20    [W:4.027 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site