|
@@ -3465,6 +3465,19 @@ static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec,
|
|
|
spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP;
|
|
|
}
|
|
|
|
|
|
+static void alc269_fixup_pincfg_U7x7_headset_mic(struct hda_codec *codec,
|
|
|
+ const struct hda_fixup *fix,
|
|
|
+ int action)
|
|
|
+{
|
|
|
+ unsigned int cfg_headphone = snd_hda_codec_get_pincfg(codec, 0x21);
|
|
|
+ unsigned int cfg_headset_mic = snd_hda_codec_get_pincfg(codec, 0x19);
|
|
|
+
|
|
|
+ if (cfg_headphone && cfg_headset_mic == 0x411111f0)
|
|
|
+ snd_hda_codec_set_pincfg(codec, 0x19,
|
|
|
+ (cfg_headphone & ~AC_DEFCFG_DEVICE) |
|
|
|
+ (AC_JACK_MIC_IN << AC_DEFCFG_DEVICE_SHIFT));
|
|
|
+}
|
|
|
+
|
|
|
static void alc269_fixup_hweq(struct hda_codec *codec,
|
|
|
const struct hda_fixup *fix, int action)
|
|
|
{
|
|
@@ -4972,6 +4985,28 @@ static void alc_fixup_tpt440_dock(struct hda_codec *codec,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static void alc_fixup_tpt470_dock(struct hda_codec *codec,
|
|
|
+ const struct hda_fixup *fix, int action)
|
|
|
+{
|
|
|
+ static const struct hda_pintbl pincfgs[] = {
|
|
|
+ { 0x17, 0x21211010 }, /* dock headphone */
|
|
|
+ { 0x19, 0x21a11010 }, /* dock mic */
|
|
|
+ { }
|
|
|
+ };
|
|
|
+ struct alc_spec *spec = codec->spec;
|
|
|
+
|
|
|
+ if (action == HDA_FIXUP_ACT_PRE_PROBE) {
|
|
|
+ spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP;
|
|
|
+ /* Enable DOCK device */
|
|
|
+ snd_hda_codec_write(codec, 0x17, 0,
|
|
|
+ AC_VERB_SET_CONFIG_DEFAULT_BYTES_3, 0);
|
|
|
+ /* Enable DOCK device */
|
|
|
+ snd_hda_codec_write(codec, 0x19, 0,
|
|
|
+ AC_VERB_SET_CONFIG_DEFAULT_BYTES_3, 0);
|
|
|
+ snd_hda_apply_pincfgs(codec, pincfgs);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static void alc_shutup_dell_xps13(struct hda_codec *codec)
|
|
|
{
|
|
|
struct alc_spec *spec = codec->spec;
|
|
@@ -5351,6 +5386,7 @@ enum {
|
|
|
ALC269_FIXUP_LIFEBOOK_EXTMIC,
|
|
|
ALC269_FIXUP_LIFEBOOK_HP_PIN,
|
|
|
ALC269_FIXUP_LIFEBOOK_NO_HP_TO_LINEOUT,
|
|
|
+ ALC255_FIXUP_LIFEBOOK_U7x7_HEADSET_MIC,
|
|
|
ALC269_FIXUP_AMIC,
|
|
|
ALC269_FIXUP_DMIC,
|
|
|
ALC269VB_FIXUP_AMIC,
|
|
@@ -5446,6 +5482,7 @@ enum {
|
|
|
ALC700_FIXUP_INTEL_REFERENCE,
|
|
|
ALC274_FIXUP_DELL_BIND_DACS,
|
|
|
ALC274_FIXUP_DELL_AIO_LINEOUT_VERB,
|
|
|
+ ALC298_FIXUP_TPT470_DOCK,
|
|
|
};
|
|
|
|
|
|
static const struct hda_fixup alc269_fixups[] = {
|
|
@@ -5556,6 +5593,10 @@ static const struct hda_fixup alc269_fixups[] = {
|
|
|
.type = HDA_FIXUP_FUNC,
|
|
|
.v.func = alc269_fixup_pincfg_no_hp_to_lineout,
|
|
|
},
|
|
|
+ [ALC255_FIXUP_LIFEBOOK_U7x7_HEADSET_MIC] = {
|
|
|
+ .type = HDA_FIXUP_FUNC,
|
|
|
+ .v.func = alc269_fixup_pincfg_U7x7_headset_mic,
|
|
|
+ },
|
|
|
[ALC269_FIXUP_AMIC] = {
|
|
|
.type = HDA_FIXUP_PINS,
|
|
|
.v.pins = (const struct hda_pintbl[]) {
|
|
@@ -6271,6 +6312,12 @@ static const struct hda_fixup alc269_fixups[] = {
|
|
|
.chained = true,
|
|
|
.chain_id = ALC274_FIXUP_DELL_BIND_DACS
|
|
|
},
|
|
|
+ [ALC298_FIXUP_TPT470_DOCK] = {
|
|
|
+ .type = HDA_FIXUP_FUNC,
|
|
|
+ .v.func = alc_fixup_tpt470_dock,
|
|
|
+ .chained = true,
|
|
|
+ .chain_id = ALC293_FIXUP_LENOVO_SPK_NOISE
|
|
|
+ },
|
|
|
};
|
|
|
|
|
|
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
|
@@ -6321,6 +6368,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
|
|
SND_PCI_QUIRK(0x1028, 0x075d, "Dell AIO", ALC298_FIXUP_SPK_VOLUME),
|
|
|
SND_PCI_QUIRK(0x1028, 0x0798, "Dell Inspiron 17 7000 Gaming", ALC256_FIXUP_DELL_INSPIRON_7559_SUBWOOFER),
|
|
|
SND_PCI_QUIRK(0x1028, 0x082a, "Dell XPS 13 9360", ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE),
|
|
|
+ SND_PCI_QUIRK(0x1028, 0x084b, "Dell", ALC274_FIXUP_DELL_AIO_LINEOUT_VERB),
|
|
|
+ SND_PCI_QUIRK(0x1028, 0x084e, "Dell", ALC274_FIXUP_DELL_AIO_LINEOUT_VERB),
|
|
|
SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
|
|
|
SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
|
|
|
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[] = {
|
|
|
SND_PCI_QUIRK(0x10cf, 0x159f, "Lifebook E780", ALC269_FIXUP_LIFEBOOK_NO_HP_TO_LINEOUT),
|
|
|
SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN),
|
|
|
SND_PCI_QUIRK(0x10cf, 0x1757, "Lifebook E752", ALC269_FIXUP_LIFEBOOK_HP_PIN),
|
|
|
+ SND_PCI_QUIRK(0x10cf, 0x1629, "Lifebook U7x7", ALC255_FIXUP_LIFEBOOK_U7x7_HEADSET_MIC),
|
|
|
SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
|
|
|
SND_PCI_QUIRK(0x10ec, 0x10f2, "Intel Reference board", ALC700_FIXUP_INTEL_REFERENCE),
|
|
|
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[] = {
|
|
|
SND_PCI_QUIRK(0x17aa, 0x2218, "Thinkpad X1 Carbon 2nd", ALC292_FIXUP_TPT440_DOCK),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x2223, "ThinkPad T550", ALC292_FIXUP_TPT440_DOCK),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x222d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x222e, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x2231, "Thinkpad T560", ALC292_FIXUP_TPT460),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x2233, "Thinkpad", ALC292_FIXUP_TPT460),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x2245, "Thinkpad T470", ALC298_FIXUP_TPT470_DOCK),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x2246, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x2247, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x224b, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x224c, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x224d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
|
|
|
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[] = {
|
|
|
SND_PCI_QUIRK(0x17aa, 0x5050, "Thinkpad T560p", ALC292_FIXUP_TPT460),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x5051, "Thinkpad L460", ALC292_FIXUP_TPT460),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x5053, "Thinkpad T460", ALC292_FIXUP_TPT460),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x505d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x505f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x5062, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x511e, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x511f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
|
|
|
SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
|
|
|
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[] = {
|
|
|
{0x12, 0xb7a60130},
|
|
|
{0x14, 0x90170110},
|
|
|
{0x21, 0x02211020}),
|
|
|
+ SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
|
|
|
+ {0x12, 0x90a60130},
|
|
|
+ {0x14, 0x90170110},
|
|
|
+ {0x14, 0x01011020},
|
|
|
+ {0x21, 0x0221101f}),
|
|
|
SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
|
|
|
ALC256_STANDARD_PINS),
|
|
|
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[] = {
|
|
|
{0x12, 0x90a60120},
|
|
|
{0x14, 0x90170110},
|
|
|
{0x21, 0x0321101f}),
|
|
|
+ SND_HDA_PIN_QUIRK(0x10ec0289, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE,
|
|
|
+ {0x12, 0xb7a60130},
|
|
|
+ {0x14, 0x90170110},
|
|
|
+ {0x21, 0x04211020}),
|
|
|
SND_HDA_PIN_QUIRK(0x10ec0290, 0x103c, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC1,
|
|
|
ALC290_STANDARD_PINS,
|
|
|
{0x15, 0x04211040},
|