diff options
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 28 | 
1 files changed, 17 insertions, 11 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index fcb11af9ad2..7cabd731716 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -565,11 +565,11 @@ static void alc_hp_automute(struct hda_codec *codec)  {  	struct alc_spec *spec = codec->spec; -	if (!spec->automute) -		return;  	spec->jack_present =  		detect_jacks(codec, ARRAY_SIZE(spec->autocfg.hp_pins),  			     spec->autocfg.hp_pins); +	if (!spec->automute) +		return;  	update_speakers(codec);  } @@ -578,11 +578,11 @@ static void alc_line_automute(struct hda_codec *codec)  {  	struct alc_spec *spec = codec->spec; -	if (!spec->automute || !spec->detect_line) -		return;  	spec->line_jack_present =  		detect_jacks(codec, ARRAY_SIZE(spec->autocfg.line_out_pins),  			     spec->autocfg.line_out_pins); +	if (!spec->automute || !spec->detect_line) +		return;  	update_speakers(codec);  } @@ -3083,16 +3083,22 @@ static void alc_auto_init_multi_out(struct hda_codec *codec)  static void alc_auto_init_extra_out(struct hda_codec *codec)  {  	struct alc_spec *spec = codec->spec; -	hda_nid_t pin; +	hda_nid_t pin, dac;  	pin = spec->autocfg.hp_pins[0]; -	if (pin) -		alc_auto_set_output_and_unmute(codec, pin, PIN_HP, -						  spec->multiout.hp_nid); +	if (pin) { +		dac = spec->multiout.hp_nid; +		if (!dac) +			dac = spec->multiout.dac_nids[0]; +		alc_auto_set_output_and_unmute(codec, pin, PIN_HP, dac); +	}  	pin = spec->autocfg.speaker_pins[0]; -	if (pin) -		alc_auto_set_output_and_unmute(codec, pin, PIN_OUT, -					spec->multiout.extra_out_nid[0]); +	if (pin) { +		dac = spec->multiout.extra_out_nid[0]; +		if (!dac) +			dac = spec->multiout.dac_nids[0]; +		alc_auto_set_output_and_unmute(codec, pin, PIN_OUT, dac); +	}  }  /*  |