| @@ -3465,6 +3465,19 @@ static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec, · 3464 unmodified lines |
| 3465 | spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP; | 3465 | spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP; |
| 3466 | } | 3466 | } |
| 3467 | | 3467 | |
| | 3468 | static void alc269_fixup_pincfg_U7x7_headset_mic(struct hda_codec *codec, |
| | 3469 | const struct hda_fixup *fix, |
| | 3470 | int action) |
| | 3471 | { |
| | 3472 | unsigned int cfg_headphone = snd_hda_codec_get_pincfg(codec, 0x21); |
| | 3473 | unsigned int cfg_headset_mic = snd_hda_codec_get_pincfg(codec, 0x19); |
| | 3474 | |
| | 3475 | if (cfg_headphone && cfg_headset_mic == 0x411111f0) |
| | 3476 | snd_hda_codec_set_pincfg(codec, 0x19, |
| | 3477 | (cfg_headphone & ~AC_DEFCFG_DEVICE) | |
| | 3478 | (AC_JACK_MIC_IN << AC_DEFCFG_DEVICE_SHIFT)); |
| | 3479 | } |
| | 3480 | |
| 3468 | static void alc269_fixup_hweq(struct hda_codec *codec, | 3481 | static void alc269_fixup_hweq(struct hda_codec *codec, |
| 3469 | const struct hda_fixup *fix, int action) | 3482 | const struct hda_fixup *fix, int action) |
| 3470 | { | 3483 | { |
| @@ -4972,6 +4985,28 @@ static void alc_fixup_tpt440_dock(struct hda_codec *codec, · 1501 unmodified lines |
| 4972 | } | 4985 | } |
| 4973 | } | 4986 | } |
| 4974 | | 4987 | |
| | 4988 | static void alc_fixup_tpt470_dock(struct hda_codec *codec, |
| | 4989 | const struct hda_fixup *fix, int action) |
| | 4990 | { |
| | 4991 | static const struct hda_pintbl pincfgs[] = { |
| | 4992 | { 0x17, 0x21211010 }, /* dock headphone */ |
| | 4993 | { 0x19, 0x21a11010 }, /* dock mic */ |
| | 4994 | { } |
| | 4995 | }; |
| | 4996 | struct alc_spec *spec = codec->spec; |
| | 4997 | |
| | 4998 | if (action == HDA_FIXUP_ACT_PRE_PROBE) { |
| | 4999 | spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP; |
| | 5000 | /* Enable DOCK device */ |
| | 5001 | snd_hda_codec_write(codec, 0x17, 0, |
| | 5002 | AC_VERB_SET_CONFIG_DEFAULT_BYTES_3, 0); |
| | 5003 | /* Enable DOCK device */ |
| | 5004 | snd_hda_codec_write(codec, 0x19, 0, |
| | 5005 | AC_VERB_SET_CONFIG_DEFAULT_BYTES_3, 0); |
| | 5006 | snd_hda_apply_pincfgs(codec, pincfgs); |
| | 5007 | } |
| | 5008 | } |
| | 5009 | |
| 4975 | static void alc_shutup_dell_xps13(struct hda_codec *codec) | 5010 | static void alc_shutup_dell_xps13(struct hda_codec *codec) |
| 4976 | { | 5011 | { |
| 4977 | struct alc_spec *spec = codec->spec; | 5012 | struct alc_spec *spec = codec->spec; |
| @@ -5351,6 +5386,7 @@ enum { · 373 unmodified lines |
| 5351 | ALC269_FIXUP_LIFEBOOK_EXTMIC, | 5386 | ALC269_FIXUP_LIFEBOOK_EXTMIC, |
| 5352 | ALC269_FIXUP_LIFEBOOK_HP_PIN, | 5387 | ALC269_FIXUP_LIFEBOOK_HP_PIN, |
| 5353 | ALC269_FIXUP_LIFEBOOK_NO_HP_TO_LINEOUT, | 5388 | ALC269_FIXUP_LIFEBOOK_NO_HP_TO_LINEOUT, |
| | 5389 | ALC255_FIXUP_LIFEBOOK_U7x7_HEADSET_MIC, |
| 5354 | ALC269_FIXUP_AMIC, | 5390 | ALC269_FIXUP_AMIC, |
| 5355 | ALC269_FIXUP_DMIC, | 5391 | ALC269_FIXUP_DMIC, |
| 5356 | ALC269VB_FIXUP_AMIC, | 5392 | ALC269VB_FIXUP_AMIC, |
| @@ -5446,6 +5482,7 @@ enum { · 89 unmodified lines |
| 5446 | ALC700_FIXUP_INTEL_REFERENCE, | 5482 | ALC700_FIXUP_INTEL_REFERENCE, |
| 5447 | ALC274_FIXUP_DELL_BIND_DACS, | 5483 | ALC274_FIXUP_DELL_BIND_DACS, |
| 5448 | ALC274_FIXUP_DELL_AIO_LINEOUT_VERB, | 5484 | ALC274_FIXUP_DELL_AIO_LINEOUT_VERB, |
| | 5485 | ALC298_FIXUP_TPT470_DOCK, |
| 5449 | }; | 5486 | }; |
| 5450 | | 5487 | |
| 5451 | static const struct hda_fixup alc269_fixups[] = { | 5488 | static const struct hda_fixup alc269_fixups[] = { |
| @@ -5556,6 +5593,10 @@ static const struct hda_fixup alc269_fixups[] = { · 104 unmodified lines |
| 5556 | .type = HDA_FIXUP_FUNC, | 5593 | .type = HDA_FIXUP_FUNC, |
| 5557 | .v.func = alc269_fixup_pincfg_no_hp_to_lineout, | 5594 | .v.func = alc269_fixup_pincfg_no_hp_to_lineout, |
| 5558 | }, | 5595 | }, |
| | 5596 | [ALC255_FIXUP_LIFEBOOK_U7x7_HEADSET_MIC] = { |
| | 5597 | .type = HDA_FIXUP_FUNC, |
| | 5598 | .v.func = alc269_fixup_pincfg_U7x7_headset_mic, |
| | 5599 | }, |
| 5559 | [ALC269_FIXUP_AMIC] = { | 5600 | [ALC269_FIXUP_AMIC] = { |
| 5560 | .type = HDA_FIXUP_PINS, | 5601 | .type = HDA_FIXUP_PINS, |
| 5561 | .v.pins = (const struct hda_pintbl[]) { | 5602 | .v.pins = (const struct hda_pintbl[]) { |
| @@ -6271,6 +6312,12 @@ static const struct hda_fixup alc269_fixups[] = { · 709 unmodified lines |
| 6271 | .chained = true, | 6312 | .chained = true, |
| 6272 | .chain_id = ALC274_FIXUP_DELL_BIND_DACS | 6313 | .chain_id = ALC274_FIXUP_DELL_BIND_DACS |
| 6273 | }, | 6314 | }, |
| | 6315 | [ALC298_FIXUP_TPT470_DOCK] = { |
| | 6316 | .type = HDA_FIXUP_FUNC, |
| | 6317 | .v.func = alc_fixup_tpt470_dock, |
| | 6318 | .chained = true, |
| | 6319 | .chain_id = ALC293_FIXUP_LENOVO_SPK_NOISE |
| | 6320 | }, |
| 6274 | }; | 6321 | }; |
| 6275 | | 6322 | |
| 6276 | static const struct snd_pci_quirk alc269_fixup_tbl[] = { | 6323 | static const struct snd_pci_quirk alc269_fixup_tbl[] = { |
| @@ -6321,6 +6368,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 44 unmodified lines |
| 6321 | SND_PCI_QUIRK(0x1028, 0x075d, "Dell AIO", ALC298_FIXUP_SPK_VOLUME), | 6368 | SND_PCI_QUIRK(0x1028, 0x075d, "Dell AIO", ALC298_FIXUP_SPK_VOLUME), |
| 6322 | SND_PCI_QUIRK(0x1028, 0x0798, "Dell Inspiron 17 7000 Gaming", ALC256_FIXUP_DELL_INSPIRON_7559_SUBWOOFER), | 6369 | SND_PCI_QUIRK(0x1028, 0x0798, "Dell Inspiron 17 7000 Gaming", ALC256_FIXUP_DELL_INSPIRON_7559_SUBWOOFER), |
| 6323 | SND_PCI_QUIRK(0x1028, 0x082a, "Dell XPS 13 9360", ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE), | 6370 | SND_PCI_QUIRK(0x1028, 0x082a, "Dell XPS 13 9360", ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE), |
| | 6371 | SND_PCI_QUIRK(0x1028, 0x084b, "Dell", ALC274_FIXUP_DELL_AIO_LINEOUT_VERB), |
| | 6372 | SND_PCI_QUIRK(0x1028, 0x084e, "Dell", ALC274_FIXUP_DELL_AIO_LINEOUT_VERB), |
| 6324 | SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), | 6373 | SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), |
| 6325 | SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), | 6374 | SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), |
| 6326 | SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2), | 6375 | SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2), |
| @@ -6422,6 +6471,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 95 unmodified lines |
| 6422 | SND_PCI_QUIRK(0x10cf, 0x159f, "Lifebook E780", ALC269_FIXUP_LIFEBOOK_NO_HP_TO_LINEOUT), | 6471 | SND_PCI_QUIRK(0x10cf, 0x159f, "Lifebook E780", ALC269_FIXUP_LIFEBOOK_NO_HP_TO_LINEOUT), |
| 6423 | SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN), | 6472 | SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN), |
| 6424 | SND_PCI_QUIRK(0x10cf, 0x1757, "Lifebook E752", ALC269_FIXUP_LIFEBOOK_HP_PIN), | 6473 | SND_PCI_QUIRK(0x10cf, 0x1757, "Lifebook E752", ALC269_FIXUP_LIFEBOOK_HP_PIN), |
| | 6474 | SND_PCI_QUIRK(0x10cf, 0x1629, "Lifebook U7x7", ALC255_FIXUP_LIFEBOOK_U7x7_HEADSET_MIC), |
| 6425 | SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC), | 6475 | SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC), |
| 6426 | SND_PCI_QUIRK(0x10ec, 0x10f2, "Intel Reference board", ALC700_FIXUP_INTEL_REFERENCE), | 6476 | SND_PCI_QUIRK(0x10ec, 0x10f2, "Intel Reference board", ALC700_FIXUP_INTEL_REFERENCE), |
| 6427 | SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC), | 6477 | SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC), |
| @@ -6450,8 +6500,16 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 22 unmodified lines |
| 6450 | SND_PCI_QUIRK(0x17aa, 0x2218, "Thinkpad X1 Carbon 2nd", ALC292_FIXUP_TPT440_DOCK), | 6500 | SND_PCI_QUIRK(0x17aa, 0x2218, "Thinkpad X1 Carbon 2nd", ALC292_FIXUP_TPT440_DOCK), |
| 6451 | SND_PCI_QUIRK(0x17aa, 0x2223, "ThinkPad T550", ALC292_FIXUP_TPT440_DOCK), | 6501 | SND_PCI_QUIRK(0x17aa, 0x2223, "ThinkPad T550", ALC292_FIXUP_TPT440_DOCK), |
| 6452 | SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK), | 6502 | SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK), |
| | 6503 | SND_PCI_QUIRK(0x17aa, 0x222d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| | 6504 | SND_PCI_QUIRK(0x17aa, 0x222e, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| 6453 | SND_PCI_QUIRK(0x17aa, 0x2231, "Thinkpad T560", ALC292_FIXUP_TPT460), | 6505 | SND_PCI_QUIRK(0x17aa, 0x2231, "Thinkpad T560", ALC292_FIXUP_TPT460), |
| 6454 | SND_PCI_QUIRK(0x17aa, 0x2233, "Thinkpad", ALC292_FIXUP_TPT460), | 6506 | SND_PCI_QUIRK(0x17aa, 0x2233, "Thinkpad", ALC292_FIXUP_TPT460), |
| | 6507 | SND_PCI_QUIRK(0x17aa, 0x2245, "Thinkpad T470", ALC298_FIXUP_TPT470_DOCK), |
| | 6508 | SND_PCI_QUIRK(0x17aa, 0x2246, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| | 6509 | SND_PCI_QUIRK(0x17aa, 0x2247, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| | 6510 | SND_PCI_QUIRK(0x17aa, 0x224b, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| | 6511 | SND_PCI_QUIRK(0x17aa, 0x224c, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| | 6512 | SND_PCI_QUIRK(0x17aa, 0x224d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| 6455 | SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), | 6513 | SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), |
| 6456 | SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), | 6514 | SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), |
| 6457 | SND_PCI_QUIRK(0x17aa, 0x310c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION), | 6515 | SND_PCI_QUIRK(0x17aa, 0x310c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION), |
| @@ -6472,7 +6530,12 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 14 unmodified lines |
| 6472 | SND_PCI_QUIRK(0x17aa, 0x5050, "Thinkpad T560p", ALC292_FIXUP_TPT460), | 6530 | SND_PCI_QUIRK(0x17aa, 0x5050, "Thinkpad T560p", ALC292_FIXUP_TPT460), |
| 6473 | SND_PCI_QUIRK(0x17aa, 0x5051, "Thinkpad L460", ALC292_FIXUP_TPT460), | 6531 | SND_PCI_QUIRK(0x17aa, 0x5051, "Thinkpad L460", ALC292_FIXUP_TPT460), |
| 6474 | SND_PCI_QUIRK(0x17aa, 0x5053, "Thinkpad T460", ALC292_FIXUP_TPT460), | 6532 | SND_PCI_QUIRK(0x17aa, 0x5053, "Thinkpad T460", ALC292_FIXUP_TPT460), |
| | 6533 | SND_PCI_QUIRK(0x17aa, 0x505d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| | 6534 | SND_PCI_QUIRK(0x17aa, 0x505f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| | 6535 | SND_PCI_QUIRK(0x17aa, 0x5062, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| 6475 | SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), | 6536 | SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), |
| | 6537 | SND_PCI_QUIRK(0x17aa, 0x511e, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| | 6538 | SND_PCI_QUIRK(0x17aa, 0x511f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| 6476 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), | 6539 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), |
| 6477 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), | 6540 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), |
| 6478 | SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */ | 6541 | SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */ |
| @@ -6734,6 +6797,11 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { · 255 unmodified lines |
| 6734 | {0x12, 0xb7a60130}, | 6797 | {0x12, 0xb7a60130}, |
| 6735 | {0x14, 0x90170110}, | 6798 | {0x14, 0x90170110}, |
| 6736 | {0x21, 0x02211020}), | 6799 | {0x21, 0x02211020}), |
| | 6800 | SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, |
| | 6801 | {0x12, 0x90a60130}, |
| | 6802 | {0x14, 0x90170110}, |
| | 6803 | {0x14, 0x01011020}, |
| | 6804 | {0x21, 0x0221101f}), |
| 6737 | SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, | 6805 | SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, |
| 6738 | ALC256_STANDARD_PINS), | 6806 | ALC256_STANDARD_PINS), |
| 6739 | SND_HDA_PIN_QUIRK(0x10ec0256, 0x1043, "ASUS", ALC256_FIXUP_ASUS_MIC, | 6807 | SND_HDA_PIN_QUIRK(0x10ec0256, 0x1043, "ASUS", ALC256_FIXUP_ASUS_MIC, |
| @@ -6803,6 +6871,10 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { · 63 unmodified lines |
| 6803 | {0x12, 0x90a60120}, | 6871 | {0x12, 0x90a60120}, |
| 6804 | {0x14, 0x90170110}, | 6872 | {0x14, 0x90170110}, |
| 6805 | {0x21, 0x0321101f}), | 6873 | {0x21, 0x0321101f}), |
| | 6874 | SND_HDA_PIN_QUIRK(0x10ec0289, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, |
| | 6875 | {0x12, 0xb7a60130}, |
| | 6876 | {0x14, 0x90170110}, |
| | 6877 | {0x21, 0x04211020}), |
| 6806 | SND_HDA_PIN_QUIRK(0x10ec0290, 0x103c, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC1, | 6878 | SND_HDA_PIN_QUIRK(0x10ec0290, 0x103c, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC1, |
| 6807 | ALC290_STANDARD_PINS, | 6879 | ALC290_STANDARD_PINS, |
| 6808 | {0x15, 0x04211040}, | 6880 | {0x15, 0x04211040}, |