ALSA: hda/realtek - Rewrite ALC880 model=asus-w1v with auto-parser
authorTakashi Iwai <tiwai@suse.de>
Mon, 20 Feb 2012 16:48:19 +0000 (17:48 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 20 Feb 2012 16:48:19 +0000 (17:48 +0100)
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>
Documentation/sound/alsa/HD-Audio-Models.txt
sound/pci/hda/alc880_quirks.c
sound/pci/hda/patch_realtek.c

index 43f3c71139503350d4491ff27b7e12630477c1e7..f1820679985032407a3eac895bed7e8e14a017ec 100644 (file)
@@ -9,7 +9,6 @@ ALC880
   6stack       6-jack in back, 2-jack in front
   6stack-digout        6-jack with a SPDIF out
   asus         3-jack (ASUS Mobo)
-  asus-w1v     ASUS W1V
   asus-dig     ASUS with SPDIF out
   asus-dig2    ASUS with SPDIF out (using GPIO2)
   test         for testing/debugging purpose, almost all controls can be
index 6caa2010a8514565d53dc38633879afd3a72a817..c8af01b7f8538a00dcfb9237fa0999ea9d2abc1a 100644 (file)
@@ -14,7 +14,6 @@ enum {
        ALC880_6ST_DIG,
        ALC880_ASUS,
        ALC880_ASUS_DIG,
-       ALC880_ASUS_W1V,
        ALC880_ASUS_DIG2,
 #ifdef CONFIG_SND_DEBUG
        ALC880_TEST,
@@ -263,21 +262,6 @@ static const struct snd_kcontrol_new alc880_asus_mixer[] = {
        { } /* 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
  */
@@ -761,7 +745,6 @@ static const char * const alc880_models[ALC880_MODEL_LAST] = {
        [ALC880_6ST]            = "6stack",
        [ALC880_6ST_DIG]        = "6stack-digout",
        [ALC880_ASUS]           = "asus",
-       [ALC880_ASUS_W1V]       = "asus-w1v",
        [ALC880_ASUS_DIG]       = "asus-dig",
        [ALC880_ASUS_DIG2]      = "asus-dig2",
 #ifdef CONFIG_SND_DEBUG
@@ -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, 0xe310, "ULI", ALC880_3ST),
        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, 0x10c3, "ASUS Wxx", ALC880_ASUS_DIG),
        SND_PCI_QUIRK(0x1043, 0x1113, "ASUS", ALC880_ASUS_DIG),
@@ -935,19 +917,6 @@ static const struct alc_config_preset alc880_presets[] = {
                .need_dac_fix = 1,
                .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
        [ALC880_TEST] = {
                .mixers = { alc880_test_mixer },
index 71acd9b9a88d7f502d6a924f0b5a29ac2ce0c879..510ca928b84094af484cada10173695db255d397 100644 (file)
@@ -4438,6 +4438,7 @@ static const struct hda_amp_list alc880_loopbacks[] = {
  * ALC880 fix-ups
  */
 enum {
+       ALC880_FIXUP_GPIO1,
        ALC880_FIXUP_GPIO2,
        ALC880_FIXUP_MEDION_RIM,
        ALC880_FIXUP_LG,
@@ -4461,6 +4462,10 @@ static void alc880_fixup_vol_knob(struct hda_codec *codec,
 }
 
 static const struct alc_fixup alc880_fixups[] = {
+       [ALC880_FIXUP_GPIO1] = {
+               .type = ALC_FIXUP_VERBS,
+               .v.verbs = alc_gpio1_init_verbs,
+       },
        [ALC880_FIXUP_GPIO2] = {
                .type = ALC_FIXUP_VERBS,
                .v.verbs = alc_gpio2_init_verbs,
@@ -4602,6 +4607,7 @@ static const struct alc_fixup alc880_fixups[] = {
 
 static const struct snd_pci_quirk alc880_fixup_tbl[] = {
        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_VENDOR(0x1558, "Clevo", ALC880_FIXUP_EAPD_COEF),
        SND_PCI_QUIRK(0x1584, 0x9050, "Uniwill", ALC880_FIXUP_UNIWILL_DIG),