diff options
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 4eceab9bd109..a4666c96a44f 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -829,6 +829,7 @@ static void alc_sku_automute(struct hda_codec *codec) | |||
829 | spec->jack_present ? 0 : PIN_OUT); | 829 | spec->jack_present ? 0 : PIN_OUT); |
830 | } | 830 | } |
831 | 831 | ||
832 | #if 0 /* it's broken in some acses -- temporarily disabled */ | ||
832 | static void alc_mic_automute(struct hda_codec *codec) | 833 | static void alc_mic_automute(struct hda_codec *codec) |
833 | { | 834 | { |
834 | struct alc_spec *spec = codec->spec; | 835 | struct alc_spec *spec = codec->spec; |
@@ -849,6 +850,9 @@ static void alc_mic_automute(struct hda_codec *codec) | |||
849 | snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, capsrc_idx_fmic, | 850 | snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, capsrc_idx_fmic, |
850 | HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0); | 851 | HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0); |
851 | } | 852 | } |
853 | #else | ||
854 | #define alc_mic_automute(codec) /* NOP */ | ||
855 | #endif /* disabled */ | ||
852 | 856 | ||
853 | /* unsolicited event for HP jack sensing */ | 857 | /* unsolicited event for HP jack sensing */ |
854 | static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res) | 858 | static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res) |
@@ -1058,12 +1062,14 @@ do_sku: | |||
1058 | AC_VERB_SET_UNSOLICITED_ENABLE, | 1062 | AC_VERB_SET_UNSOLICITED_ENABLE, |
1059 | AC_USRSP_EN | ALC880_HP_EVENT); | 1063 | AC_USRSP_EN | ALC880_HP_EVENT); |
1060 | 1064 | ||
1065 | #if 0 /* it's broken in some acses -- temporarily disabled */ | ||
1061 | if (spec->autocfg.input_pins[AUTO_PIN_MIC] && | 1066 | if (spec->autocfg.input_pins[AUTO_PIN_MIC] && |
1062 | spec->autocfg.input_pins[AUTO_PIN_FRONT_MIC]) | 1067 | spec->autocfg.input_pins[AUTO_PIN_FRONT_MIC]) |
1063 | snd_hda_codec_write(codec, | 1068 | snd_hda_codec_write(codec, |
1064 | spec->autocfg.input_pins[AUTO_PIN_MIC], 0, | 1069 | spec->autocfg.input_pins[AUTO_PIN_MIC], 0, |
1065 | AC_VERB_SET_UNSOLICITED_ENABLE, | 1070 | AC_VERB_SET_UNSOLICITED_ENABLE, |
1066 | AC_USRSP_EN | ALC880_MIC_EVENT); | 1071 | AC_USRSP_EN | ALC880_MIC_EVENT); |
1072 | #endif /* disabled */ | ||
1067 | 1073 | ||
1068 | spec->unsol_event = alc_sku_unsol_event; | 1074 | spec->unsol_event = alc_sku_unsol_event; |
1069 | } | 1075 | } |
@@ -8408,6 +8414,7 @@ static const char *alc883_models[ALC883_MODEL_LAST] = { | |||
8408 | static struct snd_pci_quirk alc883_cfg_tbl[] = { | 8414 | static struct snd_pci_quirk alc883_cfg_tbl[] = { |
8409 | SND_PCI_QUIRK(0x1019, 0x6668, "ECS", ALC883_3ST_6ch_DIG), | 8415 | SND_PCI_QUIRK(0x1019, 0x6668, "ECS", ALC883_3ST_6ch_DIG), |
8410 | SND_PCI_QUIRK(0x1025, 0x006c, "Acer Aspire 9810", ALC883_ACER_ASPIRE), | 8416 | SND_PCI_QUIRK(0x1025, 0x006c, "Acer Aspire 9810", ALC883_ACER_ASPIRE), |
8417 | SND_PCI_QUIRK(0x1025, 0x0090, "Acer Aspire", ALC883_ACER_ASPIRE), | ||
8411 | SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_ACER_ASPIRE), | 8418 | SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_ACER_ASPIRE), |
8412 | SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_ACER_ASPIRE), | 8419 | SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_ACER_ASPIRE), |
8413 | SND_PCI_QUIRK(0x1025, 0x0121, "Acer Aspire 5920G", ALC883_ACER_ASPIRE), | 8420 | SND_PCI_QUIRK(0x1025, 0x0121, "Acer Aspire 5920G", ALC883_ACER_ASPIRE), |
@@ -12238,8 +12245,26 @@ static int alc269_auto_create_multi_out_ctls(struct alc_spec *spec, | |||
12238 | return 0; | 12245 | return 0; |
12239 | } | 12246 | } |
12240 | 12247 | ||
12241 | #define alc269_auto_create_analog_input_ctls \ | 12248 | static int alc269_auto_create_analog_input_ctls(struct alc_spec *spec, |
12242 | alc880_auto_create_analog_input_ctls | 12249 | const struct auto_pin_cfg *cfg) |
12250 | { | ||
12251 | int err; | ||
12252 | |||
12253 | err = alc880_auto_create_analog_input_ctls(spec, cfg); | ||
12254 | if (err < 0) | ||
12255 | return err; | ||
12256 | /* digital-mic input pin is excluded in alc880_auto_create..() | ||
12257 | * because it's under 0x18 | ||
12258 | */ | ||
12259 | if (cfg->input_pins[AUTO_PIN_MIC] == 0x12 || | ||
12260 | cfg->input_pins[AUTO_PIN_FRONT_MIC] == 0x12) { | ||
12261 | struct hda_input_mux *imux = &spec->private_imux; | ||
12262 | imux->items[imux->num_items].label = "Int Mic"; | ||
12263 | imux->items[imux->num_items].index = 0x05; | ||
12264 | imux->num_items++; | ||
12265 | } | ||
12266 | return 0; | ||
12267 | } | ||
12243 | 12268 | ||
12244 | #ifdef CONFIG_SND_HDA_POWER_SAVE | 12269 | #ifdef CONFIG_SND_HDA_POWER_SAVE |
12245 | #define alc269_loopbacks alc880_loopbacks | 12270 | #define alc269_loopbacks alc880_loopbacks |