diff options
Diffstat (limited to 'sound/pci/hda')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 176 |
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 | */ |
436 | static signed char alc_pin_mode_dir_info[5][2] = { | 436 | static 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 | */ |
1875 | static struct hda_verb alc880_uniwill_p53_init_verbs[] = { | 1876 | static 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) | |||
1969 | static void alc880_uniwill_p53_dcvol_automute(struct hda_codec *codec) | 1970 | static 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 | */ |
4697 | static struct hda_input_mux alc260_test_capture_sources[2] = { | 4698 | static 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[] = { | |||
5954 | static void alc882_targa_automute(struct hda_codec *codec) | 5955 | static 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 | */ |
6347 | enum { | 6348 | enum { |
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 | ||
7266 | static struct snd_kcontrol_new alc883_acer_aspire_mixer[] = { | 7267 | static 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] = { | |||
7560 | static void alc888_lenovo_ms7195_front_automute(struct hda_codec *codec) | 7561 | static 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) | |||
7573 | static void alc888_lenovo_ms7195_rca_automute(struct hda_codec *codec) | 7574 | static 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[] = { | |||
7603 | static void alc883_medion_md2_automute(struct hda_codec *codec) | 7604 | static 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, | |||
7758 | static void alc883_acer_aspire_automute(struct hda_codec *codec) | 7759 | static 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[] = { | |||
7795 | static void alc888_6st_dell_front_automute(struct hda_codec *codec) | 7796 | static 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 | ||
10105 | static hda_nid_t alc268_dac_nids[2] = { | 10106 | static 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 */ |
11286 | static void alc269_eeepc_amic_unsol_event(struct hda_codec *codec, | 11286 | static 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 | ||
14345 | static void alc663_m51va_unsol_event(struct hda_codec *codec, | 14345 | static 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++] = |