Commit 4f574b7b authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda - More volume-init fixes for ALC267 codec

More similar fixes like previous commits: handle the exceptional case
like ALC267 where no volume amp is found in ADC widget but in the
capsrc widget instead.

Also minor checks for avoiding possible erros: no connection-select
when the pin has a single selection, and add beep verbs only when the
0x1d is used for beep.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 7ec9c6cc
...@@ -11078,9 +11078,16 @@ static void alc882_auto_init_input_src(struct hda_codec *codec) ...@@ -11078,9 +11078,16 @@ static void alc882_auto_init_input_src(struct hda_codec *codec)
unsigned int wid_type; unsigned int wid_type;
/* mute ADC */ /* mute ADC */
snd_hda_codec_write(codec, spec->adc_nids[c], 0, if (query_amp_caps(codec, spec->adc_nids[c], HDA_INPUT) &
AC_AMPCAP_MUTE)
snd_hda_codec_write(codec, spec->adc_nids[c], 0,
AC_VERB_SET_AMP_GAIN_MUTE, AC_VERB_SET_AMP_GAIN_MUTE,
AMP_IN_MUTE(0)); AMP_IN_MUTE(0));
else if (query_amp_caps(codec, nid, HDA_OUTPUT) &
AC_AMPCAP_MUTE)
snd_hda_codec_write(codec, nid, 0,
AC_VERB_SET_AMP_GAIN_MUTE,
AMP_OUT_MUTE);
conns = snd_hda_get_conn_list(codec, nid, NULL); conns = snd_hda_get_conn_list(codec, nid, NULL);
if (conns <= 0) if (conns <= 0)
...@@ -13580,6 +13587,8 @@ static void alc268_auto_set_output_and_unmute(struct hda_codec *codec, ...@@ -13580,6 +13587,8 @@ static void alc268_auto_set_output_and_unmute(struct hda_codec *codec,
int idx; int idx;
alc_set_pin_output(codec, nid, pin_type); alc_set_pin_output(codec, nid, pin_type);
if (snd_hda_get_conn_list(codec, nid, NULL) <= 1)
return;
if (nid == 0x14 || nid == 0x16) if (nid == 0x14 || nid == 0x16)
idx = 0; idx = 0;
else else
...@@ -13721,10 +13730,11 @@ static int alc268_parse_auto_config(struct hda_codec *codec) ...@@ -13721,10 +13730,11 @@ static int alc268_parse_auto_config(struct hda_codec *codec)
if (spec->kctls.list) if (spec->kctls.list)
add_mixer(spec, spec->kctls.list); add_mixer(spec, spec->kctls.list);
if (!spec->no_analog && spec->autocfg.speaker_pins[0] != 0x1d) if (!spec->no_analog && spec->autocfg.speaker_pins[0] != 0x1d) {
add_mixer(spec, alc268_beep_mixer); add_mixer(spec, alc268_beep_mixer);
add_verb(spec, alc268_beep_init_verbs);
}
add_verb(spec, alc268_beep_init_verbs);
spec->num_mux_defs = 2; spec->num_mux_defs = 2;
spec->input_mux = &spec->private_imux[0]; spec->input_mux = &spec->private_imux[0];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment