aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2010-04-12 02:59:25 -0400
committerTakashi Iwai <tiwai@suse.de>2010-04-12 02:59:25 -0400
commitff818c24c2af370153646d302d831b69b023816f (patch)
treea3ede1c5f689b704eb631142d1f93f5c4ef6287a /sound
parent7fa90e873f520dad5ec58f47340996cda083e875 (diff)
ALSA: hda - Add fix-up for Sony VAIO with ALC269
Sony VAIO models with ALC269 need to initialize the pin 0x19 to VREF ground or Hi-Z to make the headphone working. Other than that, model=auto works fine, so let's use model=auto with a specific fix-up table. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_realtek.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index cff57710d1fb..4b35176d3454 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -14077,6 +14077,27 @@ static void alc269_auto_init(struct hda_codec *codec)
14077 alc_inithook(codec); 14077 alc_inithook(codec);
14078} 14078}
14079 14079
14080enum {
14081 ALC269_FIXUP_SONY_VAIO,
14082};
14083
14084const static struct hda_verb alc269_sony_vaio_fixup_verbs[] = {
14085 {0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREFGRD},
14086 {}
14087};
14088
14089static const struct alc_fixup alc269_fixups[] = {
14090 [ALC269_FIXUP_SONY_VAIO] = {
14091 .verbs = alc269_sony_vaio_fixup_verbs
14092 },
14093};
14094
14095static struct snd_pci_quirk alc269_fixup_tbl[] = {
14096 SND_PCI_QUIRK(0x104d, 0x9071, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
14097 {}
14098};
14099
14100
14080/* 14101/*
14081 * configuration and preset 14102 * configuration and preset
14082 */ 14103 */
@@ -14136,7 +14157,7 @@ static struct snd_pci_quirk alc269_cfg_tbl[] = {
14136 ALC269_DMIC), 14157 ALC269_DMIC),
14137 SND_PCI_QUIRK(0x1043, 0x8398, "ASUS P1005HA", ALC269_DMIC), 14158 SND_PCI_QUIRK(0x1043, 0x8398, "ASUS P1005HA", ALC269_DMIC),
14138 SND_PCI_QUIRK(0x1043, 0x83ce, "ASUS P1005HA", ALC269_DMIC), 14159 SND_PCI_QUIRK(0x1043, 0x83ce, "ASUS P1005HA", ALC269_DMIC),
14139 SND_PCI_QUIRK(0x104d, 0x9071, "SONY XTB", ALC269_DMIC), 14160 SND_PCI_QUIRK(0x104d, 0x9071, "Sony VAIO", ALC269_AUTO),
14140 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK), 14161 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK),
14141 SND_PCI_QUIRK(0x152d, 0x1778, "Quanta ON1", ALC269_DMIC), 14162 SND_PCI_QUIRK(0x152d, 0x1778, "Quanta ON1", ALC269_DMIC),
14142 SND_PCI_QUIRK(0x1734, 0x115d, "FSC Amilo", ALC269_FUJITSU), 14163 SND_PCI_QUIRK(0x1734, 0x115d, "FSC Amilo", ALC269_FUJITSU),
@@ -14290,6 +14311,9 @@ static int patch_alc269(struct hda_codec *codec)
14290 board_config = ALC269_AUTO; 14311 board_config = ALC269_AUTO;
14291 } 14312 }
14292 14313
14314 if (board_config == ALC269_AUTO)
14315 alc_pick_fixup(codec, alc269_fixup_tbl, alc269_fixups, 1);
14316
14293 if (board_config == ALC269_AUTO) { 14317 if (board_config == ALC269_AUTO) {
14294 /* automatic parse from the BIOS config */ 14318 /* automatic parse from the BIOS config */
14295 err = alc269_parse_auto_config(codec); 14319 err = alc269_parse_auto_config(codec);
@@ -14342,6 +14366,9 @@ static int patch_alc269(struct hda_codec *codec)
14342 set_capture_mixer(codec); 14366 set_capture_mixer(codec);
14343 set_beep_amp(spec, 0x0b, 0x04, HDA_INPUT); 14367 set_beep_amp(spec, 0x0b, 0x04, HDA_INPUT);
14344 14368
14369 if (board_config == ALC269_AUTO)
14370 alc_pick_fixup(codec, alc269_fixup_tbl, alc269_fixups, 0);
14371
14345 spec->vmaster_nid = 0x02; 14372 spec->vmaster_nid = 0x02;
14346 14373
14347 codec->patch_ops = alc_patch_ops; 14374 codec->patch_ops = alc_patch_ops;