Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: hda/realtek - Rewrite ALC882 model=vaio-tt with auto-parser

Providing a pincfg fix for VAIO-TT with ALC889 codec to work with the
auto-parser, and drop the static configuration.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

+24 -61
-46
sound/pci/hda/alc882_quirks.c
··· 55 55 ALC888_ASUS_EEE1601, 56 56 ALC889A_MB31, 57 57 ALC1200_ASUS_P5Q, 58 - ALC883_SONY_VAIO_TT, 59 58 ALC882_MODEL_LAST, 60 59 }; 61 60 ··· 2254 2255 { } /* end */ 2255 2256 }; 2256 2257 2257 - static const struct snd_kcontrol_new alc883_vaiott_mixer[] = { 2258 - HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), 2259 - HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), 2260 - HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT), 2261 - HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x1, HDA_INPUT), 2262 - HDA_CODEC_VOLUME("Mic Boost Volume", 0x19, 0, HDA_INPUT), 2263 - HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x1, HDA_INPUT), 2264 - { } /* end */ 2265 - }; 2266 - 2267 2258 static const struct hda_bind_ctls alc883_bind_cap_vol = { 2268 2259 .ops = &snd_hda_bind_vol, 2269 2260 .values = { ··· 2464 2475 { } 2465 2476 }; 2466 2477 2467 - static const struct hda_verb alc883_vaiott_verbs[] = { 2468 - /* HP */ 2469 - {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, 2470 - {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, 2471 - 2472 - /* enable unsolicited event */ 2473 - {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC_HP_EVENT | AC_USRSP_EN}, 2474 - 2475 - { } /* end */ 2476 - }; 2477 - 2478 2478 static void alc888_3st_hp_setup(struct hda_codec *codec) 2479 2479 { 2480 2480 struct alc_spec *spec = codec->spec; ··· 2660 2682 alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP); 2661 2683 } 2662 2684 2663 - static void alc883_vaiott_setup(struct hda_codec *codec) 2664 - { 2665 - struct alc_spec *spec = codec->spec; 2666 - 2667 - spec->autocfg.hp_pins[0] = 0x15; 2668 - spec->autocfg.speaker_pins[0] = 0x14; 2669 - spec->autocfg.speaker_pins[1] = 0x17; 2670 - alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP); 2671 - } 2672 - 2673 2685 static const struct hda_verb alc888_asus_m90v_verbs[] = { 2674 2686 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, 2675 2687 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, ··· 2800 2832 [ALC889_INTEL] = "intel-x58", 2801 2833 [ALC1200_ASUS_P5Q] = "asus-p5q", 2802 2834 [ALC889A_MB31] = "mb31", 2803 - [ALC883_SONY_VAIO_TT] = "sony-vaio-tt", 2804 2835 [ALC882_AUTO] = "auto", 2805 2836 }; 2806 2837 ··· 2854 2887 SND_PCI_QUIRK(0x1043, 0x82fe, "Asus P5Q-EM HDMI", ALC1200_ASUS_P5Q), 2855 2888 SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_ASUS_EEE1601), 2856 2889 2857 - SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC883_SONY_VAIO_TT), 2858 2890 SND_PCI_QUIRK(0x105b, 0x0ce8, "Foxconn P35AX-S", ALC883_6ST_DIG), 2859 2891 SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC882_6ST_DIG), 2860 2892 SND_PCI_QUIRK(0x1071, 0x8227, "Mitac 82801H", ALC883_MITAC), ··· 3676 3710 .dig_out_nid = ALC883_DIGOUT_NID, 3677 3711 .unsol_event = alc889A_mb31_unsol_event, 3678 3712 .init_hook = alc889A_mb31_automute, 3679 - }, 3680 - [ALC883_SONY_VAIO_TT] = { 3681 - .mixers = { alc883_vaiott_mixer }, 3682 - .init_verbs = { alc883_init_verbs, alc883_vaiott_verbs }, 3683 - .num_dacs = ARRAY_SIZE(alc883_dac_nids), 3684 - .dac_nids = alc883_dac_nids, 3685 - .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), 3686 - .channel_mode = alc883_3ST_2ch_modes, 3687 - .input_mux = &alc883_capture_source, 3688 - .unsol_event = alc_sku_unsol_event, 3689 - .setup = alc883_vaiott_setup, 3690 - .init_hook = alc_hp_automute, 3691 3713 }, 3692 3714 }; 3693 3715
+24 -15
sound/pci/hda/patch_realtek.c
··· 4214 4214 * Pin config fixes 4215 4215 */ 4216 4216 enum { 4217 - PINFIX_ABIT_AW9D_MAX, 4218 - PINFIX_LENOVO_Y530, 4219 - PINFIX_PB_M5210, 4220 - PINFIX_ACER_ASPIRE_7736, 4221 - PINFIX_ASUS_W90V, 4217 + ALC882_FIXUP_ABIT_AW9D_MAX, 4218 + ALC882_FIXUP_LENOVO_Y530, 4219 + ALC882_FIXUP_PB_M5210, 4220 + ALC882_FIXUP_ACER_ASPIRE_7736, 4221 + ALC882_FIXUP_ASUS_W90V, 4222 + ALC889_FIXUP_VAIO_TT, 4222 4223 }; 4223 4224 4224 4225 static const struct alc_fixup alc882_fixups[] = { 4225 - [PINFIX_ABIT_AW9D_MAX] = { 4226 + [ALC882_FIXUP_ABIT_AW9D_MAX] = { 4226 4227 .type = ALC_FIXUP_PINS, 4227 4228 .v.pins = (const struct alc_pincfg[]) { 4228 4229 { 0x15, 0x01080104 }, /* side */ ··· 4232 4231 { } 4233 4232 } 4234 4233 }, 4235 - [PINFIX_LENOVO_Y530] = { 4234 + [ALC882_FIXUP_LENOVO_Y530] = { 4236 4235 .type = ALC_FIXUP_PINS, 4237 4236 .v.pins = (const struct alc_pincfg[]) { 4238 4237 { 0x15, 0x99130112 }, /* rear int speakers */ ··· 4240 4239 { } 4241 4240 } 4242 4241 }, 4243 - [PINFIX_PB_M5210] = { 4242 + [ALC882_FIXUP_PB_M5210] = { 4244 4243 .type = ALC_FIXUP_VERBS, 4245 4244 .v.verbs = (const struct hda_verb[]) { 4246 4245 { 0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF50 }, 4247 4246 {} 4248 4247 } 4249 4248 }, 4250 - [PINFIX_ACER_ASPIRE_7736] = { 4249 + [ALC882_FIXUP_ACER_ASPIRE_7736] = { 4251 4250 .type = ALC_FIXUP_SKU, 4252 4251 .v.sku = ALC_FIXUP_SKU_IGNORE, 4253 4252 }, 4254 - [PINFIX_ASUS_W90V] = { 4253 + [ALC882_FIXUP_ASUS_W90V] = { 4255 4254 .type = ALC_FIXUP_PINS, 4256 4255 .v.pins = (const struct alc_pincfg[]) { 4257 4256 { 0x16, 0x99130110 }, /* fix sequence for CLFE */ 4258 4257 { } 4259 4258 } 4260 4259 }, 4260 + [ALC889_FIXUP_VAIO_TT] = { 4261 + .type = ALC_FIXUP_PINS, 4262 + .v.pins = (const struct alc_pincfg[]) { 4263 + { 0x17, 0x90170111 }, /* hidden surround speaker */ 4264 + { } 4265 + } 4266 + }, 4261 4267 }; 4262 4268 4263 4269 static const struct snd_pci_quirk alc882_fixup_tbl[] = { 4264 - SND_PCI_QUIRK(0x1025, 0x0155, "Packard-Bell M5120", PINFIX_PB_M5210), 4265 - SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", PINFIX_ASUS_W90V), 4266 - SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", PINFIX_LENOVO_Y530), 4267 - SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", PINFIX_ABIT_AW9D_MAX), 4268 - SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", PINFIX_ACER_ASPIRE_7736), 4270 + SND_PCI_QUIRK(0x1025, 0x0155, "Packard-Bell M5120", ALC882_FIXUP_PB_M5210), 4271 + SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V), 4272 + SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", ALC882_FIXUP_LENOVO_Y530), 4273 + SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", ALC882_FIXUP_ABIT_AW9D_MAX), 4274 + SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", ALC882_FIXUP_ACER_ASPIRE_7736), 4275 + SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT), 4269 4276 {} 4270 4277 }; 4271 4278