diff options
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 30 | 
1 files changed, 28 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 4eceab9bd10..a378c014512 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)  			    spec->jack_present ? 0 : PIN_OUT);  } +#if 0 /* it's broken in some acses -- temporarily disabled */  static void alc_mic_automute(struct hda_codec *codec)  {  	struct alc_spec *spec = codec->spec; @@ -849,6 +850,9 @@ static void alc_mic_automute(struct hda_codec *codec)  	snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, capsrc_idx_fmic,  			 HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0);  } +#else +#define alc_mic_automute(codec) /* NOP */ +#endif /* disabled */  /* unsolicited event for HP jack sensing */  static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res) @@ -1058,12 +1062,14 @@ do_sku:  			AC_VERB_SET_UNSOLICITED_ENABLE,  			AC_USRSP_EN | ALC880_HP_EVENT); +#if 0 /* it's broken in some acses -- temporarily disabled */  	if (spec->autocfg.input_pins[AUTO_PIN_MIC] &&  		spec->autocfg.input_pins[AUTO_PIN_FRONT_MIC])  		snd_hda_codec_write(codec,  			spec->autocfg.input_pins[AUTO_PIN_MIC], 0,  			AC_VERB_SET_UNSOLICITED_ENABLE,  			AC_USRSP_EN | ALC880_MIC_EVENT); +#endif /* disabled */  	spec->unsol_event = alc_sku_unsol_event;  } @@ -8408,6 +8414,7 @@ static const char *alc883_models[ALC883_MODEL_LAST] = {  static struct snd_pci_quirk alc883_cfg_tbl[] = {  	SND_PCI_QUIRK(0x1019, 0x6668, "ECS", ALC883_3ST_6ch_DIG),  	SND_PCI_QUIRK(0x1025, 0x006c, "Acer Aspire 9810", ALC883_ACER_ASPIRE), +	SND_PCI_QUIRK(0x1025, 0x0090, "Acer Aspire", ALC883_ACER_ASPIRE),  	SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_ACER_ASPIRE),  	SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_ACER_ASPIRE),  	SND_PCI_QUIRK(0x1025, 0x0121, "Acer Aspire 5920G", ALC883_ACER_ASPIRE), @@ -8462,6 +8469,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = {  	SND_PCI_QUIRK(0x17aa, 0x3bfd, "Lenovo NB0763", ALC883_LENOVO_NB0763),  	SND_PCI_QUIRK(0x17aa, 0x101d, "Lenovo Sky", ALC888_LENOVO_SKY),  	SND_PCI_QUIRK(0x17c0, 0x4071, "MEDION MD2", ALC883_MEDION_MD2), +	SND_PCI_QUIRK(0x17c0, 0x4085, "MEDION MD96630", ALC888_LENOVO_MS7195_DIG),  	SND_PCI_QUIRK(0x17f2, 0x5000, "Albatron KI690-AM2", ALC883_6ST_DIG),  	SND_PCI_QUIRK(0x1991, 0x5625, "Haier W66", ALC883_HAIER_W66),  	SND_PCI_QUIRK(0x8086, 0x0001, "DG33BUC", ALC883_3ST_6ch_INTEL), @@ -12238,8 +12246,26 @@ static int alc269_auto_create_multi_out_ctls(struct alc_spec *spec,  	return 0;  } -#define alc269_auto_create_analog_input_ctls \ -	alc880_auto_create_analog_input_ctls +static int alc269_auto_create_analog_input_ctls(struct alc_spec *spec, +						const struct auto_pin_cfg *cfg) +{ +	int err; + +	err = alc880_auto_create_analog_input_ctls(spec, cfg); +	if (err < 0) +		return err; +	/* digital-mic input pin is excluded in alc880_auto_create..() +	 * because it's under 0x18 +	 */ +	if (cfg->input_pins[AUTO_PIN_MIC] == 0x12 || +	    cfg->input_pins[AUTO_PIN_FRONT_MIC] == 0x12) { +		struct hda_input_mux *imux = &spec->private_imux; +		imux->items[imux->num_items].label = "Int Mic"; +		imux->items[imux->num_items].index = 0x05; +		imux->num_items++; +	} +	return 0; +}  #ifdef CONFIG_SND_HDA_POWER_SAVE  #define alc269_loopbacks	alc880_loopbacks  |