diff options
author | Takashi Iwai <tiwai@suse.de> | 2010-04-12 02:59:25 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-04-12 02:59:25 -0400 |
commit | ff818c24c2af370153646d302d831b69b023816f (patch) | |
tree | a3ede1c5f689b704eb631142d1f93f5c4ef6287a /sound | |
parent | 7fa90e873f520dad5ec58f47340996cda083e875 (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.c | 29 |
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 | ||
14080 | enum { | ||
14081 | ALC269_FIXUP_SONY_VAIO, | ||
14082 | }; | ||
14083 | |||
14084 | const static struct hda_verb alc269_sony_vaio_fixup_verbs[] = { | ||
14085 | {0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREFGRD}, | ||
14086 | {} | ||
14087 | }; | ||
14088 | |||
14089 | static const struct alc_fixup alc269_fixups[] = { | ||
14090 | [ALC269_FIXUP_SONY_VAIO] = { | ||
14091 | .verbs = alc269_sony_vaio_fixup_verbs | ||
14092 | }, | ||
14093 | }; | ||
14094 | |||
14095 | static 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; |