|
@@ -2819,6 +2819,15 @@ static void alc269_fixup_hweq(struct hda_codec *codec,
|
|
|
alc_write_coef_idx(codec, 0x1e, coef | 0x80);
|
|
|
}
|
|
|
|
|
|
+static void alc269_fixup_headset_mic(struct hda_codec *codec,
|
|
|
+ const struct hda_fixup *fix, int action)
|
|
|
+{
|
|
|
+ struct alc_spec *spec = codec->spec;
|
|
|
+
|
|
|
+ if (action == HDA_FIXUP_ACT_PRE_PROBE)
|
|
|
+ spec->parse_flags |= HDA_PINCFG_HEADSET_MIC;
|
|
|
+}
|
|
|
+
|
|
|
static void alc271_fixup_dmic(struct hda_codec *codec,
|
|
|
const struct hda_fixup *fix, int action)
|
|
|
{
|
|
@@ -3516,6 +3525,7 @@ enum {
|
|
|
ALC271_FIXUP_DMIC,
|
|
|
ALC269_FIXUP_PCM_44K,
|
|
|
ALC269_FIXUP_STEREO_DMIC,
|
|
|
+ ALC269_FIXUP_HEADSET_MIC,
|
|
|
ALC269_FIXUP_QUANTA_MUTE,
|
|
|
ALC269_FIXUP_LIFEBOOK,
|
|
|
ALC269_FIXUP_AMIC,
|
|
@@ -3615,6 +3625,10 @@ static const struct hda_fixup alc269_fixups[] = {
|
|
|
.type = HDA_FIXUP_FUNC,
|
|
|
.v.func = alc269_fixup_stereo_dmic,
|
|
|
},
|
|
|
+ [ALC269_FIXUP_HEADSET_MIC] = {
|
|
|
+ .type = HDA_FIXUP_FUNC,
|
|
|
+ .v.func = alc269_fixup_headset_mic,
|
|
|
+ },
|
|
|
[ALC269_FIXUP_QUANTA_MUTE] = {
|
|
|
.type = HDA_FIXUP_FUNC,
|
|
|
.v.func = alc269_fixup_quanta_mute,
|
|
@@ -3988,6 +4002,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
|
|
|
{.id = ALC269_FIXUP_STEREO_DMIC, .name = "alc269-dmic"},
|
|
|
{.id = ALC271_FIXUP_DMIC, .name = "alc271-dmic"},
|
|
|
{.id = ALC269_FIXUP_INV_DMIC, .name = "inv-dmic"},
|
|
|
+ {.id = ALC269_FIXUP_HEADSET_MIC, .name = "headset-mic"},
|
|
|
{.id = ALC269_FIXUP_LENOVO_DOCK, .name = "lenovo-dock"},
|
|
|
{.id = ALC269_FIXUP_HP_GPIO_LED, .name = "hp-gpio-led"},
|
|
|
{.id = ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, .name = "dell-headset-multi"},
|