| @@ -3465,6 +3465,19 @@ static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec, · 3464 unmodified lines |
| 3465 | 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 | 3481 | static void alc269_fixup_hweq(struct hda_codec *codec, |
| 3469 | 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 | 5010 | static void alc_shutup_dell_xps13(struct hda_codec *codec) |
| 4976 | 5011 | { |
| 4977 | 5012 | struct alc_spec *spec = codec->spec; |
| @@ -5351,6 +5386,7 @@ enum { · 373 unmodified lines |
| 5351 | 5386 | ALC269_FIXUP_LIFEBOOK_EXTMIC, |
| 5352 | 5387 | ALC269_FIXUP_LIFEBOOK_HP_PIN, |
| 5353 | 5388 | ALC269_FIXUP_LIFEBOOK_NO_HP_TO_LINEOUT, |
| 5389 | + ALC255_FIXUP_LIFEBOOK_U7x7_HEADSET_MIC, |
| 5354 | 5390 | ALC269_FIXUP_AMIC, |
| 5355 | 5391 | ALC269_FIXUP_DMIC, |
| 5356 | 5392 | ALC269VB_FIXUP_AMIC, |
| @@ -5446,6 +5482,7 @@ enum { · 89 unmodified lines |
| 5446 | 5482 | ALC700_FIXUP_INTEL_REFERENCE, |
| 5447 | 5483 | ALC274_FIXUP_DELL_BIND_DACS, |
| 5448 | 5484 | ALC274_FIXUP_DELL_AIO_LINEOUT_VERB, |
| 5485 | + ALC298_FIXUP_TPT470_DOCK, |
| 5449 | 5486 | }; |
| 5450 | 5487 | |
| 5451 | 5488 | static const struct hda_fixup alc269_fixups[] = { |
| @@ -5556,6 +5593,10 @@ static const struct hda_fixup alc269_fixups[] = { · 104 unmodified lines |
| 5556 | 5593 | .type = HDA_FIXUP_FUNC, |
| 5557 | 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 | 5600 | [ALC269_FIXUP_AMIC] = { |
| 5560 | 5601 | .type = HDA_FIXUP_PINS, |
| 5561 | 5602 | .v.pins = (const struct hda_pintbl[]) { |
| @@ -6271,6 +6312,12 @@ static const struct hda_fixup alc269_fixups[] = { · 709 unmodified lines |
| 6271 | 6312 | .chained = true, |
| 6272 | 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 | 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 | 6368 | SND_PCI_QUIRK(0x1028, 0x075d, "Dell AIO", ALC298_FIXUP_SPK_VOLUME), |
| 6322 | 6369 | SND_PCI_QUIRK(0x1028, 0x0798, "Dell Inspiron 17 7000 Gaming", ALC256_FIXUP_DELL_INSPIRON_7559_SUBWOOFER), |
| 6323 | 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 | 6373 | SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), |
| 6325 | 6374 | SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), |
| 6326 | 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 | 6471 | SND_PCI_QUIRK(0x10cf, 0x159f, "Lifebook E780", ALC269_FIXUP_LIFEBOOK_NO_HP_TO_LINEOUT), |
| 6423 | 6472 | SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN), |
| 6424 | 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 | 6475 | SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC), |
| 6426 | 6476 | SND_PCI_QUIRK(0x10ec, 0x10f2, "Intel Reference board", ALC700_FIXUP_INTEL_REFERENCE), |
| 6427 | 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 | 6500 | SND_PCI_QUIRK(0x17aa, 0x2218, "Thinkpad X1 Carbon 2nd", ALC292_FIXUP_TPT440_DOCK), |
| 6451 | 6501 | SND_PCI_QUIRK(0x17aa, 0x2223, "ThinkPad T550", ALC292_FIXUP_TPT440_DOCK), |
| 6452 | 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 | 6505 | SND_PCI_QUIRK(0x17aa, 0x2231, "Thinkpad T560", ALC292_FIXUP_TPT460), |
| 6454 | 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 | 6513 | SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), |
| 6456 | 6514 | SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), |
| 6457 | 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 | 6530 | SND_PCI_QUIRK(0x17aa, 0x5050, "Thinkpad T560p", ALC292_FIXUP_TPT460), |
| 6473 | 6531 | SND_PCI_QUIRK(0x17aa, 0x5051, "Thinkpad L460", ALC292_FIXUP_TPT460), |
| 6474 | 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 | 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 | 6539 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), |
| 6477 | 6540 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), |
| 6478 | 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 | 6797 | {0x12, 0xb7a60130}, |
| 6735 | 6798 | {0x14, 0x90170110}, |
| 6736 | 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 | 6805 | SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, |
| 6738 | 6806 | ALC256_STANDARD_PINS), |
| 6739 | 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 | 6871 | {0x12, 0x90a60120}, |
| 6804 | 6872 | {0x14, 0x90170110}, |
| 6805 | 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 | 6878 | SND_HDA_PIN_QUIRK(0x10ec0290, 0x103c, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC1, |
| 6807 | 6879 | ALC290_STANDARD_PINS, |
| 6808 | 6880 | {0x15, 0x04211040}, |