aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/hda')
-rw-r--r--sound/pci/hda/patch_realtek.c35
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 6892static 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
7233static 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 */
7224static int alc262_auto_create_multi_out_ctls(struct alc_spec *spec, 7243static 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),