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.c176
1 files changed, 88 insertions, 88 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index f2049365e23c..3e594b2e1930 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -201,12 +201,12 @@ enum {
201 ALC883_ACER, 201 ALC883_ACER,
202 ALC883_ACER_ASPIRE, 202 ALC883_ACER_ASPIRE,
203 ALC883_MEDION, 203 ALC883_MEDION,
204 ALC883_MEDION_MD2, 204 ALC883_MEDION_MD2,
205 ALC883_LAPTOP_EAPD, 205 ALC883_LAPTOP_EAPD,
206 ALC883_LENOVO_101E_2ch, 206 ALC883_LENOVO_101E_2ch,
207 ALC883_LENOVO_NB0763, 207 ALC883_LENOVO_NB0763,
208 ALC888_LENOVO_MS7195_DIG, 208 ALC888_LENOVO_MS7195_DIG,
209 ALC883_HAIER_W66, 209 ALC883_HAIER_W66,
210 ALC888_3ST_HP, 210 ALC888_3ST_HP,
211 ALC888_6ST_DELL, 211 ALC888_6ST_DELL,
212 ALC883_MITAC, 212 ALC883_MITAC,
@@ -399,7 +399,7 @@ static int alc_ch_mode_put(struct snd_kcontrol *kcontrol,
399 399
400/* 400/*
401 * Control the mode of pin widget settings via the mixer. "pc" is used 401 * Control the mode of pin widget settings via the mixer. "pc" is used
402 * instead of "%" to avoid consequences of accidently treating the % as 402 * instead of "%" to avoid consequences of accidently treating the % as
403 * being part of a format specifier. Maximum allowed length of a value is 403 * being part of a format specifier. Maximum allowed length of a value is
404 * 63 characters plus NULL terminator. 404 * 63 characters plus NULL terminator.
405 * 405 *
@@ -430,7 +430,7 @@ static unsigned char alc_pin_mode_values[] = {
430#define ALC_PIN_DIR_IN_NOMICBIAS 0x03 430#define ALC_PIN_DIR_IN_NOMICBIAS 0x03
431#define ALC_PIN_DIR_INOUT_NOMICBIAS 0x04 431#define ALC_PIN_DIR_INOUT_NOMICBIAS 0x04
432 432
433/* Info about the pin modes supported by the different pin direction modes. 433/* Info about the pin modes supported by the different pin direction modes.
434 * For each direction the minimum and maximum values are given. 434 * For each direction the minimum and maximum values are given.
435 */ 435 */
436static signed char alc_pin_mode_dir_info[5][2] = { 436static signed char alc_pin_mode_dir_info[5][2] = {
@@ -503,7 +503,7 @@ static int alc_pin_mode_put(struct snd_kcontrol *kcontrol,
503 AC_VERB_SET_PIN_WIDGET_CONTROL, 503 AC_VERB_SET_PIN_WIDGET_CONTROL,
504 alc_pin_mode_values[val]); 504 alc_pin_mode_values[val]);
505 505
506 /* Also enable the retasking pin's input/output as required 506 /* Also enable the retasking pin's input/output as required
507 * for the requested pin mode. Enum values of 2 or less are 507 * for the requested pin mode. Enum values of 2 or less are
508 * input modes. 508 * input modes.
509 * 509 *
@@ -708,7 +708,7 @@ static void setup_preset(struct alc_spec *spec,
708 i++) 708 i++)
709 spec->init_verbs[spec->num_init_verbs++] = 709 spec->init_verbs[spec->num_init_verbs++] =
710 preset->init_verbs[i]; 710 preset->init_verbs[i];
711 711
712 spec->channel_mode = preset->channel_mode; 712 spec->channel_mode = preset->channel_mode;
713 spec->num_channel_mode = preset->num_channel_mode; 713 spec->num_channel_mode = preset->num_channel_mode;
714 spec->need_dac_fix = preset->need_dac_fix; 714 spec->need_dac_fix = preset->need_dac_fix;
@@ -719,7 +719,7 @@ static void setup_preset(struct alc_spec *spec,
719 spec->multiout.dac_nids = preset->dac_nids; 719 spec->multiout.dac_nids = preset->dac_nids;
720 spec->multiout.dig_out_nid = preset->dig_out_nid; 720 spec->multiout.dig_out_nid = preset->dig_out_nid;
721 spec->multiout.hp_nid = preset->hp_nid; 721 spec->multiout.hp_nid = preset->hp_nid;
722 722
723 spec->num_mux_defs = preset->num_mux_defs; 723 spec->num_mux_defs = preset->num_mux_defs;
724 if (!spec->num_mux_defs) 724 if (!spec->num_mux_defs)
725 spec->num_mux_defs = 1; 725 spec->num_mux_defs = 1;
@@ -856,7 +856,7 @@ static void alc_subsystem_id(struct hda_codec *codec,
856 if ((ass != codec->bus->pci->subsystem_device) && (ass & 1)) 856 if ((ass != codec->bus->pci->subsystem_device) && (ass & 1))
857 goto do_sku; 857 goto do_sku;
858 858
859 /* 859 /*
860 * 31~30 : port conetcivity 860 * 31~30 : port conetcivity
861 * 29~21 : reserve 861 * 29~21 : reserve
862 * 20 : PCBEEP input 862 * 20 : PCBEEP input
@@ -947,7 +947,7 @@ do_sku:
947 tmp = snd_hda_codec_read(codec, 0x20, 0, 947 tmp = snd_hda_codec_read(codec, 0x20, 0,
948 AC_VERB_GET_PROC_COEF, 0); 948 AC_VERB_GET_PROC_COEF, 0);
949 snd_hda_codec_write(codec, 0x20, 0, 949 snd_hda_codec_write(codec, 0x20, 0,
950 AC_VERB_SET_COEF_INDEX, 7); 950 AC_VERB_SET_COEF_INDEX, 7);
951 snd_hda_codec_write(codec, 0x20, 0, 951 snd_hda_codec_write(codec, 0x20, 0,
952 AC_VERB_SET_PROC_COEF, 952 AC_VERB_SET_PROC_COEF,
953 tmp | 0x2010); 953 tmp | 0x2010);
@@ -962,7 +962,7 @@ do_sku:
962 tmp = snd_hda_codec_read(codec, 0x20, 0, 962 tmp = snd_hda_codec_read(codec, 0x20, 0,
963 AC_VERB_GET_PROC_COEF, 0); 963 AC_VERB_GET_PROC_COEF, 0);
964 snd_hda_codec_write(codec, 0x20, 0, 964 snd_hda_codec_write(codec, 0x20, 0,
965 AC_VERB_SET_COEF_INDEX, 7); 965 AC_VERB_SET_COEF_INDEX, 7);
966 snd_hda_codec_write(codec, 0x20, 0, 966 snd_hda_codec_write(codec, 0x20, 0,
967 AC_VERB_SET_PROC_COEF, 967 AC_VERB_SET_PROC_COEF,
968 tmp | 0x3000); 968 tmp | 0x3000);
@@ -971,7 +971,7 @@ do_sku:
971 default: 971 default:
972 break; 972 break;
973 } 973 }
974 974
975 /* is laptop or Desktop and enable the function "Mute internal speaker 975 /* is laptop or Desktop and enable the function "Mute internal speaker
976 * when the external headphone out jack is plugged" 976 * when the external headphone out jack is plugged"
977 */ 977 */
@@ -1007,6 +1007,7 @@ do_sku:
1007 snd_hda_codec_write(codec, spec->autocfg.hp_pins[0], 0, 1007 snd_hda_codec_write(codec, spec->autocfg.hp_pins[0], 0,
1008 AC_VERB_SET_UNSOLICITED_ENABLE, 1008 AC_VERB_SET_UNSOLICITED_ENABLE,
1009 AC_USRSP_EN | ALC880_HP_EVENT); 1009 AC_USRSP_EN | ALC880_HP_EVENT);
1010
1010 spec->unsol_event = alc_sku_unsol_event; 1011 spec->unsol_event = alc_sku_unsol_event;
1011} 1012}
1012 1013
@@ -1297,7 +1298,7 @@ static struct snd_kcontrol_new alc880_six_stack_mixer[] = {
1297 * 1298 *
1298 * The system also has a pair of internal speakers, and a headphone jack. 1299 * The system also has a pair of internal speakers, and a headphone jack.
1299 * These are both connected to Line2 on the codec, hence to DAC 02. 1300 * These are both connected to Line2 on the codec, hence to DAC 02.
1300 * 1301 *
1301 * There is a variable resistor to control the speaker or headphone 1302 * There is a variable resistor to control the speaker or headphone
1302 * volume. This is a hardware-only device without a software API. 1303 * volume. This is a hardware-only device without a software API.
1303 * 1304 *
@@ -1825,7 +1826,7 @@ static struct hda_verb alc880_pin_6stack_init_verbs[] = {
1825 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, 1826 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
1826 {0x1b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 1827 {0x1b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
1827 {0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 1828 {0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
1828 1829
1829 { } 1830 { }
1830}; 1831};
1831 1832
@@ -1870,7 +1871,7 @@ static struct hda_verb alc880_uniwill_init_verbs[] = {
1870 1871
1871/* 1872/*
1872* Uniwill P53 1873* Uniwill P53
1873* HP = 0x14, InternalSpeaker = 0x15, mic = 0x19, 1874* HP = 0x14, InternalSpeaker = 0x15, mic = 0x19,
1874 */ 1875 */
1875static struct hda_verb alc880_uniwill_p53_init_verbs[] = { 1876static struct hda_verb alc880_uniwill_p53_init_verbs[] = {
1876 {0x13, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */ 1877 {0x13, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */
@@ -1969,7 +1970,7 @@ static void alc880_uniwill_p53_hp_automute(struct hda_codec *codec)
1969static void alc880_uniwill_p53_dcvol_automute(struct hda_codec *codec) 1970static void alc880_uniwill_p53_dcvol_automute(struct hda_codec *codec)
1970{ 1971{
1971 unsigned int present; 1972 unsigned int present;
1972 1973
1973 present = snd_hda_codec_read(codec, 0x21, 0, 1974 present = snd_hda_codec_read(codec, 0x21, 0,
1974 AC_VERB_GET_VOLUME_KNOB_CONTROL, 0); 1975 AC_VERB_GET_VOLUME_KNOB_CONTROL, 0);
1975 present &= HDA_AMP_VOLMASK; 1976 present &= HDA_AMP_VOLMASK;
@@ -2051,7 +2052,7 @@ static struct hda_verb alc880_pin_asus_init_verbs[] = {
2051 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 2052 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
2052 {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 2053 {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2053 {0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 2054 {0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
2054 2055
2055 { } 2056 { }
2056}; 2057};
2057 2058
@@ -3688,7 +3689,7 @@ static void alc880_auto_init_multi_out(struct hda_codec *codec)
3688{ 3689{
3689 struct alc_spec *spec = codec->spec; 3690 struct alc_spec *spec = codec->spec;
3690 int i; 3691 int i;
3691 3692
3692 alc_subsystem_id(codec, 0x15, 0x1b, 0x14); 3693 alc_subsystem_id(codec, 0x15, 0x1b, 0x14);
3693 for (i = 0; i < spec->autocfg.line_outs; i++) { 3694 for (i = 0; i < spec->autocfg.line_outs; i++) {
3694 hda_nid_t nid = spec->autocfg.line_out_pins[i]; 3695 hda_nid_t nid = spec->autocfg.line_out_pins[i];
@@ -4483,7 +4484,7 @@ static struct hda_verb alc260_fujitsu_init_verbs[] = {
4483 {0x03, AC_VERB_SET_DIGI_CONVERT_1, 0}, 4484 {0x03, AC_VERB_SET_DIGI_CONVERT_1, 0},
4484 {0x06, AC_VERB_SET_DIGI_CONVERT_1, 0}, 4485 {0x06, AC_VERB_SET_DIGI_CONVERT_1, 0},
4485 4486
4486 /* Ensure Line1 pin widget takes its input from the OUT1 sum bus 4487 /* Ensure Line1 pin widget takes its input from the OUT1 sum bus
4487 * when acting as an output. 4488 * when acting as an output.
4488 */ 4489 */
4489 {0x0d, AC_VERB_SET_CONNECT_SEL, 0}, 4490 {0x0d, AC_VERB_SET_CONNECT_SEL, 0},
@@ -4508,14 +4509,14 @@ static struct hda_verb alc260_fujitsu_init_verbs[] = {
4508 * stage. 4509 * stage.
4509 */ 4510 */
4510 {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 4511 {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
4511 /* Unmute input buffer of pin widget used for Line-in (no equiv 4512 /* Unmute input buffer of pin widget used for Line-in (no equiv
4512 * mixer ctrl) 4513 * mixer ctrl)
4513 */ 4514 */
4514 {0x12, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 4515 {0x12, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
4515 4516
4516 /* Mute capture amp left and right */ 4517 /* Mute capture amp left and right */
4517 {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, 4518 {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
4518 /* Set ADC connection select to match default mixer setting - line 4519 /* Set ADC connection select to match default mixer setting - line
4519 * in (on mic1 pin) 4520 * in (on mic1 pin)
4520 */ 4521 */
4521 {0x04, AC_VERB_SET_CONNECT_SEL, 0x00}, 4522 {0x04, AC_VERB_SET_CONNECT_SEL, 0x00},
@@ -4569,7 +4570,7 @@ static struct hda_verb alc260_acer_init_verbs[] = {
4569 {0x03, AC_VERB_SET_DIGI_CONVERT_1, 0}, 4570 {0x03, AC_VERB_SET_DIGI_CONVERT_1, 0},
4570 {0x06, AC_VERB_SET_DIGI_CONVERT_1, 0}, 4571 {0x06, AC_VERB_SET_DIGI_CONVERT_1, 0},
4571 4572
4572 /* Ensure Mic1 and Line1 pin widgets take input from the OUT1 sum 4573 /* Ensure Mic1 and Line1 pin widgets take input from the OUT1 sum
4573 * bus when acting as outputs. 4574 * bus when acting as outputs.
4574 */ 4575 */
4575 {0x0b, AC_VERB_SET_CONNECT_SEL, 0}, 4576 {0x0b, AC_VERB_SET_CONNECT_SEL, 0},
@@ -4691,7 +4692,7 @@ static hda_nid_t alc260_test_adc_nids[2] = {
4691 0x04, 0x05, 4692 0x04, 0x05,
4692}; 4693};
4693/* For testing the ALC260, each input MUX needs its own definition since 4694/* For testing the ALC260, each input MUX needs its own definition since
4694 * the signal assignments are different. This assumes that the first ADC 4695 * the signal assignments are different. This assumes that the first ADC
4695 * is NID 0x04. 4696 * is NID 0x04.
4696 */ 4697 */
4697static struct hda_input_mux alc260_test_capture_sources[2] = { 4698static struct hda_input_mux alc260_test_capture_sources[2] = {
@@ -4774,7 +4775,7 @@ static struct snd_kcontrol_new alc260_test_mixer[] = {
4774 4775
4775 /* Switches to allow the digital IO pins to be enabled. The datasheet 4776 /* Switches to allow the digital IO pins to be enabled. The datasheet
4776 * is ambigious as to which NID is which; testing on laptops which 4777 * is ambigious as to which NID is which; testing on laptops which
4777 * make this output available should provide clarification. 4778 * make this output available should provide clarification.
4778 */ 4779 */
4779 ALC_SPDIF_CTRL_SWITCH("SPDIF Playback Switch", 0x03, 0x01), 4780 ALC_SPDIF_CTRL_SWITCH("SPDIF Playback Switch", 0x03, 0x01),
4780 ALC_SPDIF_CTRL_SWITCH("SPDIF Capture Switch", 0x06, 0x01), 4781 ALC_SPDIF_CTRL_SWITCH("SPDIF Capture Switch", 0x06, 0x01),
@@ -4810,7 +4811,7 @@ static struct hda_verb alc260_test_init_verbs[] = {
4810 {0x03, AC_VERB_SET_DIGI_CONVERT_1, 0}, 4811 {0x03, AC_VERB_SET_DIGI_CONVERT_1, 0},
4811 {0x06, AC_VERB_SET_DIGI_CONVERT_1, 0}, 4812 {0x06, AC_VERB_SET_DIGI_CONVERT_1, 0},
4812 4813
4813 /* Ensure mic1, mic2, line1 and line2 pin widgets take input from the 4814 /* Ensure mic1, mic2, line1 and line2 pin widgets take input from the
4814 * OUT1 sum bus when acting as an output. 4815 * OUT1 sum bus when acting as an output.
4815 */ 4816 */
4816 {0x0b, AC_VERB_SET_CONNECT_SEL, 0}, 4817 {0x0b, AC_VERB_SET_CONNECT_SEL, 0},
@@ -4902,7 +4903,7 @@ static int alc260_add_playback_controls(struct alc_spec *spec, hda_nid_t nid,
4902 sw_val = HDA_COMPOSE_AMP_VAL(nid, 3, 0, HDA_OUTPUT); 4903 sw_val = HDA_COMPOSE_AMP_VAL(nid, 3, 0, HDA_OUTPUT);
4903 } else 4904 } else
4904 return 0; /* N/A */ 4905 return 0; /* N/A */
4905 4906
4906 snprintf(name, sizeof(name), "%s Playback Volume", pfx); 4907 snprintf(name, sizeof(name), "%s Playback Volume", pfx);
4907 err = add_control(spec, ALC_CTL_WIDGET_VOL, name, vol_val); 4908 err = add_control(spec, ALC_CTL_WIDGET_VOL, name, vol_val);
4908 if (err < 0) 4909 if (err < 0)
@@ -5008,7 +5009,7 @@ static void alc260_auto_init_multi_out(struct hda_codec *codec)
5008 int pin_type = get_pin_type(spec->autocfg.line_out_type); 5009 int pin_type = get_pin_type(spec->autocfg.line_out_type);
5009 alc260_auto_set_output_and_unmute(codec, nid, pin_type, 0); 5010 alc260_auto_set_output_and_unmute(codec, nid, pin_type, 0);
5010 } 5011 }
5011 5012
5012 nid = spec->autocfg.speaker_pins[0]; 5013 nid = spec->autocfg.speaker_pins[0];
5013 if (nid) 5014 if (nid)
5014 alc260_auto_set_output_and_unmute(codec, nid, PIN_OUT, 0); 5015 alc260_auto_set_output_and_unmute(codec, nid, PIN_OUT, 0);
@@ -5050,7 +5051,7 @@ static struct hda_verb alc260_volume_init_verbs[] = {
5050 {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 5051 {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
5051 {0x05, AC_VERB_SET_CONNECT_SEL, 0x00}, 5052 {0x05, AC_VERB_SET_CONNECT_SEL, 0x00},
5052 {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 5053 {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
5053 5054
5054 /* Unmute input amps (CD, Line In, Mic 1 & Mic 2) of the analog-loopback 5055 /* Unmute input amps (CD, Line In, Mic 1 & Mic 2) of the analog-loopback
5055 * mixer widget 5056 * mixer widget
5056 * Note: PASD motherboards uses the Line In 2 as the input for 5057 * Note: PASD motherboards uses the Line In 2 as the input for
@@ -5079,7 +5080,7 @@ static struct hda_verb alc260_volume_init_verbs[] = {
5079 {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 5080 {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
5080 {0x0a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 5081 {0x0a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
5081 {0x0a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 5082 {0x0a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
5082 5083
5083 { } 5084 { }
5084}; 5085};
5085 5086
@@ -5938,7 +5939,7 @@ static struct hda_verb alc882_targa_verbs[] = {
5938 5939
5939 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, 5940 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
5940 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 5941 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
5941 5942
5942 {0x18, AC_VERB_SET_CONNECT_SEL, 0x02}, /* mic/clfe */ 5943 {0x18, AC_VERB_SET_CONNECT_SEL, 0x02}, /* mic/clfe */
5943 {0x1a, AC_VERB_SET_CONNECT_SEL, 0x01}, /* line/surround */ 5944 {0x1a, AC_VERB_SET_CONNECT_SEL, 0x01}, /* line/surround */
5944 {0x1b, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */ 5945 {0x1b, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */
@@ -5954,7 +5955,7 @@ static struct hda_verb alc882_targa_verbs[] = {
5954static void alc882_targa_automute(struct hda_codec *codec) 5955static void alc882_targa_automute(struct hda_codec *codec)
5955{ 5956{
5956 unsigned int present; 5957 unsigned int present;
5957 5958
5958 present = snd_hda_codec_read(codec, 0x14, 0, 5959 present = snd_hda_codec_read(codec, 0x14, 0,
5959 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000; 5960 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
5960 snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0, 5961 snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0,
@@ -5980,7 +5981,7 @@ static struct hda_verb alc882_asus_a7j_verbs[] = {
5980 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, 5981 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
5981 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 5982 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
5982 {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 5983 {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
5983 5984
5984 {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, /* Front */ 5985 {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, /* Front */
5985 {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */ 5986 {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */
5986 {0x16, AC_VERB_SET_CONNECT_SEL, 0x00}, /* Front */ 5987 {0x16, AC_VERB_SET_CONNECT_SEL, 0x00}, /* Front */
@@ -5998,7 +5999,7 @@ static struct hda_verb alc882_asus_a7m_verbs[] = {
5998 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, 5999 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
5999 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 6000 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
6000 {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 6001 {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
6001 6002
6002 {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, /* Front */ 6003 {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, /* Front */
6003 {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */ 6004 {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */
6004 {0x16, AC_VERB_SET_CONNECT_SEL, 0x00}, /* Front */ 6005 {0x16, AC_VERB_SET_CONNECT_SEL, 0x00}, /* Front */
@@ -6324,7 +6325,7 @@ static struct alc_config_preset alc882_presets[] = {
6324 .channel_mode = alc882_3ST_6ch_modes, 6325 .channel_mode = alc882_3ST_6ch_modes,
6325 .need_dac_fix = 1, 6326 .need_dac_fix = 1,
6326 .input_mux = &alc882_capture_source, 6327 .input_mux = &alc882_capture_source,
6327 }, 6328 },
6328 [ALC882_ASUS_A7M] = { 6329 [ALC882_ASUS_A7M] = {
6329 .mixers = { alc882_asus_a7m_mixer, alc882_chmode_mixer }, 6330 .mixers = { alc882_asus_a7m_mixer, alc882_chmode_mixer },
6330 .init_verbs = { alc882_init_verbs, alc882_eapd_verbs, 6331 .init_verbs = { alc882_init_verbs, alc882_eapd_verbs,
@@ -6337,14 +6338,14 @@ static struct alc_config_preset alc882_presets[] = {
6337 .channel_mode = alc880_threestack_modes, 6338 .channel_mode = alc880_threestack_modes,
6338 .need_dac_fix = 1, 6339 .need_dac_fix = 1,
6339 .input_mux = &alc882_capture_source, 6340 .input_mux = &alc882_capture_source,
6340 }, 6341 },
6341}; 6342};
6342 6343
6343 6344
6344/* 6345/*
6345 * Pin config fixes 6346 * Pin config fixes
6346 */ 6347 */
6347enum { 6348enum {
6348 PINFIX_ABIT_AW9D_MAX 6349 PINFIX_ABIT_AW9D_MAX
6349}; 6350};
6350 6351
@@ -7261,7 +7262,7 @@ static struct snd_kcontrol_new alc883_medion_md2_mixer[] = {
7261 .put = alc883_mux_enum_put, 7262 .put = alc883_mux_enum_put,
7262 }, 7263 },
7263 { } /* end */ 7264 { } /* end */
7264}; 7265};
7265 7266
7266static struct snd_kcontrol_new alc883_acer_aspire_mixer[] = { 7267static struct snd_kcontrol_new alc883_acer_aspire_mixer[] = {
7267 HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), 7268 HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
@@ -7473,7 +7474,7 @@ static struct hda_verb alc883_tagra_verbs[] = {
7473 7474
7474 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, 7475 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
7475 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 7476 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
7476 7477
7477 {0x18, AC_VERB_SET_CONNECT_SEL, 0x02}, /* mic/clfe */ 7478 {0x18, AC_VERB_SET_CONNECT_SEL, 0x02}, /* mic/clfe */
7478 {0x1a, AC_VERB_SET_CONNECT_SEL, 0x01}, /* line/surround */ 7479 {0x1a, AC_VERB_SET_CONNECT_SEL, 0x01}, /* line/surround */
7479 {0x1b, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */ 7480 {0x1b, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */
@@ -7560,7 +7561,7 @@ static struct hda_channel_mode alc888_3st_hp_modes[2] = {
7560static void alc888_lenovo_ms7195_front_automute(struct hda_codec *codec) 7561static void alc888_lenovo_ms7195_front_automute(struct hda_codec *codec)
7561{ 7562{
7562 unsigned int present; 7563 unsigned int present;
7563 7564
7564 present = snd_hda_codec_read(codec, 0x1b, 0, 7565 present = snd_hda_codec_read(codec, 0x1b, 0,
7565 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000; 7566 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
7566 snd_hda_codec_amp_stereo(codec, 0x14, HDA_OUTPUT, 0, 7567 snd_hda_codec_amp_stereo(codec, 0x14, HDA_OUTPUT, 0,
@@ -7573,7 +7574,7 @@ static void alc888_lenovo_ms7195_front_automute(struct hda_codec *codec)
7573static void alc888_lenovo_ms7195_rca_automute(struct hda_codec *codec) 7574static void alc888_lenovo_ms7195_rca_automute(struct hda_codec *codec)
7574{ 7575{
7575 unsigned int present; 7576 unsigned int present;
7576 7577
7577 present = snd_hda_codec_read(codec, 0x14, 0, 7578 present = snd_hda_codec_read(codec, 0x14, 0,
7578 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000; 7579 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
7579 snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0, 7580 snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0,
@@ -7603,7 +7604,7 @@ static struct hda_verb alc883_medion_md2_verbs[] = {
7603static void alc883_medion_md2_automute(struct hda_codec *codec) 7604static void alc883_medion_md2_automute(struct hda_codec *codec)
7604{ 7605{
7605 unsigned int present; 7606 unsigned int present;
7606 7607
7607 present = snd_hda_codec_read(codec, 0x14, 0, 7608 present = snd_hda_codec_read(codec, 0x14, 0,
7608 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000; 7609 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
7609 snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0, 7610 snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0,
@@ -7758,7 +7759,7 @@ static void alc883_lenovo_101e_unsol_event(struct hda_codec *codec,
7758static void alc883_acer_aspire_automute(struct hda_codec *codec) 7759static void alc883_acer_aspire_automute(struct hda_codec *codec)
7759{ 7760{
7760 unsigned int present; 7761 unsigned int present;
7761 7762
7762 present = snd_hda_codec_read(codec, 0x14, 0, 7763 present = snd_hda_codec_read(codec, 0x14, 0,
7763 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000; 7764 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
7764 snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0, 7765 snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0,
@@ -7795,7 +7796,7 @@ static struct hda_verb alc883_acer_eapd_verbs[] = {
7795static void alc888_6st_dell_front_automute(struct hda_codec *codec) 7796static void alc888_6st_dell_front_automute(struct hda_codec *codec)
7796{ 7797{
7797 unsigned int present; 7798 unsigned int present;
7798 7799
7799 present = snd_hda_codec_read(codec, 0x1b, 0, 7800 present = snd_hda_codec_read(codec, 0x1b, 0,
7800 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000; 7801 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
7801 snd_hda_codec_amp_stereo(codec, 0x14, HDA_OUTPUT, 0, 7802 snd_hda_codec_amp_stereo(codec, 0x14, HDA_OUTPUT, 0,
@@ -8133,7 +8134,7 @@ static struct alc_config_preset alc883_presets[] = {
8133 .input_mux = &alc883_capture_source, 8134 .input_mux = &alc883_capture_source,
8134 .unsol_event = alc883_medion_md2_unsol_event, 8135 .unsol_event = alc883_medion_md2_unsol_event,
8135 .init_hook = alc883_medion_md2_automute, 8136 .init_hook = alc883_medion_md2_automute,
8136 }, 8137 },
8137 [ALC883_LAPTOP_EAPD] = { 8138 [ALC883_LAPTOP_EAPD] = {
8138 .mixers = { alc883_base_mixer }, 8139 .mixers = { alc883_base_mixer },
8139 .init_verbs = { alc883_init_verbs, alc882_eapd_verbs }, 8140 .init_verbs = { alc883_init_verbs, alc882_eapd_verbs },
@@ -8838,10 +8839,10 @@ static struct hda_verb alc262_init_verbs[] = {
8838 {0x16, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, 8839 {0x16, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000},
8839 {0x18, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, 8840 {0x18, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000},
8840 {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, 8841 {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000},
8841 8842
8842 {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, 8843 {0x14, AC_VERB_SET_CONNECT_SEL, 0x00},
8843 {0x15, AC_VERB_SET_CONNECT_SEL, 0x01}, 8844 {0x15, AC_VERB_SET_CONNECT_SEL, 0x01},
8844 8845
8845 /* FIXME: use matrix-type input source selection */ 8846 /* FIXME: use matrix-type input source selection */
8846 /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */ 8847 /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */
8847 /* Input mixer1: unmute Mic, F-Mic, Line, CD inputs */ 8848 /* Input mixer1: unmute Mic, F-Mic, Line, CD inputs */
@@ -9467,7 +9468,7 @@ static struct hda_verb alc262_volume_init_verbs[] = {
9467 {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, 9468 {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO},
9468 {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, 9469 {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO},
9469 {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, 9470 {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO},
9470 9471
9471 /* set up input amps for analog loopback */ 9472 /* set up input amps for analog loopback */
9472 /* Amp Indices: DAC = 0, mixer = 1 */ 9473 /* Amp Indices: DAC = 0, mixer = 1 */
9473 {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 9474 {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
@@ -9522,7 +9523,7 @@ static struct hda_verb alc262_HP_BPC_init_verbs[] = {
9522 {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(4)}, 9523 {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(4)},
9523 {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(5)}, 9524 {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(5)},
9524 {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(6)}, 9525 {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(6)},
9525 9526
9526 /* 9527 /*
9527 * Set up output mixers (0x0c - 0x0e) 9528 * Set up output mixers (0x0c - 0x0e)
9528 */ 9529 */
@@ -9960,7 +9961,7 @@ static struct alc_config_preset alc262_presets[] = {
9960 .input_mux = &alc262_capture_source, 9961 .input_mux = &alc262_capture_source,
9961 .unsol_event = alc262_hippo_unsol_event, 9962 .unsol_event = alc262_hippo_unsol_event,
9962 .init_hook = alc262_hippo_automute, 9963 .init_hook = alc262_hippo_automute,
9963 }, 9964 },
9964 [ALC262_ULTRA] = { 9965 [ALC262_ULTRA] = {
9965 .mixers = { alc262_ultra_mixer, alc262_ultra_capture_mixer }, 9966 .mixers = { alc262_ultra_mixer, alc262_ultra_capture_mixer },
9966 .init_verbs = { alc262_ultra_verbs }, 9967 .init_verbs = { alc262_ultra_verbs },
@@ -10056,7 +10057,7 @@ static int patch_alc262(struct hda_codec *codec)
10056 spec->stream_name_analog = "ALC262 Analog"; 10057 spec->stream_name_analog = "ALC262 Analog";
10057 spec->stream_analog_playback = &alc262_pcm_analog_playback; 10058 spec->stream_analog_playback = &alc262_pcm_analog_playback;
10058 spec->stream_analog_capture = &alc262_pcm_analog_capture; 10059 spec->stream_analog_capture = &alc262_pcm_analog_capture;
10059 10060
10060 spec->stream_name_digital = "ALC262 Digital"; 10061 spec->stream_name_digital = "ALC262 Digital";
10061 spec->stream_digital_playback = &alc262_pcm_digital_playback; 10062 spec->stream_digital_playback = &alc262_pcm_digital_playback;
10062 spec->stream_digital_capture = &alc262_pcm_digital_capture; 10063 spec->stream_digital_capture = &alc262_pcm_digital_capture;
@@ -10092,7 +10093,7 @@ static int patch_alc262(struct hda_codec *codec)
10092 if (!spec->loopback.amplist) 10093 if (!spec->loopback.amplist)
10093 spec->loopback.amplist = alc262_loopbacks; 10094 spec->loopback.amplist = alc262_loopbacks;
10094#endif 10095#endif
10095 10096
10096 return 0; 10097 return 0;
10097} 10098}
10098 10099
@@ -10101,7 +10102,7 @@ static int patch_alc262(struct hda_codec *codec)
10101 */ 10102 */
10102#define ALC268_DIGOUT_NID ALC880_DIGOUT_NID 10103#define ALC268_DIGOUT_NID ALC880_DIGOUT_NID
10103#define alc268_modes alc260_modes 10104#define alc268_modes alc260_modes
10104 10105
10105static hda_nid_t alc268_dac_nids[2] = { 10106static hda_nid_t alc268_dac_nids[2] = {
10106 /* front, hp */ 10107 /* front, hp */
10107 0x02, 0x03 10108 0x02, 0x03
@@ -10237,7 +10238,6 @@ static struct hda_verb alc268_acer_verbs[] = {
10237 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 10238 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
10238 {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, 10239 {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
10239 {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, 10240 {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
10240
10241 {0x14, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN}, 10241 {0x14, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
10242 { } 10242 { }
10243}; 10243};
@@ -10412,7 +10412,7 @@ static struct hda_verb alc268_base_init_verbs[] = {
10412 {0x10, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, 10412 {0x10, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
10413 10413
10414 /* Unmute Selector 23h,24h and set the default input to mic-in */ 10414 /* Unmute Selector 23h,24h and set the default input to mic-in */
10415 10415
10416 {0x23, AC_VERB_SET_CONNECT_SEL, 0x00}, 10416 {0x23, AC_VERB_SET_CONNECT_SEL, 0x00},
10417 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 10417 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
10418 {0x24, AC_VERB_SET_CONNECT_SEL, 0x00}, 10418 {0x24, AC_VERB_SET_CONNECT_SEL, 0x00},
@@ -10611,7 +10611,7 @@ static int alc268_auto_create_multi_out_ctls(struct alc_spec *spec,
10611 10611
10612 nid = cfg->line_out_pins[0]; 10612 nid = cfg->line_out_pins[0];
10613 if (nid) 10613 if (nid)
10614 alc268_new_analog_output(spec, nid, "Front", 0); 10614 alc268_new_analog_output(spec, nid, "Front", 0);
10615 10615
10616 nid = cfg->speaker_pins[0]; 10616 nid = cfg->speaker_pins[0];
10617 if (nid == 0x1d) { 10617 if (nid == 0x1d) {
@@ -10633,7 +10633,7 @@ static int alc268_auto_create_multi_out_ctls(struct alc_spec *spec,
10633 if (err < 0) 10633 if (err < 0)
10634 return err; 10634 return err;
10635 } 10635 }
10636 return 0; 10636 return 0;
10637} 10637}
10638 10638
10639/* create playback/capture controls for input pins */ 10639/* create playback/capture controls for input pins */
@@ -10654,7 +10654,7 @@ static int alc268_auto_create_analog_input_ctls(struct alc_spec *spec,
10654 case 0x1a: 10654 case 0x1a:
10655 idx1 = 2; /* Line In */ 10655 idx1 = 2; /* Line In */
10656 break; 10656 break;
10657 case 0x1c: 10657 case 0x1c:
10658 idx1 = 3; /* CD */ 10658 idx1 = 3; /* CD */
10659 break; 10659 break;
10660 case 0x12: 10660 case 0x12:
@@ -10666,7 +10666,7 @@ static int alc268_auto_create_analog_input_ctls(struct alc_spec *spec,
10666 } 10666 }
10667 imux->items[imux->num_items].label = auto_pin_cfg_labels[i]; 10667 imux->items[imux->num_items].label = auto_pin_cfg_labels[i];
10668 imux->items[imux->num_items].index = idx1; 10668 imux->items[imux->num_items].index = idx1;
10669 imux->num_items++; 10669 imux->num_items++;
10670 } 10670 }
10671 return 0; 10671 return 0;
10672} 10672}
@@ -10696,11 +10696,11 @@ static void alc268_auto_init_mono_speaker_out(struct hda_codec *codec)
10696 } 10696 }
10697 10697
10698 dac_vol1 = dac_vol2 = 0xb000 | 0x40; /* set max volume */ 10698 dac_vol1 = dac_vol2 = 0xb000 | 0x40; /* set max volume */
10699 if (line_nid == 0x14) 10699 if (line_nid == 0x14)
10700 dac_vol2 = AMP_OUT_ZERO; 10700 dac_vol2 = AMP_OUT_ZERO;
10701 else if (line_nid == 0x15) 10701 else if (line_nid == 0x15)
10702 dac_vol1 = AMP_OUT_ZERO; 10702 dac_vol1 = AMP_OUT_ZERO;
10703 if (hp_nid == 0x14) 10703 if (hp_nid == 0x14)
10704 dac_vol2 = AMP_OUT_ZERO; 10704 dac_vol2 = AMP_OUT_ZERO;
10705 else if (hp_nid == 0x15) 10705 else if (hp_nid == 0x15)
10706 dac_vol1 = AMP_OUT_ZERO; 10706 dac_vol1 = AMP_OUT_ZERO;
@@ -11026,7 +11026,7 @@ static int patch_alc268(struct hda_codec *codec)
11026 codec->patch_ops = alc_patch_ops; 11026 codec->patch_ops = alc_patch_ops;
11027 if (board_config == ALC268_AUTO) 11027 if (board_config == ALC268_AUTO)
11028 spec->init_hook = alc268_auto_init; 11028 spec->init_hook = alc268_auto_init;
11029 11029
11030 return 0; 11030 return 0;
11031} 11031}
11032 11032
@@ -11284,7 +11284,7 @@ static void alc269_eeepc_dmic_inithook(struct hda_codec *codec)
11284 11284
11285/* unsolicited event for HP jack sensing */ 11285/* unsolicited event for HP jack sensing */
11286static void alc269_eeepc_amic_unsol_event(struct hda_codec *codec, 11286static void alc269_eeepc_amic_unsol_event(struct hda_codec *codec,
11287 unsigned int res) 11287 unsigned int res)
11288{ 11288{
11289 if ((res >> 26) == ALC880_HP_EVENT) 11289 if ((res >> 26) == ALC880_HP_EVENT)
11290 alc269_speaker_automute(codec); 11290 alc269_speaker_automute(codec);
@@ -11770,7 +11770,7 @@ static struct snd_kcontrol_new alc861_toshiba_mixer[] = {
11770 HDA_CODEC_MUTE("Master Playback Switch", 0x03, 0x0, HDA_OUTPUT), 11770 HDA_CODEC_MUTE("Master Playback Switch", 0x03, 0x0, HDA_OUTPUT),
11771 HDA_CODEC_VOLUME("Mic Playback Volume", 0x15, 0x01, HDA_INPUT), 11771 HDA_CODEC_VOLUME("Mic Playback Volume", 0x15, 0x01, HDA_INPUT),
11772 HDA_CODEC_MUTE("Mic Playback Switch", 0x15, 0x01, HDA_INPUT), 11772 HDA_CODEC_MUTE("Mic Playback Switch", 0x15, 0x01, HDA_INPUT),
11773 11773
11774 /*Capture mixer control */ 11774 /*Capture mixer control */
11775 HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), 11775 HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT),
11776 HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), 11776 HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT),
@@ -11913,20 +11913,20 @@ static struct hda_verb alc861_base_init_verbs[] = {
11913 /* route front mic to ADC1*/ 11913 /* route front mic to ADC1*/
11914 {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, 11914 {0x08, AC_VERB_SET_CONNECT_SEL, 0x00},
11915 {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 11915 {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
11916 11916
11917 /* Unmute DAC0~3 & spdif out*/ 11917 /* Unmute DAC0~3 & spdif out*/
11918 {0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 11918 {0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
11919 {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 11919 {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
11920 {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 11920 {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
11921 {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 11921 {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
11922 {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 11922 {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
11923 11923
11924 /* Unmute Mixer 14 (mic) 1c (Line in)*/ 11924 /* Unmute Mixer 14 (mic) 1c (Line in)*/
11925 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 11925 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
11926 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 11926 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
11927 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 11927 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
11928 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 11928 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
11929 11929
11930 /* Unmute Stereo Mixer 15 */ 11930 /* Unmute Stereo Mixer 15 */
11931 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 11931 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
11932 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 11932 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
@@ -11982,13 +11982,13 @@ static struct hda_verb alc861_threestack_init_verbs[] = {
11982 {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 11982 {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
11983 {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 11983 {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
11984 {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 11984 {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
11985 11985
11986 /* Unmute Mixer 14 (mic) 1c (Line in)*/ 11986 /* Unmute Mixer 14 (mic) 1c (Line in)*/
11987 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 11987 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
11988 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 11988 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
11989 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 11989 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
11990 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 11990 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
11991 11991
11992 /* Unmute Stereo Mixer 15 */ 11992 /* Unmute Stereo Mixer 15 */
11993 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 11993 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
11994 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 11994 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
@@ -12044,13 +12044,13 @@ static struct hda_verb alc861_uniwill_m31_init_verbs[] = {
12044 {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 12044 {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
12045 {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 12045 {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
12046 {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 12046 {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
12047 12047
12048 /* Unmute Mixer 14 (mic) 1c (Line in)*/ 12048 /* Unmute Mixer 14 (mic) 1c (Line in)*/
12049 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 12049 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
12050 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 12050 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
12051 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 12051 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
12052 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 12052 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
12053 12053
12054 /* Unmute Stereo Mixer 15 */ 12054 /* Unmute Stereo Mixer 15 */
12055 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 12055 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
12056 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 12056 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
@@ -12115,7 +12115,7 @@ static struct hda_verb alc861_asus_init_verbs[] = {
12115 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 12115 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
12116 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 12116 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
12117 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 12117 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
12118 12118
12119 /* Unmute Stereo Mixer 15 */ 12119 /* Unmute Stereo Mixer 15 */
12120 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 12120 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
12121 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 12121 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
@@ -12152,20 +12152,20 @@ static struct hda_verb alc861_auto_init_verbs[] = {
12152 */ 12152 */
12153 /* {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, */ 12153 /* {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, */
12154 {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 12154 {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
12155 12155
12156 /* Unmute DAC0~3 & spdif out*/ 12156 /* Unmute DAC0~3 & spdif out*/
12157 {0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, 12157 {0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
12158 {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, 12158 {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
12159 {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, 12159 {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
12160 {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, 12160 {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
12161 {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 12161 {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
12162 12162
12163 /* Unmute Mixer 14 (mic) 1c (Line in)*/ 12163 /* Unmute Mixer 14 (mic) 1c (Line in)*/
12164 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 12164 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
12165 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 12165 {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
12166 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 12166 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
12167 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 12167 {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
12168 12168
12169 /* Unmute Stereo Mixer 15 */ 12169 /* Unmute Stereo Mixer 15 */
12170 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 12170 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
12171 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 12171 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
@@ -12740,7 +12740,7 @@ static int patch_alc861(struct hda_codec *codec)
12740 if (!spec->loopback.amplist) 12740 if (!spec->loopback.amplist)
12741 spec->loopback.amplist = alc861_loopbacks; 12741 spec->loopback.amplist = alc861_loopbacks;
12742#endif 12742#endif
12743 12743
12744 return 0; 12744 return 0;
12745} 12745}
12746 12746
@@ -12994,7 +12994,7 @@ static struct snd_kcontrol_new alc861vd_hp_mixer[] = {
12994 HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), 12994 HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
12995 HDA_CODEC_VOLUME("ATAPI Mic Playback Volume", 0x0b, 0x1, HDA_INPUT), 12995 HDA_CODEC_VOLUME("ATAPI Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
12996 HDA_CODEC_MUTE("ATAPI Mic Playback Switch", 0x0b, 0x1, HDA_INPUT), 12996 HDA_CODEC_MUTE("ATAPI Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
12997 12997
12998 { } /* end */ 12998 { } /* end */
12999}; 12999};
13000 13000
@@ -13139,7 +13139,7 @@ static struct hda_verb alc861vd_lenovo_unsol_verbs[] = {
13139 {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, 13139 {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
13140 {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(5)}, 13140 {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(5)},
13141 {0x1b, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT}, 13141 {0x1b, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
13142 {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT}, 13142 {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT},
13143 {} 13143 {}
13144}; 13144};
13145 13145
@@ -13201,7 +13201,7 @@ static struct hda_verb alc861vd_dallas_verbs[] = {
13201 {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, 13201 {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
13202 {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, 13202 {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
13203 {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, 13203 {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
13204 13204
13205 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 13205 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
13206 {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 13206 {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
13207 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 13207 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
@@ -13226,7 +13226,7 @@ static struct hda_verb alc861vd_dallas_verbs[] = {
13226 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(4)}, 13226 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(4)},
13227 13227
13228 {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, 13228 {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
13229 {0x09, AC_VERB_SET_CONNECT_SEL, 0x00}, 13229 {0x09, AC_VERB_SET_CONNECT_SEL, 0x00},
13230 {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT}, 13230 {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
13231 13231
13232 { } /* end */ 13232 { } /* end */
@@ -13385,7 +13385,7 @@ static struct alc_config_preset alc861vd_presets[] = {
13385 .input_mux = &alc861vd_hp_capture_source, 13385 .input_mux = &alc861vd_hp_capture_source,
13386 .unsol_event = alc861vd_dallas_unsol_event, 13386 .unsol_event = alc861vd_dallas_unsol_event,
13387 .init_hook = alc861vd_dallas_automute, 13387 .init_hook = alc861vd_dallas_automute,
13388 }, 13388 },
13389}; 13389};
13390 13390
13391/* 13391/*
@@ -14290,12 +14290,12 @@ static void alc662_eeepc_ep20_automute(struct hda_codec *codec)
14290 if (present) { 14290 if (present) {
14291 /* mute internal speaker */ 14291 /* mute internal speaker */
14292 snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0, 14292 snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0,
14293 HDA_AMP_MUTE, HDA_AMP_MUTE); 14293 HDA_AMP_MUTE, HDA_AMP_MUTE);
14294 } else { 14294 } else {
14295 /* unmute internal speaker if necessary */ 14295 /* unmute internal speaker if necessary */
14296 mute = snd_hda_codec_amp_read(codec, 0x14, 0, HDA_OUTPUT, 0); 14296 mute = snd_hda_codec_amp_read(codec, 0x14, 0, HDA_OUTPUT, 0);
14297 snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0, 14297 snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0,
14298 HDA_AMP_MUTE, mute); 14298 HDA_AMP_MUTE, mute);
14299 } 14299 }
14300} 14300}
14301 14301
@@ -14330,16 +14330,16 @@ static void alc663_m51va_mic_automute(struct hda_codec *codec)
14330 unsigned int present; 14330 unsigned int present;
14331 14331
14332 present = snd_hda_codec_read(codec, 0x18, 0, 14332 present = snd_hda_codec_read(codec, 0x18, 0,
14333 AC_VERB_GET_PIN_SENSE, 0) 14333 AC_VERB_GET_PIN_SENSE, 0)
14334 & AC_PINSENSE_PRESENCE; 14334 & AC_PINSENSE_PRESENCE;
14335 snd_hda_codec_write_cache(codec, 0x22, 0, AC_VERB_SET_AMP_GAIN_MUTE, 14335 snd_hda_codec_write_cache(codec, 0x22, 0, AC_VERB_SET_AMP_GAIN_MUTE,
14336 0x7000 | (0x00 << 8) | (present ? 0 : 0x80)); 14336 0x7000 | (0x00 << 8) | (present ? 0 : 0x80));
14337 snd_hda_codec_write_cache(codec, 0x23, 0, AC_VERB_SET_AMP_GAIN_MUTE, 14337 snd_hda_codec_write_cache(codec, 0x23, 0, AC_VERB_SET_AMP_GAIN_MUTE,
14338 0x7000 | (0x00 << 8) | (present ? 0 : 0x80)); 14338 0x7000 | (0x00 << 8) | (present ? 0 : 0x80));
14339 snd_hda_codec_write_cache(codec, 0x22, 0, AC_VERB_SET_AMP_GAIN_MUTE, 14339 snd_hda_codec_write_cache(codec, 0x22, 0, AC_VERB_SET_AMP_GAIN_MUTE,
14340 0x7000 | (0x09 << 8) | (present ? 0x80 : 0)); 14340 0x7000 | (0x09 << 8) | (present ? 0x80 : 0));
14341 snd_hda_codec_write_cache(codec, 0x23, 0, AC_VERB_SET_AMP_GAIN_MUTE, 14341 snd_hda_codec_write_cache(codec, 0x23, 0, AC_VERB_SET_AMP_GAIN_MUTE,
14342 0x7000 | (0x09 << 8) | (present ? 0x80 : 0)); 14342 0x7000 | (0x09 << 8) | (present ? 0x80 : 0));
14343} 14343}
14344 14344
14345static void alc663_m51va_unsol_event(struct hda_codec *codec, 14345static void alc663_m51va_unsol_event(struct hda_codec *codec,
@@ -14858,7 +14858,7 @@ static int alc662_parse_auto_config(struct hda_codec *codec)
14858 14858
14859 spec->num_mux_defs = 1; 14859 spec->num_mux_defs = 1;
14860 spec->input_mux = &spec->private_imux; 14860 spec->input_mux = &spec->private_imux;
14861 14861
14862 spec->init_verbs[spec->num_init_verbs++] = alc662_auto_init_verbs; 14862 spec->init_verbs[spec->num_init_verbs++] = alc662_auto_init_verbs;
14863 if (codec->vendor_id == 0x10ec0663) 14863 if (codec->vendor_id == 0x10ec0663)
14864 spec->init_verbs[spec->num_init_verbs++] = 14864 spec->init_verbs[spec->num_init_verbs++] =