diff options
author | Takashi Iwai <tiwai@suse.de> | 2008-09-02 08:48:20 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-09-02 11:25:33 -0400 |
commit | 24fb9173815045ab3f85a670d7df8af5af6ff3be (patch) | |
tree | 95d2473dbd54d5b57663ad95a35fd22c6eedb1f4 /sound | |
parent | 6e5ea7015c62b672020ee0a7c2764942fe63fa25 (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')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 18 |
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 */ | ||
14070 | static 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 | |||
14069 | static struct hda_verb alc663_m51va_init_verbs[] = { | 14076 | static 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; |