diff options
author | Jaroslav Kysela <perex@perex.cz> | 2009-07-23 04:58:29 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-07-23 05:25:42 -0400 |
commit | 87a8c3702e40028468a2d0ef6dab7627dab60c86 (patch) | |
tree | e4696d7f5268722718881effc85f0bbb9d733407 /sound/pci/hda/patch_realtek.c | |
parent | 16a433d8b38720a816736d59a62e705c19e31600 (diff) |
ALSA: hda - Add better Intel IbexPeak platform support
Here are the new sound enabling patches for IbexPeak.
Summary of tested features:
- playback
- Front Headphone: OK
- 8 channel audio: Front/Rear/CLFE/Side all OK
- recording
- Front Mic/Rear Mic: both OK
(front/rear/line mics are selectable in the "Input source" alsamixer control)
- Line In: not working
(in 6ch mode, its amp/mute, direction and route all looks fine,
so I'm a little puzzled)
(hopefully no one will care this feature)
- digital SPDIF input/output: not tested (no equipment)
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 232 |
1 files changed, 222 insertions, 10 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 728f2a72f9b6..b5b36b893b1e 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -235,6 +235,8 @@ enum { | |||
235 | ALC883_FUJITSU_PI2515, | 235 | ALC883_FUJITSU_PI2515, |
236 | ALC888_FUJITSU_XA3530, | 236 | ALC888_FUJITSU_XA3530, |
237 | ALC883_3ST_6ch_INTEL, | 237 | ALC883_3ST_6ch_INTEL, |
238 | ALC889A_INTEL, | ||
239 | ALC889_INTEL, | ||
238 | ALC888_ASUS_M90V, | 240 | ALC888_ASUS_M90V, |
239 | ALC888_ASUS_EEE1601, | 241 | ALC888_ASUS_EEE1601, |
240 | ALC889A_MB31, | 242 | ALC889A_MB31, |
@@ -1027,6 +1029,16 @@ static void alc888_coef_init(struct hda_codec *codec) | |||
1027 | AC_VERB_SET_PROC_COEF, 0x3030); | 1029 | AC_VERB_SET_PROC_COEF, 0x3030); |
1028 | } | 1030 | } |
1029 | 1031 | ||
1032 | static void alc889_coef_init(struct hda_codec *codec) | ||
1033 | { | ||
1034 | unsigned int tmp; | ||
1035 | |||
1036 | snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_COEF_INDEX, 7); | ||
1037 | tmp = snd_hda_codec_read(codec, 0x20, 0, AC_VERB_GET_PROC_COEF, 0); | ||
1038 | snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_COEF_INDEX, 7); | ||
1039 | snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, tmp|0x2010); | ||
1040 | } | ||
1041 | |||
1030 | static void alc_auto_init_amp(struct hda_codec *codec, int type) | 1042 | static void alc_auto_init_amp(struct hda_codec *codec, int type) |
1031 | { | 1043 | { |
1032 | unsigned int tmp; | 1044 | unsigned int tmp; |
@@ -1084,15 +1096,7 @@ static void alc_auto_init_amp(struct hda_codec *codec, int type) | |||
1084 | case 0x10ec0885: | 1096 | case 0x10ec0885: |
1085 | case 0x10ec0887: | 1097 | case 0x10ec0887: |
1086 | case 0x10ec0889: | 1098 | case 0x10ec0889: |
1087 | snd_hda_codec_write(codec, 0x20, 0, | 1099 | alc889_coef_init(codec); |
1088 | AC_VERB_SET_COEF_INDEX, 7); | ||
1089 | tmp = snd_hda_codec_read(codec, 0x20, 0, | ||
1090 | AC_VERB_GET_PROC_COEF, 0); | ||
1091 | snd_hda_codec_write(codec, 0x20, 0, | ||
1092 | AC_VERB_SET_COEF_INDEX, 7); | ||
1093 | snd_hda_codec_write(codec, 0x20, 0, | ||
1094 | AC_VERB_SET_PROC_COEF, | ||
1095 | tmp | 0x2010); | ||
1096 | break; | 1100 | break; |
1097 | case 0x10ec0888: | 1101 | case 0x10ec0888: |
1098 | alc888_coef_init(codec); | 1102 | alc888_coef_init(codec); |
@@ -6348,6 +6352,15 @@ static struct hda_input_mux alc882_capture_source = { | |||
6348 | 6352 | ||
6349 | #define alc883_capture_source alc882_capture_source | 6353 | #define alc883_capture_source alc882_capture_source |
6350 | 6354 | ||
6355 | static struct hda_input_mux alc889_capture_source = { | ||
6356 | .num_items = 3, | ||
6357 | .items = { | ||
6358 | { "Front Mic", 0x0 }, | ||
6359 | { "Mic", 0x3 }, | ||
6360 | { "Line", 0x2 }, | ||
6361 | }, | ||
6362 | }; | ||
6363 | |||
6351 | static struct hda_input_mux mb5_capture_source = { | 6364 | static struct hda_input_mux mb5_capture_source = { |
6352 | .num_items = 3, | 6365 | .num_items = 3, |
6353 | .items = { | 6366 | .items = { |
@@ -6671,6 +6684,46 @@ static struct hda_channel_mode alc883_3ST_6ch_intel_modes[3] = { | |||
6671 | /* | 6684 | /* |
6672 | * 6ch mode | 6685 | * 6ch mode |
6673 | */ | 6686 | */ |
6687 | static struct hda_verb alc889_ch6_intel_init[] = { | ||
6688 | { 0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | ||
6689 | { 0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, | ||
6690 | { 0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | ||
6691 | { 0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, | ||
6692 | { 0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | ||
6693 | { 0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, | ||
6694 | { 0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | ||
6695 | { 0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, | ||
6696 | { 0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80 }, | ||
6697 | { 0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE }, | ||
6698 | { } /* end */ | ||
6699 | }; | ||
6700 | |||
6701 | /* | ||
6702 | * 8ch mode | ||
6703 | */ | ||
6704 | static struct hda_verb alc889_ch8_intel_init[] = { | ||
6705 | { 0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | ||
6706 | { 0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, | ||
6707 | { 0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | ||
6708 | { 0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, | ||
6709 | { 0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | ||
6710 | { 0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, | ||
6711 | { 0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | ||
6712 | { 0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, | ||
6713 | { 0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | ||
6714 | { 0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, | ||
6715 | { 0x1a, AC_VERB_SET_CONNECT_SEL, 0x03 }, | ||
6716 | { } /* end */ | ||
6717 | }; | ||
6718 | |||
6719 | static struct hda_channel_mode alc889_8ch_intel_modes[2] = { | ||
6720 | { 6, alc889_ch6_intel_init }, | ||
6721 | { 8, alc889_ch8_intel_init }, | ||
6722 | }; | ||
6723 | |||
6724 | /* | ||
6725 | * 6ch mode | ||
6726 | */ | ||
6674 | static struct hda_verb alc883_sixstack_ch6_init[] = { | 6727 | static struct hda_verb alc883_sixstack_ch6_init[] = { |
6675 | { 0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 }, | 6728 | { 0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 }, |
6676 | { 0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | 6729 | { 0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, |
@@ -6929,6 +6982,103 @@ static struct hda_verb alc882_eapd_verbs[] = { | |||
6929 | { } | 6982 | { } |
6930 | }; | 6983 | }; |
6931 | 6984 | ||
6985 | static struct hda_verb alc889_eapd_verbs[] = { | ||
6986 | {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2}, | ||
6987 | {0x15, AC_VERB_SET_EAPD_BTLENABLE, 2}, | ||
6988 | { } | ||
6989 | }; | ||
6990 | |||
6991 | |||
6992 | static struct hda_verb alc885_init_verbs[] = { | ||
6993 | /* Front mixer: unmute input/output amp left and right (volume = 0) */ | ||
6994 | {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, | ||
6995 | {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
6996 | {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, | ||
6997 | /* Rear mixer */ | ||
6998 | {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, | ||
6999 | {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
7000 | {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, | ||
7001 | /* CLFE mixer */ | ||
7002 | {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, | ||
7003 | {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
7004 | {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, | ||
7005 | /* Side mixer */ | ||
7006 | {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, | ||
7007 | {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
7008 | {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, | ||
7009 | |||
7010 | /* mute analog input loopbacks */ | ||
7011 | {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
7012 | {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)}, | ||
7013 | {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)}, | ||
7014 | |||
7015 | /* Front HP Pin: output 0 (0x0c) */ | ||
7016 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
7017 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
7018 | {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
7019 | /* Front Pin: output 0 (0x0c) */ | ||
7020 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
7021 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
7022 | {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
7023 | /* Rear Pin: output 1 (0x0d) */ | ||
7024 | {0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
7025 | {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
7026 | {0x19, AC_VERB_SET_CONNECT_SEL, 0x01}, | ||
7027 | /* CLFE Pin: output 2 (0x0e) */ | ||
7028 | {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
7029 | {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
7030 | {0x16, AC_VERB_SET_CONNECT_SEL, 0x02}, | ||
7031 | /* Side Pin: output 3 (0x0f) */ | ||
7032 | {0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
7033 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
7034 | {0x17, AC_VERB_SET_CONNECT_SEL, 0x03}, | ||
7035 | /* Mic (rear) pin: input vref at 80% */ | ||
7036 | {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, | ||
7037 | {0x1b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, | ||
7038 | /* Front Mic pin: input vref at 80% */ | ||
7039 | {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, | ||
7040 | {0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, | ||
7041 | /* Line In pin: input */ | ||
7042 | {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
7043 | {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, | ||
7044 | |||
7045 | /* Mixer elements: 0x18, , 0x1a, 0x1b */ | ||
7046 | /* Input mixer1 */ | ||
7047 | {0x24, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, | ||
7048 | {0x24, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
7049 | {0x24, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)}, | ||
7050 | /* Input mixer2 */ | ||
7051 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
7052 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)}, | ||
7053 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)}, | ||
7054 | /* Input mixer3 */ | ||
7055 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, | ||
7056 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
7057 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)}, | ||
7058 | /* ADC2: mute amp left and right */ | ||
7059 | {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
7060 | /* ADC3: mute amp left and right */ | ||
7061 | {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
7062 | |||
7063 | { } | ||
7064 | }; | ||
7065 | |||
7066 | static struct hda_verb alc885_init_input_verbs[] = { | ||
7067 | {0x24, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
7068 | {0x24, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, | ||
7069 | {0x24, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, | ||
7070 | { } | ||
7071 | }; | ||
7072 | |||
7073 | |||
7074 | /* Unmute Selector 24h and set the default input to front mic */ | ||
7075 | static struct hda_verb alc889_init_input_verbs[] = { | ||
7076 | {0x24, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
7077 | {0x24, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
7078 | { } | ||
7079 | }; | ||
7080 | |||
7081 | |||
6932 | #define alc883_init_verbs alc882_base_init_verbs | 7082 | #define alc883_init_verbs alc882_base_init_verbs |
6933 | 7083 | ||
6934 | /* Mac Pro test */ | 7084 | /* Mac Pro test */ |
@@ -7497,6 +7647,30 @@ static struct snd_kcontrol_new alc883_3ST_6ch_intel_mixer[] = { | |||
7497 | { } /* end */ | 7647 | { } /* end */ |
7498 | }; | 7648 | }; |
7499 | 7649 | ||
7650 | static struct snd_kcontrol_new alc885_8ch_intel_mixer[] = { | ||
7651 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), | ||
7652 | HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), | ||
7653 | HDA_CODEC_VOLUME("Surround Playback Volume", 0x0d, 0x0, HDA_OUTPUT), | ||
7654 | HDA_BIND_MUTE("Surround Playback Switch", 0x0d, 2, HDA_INPUT), | ||
7655 | HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0e, 1, 0x0, | ||
7656 | HDA_OUTPUT), | ||
7657 | HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), | ||
7658 | HDA_BIND_MUTE_MONO("Center Playback Switch", 0x0e, 1, 2, HDA_INPUT), | ||
7659 | HDA_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_INPUT), | ||
7660 | HDA_CODEC_VOLUME("Speaker Playback Volume", 0x0f, 0x0, HDA_OUTPUT), | ||
7661 | HDA_BIND_MUTE("Speaker Playback Switch", 0x0f, 2, HDA_INPUT), | ||
7662 | HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT), | ||
7663 | HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), | ||
7664 | HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), | ||
7665 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x3, HDA_INPUT), | ||
7666 | HDA_CODEC_VOLUME("Mic Boost", 0x1b, 0, HDA_INPUT), | ||
7667 | HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x3, HDA_INPUT), | ||
7668 | HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), | ||
7669 | HDA_CODEC_VOLUME("Front Mic Boost", 0x18, 0, HDA_INPUT), | ||
7670 | HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), | ||
7671 | { } /* end */ | ||
7672 | }; | ||
7673 | |||
7500 | static struct snd_kcontrol_new alc883_fivestack_mixer[] = { | 7674 | static struct snd_kcontrol_new alc883_fivestack_mixer[] = { |
7501 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), | 7675 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), |
7502 | HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), | 7676 | HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), |
@@ -8340,6 +8514,8 @@ static const char *alc882_models[ALC882_MODEL_LAST] = { | |||
8340 | [ALC883_FUJITSU_PI2515] = "fujitsu-pi2515", | 8514 | [ALC883_FUJITSU_PI2515] = "fujitsu-pi2515", |
8341 | [ALC888_FUJITSU_XA3530] = "fujitsu-xa3530", | 8515 | [ALC888_FUJITSU_XA3530] = "fujitsu-xa3530", |
8342 | [ALC883_3ST_6ch_INTEL] = "3stack-6ch-intel", | 8516 | [ALC883_3ST_6ch_INTEL] = "3stack-6ch-intel", |
8517 | [ALC889A_INTEL] = "intel-alc889a", | ||
8518 | [ALC889_INTEL] = "intel-x58", | ||
8343 | [ALC1200_ASUS_P5Q] = "asus-p5q", | 8519 | [ALC1200_ASUS_P5Q] = "asus-p5q", |
8344 | [ALC889A_MB31] = "mb31", | 8520 | [ALC889A_MB31] = "mb31", |
8345 | [ALC883_SONY_VAIO_TT] = "sony-vaio-tt", | 8521 | [ALC883_SONY_VAIO_TT] = "sony-vaio-tt", |
@@ -8459,7 +8635,9 @@ static struct snd_pci_quirk alc882_cfg_tbl[] = { | |||
8459 | SND_PCI_QUIRK(0x8086, 0x0001, "DG33BUC", ALC883_3ST_6ch_INTEL), | 8635 | SND_PCI_QUIRK(0x8086, 0x0001, "DG33BUC", ALC883_3ST_6ch_INTEL), |
8460 | SND_PCI_QUIRK(0x8086, 0x0002, "DG33FBC", ALC883_3ST_6ch_INTEL), | 8636 | SND_PCI_QUIRK(0x8086, 0x0002, "DG33FBC", ALC883_3ST_6ch_INTEL), |
8461 | SND_PCI_QUIRK(0x8086, 0x2503, "82801H", ALC883_MITAC), | 8637 | SND_PCI_QUIRK(0x8086, 0x2503, "82801H", ALC883_MITAC), |
8462 | SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC883_3ST_6ch_INTEL), | 8638 | SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC889_INTEL), |
8639 | SND_PCI_QUIRK(0x8086, 0x0021, "Intel IbexPeak", ALC889A_INTEL), | ||
8640 | SND_PCI_QUIRK(0x8086, 0x3b56, "Intel IbexPeak", ALC889A_INTEL), | ||
8463 | SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch), | 8641 | SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch), |
8464 | 8642 | ||
8465 | {} | 8643 | {} |
@@ -8675,6 +8853,40 @@ static struct alc_config_preset alc882_presets[] = { | |||
8675 | .need_dac_fix = 1, | 8853 | .need_dac_fix = 1, |
8676 | .input_mux = &alc883_3stack_6ch_intel, | 8854 | .input_mux = &alc883_3stack_6ch_intel, |
8677 | }, | 8855 | }, |
8856 | [ALC889A_INTEL] = { | ||
8857 | .mixers = { alc885_8ch_intel_mixer, alc883_chmode_mixer }, | ||
8858 | .init_verbs = { alc885_init_verbs, alc885_init_input_verbs }, | ||
8859 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), | ||
8860 | .dac_nids = alc883_dac_nids, | ||
8861 | .num_adc_nids = ARRAY_SIZE(alc889_adc_nids), | ||
8862 | .adc_nids = alc889_adc_nids, | ||
8863 | .dig_out_nid = ALC883_DIGOUT_NID, | ||
8864 | .dig_in_nid = ALC883_DIGIN_NID, | ||
8865 | .slave_dig_outs = alc883_slave_dig_outs, | ||
8866 | .num_channel_mode = ARRAY_SIZE(alc889_8ch_intel_modes), | ||
8867 | .channel_mode = alc889_8ch_intel_modes, | ||
8868 | .capsrc_nids = alc889_capsrc_nids, | ||
8869 | .input_mux = &alc889_capture_source, | ||
8870 | .need_dac_fix = 1, | ||
8871 | }, | ||
8872 | [ALC889_INTEL] = { | ||
8873 | .mixers = { alc885_8ch_intel_mixer, alc883_chmode_mixer }, | ||
8874 | .init_verbs = { alc885_init_verbs, alc889_init_input_verbs, | ||
8875 | alc889_eapd_verbs }, | ||
8876 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), | ||
8877 | .dac_nids = alc883_dac_nids, | ||
8878 | .num_adc_nids = ARRAY_SIZE(alc889_adc_nids), | ||
8879 | .adc_nids = alc889_adc_nids, | ||
8880 | .dig_out_nid = ALC883_DIGOUT_NID, | ||
8881 | .dig_in_nid = ALC883_DIGIN_NID, | ||
8882 | .slave_dig_outs = alc883_slave_dig_outs, | ||
8883 | .num_channel_mode = ARRAY_SIZE(alc889_8ch_intel_modes), | ||
8884 | .channel_mode = alc889_8ch_intel_modes, | ||
8885 | .capsrc_nids = alc889_capsrc_nids, | ||
8886 | .input_mux = &alc889_capture_source, | ||
8887 | .init_hook = alc889_coef_init, | ||
8888 | .need_dac_fix = 1, | ||
8889 | }, | ||
8678 | [ALC883_6ST_DIG] = { | 8890 | [ALC883_6ST_DIG] = { |
8679 | .mixers = { alc883_base_mixer, alc883_chmode_mixer }, | 8891 | .mixers = { alc883_base_mixer, alc883_chmode_mixer }, |
8680 | .init_verbs = { alc883_init_verbs }, | 8892 | .init_verbs = { alc883_init_verbs }, |