Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15870f05 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Fix invalid initializations for ALC861 auto mode

The recent auto-parser doesn't work for machines with a single output
with ALC861, such as Toshiba laptops, because alc_subsystem_id() sets
the hp_pins[0] while it's listed in line_outs[0].
This ends up with the doubled initialization of the same mixer widget,
and it mutes the DAC route because hp_pins has no DAC assigned.

To fix this problem, just check spec->autocfg.hp_outs and speaker_outs
so that they are really detected pins.

Reference: Novell bnc#544161
	http://bugzilla.novell.com/show_bug.cgi?id=544161



Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 7085ec12
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -14357,15 +14357,16 @@ static void alc861_auto_init_multi_out(struct hda_codec *codec)
static void alc861_auto_init_hp_out(struct hda_codec *codec)
{
	struct alc_spec *spec = codec->spec;
	hda_nid_t pin;
	pin = spec->autocfg.hp_pins[0];
	if (pin)
		alc861_auto_set_output_and_unmute(codec, pin, PIN_HP,
	if (spec->autocfg.hp_outs)
		alc861_auto_set_output_and_unmute(codec,
						  spec->autocfg.hp_pins[0],
						  PIN_HP,
						  spec->multiout.hp_nid);
	pin = spec->autocfg.speaker_pins[0];
	if (pin)
		alc861_auto_set_output_and_unmute(codec, pin, PIN_OUT,
	if (spec->autocfg.speaker_outs)
		alc861_auto_set_output_and_unmute(codec,
						  spec->autocfg.speaker_pins[0],
						  PIN_OUT,
						  spec->multiout.dac_nids[0]);
}