diff options
author | Takashi Iwai <tiwai@suse.de> | 2010-09-08 09:55:44 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-09-08 09:55:44 -0400 |
commit | 18675e4283f575594d55ef1239c14ab5b4de53b6 (patch) | |
tree | e9964139fdf118e02eb134d8e1711806b1098aa2 /sound | |
parent | 033688a5a80f9d56b2e7d56c4cb8188ae1448919 (diff) |
ALSA: hda - Add fixup for FSC Celsius H270
Added a fixup table for ALC262 codec containing the entry for FSC
Celsius H270. Now both headphone jacks are detected properly as
headphones.
Reference: Novell bnc637263
https://bugzilla.novell.com/show_bug.cgi?id=637263
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 26069e397fc9..f11a9ca2c4b2 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -12205,6 +12205,35 @@ static struct hda_verb alc262_toshiba_rx1_unsol_verbs[] = { | |||
12205 | {} | 12205 | {} |
12206 | }; | 12206 | }; |
12207 | 12207 | ||
12208 | /* | ||
12209 | * Pin config fixes | ||
12210 | */ | ||
12211 | enum { | ||
12212 | PINFIX_FSC_H270, | ||
12213 | }; | ||
12214 | |||
12215 | static const struct alc_fixup alc262_fixups[] = { | ||
12216 | [PINFIX_FSC_H270] = { | ||
12217 | .pins = (const struct alc_pincfg[]) { | ||
12218 | { 0x14, 0x99130110 }, /* speaker */ | ||
12219 | { 0x15, 0x0221142f }, /* front HP */ | ||
12220 | { 0x1b, 0x0121141f }, /* rear HP */ | ||
12221 | { } | ||
12222 | } | ||
12223 | }, | ||
12224 | [PINFIX_PB_M5210] = { | ||
12225 | .verbs = (const struct hda_verb[]) { | ||
12226 | { 0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF50 }, | ||
12227 | {} | ||
12228 | } | ||
12229 | }, | ||
12230 | }; | ||
12231 | |||
12232 | static struct snd_pci_quirk alc262_fixup_tbl[] = { | ||
12233 | SND_PCI_QUIRK(0x1734, 0x1147, "FSC Celsius H270", PINFIX_FSC_H270), | ||
12234 | {} | ||
12235 | }; | ||
12236 | |||
12208 | 12237 | ||
12209 | #ifdef CONFIG_SND_HDA_POWER_SAVE | 12238 | #ifdef CONFIG_SND_HDA_POWER_SAVE |
12210 | #define alc262_loopbacks alc880_loopbacks | 12239 | #define alc262_loopbacks alc880_loopbacks |
@@ -12628,6 +12657,9 @@ static int patch_alc262(struct hda_codec *codec) | |||
12628 | board_config = ALC262_AUTO; | 12657 | board_config = ALC262_AUTO; |
12629 | } | 12658 | } |
12630 | 12659 | ||
12660 | if (board_config == ALC262_AUTO) | ||
12661 | alc_pick_fixup(codec, alc262_fixup_tbl, alc262_fixups, 1); | ||
12662 | |||
12631 | if (board_config == ALC262_AUTO) { | 12663 | if (board_config == ALC262_AUTO) { |
12632 | /* automatic parse from the BIOS config */ | 12664 | /* automatic parse from the BIOS config */ |
12633 | err = alc262_parse_auto_config(codec); | 12665 | err = alc262_parse_auto_config(codec); |
@@ -12696,6 +12728,9 @@ static int patch_alc262(struct hda_codec *codec) | |||
12696 | if (!spec->no_analog && has_cdefine_beep(codec)) | 12728 | if (!spec->no_analog && has_cdefine_beep(codec)) |
12697 | set_beep_amp(spec, 0x0b, 0x05, HDA_INPUT); | 12729 | set_beep_amp(spec, 0x0b, 0x05, HDA_INPUT); |
12698 | 12730 | ||
12731 | if (board_config == ALC262_AUTO) | ||
12732 | alc_pick_fixup(codec, alc262_fixup_tbl, alc262_fixups, 0); | ||
12733 | |||
12699 | spec->vmaster_nid = 0x0c; | 12734 | spec->vmaster_nid = 0x0c; |
12700 | 12735 | ||
12701 | codec->patch_ops = alc_patch_ops; | 12736 | codec->patch_ops = alc_patch_ops; |