mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
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>
This commit is contained in:
parent
7085ec12a6
commit
15870f05e9
1 changed files with 8 additions and 7 deletions
|
@ -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)
|
static void alc861_auto_init_hp_out(struct hda_codec *codec)
|
||||||
{
|
{
|
||||||
struct alc_spec *spec = codec->spec;
|
struct alc_spec *spec = codec->spec;
|
||||||
hda_nid_t pin;
|
|
||||||
|
|
||||||
pin = spec->autocfg.hp_pins[0];
|
if (spec->autocfg.hp_outs)
|
||||||
if (pin)
|
alc861_auto_set_output_and_unmute(codec,
|
||||||
alc861_auto_set_output_and_unmute(codec, pin, PIN_HP,
|
spec->autocfg.hp_pins[0],
|
||||||
|
PIN_HP,
|
||||||
spec->multiout.hp_nid);
|
spec->multiout.hp_nid);
|
||||||
pin = spec->autocfg.speaker_pins[0];
|
if (spec->autocfg.speaker_outs)
|
||||||
if (pin)
|
alc861_auto_set_output_and_unmute(codec,
|
||||||
alc861_auto_set_output_and_unmute(codec, pin, PIN_OUT,
|
spec->autocfg.speaker_pins[0],
|
||||||
|
PIN_OUT,
|
||||||
spec->multiout.dac_nids[0]);
|
spec->multiout.dac_nids[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue