aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2011-06-27 10:17:07 -0400
committerTakashi Iwai <tiwai@suse.de>2011-06-27 10:17:07 -0400
commit4f574b7b1a1cc8aac617e938459e8f03a641e678 (patch)
tree5db951ad7f05b6e0344b17602903f7294be13393 /sound
parent7ec9c6ccc6007b14a916021d4ba7ffbcc7822ae3 (diff)
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: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_realtek.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 0fefc656c6e0..cf383ede281d 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -11078,9 +11078,16 @@ static void alc882_auto_init_input_src(struct hda_codec *codec)
11078 unsigned int wid_type; 11078 unsigned int wid_type;
11079 11079
11080 /* mute ADC */ 11080 /* mute ADC */
11081 snd_hda_codec_write(codec, spec->adc_nids[c], 0, 11081 if (query_amp_caps(codec, spec->adc_nids[c], HDA_INPUT) &
11082 AC_AMPCAP_MUTE)
11083 snd_hda_codec_write(codec, spec->adc_nids[c], 0,
11082 AC_VERB_SET_AMP_GAIN_MUTE, 11084 AC_VERB_SET_AMP_GAIN_MUTE,
11083 AMP_IN_MUTE(0)); 11085 AMP_IN_MUTE(0));
11086 else if (query_amp_caps(codec, nid, HDA_OUTPUT) &
11087 AC_AMPCAP_MUTE)
11088 snd_hda_codec_write(codec, nid, 0,
11089 AC_VERB_SET_AMP_GAIN_MUTE,
11090 AMP_OUT_MUTE);
11084 11091
11085 conns = snd_hda_get_conn_list(codec, nid, NULL); 11092 conns = snd_hda_get_conn_list(codec, nid, NULL);
11086 if (conns <= 0) 11093 if (conns <= 0)
@@ -13580,6 +13587,8 @@ static void alc268_auto_set_output_and_unmute(struct hda_codec *codec,
13580 int idx; 13587 int idx;
13581 13588
13582 alc_set_pin_output(codec, nid, pin_type); 13589 alc_set_pin_output(codec, nid, pin_type);
13590 if (snd_hda_get_conn_list(codec, nid, NULL) <= 1)
13591 return;
13583 if (nid == 0x14 || nid == 0x16) 13592 if (nid == 0x14 || nid == 0x16)
13584 idx = 0; 13593 idx = 0;
13585 else 13594 else
@@ -13721,10 +13730,11 @@ static int alc268_parse_auto_config(struct hda_codec *codec)
13721 if (spec->kctls.list) 13730 if (spec->kctls.list)
13722 add_mixer(spec, spec->kctls.list); 13731 add_mixer(spec, spec->kctls.list);
13723 13732
13724 if (!spec->no_analog && spec->autocfg.speaker_pins[0] != 0x1d) 13733 if (!spec->no_analog && spec->autocfg.speaker_pins[0] != 0x1d) {
13725 add_mixer(spec, alc268_beep_mixer); 13734 add_mixer(spec, alc268_beep_mixer);
13735 add_verb(spec, alc268_beep_init_verbs);
13736 }
13726 13737
13727 add_verb(spec, alc268_beep_init_verbs);
13728 spec->num_mux_defs = 2; 13738 spec->num_mux_defs = 2;
13729 spec->input_mux = &spec->private_imux[0]; 13739 spec->input_mux = &spec->private_imux[0];
13730 13740