diff options
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 6df758adff84..1ffa36e987b4 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -1855,6 +1855,8 @@ enum { | |||
1855 | ALC887_FIXUP_BASS_CHMAP, | 1855 | ALC887_FIXUP_BASS_CHMAP, |
1856 | ALC1220_FIXUP_GB_DUAL_CODECS, | 1856 | ALC1220_FIXUP_GB_DUAL_CODECS, |
1857 | ALC1220_FIXUP_CLEVO_P950, | 1857 | ALC1220_FIXUP_CLEVO_P950, |
1858 | ALC1220_FIXUP_SYSTEM76_ORYP5, | ||
1859 | ALC1220_FIXUP_SYSTEM76_ORYP5_PINS, | ||
1858 | }; | 1860 | }; |
1859 | 1861 | ||
1860 | static void alc889_fixup_coef(struct hda_codec *codec, | 1862 | static void alc889_fixup_coef(struct hda_codec *codec, |
@@ -2056,6 +2058,17 @@ static void alc1220_fixup_clevo_p950(struct hda_codec *codec, | |||
2056 | snd_hda_override_conn_list(codec, 0x1b, 1, conn1); | 2058 | snd_hda_override_conn_list(codec, 0x1b, 1, conn1); |
2057 | } | 2059 | } |
2058 | 2060 | ||
2061 | static void alc_fixup_headset_mode_no_hp_mic(struct hda_codec *codec, | ||
2062 | const struct hda_fixup *fix, int action); | ||
2063 | |||
2064 | static void alc1220_fixup_system76_oryp5(struct hda_codec *codec, | ||
2065 | const struct hda_fixup *fix, | ||
2066 | int action) | ||
2067 | { | ||
2068 | alc1220_fixup_clevo_p950(codec, fix, action); | ||
2069 | alc_fixup_headset_mode_no_hp_mic(codec, fix, action); | ||
2070 | } | ||
2071 | |||
2059 | static const struct hda_fixup alc882_fixups[] = { | 2072 | static const struct hda_fixup alc882_fixups[] = { |
2060 | [ALC882_FIXUP_ABIT_AW9D_MAX] = { | 2073 | [ALC882_FIXUP_ABIT_AW9D_MAX] = { |
2061 | .type = HDA_FIXUP_PINS, | 2074 | .type = HDA_FIXUP_PINS, |
@@ -2300,6 +2313,19 @@ static const struct hda_fixup alc882_fixups[] = { | |||
2300 | .type = HDA_FIXUP_FUNC, | 2313 | .type = HDA_FIXUP_FUNC, |
2301 | .v.func = alc1220_fixup_clevo_p950, | 2314 | .v.func = alc1220_fixup_clevo_p950, |
2302 | }, | 2315 | }, |
2316 | [ALC1220_FIXUP_SYSTEM76_ORYP5] = { | ||
2317 | .type = HDA_FIXUP_FUNC, | ||
2318 | .v.func = alc1220_fixup_system76_oryp5, | ||
2319 | }, | ||
2320 | [ALC1220_FIXUP_SYSTEM76_ORYP5_PINS] = { | ||
2321 | .type = HDA_FIXUP_PINS, | ||
2322 | .v.pins = (const struct hda_pintbl[]) { | ||
2323 | { 0x19, 0x01a1913c }, /* use as headset mic, without its own jack detect */ | ||
2324 | {} | ||
2325 | }, | ||
2326 | .chained = true, | ||
2327 | .chain_id = ALC1220_FIXUP_SYSTEM76_ORYP5, | ||
2328 | }, | ||
2303 | }; | 2329 | }; |
2304 | 2330 | ||
2305 | static const struct snd_pci_quirk alc882_fixup_tbl[] = { | 2331 | static const struct snd_pci_quirk alc882_fixup_tbl[] = { |
@@ -2376,6 +2402,8 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = { | |||
2376 | SND_PCI_QUIRK(0x1558, 0x9501, "Clevo P950HR", ALC1220_FIXUP_CLEVO_P950), | 2402 | SND_PCI_QUIRK(0x1558, 0x9501, "Clevo P950HR", ALC1220_FIXUP_CLEVO_P950), |
2377 | SND_PCI_QUIRK(0x1558, 0x95e1, "Clevo P95xER", ALC1220_FIXUP_CLEVO_P950), | 2403 | SND_PCI_QUIRK(0x1558, 0x95e1, "Clevo P95xER", ALC1220_FIXUP_CLEVO_P950), |
2378 | SND_PCI_QUIRK(0x1558, 0x95e2, "Clevo P950ER", ALC1220_FIXUP_CLEVO_P950), | 2404 | SND_PCI_QUIRK(0x1558, 0x95e2, "Clevo P950ER", ALC1220_FIXUP_CLEVO_P950), |
2405 | SND_PCI_QUIRK(0x1558, 0x96e1, "System76 Oryx Pro (oryp5)", ALC1220_FIXUP_SYSTEM76_ORYP5_PINS), | ||
2406 | SND_PCI_QUIRK(0x1558, 0x97e1, "System76 Oryx Pro (oryp5)", ALC1220_FIXUP_SYSTEM76_ORYP5_PINS), | ||
2379 | SND_PCI_QUIRK_VENDOR(0x1558, "Clevo laptop", ALC882_FIXUP_EAPD), | 2407 | SND_PCI_QUIRK_VENDOR(0x1558, "Clevo laptop", ALC882_FIXUP_EAPD), |
2380 | SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_FIXUP_EAPD), | 2408 | SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_FIXUP_EAPD), |
2381 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", ALC882_FIXUP_LENOVO_Y530), | 2409 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", ALC882_FIXUP_LENOVO_Y530), |
@@ -5632,6 +5660,7 @@ enum { | |||
5632 | ALC294_FIXUP_ASUS_SPK, | 5660 | ALC294_FIXUP_ASUS_SPK, |
5633 | ALC225_FIXUP_HEADSET_JACK, | 5661 | ALC225_FIXUP_HEADSET_JACK, |
5634 | ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE, | 5662 | ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE, |
5663 | ALC285_FIXUP_LENOVO_PC_BEEP_IN_NOISE, | ||
5635 | }; | 5664 | }; |
5636 | 5665 | ||
5637 | static const struct hda_fixup alc269_fixups[] = { | 5666 | static const struct hda_fixup alc269_fixups[] = { |
@@ -6587,6 +6616,17 @@ static const struct hda_fixup alc269_fixups[] = { | |||
6587 | .chained = true, | 6616 | .chained = true, |
6588 | .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC | 6617 | .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC |
6589 | }, | 6618 | }, |
6619 | [ALC285_FIXUP_LENOVO_PC_BEEP_IN_NOISE] = { | ||
6620 | .type = HDA_FIXUP_VERBS, | ||
6621 | .v.verbs = (const struct hda_verb[]) { | ||
6622 | /* Disable PCBEEP-IN passthrough */ | ||
6623 | { 0x20, AC_VERB_SET_COEF_INDEX, 0x36 }, | ||
6624 | { 0x20, AC_VERB_SET_PROC_COEF, 0x57d7 }, | ||
6625 | { } | ||
6626 | }, | ||
6627 | .chained = true, | ||
6628 | .chain_id = ALC285_FIXUP_LENOVO_HEADPHONE_NOISE | ||
6629 | }, | ||
6590 | }; | 6630 | }; |
6591 | 6631 | ||
6592 | static const struct snd_pci_quirk alc269_fixup_tbl[] = { | 6632 | static const struct snd_pci_quirk alc269_fixup_tbl[] = { |
@@ -7272,7 +7312,7 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { | |||
7272 | {0x12, 0x90a60130}, | 7312 | {0x12, 0x90a60130}, |
7273 | {0x19, 0x03a11020}, | 7313 | {0x19, 0x03a11020}, |
7274 | {0x21, 0x0321101f}), | 7314 | {0x21, 0x0321101f}), |
7275 | SND_HDA_PIN_QUIRK(0x10ec0285, 0x17aa, "Lenovo", ALC285_FIXUP_LENOVO_HEADPHONE_NOISE, | 7315 | SND_HDA_PIN_QUIRK(0x10ec0285, 0x17aa, "Lenovo", ALC285_FIXUP_LENOVO_PC_BEEP_IN_NOISE, |
7276 | {0x12, 0x90a60130}, | 7316 | {0x12, 0x90a60130}, |
7277 | {0x14, 0x90170110}, | 7317 | {0x14, 0x90170110}, |
7278 | {0x19, 0x04a11040}, | 7318 | {0x19, 0x04a11040}, |