Message ID | 20210727061825.8789-2-hui.wang@canonical.com |
---|---|
State | New |
Headers | show |
Series | Fix the Headphone and Mic issues on the Acer Aspire 5 | expand |
On 27.07.21 08:18, Hui Wang wrote: > BugLink: https://bugs.launchpad.net/bugs/1930188 > > There are 2 issues on this machine, the 1st one is mic's plug/unplug > can't be detected, that is because the mic is set to manual detecting > mode, need to apply ALC255_FIXUP_XIAOMI_HEADSET_MIC to set it to auto > detecting mode. The other one is headphone's plug/unplug can't be > detected by pulseaudio, that is because the pulseaudio will use > ucm2/sof-hda-dsp on this machine, and the ucm2 only handle > 'Headphone Jack', but on this machine the headphone's pincfg sets the > location to Front, then the alsa mixer name is "Front Headphone Jack" > instead of "Headphone Jack", so override the pincfg to change location > to Left. > > BugLink: http://bugs.launchpad.net/bugs/1930188 > Cc: <stable@vger.kernel.org> > Signed-off-by: Hui Wang <hui.wang@canonical.com> > Link: https://lore.kernel.org/r/20210608024600.6198-1-hui.wang@canonical.com > Signed-off-by: Takashi Iwai <tiwai@suse.de> > (backported from commit 57c9e21a49b1c196cda28f54de9a5d556ac93f20) > Signed-off-by: Hui Wang <hui.wang@canonical.com> Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> Thanks > --- > sound/pci/hda/patch_realtek.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c > index d903696c368d..9b3323009c57 100644 > --- a/sound/pci/hda/patch_realtek.c > +++ b/sound/pci/hda/patch_realtek.c > @@ -6457,6 +6457,7 @@ enum { > ALC295_FIXUP_ASUS_DACS, > ALC295_FIXUP_HP_OMEN, > ALC285_FIXUP_HP_SPECTRE_X360, > + ALC255_FIXUP_ACER_HEADPHONE_AND_MIC, > }; > > static const struct hda_fixup alc269_fixups[] = { > @@ -7959,6 +7960,15 @@ static const struct hda_fixup alc269_fixups[] = { > .chained = true, > .chain_id = ALC285_FIXUP_SPEAKER2_TO_DAC1, > }, > + [ALC255_FIXUP_ACER_HEADPHONE_AND_MIC] = { > + .type = HDA_FIXUP_PINS, > + .v.pins = (const struct hda_pintbl[]) { > + { 0x21, 0x03211030 }, /* Change the Headphone location to Left */ > + { } > + }, > + .chained = true, > + .chain_id = ALC255_FIXUP_XIAOMI_HEADSET_MIC > + }, > }; > > static const struct snd_pci_quirk alc269_fixup_tbl[] = { > @@ -7992,6 +8002,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { > SND_PCI_QUIRK(0x1025, 0x132a, "Acer TravelMate B114-21", ALC233_FIXUP_ACER_HEADSET_MIC), > SND_PCI_QUIRK(0x1025, 0x1330, "Acer TravelMate X514-51T", ALC255_FIXUP_ACER_HEADSET_MIC), > SND_PCI_QUIRK(0x1025, 0x1430, "Acer TravelMate B311R-31", ALC256_FIXUP_ACER_MIC_NO_PRESENCE), > + SND_PCI_QUIRK(0x1025, 0x1466, "Acer Aspire A515-56", ALC255_FIXUP_ACER_HEADPHONE_AND_MIC), > SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), > SND_PCI_QUIRK(0x1028, 0x054b, "Dell XPS one 2710", ALC275_FIXUP_DELL_XPS), > SND_PCI_QUIRK(0x1028, 0x05bd, "Dell Latitude E6440", ALC292_FIXUP_DELL_E7X), > @@ -8525,6 +8536,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { > {.id = ALC274_FIXUP_HP_MIC, .name = "alc274-hp-mic-detect"}, > {.id = ALC295_FIXUP_HP_OMEN, .name = "alc295-hp-omen"}, > {.id = ALC285_FIXUP_HP_SPECTRE_X360, .name = "alc285-hp-spectre-x360"}, > + {.id = ALC255_FIXUP_ACER_HEADPHONE_AND_MIC, .name = "alc255-acer-headphone-and-mic"}, > {} > }; > #define ALC225_STANDARD_PINS \ >
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index d903696c368d..9b3323009c57 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -6457,6 +6457,7 @@ enum { ALC295_FIXUP_ASUS_DACS, ALC295_FIXUP_HP_OMEN, ALC285_FIXUP_HP_SPECTRE_X360, + ALC255_FIXUP_ACER_HEADPHONE_AND_MIC, }; static const struct hda_fixup alc269_fixups[] = { @@ -7959,6 +7960,15 @@ static const struct hda_fixup alc269_fixups[] = { .chained = true, .chain_id = ALC285_FIXUP_SPEAKER2_TO_DAC1, }, + [ALC255_FIXUP_ACER_HEADPHONE_AND_MIC] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x21, 0x03211030 }, /* Change the Headphone location to Left */ + { } + }, + .chained = true, + .chain_id = ALC255_FIXUP_XIAOMI_HEADSET_MIC + }, }; static const struct snd_pci_quirk alc269_fixup_tbl[] = { @@ -7992,6 +8002,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1025, 0x132a, "Acer TravelMate B114-21", ALC233_FIXUP_ACER_HEADSET_MIC), SND_PCI_QUIRK(0x1025, 0x1330, "Acer TravelMate X514-51T", ALC255_FIXUP_ACER_HEADSET_MIC), SND_PCI_QUIRK(0x1025, 0x1430, "Acer TravelMate B311R-31", ALC256_FIXUP_ACER_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1025, 0x1466, "Acer Aspire A515-56", ALC255_FIXUP_ACER_HEADPHONE_AND_MIC), SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), SND_PCI_QUIRK(0x1028, 0x054b, "Dell XPS one 2710", ALC275_FIXUP_DELL_XPS), SND_PCI_QUIRK(0x1028, 0x05bd, "Dell Latitude E6440", ALC292_FIXUP_DELL_E7X), @@ -8525,6 +8536,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { {.id = ALC274_FIXUP_HP_MIC, .name = "alc274-hp-mic-detect"}, {.id = ALC295_FIXUP_HP_OMEN, .name = "alc295-hp-omen"}, {.id = ALC285_FIXUP_HP_SPECTRE_X360, .name = "alc285-hp-spectre-x360"}, + {.id = ALC255_FIXUP_ACER_HEADPHONE_AND_MIC, .name = "alc255-acer-headphone-and-mic"}, {} }; #define ALC225_STANDARD_PINS \