aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_realtek.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-09-02 08:48:20 -0400
committerTakashi Iwai <tiwai@suse.de>2008-09-02 11:25:33 -0400
commit24fb9173815045ab3f85a670d7df8af5af6ff3be (patch)
tree95d2473dbd54d5b57663ad95a35fd22c6eedb1f4 /sound/pci/hda/patch_realtek.c
parent6e5ea7015c62b672020ee0a7c2764942fe63fa25 (diff)
ALSA: hda - Fix ALC663 auto-probe
Fix the wrong DAC assignment for NID 0x17 mono-pin on ALC663. 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.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index d6ec9eef2910..635748b122e9 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -14066,6 +14066,13 @@ static struct hda_verb alc662_auto_init_verbs[] = {
14066 { } 14066 { }
14067}; 14067};
14068 14068
14069/* additional verbs for ALC663 */
14070static struct hda_verb alc663_auto_init_verbs[] = {
14071 {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
14072 {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
14073 { }
14074};
14075
14069static struct hda_verb alc663_m51va_init_verbs[] = { 14076static struct hda_verb alc663_m51va_init_verbs[] = {
14070 {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, 14077 {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
14071 {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 14078 {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
@@ -14594,6 +14601,14 @@ static int alc662_auto_create_extra_out(struct alc_spec *spec, hda_nid_t pin,
14594 if (!pin) 14601 if (!pin)
14595 return 0; 14602 return 0;
14596 14603
14604 if (pin == 0x17) {
14605 /* ALC663 has a mono output pin on 0x17 */
14606 sprintf(name, "%s Playback Switch", pfx);
14607 err = add_control(spec, ALC_CTL_WIDGET_MUTE, name,
14608 HDA_COMPOSE_AMP_VAL(pin, 2, 0, HDA_OUTPUT));
14609 return err;
14610 }
14611
14597 if (alc880_is_fixed_pin(pin)) { 14612 if (alc880_is_fixed_pin(pin)) {
14598 nid = alc880_idx_to_dac(alc880_fixed_pin_idx(pin)); 14613 nid = alc880_idx_to_dac(alc880_fixed_pin_idx(pin));
14599 /* printk("DAC nid=%x\n",nid); */ 14614 /* printk("DAC nid=%x\n",nid); */
@@ -14764,6 +14779,9 @@ static int alc662_parse_auto_config(struct hda_codec *codec)
14764 spec->input_mux = &spec->private_imux; 14779 spec->input_mux = &spec->private_imux;
14765 14780
14766 spec->init_verbs[spec->num_init_verbs++] = alc662_auto_init_verbs; 14781 spec->init_verbs[spec->num_init_verbs++] = alc662_auto_init_verbs;
14782 if (codec->vendor_id == 0x10ec0663)
14783 spec->init_verbs[spec->num_init_verbs++] =
14784 alc663_auto_init_verbs;
14767 spec->mixers[spec->num_mixers] = alc662_capture_mixer; 14785 spec->mixers[spec->num_mixers] = alc662_capture_mixer;
14768 spec->num_mixers++; 14786 spec->num_mixers++;
14769 return 1; 14787 return 1;