diff options
author | Takashi Iwai <tiwai@suse.de> | 2010-08-04 17:53:36 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-08-04 17:53:36 -0400 |
commit | fc091769a5aa65c045bfbda149c424ba33d0abbb (patch) | |
tree | a82d0d03910e056dd2ca4830623546438888ff9b /sound/pci | |
parent | 748cce431eb413e794c8f1d1974b78b47a6174ef (diff) |
ALSA: hda - Add pin-fix for HP dc5750
The NID 0x11 on HP dc5750 with ALC260 should be a speaker although BIOS
gives it as a line-out. This patch adds a quirk to fix the pin config
so that the real line-out is used properly.
Reference: bnc#624118
https://bugzilla.novell.com/show_bug.cgi?id=624118
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index c8070620a4d8..6ac53f7de549 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -6792,6 +6792,29 @@ static struct hda_amp_list alc260_loopbacks[] = { | |||
6792 | #endif | 6792 | #endif |
6793 | 6793 | ||
6794 | /* | 6794 | /* |
6795 | * Pin config fixes | ||
6796 | */ | ||
6797 | enum { | ||
6798 | PINFIX_HP_DC5750, | ||
6799 | }; | ||
6800 | |||
6801 | static struct alc_pincfg alc260_hp_dc5750_pinfix[] = { | ||
6802 | { 0x11, 0x90130110 }, /* speaker */ | ||
6803 | { } | ||
6804 | }; | ||
6805 | |||
6806 | static const struct alc_fixup alc260_fixups[] = { | ||
6807 | [PINFIX_HP_DC5750] = { | ||
6808 | .pins = alc260_hp_dc5750_pinfix | ||
6809 | }, | ||
6810 | }; | ||
6811 | |||
6812 | static struct snd_pci_quirk alc260_fixup_tbl[] = { | ||
6813 | SND_PCI_QUIRK(0x103c, 0x280a, "HP dc5750", PINFIX_HP_DC5750), | ||
6814 | {} | ||
6815 | }; | ||
6816 | |||
6817 | /* | ||
6795 | * ALC260 configurations | 6818 | * ALC260 configurations |
6796 | */ | 6819 | */ |
6797 | static const char *alc260_models[ALC260_MODEL_LAST] = { | 6820 | static const char *alc260_models[ALC260_MODEL_LAST] = { |
@@ -6990,6 +7013,9 @@ static int patch_alc260(struct hda_codec *codec) | |||
6990 | board_config = ALC260_AUTO; | 7013 | board_config = ALC260_AUTO; |
6991 | } | 7014 | } |
6992 | 7015 | ||
7016 | if (board_config == ALC260_AUTO) | ||
7017 | alc_pick_fixup(codec, alc260_fixup_tbl, alc260_fixups, 1); | ||
7018 | |||
6993 | if (board_config == ALC260_AUTO) { | 7019 | if (board_config == ALC260_AUTO) { |
6994 | /* automatic parse from the BIOS config */ | 7020 | /* automatic parse from the BIOS config */ |
6995 | err = alc260_parse_auto_config(codec); | 7021 | err = alc260_parse_auto_config(codec); |
@@ -7035,6 +7061,9 @@ static int patch_alc260(struct hda_codec *codec) | |||
7035 | set_capture_mixer(codec); | 7061 | set_capture_mixer(codec); |
7036 | set_beep_amp(spec, 0x07, 0x05, HDA_INPUT); | 7062 | set_beep_amp(spec, 0x07, 0x05, HDA_INPUT); |
7037 | 7063 | ||
7064 | if (board_config == ALC260_AUTO) | ||
7065 | alc_pick_fixup(codec, alc260_fixup_tbl, alc260_fixups, 0); | ||
7066 | |||
7038 | spec->vmaster_nid = 0x08; | 7067 | spec->vmaster_nid = 0x08; |
7039 | 7068 | ||
7040 | codec->patch_ops = alc_patch_ops; | 7069 | codec->patch_ops = alc_patch_ops; |