ALSA: hda - Add pin-fix for HP dc5750
authorTakashi Iwai <tiwai@suse.de>
Wed, 4 Aug 2010 21:53:36 +0000 (23:53 +0200)
committerTakashi Iwai <tiwai@suse.de>
Wed, 4 Aug 2010 21:53:36 +0000 (23:53 +0200)
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>
sound/pci/hda/patch_realtek.c

index c807062..6ac53f7 100644 (file)
@@ -6792,6 +6792,29 @@ static struct hda_amp_list alc260_loopbacks[] = {
 #endif
 
 /*
+ * Pin config fixes
+ */
+enum {
+       PINFIX_HP_DC5750,
+};
+
+static struct alc_pincfg alc260_hp_dc5750_pinfix[] = {
+       { 0x11, 0x90130110 }, /* speaker */
+       { }
+};
+
+static const struct alc_fixup alc260_fixups[] = {
+       [PINFIX_HP_DC5750] = {
+               .pins = alc260_hp_dc5750_pinfix
+       },
+};
+
+static struct snd_pci_quirk alc260_fixup_tbl[] = {
+       SND_PCI_QUIRK(0x103c, 0x280a, "HP dc5750", PINFIX_HP_DC5750),
+       {}
+};
+
+/*
  * ALC260 configurations
  */
 static const char *alc260_models[ALC260_MODEL_LAST] = {
@@ -6990,6 +7013,9 @@ static int patch_alc260(struct hda_codec *codec)
                board_config = ALC260_AUTO;
        }
 
+       if (board_config == ALC260_AUTO)
+               alc_pick_fixup(codec, alc260_fixup_tbl, alc260_fixups, 1);
+
        if (board_config == ALC260_AUTO) {
                /* automatic parse from the BIOS config */
                err = alc260_parse_auto_config(codec);
@@ -7035,6 +7061,9 @@ static int patch_alc260(struct hda_codec *codec)
        set_capture_mixer(codec);
        set_beep_amp(spec, 0x07, 0x05, HDA_INPUT);
 
+       if (board_config == ALC260_AUTO)
+               alc_pick_fixup(codec, alc260_fixup_tbl, alc260_fixups, 0);
+
        spec->vmaster_nid = 0x08;
 
        codec->patch_ops = alc_patch_ops;