Message ID | 20200930010832.363-2-hui.wang@canonical.com |
---|---|
State | New |
Headers | show |
Series | alsa/hda: mic doesn't work on a HP AIO machine | expand |
On 30.09.20 03:08, Hui Wang wrote: > BugLink: https://bugs.launchpad.net/bugs/1897694 > > Recently we enabled a HP AIO machine, we found the mic on the machine > couldn't record any sound and it couldn't detect plugging and > unplugging as well. > > Through debugging we found the mic is set to manual detect mode, after > setting it to auto detect mode, it could detect plugging and > unplugging and could record sound. > > Cc: <stable@vger.kernel.org> > Signed-off-by: Hui Wang <hui.wang@canonical.com> > Link: https://lore.kernel.org/r/20200928080117.12435-1-hui.wang@canonical.com > Signed-off-by: Takashi Iwai <tiwai@suse.de> > (backported from commit 13468bfa8c58731dc9ecda1cd9b22a191114f944 > git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git) > Signed-off-by: Hui Wang <hui.wang@canonical.com> Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> > --- > sound/pci/hda/patch_realtek.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c > index 03089eaa9f5f..b44219859d82 100644 > --- a/sound/pci/hda/patch_realtek.c > +++ b/sound/pci/hda/patch_realtek.c > @@ -6147,6 +6147,7 @@ enum { > ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET, > ALC295_FIXUP_ASUS_MIC_NO_PRESENCE, > ALC285_FIXUP_HP_GPIO_AMP_INIT, > + ALC274_FIXUP_HP_MIC, > }; > > static const struct hda_fixup alc269_fixups[] = { > @@ -7331,6 +7332,14 @@ static const struct hda_fixup alc269_fixups[] = { > .chained = true, > .chain_id = ALC285_FIXUP_HP_GPIO_LED > }, > + [ALC274_FIXUP_HP_MIC] = { > + .type = HDA_FIXUP_VERBS, > + .v.verbs = (const struct hda_verb[]) { > + { 0x20, AC_VERB_SET_COEF_INDEX, 0x45 }, > + { 0x20, AC_VERB_SET_PROC_COEF, 0x5089 }, > + { } > + }, > + }, > }; > > static const struct snd_pci_quirk alc269_fixup_tbl[] = { > @@ -7478,6 +7487,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { > SND_PCI_QUIRK(0x103c, 0x869d, "HP", ALC236_FIXUP_HP_MUTE_LED), > SND_PCI_QUIRK(0x103c, 0x8729, "HP", ALC285_FIXUP_HP_GPIO_LED), > SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_AMP_INIT), > + SND_PCI_QUIRK(0x103c, 0x874e, "HP", ALC274_FIXUP_HP_MIC), > SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED), > SND_PCI_QUIRK(0x103c, 0x877d, "HP", ALC236_FIXUP_HP_MUTE_LED), > SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), > @@ -7786,6 +7796,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { > {.id = ALC299_FIXUP_PREDATOR_SPK, .name = "predator-spk"}, > {.id = ALC298_FIXUP_HUAWEI_MBX_STEREO, .name = "huawei-mbx-stereo"}, > {.id = ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE, .name = "alc256-medion-headset"}, > + {.id = ALC274_FIXUP_HP_MIC, .name = "alc274-hp-mic-detect"}, > {} > }; > #define ALC225_STANDARD_PINS \ >
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 03089eaa9f5f..b44219859d82 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -6147,6 +6147,7 @@ enum { ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET, ALC295_FIXUP_ASUS_MIC_NO_PRESENCE, ALC285_FIXUP_HP_GPIO_AMP_INIT, + ALC274_FIXUP_HP_MIC, }; static const struct hda_fixup alc269_fixups[] = { @@ -7331,6 +7332,14 @@ static const struct hda_fixup alc269_fixups[] = { .chained = true, .chain_id = ALC285_FIXUP_HP_GPIO_LED }, + [ALC274_FIXUP_HP_MIC] = { + .type = HDA_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + { 0x20, AC_VERB_SET_COEF_INDEX, 0x45 }, + { 0x20, AC_VERB_SET_PROC_COEF, 0x5089 }, + { } + }, + }, }; static const struct snd_pci_quirk alc269_fixup_tbl[] = { @@ -7478,6 +7487,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x103c, 0x869d, "HP", ALC236_FIXUP_HP_MUTE_LED), SND_PCI_QUIRK(0x103c, 0x8729, "HP", ALC285_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x874e, "HP", ALC274_FIXUP_HP_MIC), SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED), SND_PCI_QUIRK(0x103c, 0x877d, "HP", ALC236_FIXUP_HP_MUTE_LED), SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), @@ -7786,6 +7796,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { {.id = ALC299_FIXUP_PREDATOR_SPK, .name = "predator-spk"}, {.id = ALC298_FIXUP_HUAWEI_MBX_STEREO, .name = "huawei-mbx-stereo"}, {.id = ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE, .name = "alc256-medion-headset"}, + {.id = ALC274_FIXUP_HP_MIC, .name = "alc274-hp-mic-detect"}, {} }; #define ALC225_STANDARD_PINS \