aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_realtek.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2009-10-05 02:25:13 -0400
committerTakashi Iwai <tiwai@suse.de>2009-10-05 02:29:49 -0400
commit15870f05e90a365f8022da416e713be0c5024e2f (patch)
tree36b77ec1a4c315fafaf2dcd63090f4eac755ae30 /sound/pci/hda/patch_realtek.c
parent7085ec12a62ec2e990bc7d984bee7ba28e5c1dec (diff)
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: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r--sound/pci/hda/patch_realtek.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 7810d3dcad83..c1e05994cc31 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -14357,15 +14357,16 @@ static void alc861_auto_init_multi_out(struct hda_codec *codec)
14357static void alc861_auto_init_hp_out(struct hda_codec *codec) 14357static void alc861_auto_init_hp_out(struct hda_codec *codec)
14358{ 14358{
14359 struct alc_spec *spec = codec->spec; 14359 struct alc_spec *spec = codec->spec;
14360 hda_nid_t pin;
14361 14360
14362 pin = spec->autocfg.hp_pins[0]; 14361 if (spec->autocfg.hp_outs)
14363 if (pin) 14362 alc861_auto_set_output_and_unmute(codec,
14364 alc861_auto_set_output_and_unmute(codec, pin, PIN_HP, 14363 spec->autocfg.hp_pins[0],
14364 PIN_HP,
14365 spec->multiout.hp_nid); 14365 spec->multiout.hp_nid);
14366 pin = spec->autocfg.speaker_pins[0]; 14366 if (spec->autocfg.speaker_outs)
14367 if (pin) 14367 alc861_auto_set_output_and_unmute(codec,
14368 alc861_auto_set_output_and_unmute(codec, pin, PIN_OUT, 14368 spec->autocfg.speaker_pins[0],
14369 PIN_OUT,
14369 spec->multiout.dac_nids[0]); 14370 spec->multiout.dac_nids[0]);
14370} 14371}
14371 14372