aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_realtek.c
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2009-07-23 04:58:29 -0400
committerTakashi Iwai <tiwai@suse.de>2009-07-23 05:25:42 -0400
commit87a8c3702e40028468a2d0ef6dab7627dab60c86 (patch)
treee4696d7f5268722718881effc85f0bbb9d733407 /sound/pci/hda/patch_realtek.c
parent16a433d8b38720a816736d59a62e705c19e31600 (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.c232
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
1032static 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
1030static void alc_auto_init_amp(struct hda_codec *codec, int type) 1042static 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
6355static 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
6351static struct hda_input_mux mb5_capture_source = { 6364static 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 */
6687static 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 */
6704static 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
6719static 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 */
6674static struct hda_verb alc883_sixstack_ch6_init[] = { 6727static 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
6985static 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
6992static 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
7066static 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 */
7075static 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
7650static 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
7500static struct snd_kcontrol_new alc883_fivestack_mixer[] = { 7674static 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 },