diff mbox series

[SRU,Focal,1/1] ALSA: hda/realtek: headphone and mic don't work on an Acer laptop

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

Commit Message

Hui Wang July 27, 2021, 6:18 a.m. UTC
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>
---
 sound/pci/hda/patch_realtek.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Kleber Souza July 27, 2021, 10:43 a.m. UTC | #1
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 mbox series

Patch

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 \