|
@@ -578,11 +578,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;
|
|
|
call_update_speakers(codec);
|
|
|
}
|
|
|
|
|
@@ -591,11 +591,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;
|
|
|
call_update_speakers(codec);
|
|
|
}
|
|
|
|
|
@@ -1797,6 +1797,7 @@ static const char * const alc_slave_vols[] = {
|
|
|
"Speaker Playback Volume",
|
|
|
"Mono Playback Volume",
|
|
|
"Line-Out Playback Volume",
|
|
|
+ "PCM Playback Volume",
|
|
|
NULL,
|
|
|
};
|
|
|
|
|
@@ -1811,6 +1812,7 @@ static const char * const alc_slave_sws[] = {
|
|
|
"Mono Playback Switch",
|
|
|
"IEC958 Playback Switch",
|
|
|
"Line-Out Playback Switch",
|
|
|
+ "PCM Playback Switch",
|
|
|
NULL,
|
|
|
};
|
|
|
|
|
@@ -3221,16 +3223,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);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*
|