aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2016-12-06 05:55:17 -0500
committerTakashi Iwai <tiwai@suse.de>2016-12-06 05:55:17 -0500
commitf73cd43ac3b41c0f09a126387f302bbc0d9c726d (patch)
tree511863639cbd149cac90a6390e1583af4807c917
parent5e0ad0d8747f3e4803a9c3d96d64dd7332506d3c (diff)
ALSA: hda - Gate the mic jack on HP Z1 Gen3 AiO
HP Z1 Gen3 AiO with Conexant codec doesn't give an unsolicited event to the headset mic pin upon the jack plugging, it reports only to the headphone pin. It results in the missing mic switching. Let's fix up by simply gating the jack event. Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/patch_conexant.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index ed62748a6d55..c15c51bea26d 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -262,6 +262,7 @@ enum {
262 CXT_FIXUP_CAP_MIX_AMP_5047, 262 CXT_FIXUP_CAP_MIX_AMP_5047,
263 CXT_FIXUP_MUTE_LED_EAPD, 263 CXT_FIXUP_MUTE_LED_EAPD,
264 CXT_FIXUP_HP_SPECTRE, 264 CXT_FIXUP_HP_SPECTRE,
265 CXT_FIXUP_HP_GATE_MIC,
265}; 266};
266 267
267/* for hda_fixup_thinkpad_acpi() */ 268/* for hda_fixup_thinkpad_acpi() */
@@ -633,6 +634,17 @@ static void cxt_fixup_cap_mix_amp_5047(struct hda_codec *codec,
633 (1 << AC_AMPCAP_MUTE_SHIFT)); 634 (1 << AC_AMPCAP_MUTE_SHIFT));
634} 635}
635 636
637static void cxt_fixup_hp_gate_mic_jack(struct hda_codec *codec,
638 const struct hda_fixup *fix,
639 int action)
640{
641 /* the mic pin (0x19) doesn't give an unsolicited event;
642 * probe the mic pin together with the headphone pin (0x16)
643 */
644 if (action == HDA_FIXUP_ACT_PROBE)
645 snd_hda_jack_set_gating_jack(codec, 0x19, 0x16);
646}
647
636/* ThinkPad X200 & co with cxt5051 */ 648/* ThinkPad X200 & co with cxt5051 */
637static const struct hda_pintbl cxt_pincfg_lenovo_x200[] = { 649static const struct hda_pintbl cxt_pincfg_lenovo_x200[] = {
638 { 0x16, 0x042140ff }, /* HP (seq# overridden) */ 650 { 0x16, 0x042140ff }, /* HP (seq# overridden) */
@@ -774,6 +786,10 @@ static const struct hda_fixup cxt_fixups[] = {
774 { } 786 { }
775 } 787 }
776 }, 788 },
789 [CXT_FIXUP_HP_GATE_MIC] = {
790 .type = HDA_FIXUP_FUNC,
791 .v.func = cxt_fixup_hp_gate_mic_jack,
792 },
777}; 793};
778 794
779static const struct snd_pci_quirk cxt5045_fixups[] = { 795static const struct snd_pci_quirk cxt5045_fixups[] = {
@@ -824,6 +840,7 @@ static const struct snd_pci_quirk cxt5066_fixups[] = {
824 SND_PCI_QUIRK(0x1025, 0x054c, "Acer Aspire 3830TG", CXT_FIXUP_ASPIRE_DMIC), 840 SND_PCI_QUIRK(0x1025, 0x054c, "Acer Aspire 3830TG", CXT_FIXUP_ASPIRE_DMIC),
825 SND_PCI_QUIRK(0x1025, 0x054f, "Acer Aspire 4830T", CXT_FIXUP_ASPIRE_DMIC), 841 SND_PCI_QUIRK(0x1025, 0x054f, "Acer Aspire 4830T", CXT_FIXUP_ASPIRE_DMIC),
826 SND_PCI_QUIRK(0x103c, 0x8174, "HP Spectre x360", CXT_FIXUP_HP_SPECTRE), 842 SND_PCI_QUIRK(0x103c, 0x8174, "HP Spectre x360", CXT_FIXUP_HP_SPECTRE),
843 SND_PCI_QUIRK(0x103c, 0x8115, "HP Z1 Gen3", CXT_FIXUP_HP_GATE_MIC),
827 SND_PCI_QUIRK(0x1043, 0x138d, "Asus", CXT_FIXUP_HEADPHONE_MIC_PIN), 844 SND_PCI_QUIRK(0x1043, 0x138d, "Asus", CXT_FIXUP_HEADPHONE_MIC_PIN),
828 SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT_FIXUP_OLPC_XO), 845 SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT_FIXUP_OLPC_XO),
829 SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410), 846 SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410),