|
@@ -5358,6 +5358,16 @@ static void alc274_fixup_bind_dacs(struct hda_codec *codec,
|
|
|
spec->gen.preferred_dacs = preferred_pairs;
|
|
|
}
|
|
|
|
|
|
+/* The DAC of NID 0x3 will introduce click/pop noise on headphones, so invalidate it */
|
|
|
+static void alc285_fixup_invalidate_dacs(struct hda_codec *codec,
|
|
|
+ const struct hda_fixup *fix, int action)
|
|
|
+{
|
|
|
+ if (action != HDA_FIXUP_ACT_PRE_PROBE)
|
|
|
+ return;
|
|
|
+
|
|
|
+ snd_hda_override_wcaps(codec, 0x03, 0);
|
|
|
+}
|
|
|
+
|
|
|
/* for hda_fixup_thinkpad_acpi() */
|
|
|
#include "thinkpad_helper.c"
|
|
|
|
|
@@ -5495,6 +5505,7 @@ enum {
|
|
|
ALC255_FIXUP_DELL_HEADSET_MIC,
|
|
|
ALC295_FIXUP_HP_X360,
|
|
|
ALC221_FIXUP_HP_HEADSET_MIC,
|
|
|
+ ALC285_FIXUP_LENOVO_HEADPHONE_NOISE,
|
|
|
};
|
|
|
|
|
|
static const struct hda_fixup alc269_fixups[] = {
|
|
@@ -6362,6 +6373,10 @@ static const struct hda_fixup alc269_fixups[] = {
|
|
|
.chained = true,
|
|
|
.chain_id = ALC269_FIXUP_HEADSET_MIC
|
|
|
},
|
|
|
+ [ALC285_FIXUP_LENOVO_HEADPHONE_NOISE] = {
|
|
|
+ .type = HDA_FIXUP_FUNC,
|
|
|
+ .v.func = alc285_fixup_invalidate_dacs,
|
|
|
+ },
|
|
|
};
|
|
|
|
|
|
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
|
@@ -7035,6 +7050,11 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
|
|
|
{0x12, 0x90a60130},
|
|
|
{0x19, 0x03a11020},
|
|
|
{0x21, 0x0321101f}),
|
|
|
+ SND_HDA_PIN_QUIRK(0x10ec0285, 0x17aa, "Lenovo", ALC285_FIXUP_LENOVO_HEADPHONE_NOISE,
|
|
|
+ {0x12, 0x90a60130},
|
|
|
+ {0x14, 0x90170110},
|
|
|
+ {0x19, 0x04a11040},
|
|
|
+ {0x21, 0x04211020}),
|
|
|
SND_HDA_PIN_QUIRK(0x10ec0288, 0x1028, "Dell", ALC288_FIXUP_DELL1_MIC_NO_PRESENCE,
|
|
|
{0x12, 0x90a60120},
|
|
|
{0x14, 0x90170110},
|