]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ALSA: hda/realtek: ALC882: Fixup for Clevo P775TM1
authorEvelyn Ali <evelynali99@gmail.com>
Tue, 2 Jun 2026 21:41:22 +0000 (17:41 -0400)
committerTakashi Iwai <tiwai@suse.de>
Thu, 4 Jun 2026 08:12:57 +0000 (10:12 +0200)
Clevo P775TM1 laptops come with an ESS Sabre HiFi DAC. Setting
0x1b pin VREF to 80% enables said DAC output.

Signed-off-by: Evelyn Ali <evelynali99@gmail.com>
Link: https://patch.msgid.link/20260602214122.78020-1-evelynali99@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/hda/codecs/realtek/alc882.c

index 529fecd5baa0a129352015f1c493ddfd42a68e3e..fd466b6985f05e4e4af664d87bebbdbed2d4c5b9 100644 (file)
@@ -61,6 +61,7 @@ enum {
        ALC887_FIXUP_ASUS_HMIC,
        ALCS1200A_FIXUP_MIC_VREF,
        ALC888VD_FIXUP_MIC_100VREF,
+       ALC898_FIXUP_CLEVO_P775TM1,
 };
 
 static void alc889_fixup_coef(struct hda_codec *codec,
@@ -236,6 +237,19 @@ static void alc1220_fixup_clevo_pb51ed(struct hda_codec *codec,
        alc_fixup_headset_mode_no_hp_mic(codec, fix, action);
 }
 
+/* On Clevo P775TM1, VREF of pin 0x1b enables the external headphone amp */
+static void alc898_fixup_clevo_p775tm1(struct hda_codec *codec,
+                                      const struct hda_fixup *fix, int action)
+{
+       struct alc_spec *spec = codec->spec;
+
+       if (action != HDA_FIXUP_ACT_PRE_PROBE)
+               return;
+
+       snd_hda_set_pin_ctl_cache(codec, 0x1b, PIN_VREF80);
+       spec->gen.keep_vref_in_automute = 1;
+}
+
 static void alc887_asus_hp_automute_hook(struct hda_codec *codec,
                                         struct hda_jack_callback *jack)
 {
@@ -560,6 +574,12 @@ static const struct hda_fixup alc882_fixups[] = {
                        {}
                }
        },
+       [ALC898_FIXUP_CLEVO_P775TM1] = {
+               .type = HDA_FIXUP_FUNC,
+               .v.func = alc898_fixup_clevo_p775tm1,
+               .chained = true,
+               .chain_id = ALC882_FIXUP_EAPD,
+       },
 };
 
 static const struct hda_quirk alc882_fixup_tbl[] = {
@@ -664,6 +684,7 @@ static const struct hda_quirk alc882_fixup_tbl[] = {
        SND_PCI_QUIRK(0x1558, 0x67f1, "Clevo PC70H[PRS]", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
        SND_PCI_QUIRK(0x1558, 0x67f5, "Clevo PD70PN[NRT]", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
        SND_PCI_QUIRK(0x1558, 0x70d1, "Clevo PC70[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
+       SND_PCI_QUIRK(0x1558, 0x7709, "Clevo P775TM1", ALC898_FIXUP_CLEVO_P775TM1),
        SND_PCI_QUIRK(0x1558, 0x7714, "Clevo X170SM", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
        SND_PCI_QUIRK(0x1558, 0x7715, "Clevo X170KM-G", ALC1220_FIXUP_CLEVO_PB51ED),
        SND_PCI_QUIRK(0x1558, 0x9501, "Clevo P950HR", ALC1220_FIXUP_CLEVO_P950),
@@ -719,6 +740,7 @@ static const struct hda_model_fixup alc882_fixup_models[] = {
        {.id = ALC1220_FIXUP_GB_DUAL_CODECS, .name = "dual-codecs"},
        {.id = ALC1220_FIXUP_GB_X570, .name = "gb-x570"},
        {.id = ALC1220_FIXUP_CLEVO_P950, .name = "clevo-p950"},
+       {.id = ALC898_FIXUP_CLEVO_P775TM1, .name = "clevo-p775tm1"},
        {}
 };