|
@@ -5881,6 +5881,15 @@ static int alc269_resume(struct hda_codec *codec)
|
|
}
|
|
}
|
|
#endif /* CONFIG_PM */
|
|
#endif /* CONFIG_PM */
|
|
|
|
|
|
|
|
+static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec,
|
|
|
|
+ const struct alc_fixup *fix, int action)
|
|
|
|
+{
|
|
|
|
+ struct alc_spec *spec = codec->spec;
|
|
|
|
+
|
|
|
|
+ if (action == ALC_FIXUP_ACT_PRE_PROBE)
|
|
|
|
+ spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP;
|
|
|
|
+}
|
|
|
|
+
|
|
static void alc269_fixup_hweq(struct hda_codec *codec,
|
|
static void alc269_fixup_hweq(struct hda_codec *codec,
|
|
const struct alc_fixup *fix, int action)
|
|
const struct alc_fixup *fix, int action)
|
|
{
|
|
{
|
|
@@ -6007,6 +6016,8 @@ enum {
|
|
ALC269VB_FIXUP_DMIC,
|
|
ALC269VB_FIXUP_DMIC,
|
|
ALC269_FIXUP_MIC2_MUTE_LED,
|
|
ALC269_FIXUP_MIC2_MUTE_LED,
|
|
ALC269_FIXUP_INV_DMIC,
|
|
ALC269_FIXUP_INV_DMIC,
|
|
|
|
+ ALC269_FIXUP_LENOVO_DOCK,
|
|
|
|
+ ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT,
|
|
};
|
|
};
|
|
|
|
|
|
static const struct alc_fixup alc269_fixups[] = {
|
|
static const struct alc_fixup alc269_fixups[] = {
|
|
@@ -6135,6 +6146,20 @@ static const struct alc_fixup alc269_fixups[] = {
|
|
.type = ALC_FIXUP_FUNC,
|
|
.type = ALC_FIXUP_FUNC,
|
|
.v.func = alc_fixup_inv_dmic_0x12,
|
|
.v.func = alc_fixup_inv_dmic_0x12,
|
|
},
|
|
},
|
|
|
|
+ [ALC269_FIXUP_LENOVO_DOCK] = {
|
|
|
|
+ .type = ALC_FIXUP_PINS,
|
|
|
|
+ .v.pins = (const struct alc_pincfg[]) {
|
|
|
|
+ { 0x19, 0x23a11040 }, /* dock mic */
|
|
|
|
+ { 0x1b, 0x2121103f }, /* dock headphone */
|
|
|
|
+ { }
|
|
|
|
+ },
|
|
|
|
+ .chained = true,
|
|
|
|
+ .chain_id = ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT
|
|
|
|
+ },
|
|
|
|
+ [ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT] = {
|
|
|
|
+ .type = ALC_FIXUP_FUNC,
|
|
|
|
+ .v.func = alc269_fixup_pincfg_no_hp_to_lineout,
|
|
|
|
+ },
|
|
};
|
|
};
|
|
|
|
|
|
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
|
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
|
@@ -6161,6 +6186,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
|
SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),
|
|
SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),
|
|
SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE),
|
|
SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE),
|
|
SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE),
|
|
SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE),
|
|
|
|
+ SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK),
|
|
SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE),
|
|
SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE),
|
|
SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K),
|
|
SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K),
|
|
SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
|
|
SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
|
|
@@ -6222,6 +6248,7 @@ static const struct alc_model_fixup alc269_fixup_models[] = {
|
|
{.id = ALC269_FIXUP_STEREO_DMIC, .name = "alc269-dmic"},
|
|
{.id = ALC269_FIXUP_STEREO_DMIC, .name = "alc269-dmic"},
|
|
{.id = ALC271_FIXUP_DMIC, .name = "alc271-dmic"},
|
|
{.id = ALC271_FIXUP_DMIC, .name = "alc271-dmic"},
|
|
{.id = ALC269_FIXUP_INV_DMIC, .name = "inv-dmic"},
|
|
{.id = ALC269_FIXUP_INV_DMIC, .name = "inv-dmic"},
|
|
|
|
+ {.id = ALC269_FIXUP_LENOVO_DOCK, .name = "lenovo-dock"},
|
|
{}
|
|
{}
|
|
};
|
|
};
|
|
|
|
|