Commit 411225a0 authored by Takashi Iwai's avatar Takashi Iwai

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: default avatarTakashi Iwai <tiwai@suse.de>
parent 96e225f6
...@@ -9,7 +9,6 @@ ALC880 ...@@ -9,7 +9,6 @@ ALC880
6stack 6-jack in back, 2-jack in front 6stack 6-jack in back, 2-jack in front
6stack-digout 6-jack with a SPDIF out 6stack-digout 6-jack with a SPDIF out
asus 3-jack (ASUS Mobo) asus 3-jack (ASUS Mobo)
asus-w1v ASUS W1V
asus-dig ASUS with SPDIF out asus-dig ASUS with SPDIF out
asus-dig2 ASUS with SPDIF out (using GPIO2) asus-dig2 ASUS with SPDIF out (using GPIO2)
test for testing/debugging purpose, almost all controls can be test for testing/debugging purpose, almost all controls can be
......
...@@ -14,7 +14,6 @@ enum { ...@@ -14,7 +14,6 @@ enum {
ALC880_6ST_DIG, ALC880_6ST_DIG,
ALC880_ASUS, ALC880_ASUS,
ALC880_ASUS_DIG, ALC880_ASUS_DIG,
ALC880_ASUS_W1V,
ALC880_ASUS_DIG2, ALC880_ASUS_DIG2,
#ifdef CONFIG_SND_DEBUG #ifdef CONFIG_SND_DEBUG
ALC880_TEST, ALC880_TEST,
...@@ -263,21 +262,6 @@ static const struct snd_kcontrol_new alc880_asus_mixer[] = { ...@@ -263,21 +262,6 @@ static const struct snd_kcontrol_new alc880_asus_mixer[] = {
{ } /* end */ { } /* end */
}; };
/*
* ALC880 ASUS W1V model
*
* DAC: HP/Front = 0x02 (0x0c), Surr = 0x03 (0x0d), CLFE = 0x04 (0x0e)
* Pin assignment: HP/Front = 0x14, Surr = 0x15, CLFE = 0x16,
* Mic = 0x18, Line = 0x1a, Line2 = 0x1b
*/
/* additional mixers to alc880_asus_mixer */
static const struct snd_kcontrol_new alc880_asus_w1v_mixer[] = {
HDA_CODEC_VOLUME("Line2 Playback Volume", 0x0b, 0x03, HDA_INPUT),
HDA_CODEC_MUTE("Line2 Playback Switch", 0x0b, 0x03, HDA_INPUT),
{ } /* end */
};
/* /*
* initialize the codec volumes, etc * initialize the codec volumes, etc
*/ */
...@@ -761,7 +745,6 @@ static const char * const alc880_models[ALC880_MODEL_LAST] = { ...@@ -761,7 +745,6 @@ static const char * const alc880_models[ALC880_MODEL_LAST] = {
[ALC880_6ST] = "6stack", [ALC880_6ST] = "6stack",
[ALC880_6ST_DIG] = "6stack-digout", [ALC880_6ST_DIG] = "6stack-digout",
[ALC880_ASUS] = "asus", [ALC880_ASUS] = "asus",
[ALC880_ASUS_W1V] = "asus-w1v",
[ALC880_ASUS_DIG] = "asus-dig", [ALC880_ASUS_DIG] = "asus-dig",
[ALC880_ASUS_DIG2] = "asus-dig2", [ALC880_ASUS_DIG2] = "asus-dig2",
#ifdef CONFIG_SND_DEBUG #ifdef CONFIG_SND_DEBUG
...@@ -780,7 +763,6 @@ static const struct snd_pci_quirk alc880_cfg_tbl[] = { ...@@ -780,7 +763,6 @@ static const struct snd_pci_quirk alc880_cfg_tbl[] = {
SND_PCI_QUIRK(0x1025, 0xe309, "ULI", ALC880_3ST_DIG), SND_PCI_QUIRK(0x1025, 0xe309, "ULI", ALC880_3ST_DIG),
SND_PCI_QUIRK(0x1025, 0xe310, "ULI", ALC880_3ST), SND_PCI_QUIRK(0x1025, 0xe310, "ULI", ALC880_3ST),
SND_PCI_QUIRK(0x1039, 0x1234, NULL, ALC880_6ST_DIG), SND_PCI_QUIRK(0x1039, 0x1234, NULL, ALC880_6ST_DIG),
SND_PCI_QUIRK(0x1043, 0x10b3, "ASUS W1V", ALC880_ASUS_W1V),
SND_PCI_QUIRK(0x1043, 0x10c2, "ASUS W6A", ALC880_ASUS_DIG), SND_PCI_QUIRK(0x1043, 0x10c2, "ASUS W6A", ALC880_ASUS_DIG),
SND_PCI_QUIRK(0x1043, 0x10c3, "ASUS Wxx", ALC880_ASUS_DIG), SND_PCI_QUIRK(0x1043, 0x10c3, "ASUS Wxx", ALC880_ASUS_DIG),
SND_PCI_QUIRK(0x1043, 0x1113, "ASUS", ALC880_ASUS_DIG), SND_PCI_QUIRK(0x1043, 0x1113, "ASUS", ALC880_ASUS_DIG),
...@@ -935,19 +917,6 @@ static const struct alc_config_preset alc880_presets[] = { ...@@ -935,19 +917,6 @@ static const struct alc_config_preset alc880_presets[] = {
.need_dac_fix = 1, .need_dac_fix = 1,
.input_mux = &alc880_capture_source, .input_mux = &alc880_capture_source,
}, },
[ALC880_ASUS_W1V] = {
.mixers = { alc880_asus_mixer, alc880_asus_w1v_mixer },
.init_verbs = { alc880_volume_init_verbs,
alc880_pin_asus_init_verbs,
alc880_gpio1_init_verbs },
.num_dacs = ARRAY_SIZE(alc880_asus_dac_nids),
.dac_nids = alc880_asus_dac_nids,
.dig_out_nid = ALC880_DIGOUT_NID,
.num_channel_mode = ARRAY_SIZE(alc880_asus_modes),
.channel_mode = alc880_asus_modes,
.need_dac_fix = 1,
.input_mux = &alc880_capture_source,
},
#ifdef CONFIG_SND_DEBUG #ifdef CONFIG_SND_DEBUG
[ALC880_TEST] = { [ALC880_TEST] = {
.mixers = { alc880_test_mixer }, .mixers = { alc880_test_mixer },
......
...@@ -4438,6 +4438,7 @@ static const struct hda_amp_list alc880_loopbacks[] = { ...@@ -4438,6 +4438,7 @@ static const struct hda_amp_list alc880_loopbacks[] = {
* ALC880 fix-ups * ALC880 fix-ups
*/ */
enum { enum {
ALC880_FIXUP_GPIO1,
ALC880_FIXUP_GPIO2, ALC880_FIXUP_GPIO2,
ALC880_FIXUP_MEDION_RIM, ALC880_FIXUP_MEDION_RIM,
ALC880_FIXUP_LG, ALC880_FIXUP_LG,
...@@ -4461,6 +4462,10 @@ static void alc880_fixup_vol_knob(struct hda_codec *codec, ...@@ -4461,6 +4462,10 @@ static void alc880_fixup_vol_knob(struct hda_codec *codec,
} }
static const struct alc_fixup alc880_fixups[] = { static const struct alc_fixup alc880_fixups[] = {
[ALC880_FIXUP_GPIO1] = {
.type = ALC_FIXUP_VERBS,
.v.verbs = alc_gpio1_init_verbs,
},
[ALC880_FIXUP_GPIO2] = { [ALC880_FIXUP_GPIO2] = {
.type = ALC_FIXUP_VERBS, .type = ALC_FIXUP_VERBS,
.v.verbs = alc_gpio2_init_verbs, .v.verbs = alc_gpio2_init_verbs,
...@@ -4602,6 +4607,7 @@ static const struct alc_fixup alc880_fixups[] = { ...@@ -4602,6 +4607,7 @@ static const struct alc_fixup alc880_fixups[] = {
static const struct snd_pci_quirk alc880_fixup_tbl[] = { static const struct snd_pci_quirk alc880_fixup_tbl[] = {
SND_PCI_QUIRK(0x1019, 0x0f69, "Coeus G610P", ALC880_FIXUP_W810), SND_PCI_QUIRK(0x1019, 0x0f69, "Coeus G610P", ALC880_FIXUP_W810),
SND_PCI_QUIRK(0x1043, 0x10b3, "ASUS W1V", ALC880_FIXUP_GPIO1),
SND_PCI_QUIRK(0x1043, 0x1964, "ASUS Z71V", ALC880_FIXUP_Z71V), SND_PCI_QUIRK(0x1043, 0x1964, "ASUS Z71V", ALC880_FIXUP_Z71V),
SND_PCI_QUIRK_VENDOR(0x1558, "Clevo", ALC880_FIXUP_EAPD_COEF), SND_PCI_QUIRK_VENDOR(0x1558, "Clevo", ALC880_FIXUP_EAPD_COEF),
SND_PCI_QUIRK(0x1584, 0x9050, "Uniwill", ALC880_FIXUP_UNIWILL_DIG), SND_PCI_QUIRK(0x1584, 0x9050, "Uniwill", ALC880_FIXUP_UNIWILL_DIG),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment