diff options
Diffstat (limited to 'sound/pci/hda')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 8deca0f7d7ce..2d35b4cfb2b8 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -94,6 +94,7 @@ enum { | |||
94 | ALC262_HP_BPC_D7000_WF, | 94 | ALC262_HP_BPC_D7000_WF, |
95 | ALC262_BENQ_ED8, | 95 | ALC262_BENQ_ED8, |
96 | ALC262_SONY_ASSAMD, | 96 | ALC262_SONY_ASSAMD, |
97 | ALC262_BENQ_T31, | ||
97 | ALC262_AUTO, | 98 | ALC262_AUTO, |
98 | ALC262_MODEL_LAST /* last tag */ | 99 | ALC262_MODEL_LAST /* last tag */ |
99 | }; | 100 | }; |
@@ -6888,7 +6889,16 @@ static struct snd_kcontrol_new alc262_sony_mixer[] = { | |||
6888 | { } /* end */ | 6889 | { } /* end */ |
6889 | }; | 6890 | }; |
6890 | 6891 | ||
6891 | 6892 | static struct snd_kcontrol_new alc262_benq_t31_mixer[] = { | |
6893 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), | ||
6894 | HDA_CODEC_MUTE("Front Playback Switch", 0x14, 0x0, HDA_OUTPUT), | ||
6895 | HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT), | ||
6896 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), | ||
6897 | HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), | ||
6898 | HDA_CODEC_VOLUME("ATAPI Mic Playback Volume", 0x0b, 0x01, HDA_INPUT), | ||
6899 | HDA_CODEC_MUTE("ATAPI Mic Playback Switch", 0x0b, 0x01, HDA_INPUT), | ||
6900 | { } /* end */ | ||
6901 | }; | ||
6892 | 6902 | ||
6893 | #define alc262_capture_mixer alc882_capture_mixer | 6903 | #define alc262_capture_mixer alc882_capture_mixer |
6894 | #define alc262_capture_alt_mixer alc882_capture_alt_mixer | 6904 | #define alc262_capture_alt_mixer alc882_capture_alt_mixer |
@@ -7220,6 +7230,15 @@ static struct hda_verb alc262_EAPD_verbs[] = { | |||
7220 | {} | 7230 | {} |
7221 | }; | 7231 | }; |
7222 | 7232 | ||
7233 | static struct hda_verb alc262_benq_t31_EAPD_verbs[] = { | ||
7234 | {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
7235 | {0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24}, | ||
7236 | |||
7237 | {0x20, AC_VERB_SET_COEF_INDEX, 0x07}, | ||
7238 | {0x20, AC_VERB_SET_PROC_COEF, 0x3050}, | ||
7239 | {} | ||
7240 | }; | ||
7241 | |||
7223 | /* add playback controls from the parsed DAC table */ | 7242 | /* add playback controls from the parsed DAC table */ |
7224 | static int alc262_auto_create_multi_out_ctls(struct alc_spec *spec, | 7243 | static int alc262_auto_create_multi_out_ctls(struct alc_spec *spec, |
7225 | const struct auto_pin_cfg *cfg) | 7244 | const struct auto_pin_cfg *cfg) |
@@ -7641,6 +7660,7 @@ static struct snd_pci_quirk alc262_cfg_tbl[] = { | |||
7641 | SND_PCI_QUIRK(0x10cf, 0x1397, "Fujitsu", ALC262_FUJITSU), | 7660 | SND_PCI_QUIRK(0x10cf, 0x1397, "Fujitsu", ALC262_FUJITSU), |
7642 | SND_PCI_QUIRK(0x17ff, 0x058f, "Benq Hippo", ALC262_HIPPO_1), | 7661 | SND_PCI_QUIRK(0x17ff, 0x058f, "Benq Hippo", ALC262_HIPPO_1), |
7643 | SND_PCI_QUIRK(0x17ff, 0x0560, "Benq ED8", ALC262_BENQ_ED8), | 7662 | SND_PCI_QUIRK(0x17ff, 0x0560, "Benq ED8", ALC262_BENQ_ED8), |
7663 | SND_PCI_QUIRK(0x17ff, 0x058d, "Benq T31-16", ALC262_BENQ_T31), | ||
7644 | SND_PCI_QUIRK(0x104d, 0x9015, "Sony 0x9015", ALC262_SONY_ASSAMD), | 7664 | SND_PCI_QUIRK(0x104d, 0x9015, "Sony 0x9015", ALC262_SONY_ASSAMD), |
7645 | SND_PCI_QUIRK(0x104d, 0x900e, "Sony ASSAMD", ALC262_SONY_ASSAMD), | 7665 | SND_PCI_QUIRK(0x104d, 0x900e, "Sony ASSAMD", ALC262_SONY_ASSAMD), |
7646 | SND_PCI_QUIRK(0x104d, 0x1f00, "Sony ASSAMD", ALC262_SONY_ASSAMD), | 7666 | SND_PCI_QUIRK(0x104d, 0x1f00, "Sony ASSAMD", ALC262_SONY_ASSAMD), |
@@ -7745,6 +7765,17 @@ static struct alc_config_preset alc262_presets[] = { | |||
7745 | .channel_mode = alc262_modes, | 7765 | .channel_mode = alc262_modes, |
7746 | .input_mux = &alc262_capture_source, | 7766 | .input_mux = &alc262_capture_source, |
7747 | .unsol_event = alc262_hippo_unsol_event, | 7767 | .unsol_event = alc262_hippo_unsol_event, |
7768 | }, | ||
7769 | [ALC262_BENQ_T31] = { | ||
7770 | .mixers = { alc262_benq_t31_mixer }, | ||
7771 | .init_verbs = { alc262_init_verbs, alc262_benq_t31_EAPD_verbs, alc262_hippo_unsol_verbs }, | ||
7772 | .num_dacs = ARRAY_SIZE(alc262_dac_nids), | ||
7773 | .dac_nids = alc262_dac_nids, | ||
7774 | .hp_nid = 0x03, | ||
7775 | .num_channel_mode = ARRAY_SIZE(alc262_modes), | ||
7776 | .channel_mode = alc262_modes, | ||
7777 | .input_mux = &alc262_capture_source, | ||
7778 | .unsol_event = alc262_hippo_unsol_event, | ||
7748 | }, | 7779 | }, |
7749 | }; | 7780 | }; |
7750 | 7781 | ||
@@ -9311,7 +9342,9 @@ static struct snd_pci_quirk alc861_cfg_tbl[] = { | |||
9311 | SND_PCI_QUIRK(0x1043, 0x1335, "ASUS F2/3", ALC861_ASUS_LAPTOP), | 9342 | SND_PCI_QUIRK(0x1043, 0x1335, "ASUS F2/3", ALC861_ASUS_LAPTOP), |
9312 | SND_PCI_QUIRK(0x1043, 0x1338, "ASUS F2/3", ALC861_ASUS_LAPTOP), | 9343 | SND_PCI_QUIRK(0x1043, 0x1338, "ASUS F2/3", ALC861_ASUS_LAPTOP), |
9313 | SND_PCI_QUIRK(0x1043, 0x13d7, "ASUS A9rp", ALC861_ASUS_LAPTOP), | 9344 | SND_PCI_QUIRK(0x1043, 0x13d7, "ASUS A9rp", ALC861_ASUS_LAPTOP), |
9345 | SND_PCI_QUIRK(0x1584, 0x9075, "Airis Praxis N1212", ALC861_ASUS_LAPTOP), | ||
9314 | SND_PCI_QUIRK(0x1043, 0x1393, "ASUS", ALC861_ASUS), | 9346 | SND_PCI_QUIRK(0x1043, 0x1393, "ASUS", ALC861_ASUS), |
9347 | SND_PCI_QUIRK(0x1043, 0x81cb, "ASUS P1-AH2", ALC861_3ST_DIG), | ||
9315 | SND_PCI_QUIRK(0x1179, 0xff00, "Toshiba", ALC861_TOSHIBA), | 9348 | SND_PCI_QUIRK(0x1179, 0xff00, "Toshiba", ALC861_TOSHIBA), |
9316 | SND_PCI_QUIRK(0x1179, 0xff10, "Toshiba", ALC861_TOSHIBA), | 9349 | SND_PCI_QUIRK(0x1179, 0xff10, "Toshiba", ALC861_TOSHIBA), |
9317 | SND_PCI_QUIRK(0x1584, 0x9072, "Uniwill m31", ALC861_UNIWILL_M31), | 9350 | SND_PCI_QUIRK(0x1584, 0x9072, "Uniwill m31", ALC861_UNIWILL_M31), |