diff options
author | Takashi Iwai <tiwai@suse.de> | 2012-02-20 11:48:19 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-02-20 11:48:19 -0500 |
commit | 411225a01e57189b4116d5c61c0d64bd4b76e602 (patch) | |
tree | 01de616b95235e5086942dc7e2104c24e26469cc | |
parent | 96e225f6922ecf3afafb55fdb0e6e771b3f71e94 (diff) |
ALSA: hda/realtek - Rewrite ALC880 model=asus-w1v with auto-parser
ASUS W1V has a sane pin-config table set by BIOS. The only missing piece
is the setup of GPIO1.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | Documentation/sound/alsa/HD-Audio-Models.txt | 1 | ||||
-rw-r--r-- | sound/pci/hda/alc880_quirks.c | 31 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 6 |
3 files changed, 6 insertions, 32 deletions
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index 43f3c7113950..f18206799850 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -9,7 +9,6 @@ ALC880 | |||
9 | 6stack 6-jack in back, 2-jack in front | 9 | 6stack 6-jack in back, 2-jack in front |
10 | 6stack-digout 6-jack with a SPDIF out | 10 | 6stack-digout 6-jack with a SPDIF out |
11 | asus 3-jack (ASUS Mobo) | 11 | asus 3-jack (ASUS Mobo) |
12 | asus-w1v ASUS W1V | ||
13 | asus-dig ASUS with SPDIF out | 12 | asus-dig ASUS with SPDIF out |
14 | asus-dig2 ASUS with SPDIF out (using GPIO2) | 13 | asus-dig2 ASUS with SPDIF out (using GPIO2) |
15 | test for testing/debugging purpose, almost all controls can be | 14 | test for testing/debugging purpose, almost all controls can be |
diff --git a/sound/pci/hda/alc880_quirks.c b/sound/pci/hda/alc880_quirks.c index 6caa2010a851..c8af01b7f853 100644 --- a/sound/pci/hda/alc880_quirks.c +++ b/sound/pci/hda/alc880_quirks.c | |||
@@ -14,7 +14,6 @@ enum { | |||
14 | ALC880_6ST_DIG, | 14 | ALC880_6ST_DIG, |
15 | ALC880_ASUS, | 15 | ALC880_ASUS, |
16 | ALC880_ASUS_DIG, | 16 | ALC880_ASUS_DIG, |
17 | ALC880_ASUS_W1V, | ||
18 | ALC880_ASUS_DIG2, | 17 | ALC880_ASUS_DIG2, |
19 | #ifdef CONFIG_SND_DEBUG | 18 | #ifdef CONFIG_SND_DEBUG |
20 | ALC880_TEST, | 19 | ALC880_TEST, |
@@ -264,21 +263,6 @@ static const struct snd_kcontrol_new alc880_asus_mixer[] = { | |||
264 | }; | 263 | }; |
265 | 264 | ||
266 | /* | 265 | /* |
267 | * ALC880 ASUS W1V model | ||
268 | * | ||
269 | * DAC: HP/Front = 0x02 (0x0c), Surr = 0x03 (0x0d), CLFE = 0x04 (0x0e) | ||
270 | * Pin assignment: HP/Front = 0x14, Surr = 0x15, CLFE = 0x16, | ||
271 | * Mic = 0x18, Line = 0x1a, Line2 = 0x1b | ||
272 | */ | ||
273 | |||
274 | /* additional mixers to alc880_asus_mixer */ | ||
275 | static const struct snd_kcontrol_new alc880_asus_w1v_mixer[] = { | ||
276 | HDA_CODEC_VOLUME("Line2 Playback Volume", 0x0b, 0x03, HDA_INPUT), | ||
277 | HDA_CODEC_MUTE("Line2 Playback Switch", 0x0b, 0x03, HDA_INPUT), | ||
278 | { } /* end */ | ||
279 | }; | ||
280 | |||
281 | /* | ||
282 | * initialize the codec volumes, etc | 266 | * initialize the codec volumes, etc |
283 | */ | 267 | */ |
284 | 268 | ||
@@ -761,7 +745,6 @@ static const char * const alc880_models[ALC880_MODEL_LAST] = { | |||
761 | [ALC880_6ST] = "6stack", | 745 | [ALC880_6ST] = "6stack", |
762 | [ALC880_6ST_DIG] = "6stack-digout", | 746 | [ALC880_6ST_DIG] = "6stack-digout", |
763 | [ALC880_ASUS] = "asus", | 747 | [ALC880_ASUS] = "asus", |
764 | [ALC880_ASUS_W1V] = "asus-w1v", | ||
765 | [ALC880_ASUS_DIG] = "asus-dig", | 748 | [ALC880_ASUS_DIG] = "asus-dig", |
766 | [ALC880_ASUS_DIG2] = "asus-dig2", | 749 | [ALC880_ASUS_DIG2] = "asus-dig2", |
767 | #ifdef CONFIG_SND_DEBUG | 750 | #ifdef CONFIG_SND_DEBUG |
@@ -780,7 +763,6 @@ static const struct snd_pci_quirk alc880_cfg_tbl[] = { | |||
780 | SND_PCI_QUIRK(0x1025, 0xe309, "ULI", ALC880_3ST_DIG), | 763 | SND_PCI_QUIRK(0x1025, 0xe309, "ULI", ALC880_3ST_DIG), |
781 | SND_PCI_QUIRK(0x1025, 0xe310, "ULI", ALC880_3ST), | 764 | SND_PCI_QUIRK(0x1025, 0xe310, "ULI", ALC880_3ST), |
782 | SND_PCI_QUIRK(0x1039, 0x1234, NULL, ALC880_6ST_DIG), | 765 | SND_PCI_QUIRK(0x1039, 0x1234, NULL, ALC880_6ST_DIG), |
783 | SND_PCI_QUIRK(0x1043, 0x10b3, "ASUS W1V", ALC880_ASUS_W1V), | ||
784 | SND_PCI_QUIRK(0x1043, 0x10c2, "ASUS W6A", ALC880_ASUS_DIG), | 766 | SND_PCI_QUIRK(0x1043, 0x10c2, "ASUS W6A", ALC880_ASUS_DIG), |
785 | SND_PCI_QUIRK(0x1043, 0x10c3, "ASUS Wxx", ALC880_ASUS_DIG), | 767 | SND_PCI_QUIRK(0x1043, 0x10c3, "ASUS Wxx", ALC880_ASUS_DIG), |
786 | SND_PCI_QUIRK(0x1043, 0x1113, "ASUS", ALC880_ASUS_DIG), | 768 | SND_PCI_QUIRK(0x1043, 0x1113, "ASUS", ALC880_ASUS_DIG), |
@@ -935,19 +917,6 @@ static const struct alc_config_preset alc880_presets[] = { | |||
935 | .need_dac_fix = 1, | 917 | .need_dac_fix = 1, |
936 | .input_mux = &alc880_capture_source, | 918 | .input_mux = &alc880_capture_source, |
937 | }, | 919 | }, |
938 | [ALC880_ASUS_W1V] = { | ||
939 | .mixers = { alc880_asus_mixer, alc880_asus_w1v_mixer }, | ||
940 | .init_verbs = { alc880_volume_init_verbs, | ||
941 | alc880_pin_asus_init_verbs, | ||
942 | alc880_gpio1_init_verbs }, | ||
943 | .num_dacs = ARRAY_SIZE(alc880_asus_dac_nids), | ||
944 | .dac_nids = alc880_asus_dac_nids, | ||
945 | .dig_out_nid = ALC880_DIGOUT_NID, | ||
946 | .num_channel_mode = ARRAY_SIZE(alc880_asus_modes), | ||
947 | .channel_mode = alc880_asus_modes, | ||
948 | .need_dac_fix = 1, | ||
949 | .input_mux = &alc880_capture_source, | ||
950 | }, | ||
951 | #ifdef CONFIG_SND_DEBUG | 920 | #ifdef CONFIG_SND_DEBUG |
952 | [ALC880_TEST] = { | 921 | [ALC880_TEST] = { |
953 | .mixers = { alc880_test_mixer }, | 922 | .mixers = { alc880_test_mixer }, |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 71acd9b9a88d..510ca928b840 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -4438,6 +4438,7 @@ static const struct hda_amp_list alc880_loopbacks[] = { | |||
4438 | * ALC880 fix-ups | 4438 | * ALC880 fix-ups |
4439 | */ | 4439 | */ |
4440 | enum { | 4440 | enum { |
4441 | ALC880_FIXUP_GPIO1, | ||
4441 | ALC880_FIXUP_GPIO2, | 4442 | ALC880_FIXUP_GPIO2, |
4442 | ALC880_FIXUP_MEDION_RIM, | 4443 | ALC880_FIXUP_MEDION_RIM, |
4443 | ALC880_FIXUP_LG, | 4444 | ALC880_FIXUP_LG, |
@@ -4461,6 +4462,10 @@ static void alc880_fixup_vol_knob(struct hda_codec *codec, | |||
4461 | } | 4462 | } |
4462 | 4463 | ||
4463 | static const struct alc_fixup alc880_fixups[] = { | 4464 | static const struct alc_fixup alc880_fixups[] = { |
4465 | [ALC880_FIXUP_GPIO1] = { | ||
4466 | .type = ALC_FIXUP_VERBS, | ||
4467 | .v.verbs = alc_gpio1_init_verbs, | ||
4468 | }, | ||
4464 | [ALC880_FIXUP_GPIO2] = { | 4469 | [ALC880_FIXUP_GPIO2] = { |
4465 | .type = ALC_FIXUP_VERBS, | 4470 | .type = ALC_FIXUP_VERBS, |
4466 | .v.verbs = alc_gpio2_init_verbs, | 4471 | .v.verbs = alc_gpio2_init_verbs, |
@@ -4602,6 +4607,7 @@ static const struct alc_fixup alc880_fixups[] = { | |||
4602 | 4607 | ||
4603 | static const struct snd_pci_quirk alc880_fixup_tbl[] = { | 4608 | static const struct snd_pci_quirk alc880_fixup_tbl[] = { |
4604 | SND_PCI_QUIRK(0x1019, 0x0f69, "Coeus G610P", ALC880_FIXUP_W810), | 4609 | SND_PCI_QUIRK(0x1019, 0x0f69, "Coeus G610P", ALC880_FIXUP_W810), |
4610 | SND_PCI_QUIRK(0x1043, 0x10b3, "ASUS W1V", ALC880_FIXUP_GPIO1), | ||
4605 | SND_PCI_QUIRK(0x1043, 0x1964, "ASUS Z71V", ALC880_FIXUP_Z71V), | 4611 | SND_PCI_QUIRK(0x1043, 0x1964, "ASUS Z71V", ALC880_FIXUP_Z71V), |
4606 | SND_PCI_QUIRK_VENDOR(0x1558, "Clevo", ALC880_FIXUP_EAPD_COEF), | 4612 | SND_PCI_QUIRK_VENDOR(0x1558, "Clevo", ALC880_FIXUP_EAPD_COEF), |
4607 | SND_PCI_QUIRK(0x1584, 0x9050, "Uniwill", ALC880_FIXUP_UNIWILL_DIG), | 4613 | SND_PCI_QUIRK(0x1584, 0x9050, "Uniwill", ALC880_FIXUP_UNIWILL_DIG), |