Skip to content

Commit

Permalink
ALSA: hda - Fix invalid initializations for ALC861 auto mode
Browse files Browse the repository at this point in the history
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: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Takashi Iwai committed Oct 5, 2009
1 parent 7085ec1 commit 15870f0
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions sound/pci/hda/patch_realtek.c
Original file line number Diff line number Diff line change
Expand Up @@ -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]);
}

Expand Down

0 comments on commit 15870f0

Please sign in to comment.