ALSA: hda - Add quirks for Realtek codecs

- Support ASUS F81Se F5Q P80 U20A U80 U50 UX50 for ALC269
- Support ASUS F70SL UX20 X58LE F50Z N80Vc N81Te N505Tp Vx3V N5051A
for ALC663
- Support DELL ZM1 for ALC272

Signed-off-by: Kailang Yang <kailang@realtek.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by Kailang Yang and committed by Takashi Iwai 622e84cd bb023080

+98
+98
sound/pci/hda/patch_realtek.c
··· 188 ALC663_ASUS_MODE4, 189 ALC663_ASUS_MODE5, 190 ALC663_ASUS_MODE6, 191 ALC662_AUTO, 192 ALC662_MODEL_LAST, 193 }; ··· 12978 SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1), 12979 SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A", 12980 ALC269_ASUS_EEEPC_P703), 12981 SND_PCI_QUIRK(0x1043, 0x831a, "ASUS Eeepc P901", 12982 ALC269_ASUS_EEEPC_P901), 12983 SND_PCI_QUIRK(0x1043, 0x834a, "ASUS Eeepc S101", 12984 ALC269_ASUS_EEEPC_P901), 12985 SND_PCI_QUIRK(0x1734, 0x115d, "FSC Amilo", ALC269_FUJITSU), 12986 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK), 12987 {} ··· 15219 0x02, 0x03, 0x04 15220 }; 15221 15222 static hda_nid_t alc662_adc_nids[1] = { 15223 /* ADC1-2 */ 15224 0x09, 15225 }; 15226 15227 static hda_nid_t alc662_capsrc_nids[1] = { 0x22 }; 15228 15229 /* input MUX */ 15230 /* FIXME: should be a matrix-type input source selection */ ··· 15856 {} 15857 }; 15858 15859 static struct snd_kcontrol_new alc662_auto_capture_mixer[] = { 15860 HDA_CODEC_VOLUME("Capture Volume", 0x09, 0x0, HDA_INPUT), 15861 HDA_CODEC_MUTE("Capture Switch", 0x09, 0x0, HDA_INPUT), 15862 { } /* end */ 15863 }; 15864 ··· 16409 16410 static struct snd_pci_quirk alc662_cfg_tbl[] = { 16411 SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_ECS), 16412 SND_PCI_QUIRK(0x1043, 0x1000, "ASUS N50Vm", ALC663_ASUS_MODE1), 16413 SND_PCI_QUIRK(0x1043, 0x1092, "ASUS NB", ALC663_ASUS_MODE3), 16414 SND_PCI_QUIRK(0x1043, 0x11c3, "ASUS M70V", ALC663_ASUS_MODE3), ··· 16423 SND_PCI_QUIRK(0x1043, 0x1763, "ASUS NB", ALC663_ASUS_MODE6), 16424 SND_PCI_QUIRK(0x1043, 0x1765, "ASUS NB", ALC663_ASUS_MODE6), 16425 SND_PCI_QUIRK(0x1043, 0x1783, "ASUS NB", ALC662_ASUS_MODE2), 16426 SND_PCI_QUIRK(0x1043, 0x1813, "ASUS NB", ALC662_ASUS_MODE2), 16427 SND_PCI_QUIRK(0x1043, 0x1823, "ASUS NB", ALC663_ASUS_MODE5), 16428 SND_PCI_QUIRK(0x1043, 0x1833, "ASUS NB", ALC663_ASUS_MODE6), 16429 SND_PCI_QUIRK(0x1043, 0x1843, "ASUS NB", ALC662_ASUS_MODE2), 16430 SND_PCI_QUIRK(0x1043, 0x1864, "ASUS NB", ALC662_ASUS_MODE2), 16431 SND_PCI_QUIRK(0x1043, 0x1876, "ASUS NB", ALC662_ASUS_MODE2), 16432 SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M51VA", ALC663_ASUS_M51VA), 16433 /*SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M50Vr", ALC663_ASUS_MODE1),*/ 16434 SND_PCI_QUIRK(0x1043, 0x1893, "ASUS M50Vm", ALC663_ASUS_MODE3), 16435 SND_PCI_QUIRK(0x1043, 0x1894, "ASUS X55", ALC663_ASUS_MODE3), 16436 SND_PCI_QUIRK(0x1043, 0x1903, "ASUS F5GL", ALC663_ASUS_MODE1), 16437 SND_PCI_QUIRK(0x1043, 0x1913, "ASUS NB", ALC662_ASUS_MODE2), 16438 SND_PCI_QUIRK(0x1043, 0x1933, "ASUS F80Q", ALC662_ASUS_MODE2), 16439 SND_PCI_QUIRK(0x1043, 0x1953, "ASUS NB", ALC663_ASUS_MODE1), 16440 SND_PCI_QUIRK(0x1043, 0x1963, "ASUS X71C", ALC663_ASUS_MODE3), 16441 SND_PCI_QUIRK(0x1043, 0x1993, "ASUS N20", ALC663_ASUS_MODE1), 16442 SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS G50V", ALC663_ASUS_G50V), 16443 /*SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS NB", ALC663_ASUS_MODE1),*/ 16444 SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS F7Z", ALC663_ASUS_MODE1), 16445 SND_PCI_QUIRK(0x1043, 0x19c3, "ASUS F5Z/F6x", ALC662_ASUS_MODE2), 16446 SND_PCI_QUIRK(0x1043, 0x19e3, "ASUS NB", ALC663_ASUS_MODE1), 16447 SND_PCI_QUIRK(0x1043, 0x19f3, "ASUS NB", ALC663_ASUS_MODE4), 16448 SND_PCI_QUIRK(0x1043, 0x8290, "ASUS P5GC-MX", ALC662_3ST_6ch_DIG), ··· 16700 .input_mux = &alc662_eeepc_capture_source, 16701 .unsol_event = alc663_mode6_unsol_event, 16702 .init_hook = alc663_mode6_inithook, 16703 }, 16704 }; 16705
··· 188 ALC663_ASUS_MODE4, 189 ALC663_ASUS_MODE5, 190 ALC663_ASUS_MODE6, 191 + ALC272_DELL, 192 + ALC272_DELL_ZM1, 193 ALC662_AUTO, 194 ALC662_MODEL_LAST, 195 }; ··· 12976 SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1), 12977 SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A", 12978 ALC269_ASUS_EEEPC_P703), 12979 + SND_PCI_QUIRK(0x1043, 0x1883, "ASUS F81Se", ALC269_ASUS_EEEPC_P703), 12980 + SND_PCI_QUIRK(0x1043, 0x16a3, "ASUS F5Q", ALC269_ASUS_EEEPC_P703), 12981 + SND_PCI_QUIRK(0x1043, 0x1723, "ASUS P80", ALC269_ASUS_EEEPC_P703), 12982 + SND_PCI_QUIRK(0x1043, 0x1773, "ASUS U20A", ALC269_ASUS_EEEPC_P703), 12983 + SND_PCI_QUIRK(0x1043, 0x1743, "ASUS U80", ALC269_ASUS_EEEPC_P703), 12984 + SND_PCI_QUIRK(0x1043, 0x1653, "ASUS U50", ALC269_ASUS_EEEPC_P703), 12985 SND_PCI_QUIRK(0x1043, 0x831a, "ASUS Eeepc P901", 12986 ALC269_ASUS_EEEPC_P901), 12987 SND_PCI_QUIRK(0x1043, 0x834a, "ASUS Eeepc S101", 12988 ALC269_ASUS_EEEPC_P901), 12989 + SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_ASUS_EEEPC_P901), 12990 SND_PCI_QUIRK(0x1734, 0x115d, "FSC Amilo", ALC269_FUJITSU), 12991 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK), 12992 {} ··· 15210 0x02, 0x03, 0x04 15211 }; 15212 15213 + static hda_nid_t alc272_dac_nids[2] = { 15214 + 0x02, 0x03 15215 + }; 15216 + 15217 static hda_nid_t alc662_adc_nids[1] = { 15218 /* ADC1-2 */ 15219 0x09, 15220 }; 15221 15222 + static hda_nid_t alc272_adc_nids[1] = { 15223 + /* ADC1-2 */ 15224 + 0x08, 15225 + }; 15226 + 15227 static hda_nid_t alc662_capsrc_nids[1] = { 0x22 }; 15228 + static hda_nid_t alc272_capsrc_nids[1] = { 0x23 }; 15229 + 15230 15231 /* input MUX */ 15232 /* FIXME: should be a matrix-type input source selection */ ··· 15836 {} 15837 }; 15838 15839 + static struct hda_verb alc272_dell_zm1_init_verbs[] = { 15840 + {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 15841 + {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 15842 + {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 15843 + {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 15844 + {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, 15845 + {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 15846 + {0x21, AC_VERB_SET_CONNECT_SEL, 0x01}, /* Headphone */ 15847 + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, 15848 + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(9)}, 15849 + {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT}, 15850 + {0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT}, 15851 + {} 15852 + }; 15853 + 15854 + static struct hda_verb alc272_dell_init_verbs[] = { 15855 + {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 15856 + {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 15857 + {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 15858 + {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 15859 + {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, 15860 + {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 15861 + {0x21, AC_VERB_SET_CONNECT_SEL, 0x01}, /* Headphone */ 15862 + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, 15863 + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(9)}, 15864 + {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT}, 15865 + {0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT}, 15866 + {} 15867 + }; 15868 + 15869 static struct snd_kcontrol_new alc662_auto_capture_mixer[] = { 15870 HDA_CODEC_VOLUME("Capture Volume", 0x09, 0x0, HDA_INPUT), 15871 HDA_CODEC_MUTE("Capture Switch", 0x09, 0x0, HDA_INPUT), 15872 + { } /* end */ 15873 + }; 15874 + 15875 + static struct snd_kcontrol_new alc272_auto_capture_mixer[] = { 15876 + HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), 15877 + HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), 15878 { } /* end */ 15879 }; 15880 ··· 16353 16354 static struct snd_pci_quirk alc662_cfg_tbl[] = { 16355 SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_ECS), 16356 + SND_PCI_QUIRK(0x1028, 0x02d6, "DELL", ALC272_DELL), 16357 + SND_PCI_QUIRK(0x1028, 0x02f4, "DELL ZM1", ALC272_DELL_ZM1), 16358 SND_PCI_QUIRK(0x1043, 0x1000, "ASUS N50Vm", ALC663_ASUS_MODE1), 16359 SND_PCI_QUIRK(0x1043, 0x1092, "ASUS NB", ALC663_ASUS_MODE3), 16360 SND_PCI_QUIRK(0x1043, 0x11c3, "ASUS M70V", ALC663_ASUS_MODE3), ··· 16365 SND_PCI_QUIRK(0x1043, 0x1763, "ASUS NB", ALC663_ASUS_MODE6), 16366 SND_PCI_QUIRK(0x1043, 0x1765, "ASUS NB", ALC663_ASUS_MODE6), 16367 SND_PCI_QUIRK(0x1043, 0x1783, "ASUS NB", ALC662_ASUS_MODE2), 16368 + SND_PCI_QUIRK(0x1043, 0x17b3, "ASUS F70SL", ALC663_ASUS_MODE3), 16369 + SND_PCI_QUIRK(0x1043, 0x17c3, "ASUS UX20", ALC663_ASUS_M51VA), 16370 + SND_PCI_QUIRK(0x1043, 0x17f3, "ASUS X58LE", ALC662_ASUS_MODE2), 16371 SND_PCI_QUIRK(0x1043, 0x1813, "ASUS NB", ALC662_ASUS_MODE2), 16372 SND_PCI_QUIRK(0x1043, 0x1823, "ASUS NB", ALC663_ASUS_MODE5), 16373 SND_PCI_QUIRK(0x1043, 0x1833, "ASUS NB", ALC663_ASUS_MODE6), 16374 SND_PCI_QUIRK(0x1043, 0x1843, "ASUS NB", ALC662_ASUS_MODE2), 16375 + SND_PCI_QUIRK(0x1043, 0x1853, "ASUS F50Z", ALC663_ASUS_MODE1), 16376 SND_PCI_QUIRK(0x1043, 0x1864, "ASUS NB", ALC662_ASUS_MODE2), 16377 SND_PCI_QUIRK(0x1043, 0x1876, "ASUS NB", ALC662_ASUS_MODE2), 16378 SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M51VA", ALC663_ASUS_M51VA), 16379 /*SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M50Vr", ALC663_ASUS_MODE1),*/ 16380 SND_PCI_QUIRK(0x1043, 0x1893, "ASUS M50Vm", ALC663_ASUS_MODE3), 16381 SND_PCI_QUIRK(0x1043, 0x1894, "ASUS X55", ALC663_ASUS_MODE3), 16382 + SND_PCI_QUIRK(0x1043, 0x18b3, "ASUS N80Vc", ALC663_ASUS_MODE1), 16383 + SND_PCI_QUIRK(0x1043, 0x18d3, "ASUS N81Te", ALC663_ASUS_MODE1), 16384 + SND_PCI_QUIRK(0x1043, 0x18f3, "ASUS N505Tp", ALC663_ASUS_MODE1), 16385 SND_PCI_QUIRK(0x1043, 0x1903, "ASUS F5GL", ALC663_ASUS_MODE1), 16386 SND_PCI_QUIRK(0x1043, 0x1913, "ASUS NB", ALC662_ASUS_MODE2), 16387 SND_PCI_QUIRK(0x1043, 0x1933, "ASUS F80Q", ALC662_ASUS_MODE2), 16388 + SND_PCI_QUIRK(0x1043, 0x1943, "ASUS Vx3V", ALC663_ASUS_MODE1), 16389 SND_PCI_QUIRK(0x1043, 0x1953, "ASUS NB", ALC663_ASUS_MODE1), 16390 SND_PCI_QUIRK(0x1043, 0x1963, "ASUS X71C", ALC663_ASUS_MODE3), 16391 + SND_PCI_QUIRK(0x1043, 0x1983, "ASUS N5051A", ALC663_ASUS_MODE1), 16392 SND_PCI_QUIRK(0x1043, 0x1993, "ASUS N20", ALC663_ASUS_MODE1), 16393 SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS G50V", ALC663_ASUS_G50V), 16394 /*SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS NB", ALC663_ASUS_MODE1),*/ 16395 SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS F7Z", ALC663_ASUS_MODE1), 16396 SND_PCI_QUIRK(0x1043, 0x19c3, "ASUS F5Z/F6x", ALC662_ASUS_MODE2), 16397 + SND_PCI_QUIRK(0x1043, 0x19d3, "ASUS NB", ALC663_ASUS_M51VA), 16398 SND_PCI_QUIRK(0x1043, 0x19e3, "ASUS NB", ALC663_ASUS_MODE1), 16399 SND_PCI_QUIRK(0x1043, 0x19f3, "ASUS NB", ALC663_ASUS_MODE4), 16400 SND_PCI_QUIRK(0x1043, 0x8290, "ASUS P5GC-MX", ALC662_3ST_6ch_DIG), ··· 16632 .input_mux = &alc662_eeepc_capture_source, 16633 .unsol_event = alc663_mode6_unsol_event, 16634 .init_hook = alc663_mode6_inithook, 16635 + }, 16636 + [ALC272_DELL] = { 16637 + .mixers = { alc663_m51va_mixer }, 16638 + .cap_mixer = alc272_auto_capture_mixer, 16639 + .init_verbs = { alc662_init_verbs, alc272_dell_init_verbs }, 16640 + .num_dacs = ARRAY_SIZE(alc272_dac_nids), 16641 + .dac_nids = alc662_dac_nids, 16642 + .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), 16643 + .adc_nids = alc272_adc_nids, 16644 + .num_adc_nids = ARRAY_SIZE(alc272_adc_nids), 16645 + .capsrc_nids = alc272_capsrc_nids, 16646 + .channel_mode = alc662_3ST_2ch_modes, 16647 + .input_mux = &alc663_m51va_capture_source, 16648 + .unsol_event = alc663_m51va_unsol_event, 16649 + .init_hook = alc663_m51va_inithook, 16650 + }, 16651 + [ALC272_DELL_ZM1] = { 16652 + .mixers = { alc663_m51va_mixer }, 16653 + .cap_mixer = alc662_auto_capture_mixer, 16654 + .init_verbs = { alc662_init_verbs, alc272_dell_zm1_init_verbs }, 16655 + .num_dacs = ARRAY_SIZE(alc272_dac_nids), 16656 + .dac_nids = alc662_dac_nids, 16657 + .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), 16658 + .adc_nids = alc662_adc_nids, 16659 + .num_adc_nids = ARRAY_SIZE(alc662_adc_nids), 16660 + .capsrc_nids = alc662_capsrc_nids, 16661 + .channel_mode = alc662_3ST_2ch_modes, 16662 + .input_mux = &alc663_m51va_capture_source, 16663 + .unsol_event = alc663_m51va_unsol_event, 16664 + .init_hook = alc663_m51va_inithook, 16665 }, 16666 }; 16667