Commit 7c478f03 authored by David Henningsson's avatar David Henningsson Committed by Takashi Iwai

ALSA: hda - Add a headset mic model for ALC269 and friends

Using the headset mic model will cause the headset mic to be labeled
"headset mic" instead of just "mic".
Signed-off-by: default avatarDavid Henningsson <david.henningsson@canonical.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 88cfcf86
...@@ -28,6 +28,7 @@ ALC269/270/275/276/28x/29x ...@@ -28,6 +28,7 @@ ALC269/270/275/276/28x/29x
alc269-dmic Enable ALC269(VA) digital mic workaround alc269-dmic Enable ALC269(VA) digital mic workaround
alc271-dmic Enable ALC271X digital mic workaround alc271-dmic Enable ALC271X digital mic workaround
inv-dmic Inverted internal mic workaround inv-dmic Inverted internal mic workaround
headset-mic Indicates a combined headset (headphone+mic) jack
lenovo-dock Enables docking station I/O for some Lenovos lenovo-dock Enables docking station I/O for some Lenovos
dell-headset-multi Headset jack, which can also be used as mic-in dell-headset-multi Headset jack, which can also be used as mic-in
dell-headset-dock Headset jack (without mic-in), and also dock I/O dell-headset-dock Headset jack (without mic-in), and also dock I/O
......
...@@ -2819,6 +2819,15 @@ static void alc269_fixup_hweq(struct hda_codec *codec, ...@@ -2819,6 +2819,15 @@ static void alc269_fixup_hweq(struct hda_codec *codec,
alc_write_coef_idx(codec, 0x1e, coef | 0x80); 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, static void alc271_fixup_dmic(struct hda_codec *codec,
const struct hda_fixup *fix, int action) const struct hda_fixup *fix, int action)
{ {
...@@ -3516,6 +3525,7 @@ enum { ...@@ -3516,6 +3525,7 @@ enum {
ALC271_FIXUP_DMIC, ALC271_FIXUP_DMIC,
ALC269_FIXUP_PCM_44K, ALC269_FIXUP_PCM_44K,
ALC269_FIXUP_STEREO_DMIC, ALC269_FIXUP_STEREO_DMIC,
ALC269_FIXUP_HEADSET_MIC,
ALC269_FIXUP_QUANTA_MUTE, ALC269_FIXUP_QUANTA_MUTE,
ALC269_FIXUP_LIFEBOOK, ALC269_FIXUP_LIFEBOOK,
ALC269_FIXUP_AMIC, ALC269_FIXUP_AMIC,
...@@ -3615,6 +3625,10 @@ static const struct hda_fixup alc269_fixups[] = { ...@@ -3615,6 +3625,10 @@ static const struct hda_fixup alc269_fixups[] = {
.type = HDA_FIXUP_FUNC, .type = HDA_FIXUP_FUNC,
.v.func = alc269_fixup_stereo_dmic, .v.func = alc269_fixup_stereo_dmic,
}, },
[ALC269_FIXUP_HEADSET_MIC] = {
.type = HDA_FIXUP_FUNC,
.v.func = alc269_fixup_headset_mic,
},
[ALC269_FIXUP_QUANTA_MUTE] = { [ALC269_FIXUP_QUANTA_MUTE] = {
.type = HDA_FIXUP_FUNC, .type = HDA_FIXUP_FUNC,
.v.func = alc269_fixup_quanta_mute, .v.func = alc269_fixup_quanta_mute,
...@@ -3988,6 +4002,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { ...@@ -3988,6 +4002,7 @@ static const struct hda_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_HEADSET_MIC, .name = "headset-mic"},
{.id = ALC269_FIXUP_LENOVO_DOCK, .name = "lenovo-dock"}, {.id = ALC269_FIXUP_LENOVO_DOCK, .name = "lenovo-dock"},
{.id = ALC269_FIXUP_HP_GPIO_LED, .name = "hp-gpio-led"}, {.id = ALC269_FIXUP_HP_GPIO_LED, .name = "hp-gpio-led"},
{.id = ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, .name = "dell-headset-multi"}, {.id = ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, .name = "dell-headset-multi"},
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment