diff options
| author | Kailang Yang <kailang@realtek.com> | 2009-04-21 01:39:04 -0400 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2009-04-21 01:39:04 -0400 |
| commit | 622e84cdff719b9dcd3f495ddb0afb54995799cc (patch) | |
| tree | 7a71847500f7d75d0584042227b0c91e4545d4e0 | |
| parent | bb023080fe72f1f80648e9b60771d9a94ce75aca (diff) | |
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>
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 78bea2c6ab6d..c9300a3427ea 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -188,6 +188,8 @@ enum { | |||
| 188 | ALC663_ASUS_MODE4, | 188 | ALC663_ASUS_MODE4, |
| 189 | ALC663_ASUS_MODE5, | 189 | ALC663_ASUS_MODE5, |
| 190 | ALC663_ASUS_MODE6, | 190 | ALC663_ASUS_MODE6, |
| 191 | ALC272_DELL, | ||
| 192 | ALC272_DELL_ZM1, | ||
| 191 | ALC662_AUTO, | 193 | ALC662_AUTO, |
| 192 | ALC662_MODEL_LAST, | 194 | ALC662_MODEL_LAST, |
| 193 | }; | 195 | }; |
| @@ -12976,10 +12978,17 @@ static struct snd_pci_quirk alc269_cfg_tbl[] = { | |||
| 12976 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1), | 12978 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1), |
| 12977 | SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A", | 12979 | SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A", |
| 12978 | ALC269_ASUS_EEEPC_P703), | 12980 | ALC269_ASUS_EEEPC_P703), |
| 12981 | SND_PCI_QUIRK(0x1043, 0x1883, "ASUS F81Se", ALC269_ASUS_EEEPC_P703), | ||
| 12982 | SND_PCI_QUIRK(0x1043, 0x16a3, "ASUS F5Q", ALC269_ASUS_EEEPC_P703), | ||
| 12983 | SND_PCI_QUIRK(0x1043, 0x1723, "ASUS P80", ALC269_ASUS_EEEPC_P703), | ||
| 12984 | SND_PCI_QUIRK(0x1043, 0x1773, "ASUS U20A", ALC269_ASUS_EEEPC_P703), | ||
| 12985 | SND_PCI_QUIRK(0x1043, 0x1743, "ASUS U80", ALC269_ASUS_EEEPC_P703), | ||
| 12986 | SND_PCI_QUIRK(0x1043, 0x1653, "ASUS U50", ALC269_ASUS_EEEPC_P703), | ||
| 12979 | SND_PCI_QUIRK(0x1043, 0x831a, "ASUS Eeepc P901", | 12987 | SND_PCI_QUIRK(0x1043, 0x831a, "ASUS Eeepc P901", |
| 12980 | ALC269_ASUS_EEEPC_P901), | 12988 | ALC269_ASUS_EEEPC_P901), |
| 12981 | SND_PCI_QUIRK(0x1043, 0x834a, "ASUS Eeepc S101", | 12989 | SND_PCI_QUIRK(0x1043, 0x834a, "ASUS Eeepc S101", |
| 12982 | ALC269_ASUS_EEEPC_P901), | 12990 | ALC269_ASUS_EEEPC_P901), |
| 12991 | SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_ASUS_EEEPC_P901), | ||
| 12983 | SND_PCI_QUIRK(0x1734, 0x115d, "FSC Amilo", ALC269_FUJITSU), | 12992 | SND_PCI_QUIRK(0x1734, 0x115d, "FSC Amilo", ALC269_FUJITSU), |
| 12984 | SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK), | 12993 | SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK), |
| 12985 | {} | 12994 | {} |
| @@ -15210,12 +15219,23 @@ static hda_nid_t alc662_dac_nids[4] = { | |||
| 15210 | 0x02, 0x03, 0x04 | 15219 | 0x02, 0x03, 0x04 |
| 15211 | }; | 15220 | }; |
| 15212 | 15221 | ||
| 15222 | static hda_nid_t alc272_dac_nids[2] = { | ||
| 15223 | 0x02, 0x03 | ||
| 15224 | }; | ||
| 15225 | |||
| 15213 | static hda_nid_t alc662_adc_nids[1] = { | 15226 | static hda_nid_t alc662_adc_nids[1] = { |
| 15214 | /* ADC1-2 */ | 15227 | /* ADC1-2 */ |
| 15215 | 0x09, | 15228 | 0x09, |
| 15216 | }; | 15229 | }; |
| 15217 | 15230 | ||
| 15231 | static hda_nid_t alc272_adc_nids[1] = { | ||
| 15232 | /* ADC1-2 */ | ||
| 15233 | 0x08, | ||
| 15234 | }; | ||
| 15235 | |||
| 15218 | static hda_nid_t alc662_capsrc_nids[1] = { 0x22 }; | 15236 | static hda_nid_t alc662_capsrc_nids[1] = { 0x22 }; |
| 15237 | static hda_nid_t alc272_capsrc_nids[1] = { 0x23 }; | ||
| 15238 | |||
| 15219 | 15239 | ||
| 15220 | /* input MUX */ | 15240 | /* input MUX */ |
| 15221 | /* FIXME: should be a matrix-type input source selection */ | 15241 | /* FIXME: should be a matrix-type input source selection */ |
| @@ -15836,12 +15856,48 @@ static struct hda_verb alc662_ecs_init_verbs[] = { | |||
| 15836 | {} | 15856 | {} |
| 15837 | }; | 15857 | }; |
| 15838 | 15858 | ||
| 15859 | static struct hda_verb alc272_dell_zm1_init_verbs[] = { | ||
| 15860 | {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
| 15861 | {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
| 15862 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
| 15863 | {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
| 15864 | {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | ||
| 15865 | {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
| 15866 | {0x21, AC_VERB_SET_CONNECT_SEL, 0x01}, /* Headphone */ | ||
| 15867 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
| 15868 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(9)}, | ||
| 15869 | {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT}, | ||
| 15870 | {0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT}, | ||
| 15871 | {} | ||
| 15872 | }; | ||
| 15873 | |||
| 15874 | static struct hda_verb alc272_dell_init_verbs[] = { | ||
| 15875 | {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
| 15876 | {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
| 15877 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
| 15878 | {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
| 15879 | {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | ||
| 15880 | {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
| 15881 | {0x21, AC_VERB_SET_CONNECT_SEL, 0x01}, /* Headphone */ | ||
| 15882 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
| 15883 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(9)}, | ||
| 15884 | {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT}, | ||
| 15885 | {0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT}, | ||
| 15886 | {} | ||
| 15887 | }; | ||
| 15888 | |||
| 15839 | static struct snd_kcontrol_new alc662_auto_capture_mixer[] = { | 15889 | static struct snd_kcontrol_new alc662_auto_capture_mixer[] = { |
| 15840 | HDA_CODEC_VOLUME("Capture Volume", 0x09, 0x0, HDA_INPUT), | 15890 | HDA_CODEC_VOLUME("Capture Volume", 0x09, 0x0, HDA_INPUT), |
| 15841 | HDA_CODEC_MUTE("Capture Switch", 0x09, 0x0, HDA_INPUT), | 15891 | HDA_CODEC_MUTE("Capture Switch", 0x09, 0x0, HDA_INPUT), |
| 15842 | { } /* end */ | 15892 | { } /* end */ |
| 15843 | }; | 15893 | }; |
| 15844 | 15894 | ||
| 15895 | static struct snd_kcontrol_new alc272_auto_capture_mixer[] = { | ||
| 15896 | HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), | ||
| 15897 | HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), | ||
| 15898 | { } /* end */ | ||
| 15899 | }; | ||
| 15900 | |||
| 15845 | static void alc662_lenovo_101e_ispeaker_automute(struct hda_codec *codec) | 15901 | static void alc662_lenovo_101e_ispeaker_automute(struct hda_codec *codec) |
| 15846 | { | 15902 | { |
| 15847 | unsigned int present; | 15903 | unsigned int present; |
| @@ -16353,6 +16409,8 @@ static const char *alc662_models[ALC662_MODEL_LAST] = { | |||
| 16353 | 16409 | ||
| 16354 | static struct snd_pci_quirk alc662_cfg_tbl[] = { | 16410 | static struct snd_pci_quirk alc662_cfg_tbl[] = { |
| 16355 | SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_ECS), | 16411 | SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_ECS), |
| 16412 | SND_PCI_QUIRK(0x1028, 0x02d6, "DELL", ALC272_DELL), | ||
| 16413 | SND_PCI_QUIRK(0x1028, 0x02f4, "DELL ZM1", ALC272_DELL_ZM1), | ||
| 16356 | SND_PCI_QUIRK(0x1043, 0x1000, "ASUS N50Vm", ALC663_ASUS_MODE1), | 16414 | SND_PCI_QUIRK(0x1043, 0x1000, "ASUS N50Vm", ALC663_ASUS_MODE1), |
| 16357 | SND_PCI_QUIRK(0x1043, 0x1092, "ASUS NB", ALC663_ASUS_MODE3), | 16415 | SND_PCI_QUIRK(0x1043, 0x1092, "ASUS NB", ALC663_ASUS_MODE3), |
| 16358 | SND_PCI_QUIRK(0x1043, 0x11c3, "ASUS M70V", ALC663_ASUS_MODE3), | 16416 | SND_PCI_QUIRK(0x1043, 0x11c3, "ASUS M70V", ALC663_ASUS_MODE3), |
| @@ -16365,26 +16423,36 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = { | |||
| 16365 | SND_PCI_QUIRK(0x1043, 0x1763, "ASUS NB", ALC663_ASUS_MODE6), | 16423 | SND_PCI_QUIRK(0x1043, 0x1763, "ASUS NB", ALC663_ASUS_MODE6), |
| 16366 | SND_PCI_QUIRK(0x1043, 0x1765, "ASUS NB", ALC663_ASUS_MODE6), | 16424 | SND_PCI_QUIRK(0x1043, 0x1765, "ASUS NB", ALC663_ASUS_MODE6), |
| 16367 | SND_PCI_QUIRK(0x1043, 0x1783, "ASUS NB", ALC662_ASUS_MODE2), | 16425 | SND_PCI_QUIRK(0x1043, 0x1783, "ASUS NB", ALC662_ASUS_MODE2), |
| 16426 | SND_PCI_QUIRK(0x1043, 0x17b3, "ASUS F70SL", ALC663_ASUS_MODE3), | ||
| 16427 | SND_PCI_QUIRK(0x1043, 0x17c3, "ASUS UX20", ALC663_ASUS_M51VA), | ||
| 16428 | SND_PCI_QUIRK(0x1043, 0x17f3, "ASUS X58LE", ALC662_ASUS_MODE2), | ||
| 16368 | SND_PCI_QUIRK(0x1043, 0x1813, "ASUS NB", ALC662_ASUS_MODE2), | 16429 | SND_PCI_QUIRK(0x1043, 0x1813, "ASUS NB", ALC662_ASUS_MODE2), |
| 16369 | SND_PCI_QUIRK(0x1043, 0x1823, "ASUS NB", ALC663_ASUS_MODE5), | 16430 | SND_PCI_QUIRK(0x1043, 0x1823, "ASUS NB", ALC663_ASUS_MODE5), |
| 16370 | SND_PCI_QUIRK(0x1043, 0x1833, "ASUS NB", ALC663_ASUS_MODE6), | 16431 | SND_PCI_QUIRK(0x1043, 0x1833, "ASUS NB", ALC663_ASUS_MODE6), |
| 16371 | SND_PCI_QUIRK(0x1043, 0x1843, "ASUS NB", ALC662_ASUS_MODE2), | 16432 | SND_PCI_QUIRK(0x1043, 0x1843, "ASUS NB", ALC662_ASUS_MODE2), |
| 16433 | SND_PCI_QUIRK(0x1043, 0x1853, "ASUS F50Z", ALC663_ASUS_MODE1), | ||
| 16372 | SND_PCI_QUIRK(0x1043, 0x1864, "ASUS NB", ALC662_ASUS_MODE2), | 16434 | SND_PCI_QUIRK(0x1043, 0x1864, "ASUS NB", ALC662_ASUS_MODE2), |
| 16373 | SND_PCI_QUIRK(0x1043, 0x1876, "ASUS NB", ALC662_ASUS_MODE2), | 16435 | SND_PCI_QUIRK(0x1043, 0x1876, "ASUS NB", ALC662_ASUS_MODE2), |
| 16374 | SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M51VA", ALC663_ASUS_M51VA), | 16436 | SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M51VA", ALC663_ASUS_M51VA), |
| 16375 | /*SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M50Vr", ALC663_ASUS_MODE1),*/ | 16437 | /*SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M50Vr", ALC663_ASUS_MODE1),*/ |
| 16376 | SND_PCI_QUIRK(0x1043, 0x1893, "ASUS M50Vm", ALC663_ASUS_MODE3), | 16438 | SND_PCI_QUIRK(0x1043, 0x1893, "ASUS M50Vm", ALC663_ASUS_MODE3), |
| 16377 | SND_PCI_QUIRK(0x1043, 0x1894, "ASUS X55", ALC663_ASUS_MODE3), | 16439 | SND_PCI_QUIRK(0x1043, 0x1894, "ASUS X55", ALC663_ASUS_MODE3), |
| 16440 | SND_PCI_QUIRK(0x1043, 0x18b3, "ASUS N80Vc", ALC663_ASUS_MODE1), | ||
| 16441 | SND_PCI_QUIRK(0x1043, 0x18d3, "ASUS N81Te", ALC663_ASUS_MODE1), | ||
| 16442 | SND_PCI_QUIRK(0x1043, 0x18f3, "ASUS N505Tp", ALC663_ASUS_MODE1), | ||
| 16378 | SND_PCI_QUIRK(0x1043, 0x1903, "ASUS F5GL", ALC663_ASUS_MODE1), | 16443 | SND_PCI_QUIRK(0x1043, 0x1903, "ASUS F5GL", ALC663_ASUS_MODE1), |
| 16379 | SND_PCI_QUIRK(0x1043, 0x1913, "ASUS NB", ALC662_ASUS_MODE2), | 16444 | SND_PCI_QUIRK(0x1043, 0x1913, "ASUS NB", ALC662_ASUS_MODE2), |
| 16380 | SND_PCI_QUIRK(0x1043, 0x1933, "ASUS F80Q", ALC662_ASUS_MODE2), | 16445 | SND_PCI_QUIRK(0x1043, 0x1933, "ASUS F80Q", ALC662_ASUS_MODE2), |
| 16446 | SND_PCI_QUIRK(0x1043, 0x1943, "ASUS Vx3V", ALC663_ASUS_MODE1), | ||
| 16381 | SND_PCI_QUIRK(0x1043, 0x1953, "ASUS NB", ALC663_ASUS_MODE1), | 16447 | SND_PCI_QUIRK(0x1043, 0x1953, "ASUS NB", ALC663_ASUS_MODE1), |
| 16382 | SND_PCI_QUIRK(0x1043, 0x1963, "ASUS X71C", ALC663_ASUS_MODE3), | 16448 | SND_PCI_QUIRK(0x1043, 0x1963, "ASUS X71C", ALC663_ASUS_MODE3), |
| 16449 | SND_PCI_QUIRK(0x1043, 0x1983, "ASUS N5051A", ALC663_ASUS_MODE1), | ||
| 16383 | SND_PCI_QUIRK(0x1043, 0x1993, "ASUS N20", ALC663_ASUS_MODE1), | 16450 | SND_PCI_QUIRK(0x1043, 0x1993, "ASUS N20", ALC663_ASUS_MODE1), |
| 16384 | SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS G50V", ALC663_ASUS_G50V), | 16451 | SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS G50V", ALC663_ASUS_G50V), |
| 16385 | /*SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS NB", ALC663_ASUS_MODE1),*/ | 16452 | /*SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS NB", ALC663_ASUS_MODE1),*/ |
| 16386 | SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS F7Z", ALC663_ASUS_MODE1), | 16453 | SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS F7Z", ALC663_ASUS_MODE1), |
| 16387 | SND_PCI_QUIRK(0x1043, 0x19c3, "ASUS F5Z/F6x", ALC662_ASUS_MODE2), | 16454 | SND_PCI_QUIRK(0x1043, 0x19c3, "ASUS F5Z/F6x", ALC662_ASUS_MODE2), |
| 16455 | SND_PCI_QUIRK(0x1043, 0x19d3, "ASUS NB", ALC663_ASUS_M51VA), | ||
| 16388 | SND_PCI_QUIRK(0x1043, 0x19e3, "ASUS NB", ALC663_ASUS_MODE1), | 16456 | SND_PCI_QUIRK(0x1043, 0x19e3, "ASUS NB", ALC663_ASUS_MODE1), |
| 16389 | SND_PCI_QUIRK(0x1043, 0x19f3, "ASUS NB", ALC663_ASUS_MODE4), | 16457 | SND_PCI_QUIRK(0x1043, 0x19f3, "ASUS NB", ALC663_ASUS_MODE4), |
| 16390 | SND_PCI_QUIRK(0x1043, 0x8290, "ASUS P5GC-MX", ALC662_3ST_6ch_DIG), | 16458 | SND_PCI_QUIRK(0x1043, 0x8290, "ASUS P5GC-MX", ALC662_3ST_6ch_DIG), |
| @@ -16633,6 +16701,36 @@ static struct alc_config_preset alc662_presets[] = { | |||
| 16633 | .unsol_event = alc663_mode6_unsol_event, | 16701 | .unsol_event = alc663_mode6_unsol_event, |
| 16634 | .init_hook = alc663_mode6_inithook, | 16702 | .init_hook = alc663_mode6_inithook, |
| 16635 | }, | 16703 | }, |
| 16704 | [ALC272_DELL] = { | ||
| 16705 | .mixers = { alc663_m51va_mixer }, | ||
| 16706 | .cap_mixer = alc272_auto_capture_mixer, | ||
| 16707 | .init_verbs = { alc662_init_verbs, alc272_dell_init_verbs }, | ||
| 16708 | .num_dacs = ARRAY_SIZE(alc272_dac_nids), | ||
| 16709 | .dac_nids = alc662_dac_nids, | ||
| 16710 | .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), | ||
| 16711 | .adc_nids = alc272_adc_nids, | ||
| 16712 | .num_adc_nids = ARRAY_SIZE(alc272_adc_nids), | ||
| 16713 | .capsrc_nids = alc272_capsrc_nids, | ||
| 16714 | .channel_mode = alc662_3ST_2ch_modes, | ||
| 16715 | .input_mux = &alc663_m51va_capture_source, | ||
| 16716 | .unsol_event = alc663_m51va_unsol_event, | ||
| 16717 | .init_hook = alc663_m51va_inithook, | ||
| 16718 | }, | ||
| 16719 | [ALC272_DELL_ZM1] = { | ||
| 16720 | .mixers = { alc663_m51va_mixer }, | ||
| 16721 | .cap_mixer = alc662_auto_capture_mixer, | ||
| 16722 | .init_verbs = { alc662_init_verbs, alc272_dell_zm1_init_verbs }, | ||
| 16723 | .num_dacs = ARRAY_SIZE(alc272_dac_nids), | ||
| 16724 | .dac_nids = alc662_dac_nids, | ||
| 16725 | .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), | ||
| 16726 | .adc_nids = alc662_adc_nids, | ||
| 16727 | .num_adc_nids = ARRAY_SIZE(alc662_adc_nids), | ||
| 16728 | .capsrc_nids = alc662_capsrc_nids, | ||
| 16729 | .channel_mode = alc662_3ST_2ch_modes, | ||
| 16730 | .input_mux = &alc663_m51va_capture_source, | ||
| 16731 | .unsol_event = alc663_m51va_unsol_event, | ||
| 16732 | .init_hook = alc663_m51va_inithook, | ||
| 16733 | }, | ||
| 16636 | }; | 16734 | }; |
| 16637 | 16735 | ||
| 16638 | 16736 | ||
