diff mbox series

[v2,2/3] ALSA: hda/realtek: Enable audio jacks of ASUS UX533FD with ALC294

Message ID 20181206084554.4728-3-jian-hong@endlessm.com (mailing list archive)
State New, archived
Headers show
Series Add ALC294 quirks for ASUS laptops | expand

Commit Message

Jian-Hong Pan Dec. 6, 2018, 8:45 a.m. UTC
The ASUS UX533FD with ALC294 cannot detect the headset MIC and output
through the internal speaker and the headphone until
ALC294_FIXUP_ASUS_SPK_NOISE quirk applied.

Signed-off-by: Daniel Drake <drake@endlessm.com>
Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
---
v2:
- Modify the HDA verbs for UX333FA support
- Make a new ALC294_FIXUP_ASUS_HEADSET_MIC quirk for ALC294 chain
- .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE  ==> change to ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC

 sound/pci/hda/patch_realtek.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

Comments

Kailang Dec. 7, 2018, 3:31 a.m. UTC | #1
Hi Jian Hong,

Could I know who give you the value as below?

+			{ 0x20, AC_VERB_SET_COEF_INDEX, 0x10 },
+			{ 0x20, 0x4c4, 0x20 },
+			{ 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
+			{ 0x20, 0x488, 0x00 },

BR,
Kailang

-----Original Message-----
From: Jian-Hong Pan <jian-hong@endlessm.com> 
Sent: Thursday, December 6, 2018 4:46 PM
To: Jaroslav Kysela <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; Kailang <kailang@realtek.com>
Cc: Hui Wang <hui.wang@canonical.com>; alsa-devel@alsa-project.org; linux-kernel@vger.kernel.org; linux@endlessm.com; Jian-Hong Pan <jian-hong@endlessm.com>; Daniel Drake <drake@endlessm.com>
Subject: [PATCH v2 2/3] ALSA: hda/realtek: Enable audio jacks of ASUS UX533FD with ALC294

The ASUS UX533FD with ALC294 cannot detect the headset MIC and output through the internal speaker and the headphone until ALC294_FIXUP_ASUS_SPK_NOISE quirk applied.

Signed-off-by: Daniel Drake <drake@endlessm.com>
Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
---
v2:
- Modify the HDA verbs for UX333FA support
- Make a new ALC294_FIXUP_ASUS_HEADSET_MIC quirk for ALC294 chain
- .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE  ==> change to ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC

 sound/pci/hda/patch_realtek.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index d32e50b1ed60..1525bcdf96e8 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -5518,6 +5518,8 @@ enum {
 	ALC295_FIXUP_HP_AUTO_MUTE,
 	ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE,
 	ALC294_FIXUP_ASUS_MIC,
+	ALC294_FIXUP_ASUS_HEADSET_MIC,
+	ALC294_FIXUP_ASUS_SPK_NOISE,
 };
 
 static const struct hda_fixup alc269_fixups[] = { @@ -6414,6 +6416,28 @@ static const struct hda_fixup alc269_fixups[] = {
 		.chained = true,
 		.chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
 	},
+	[ALC294_FIXUP_ASUS_HEADSET_MIC] = {
+		.type = HDA_FIXUP_PINS,
+		.v.pins = (const struct hda_pintbl[]) {
+			{ 0x19, 0x01a1113c }, /* use as headset mic, without its own jack detect */
+			{ }
+		},
+		.chained = true,
+		.chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
+	},
+	[ALC294_FIXUP_ASUS_SPK_NOISE] = {
+		.type = HDA_FIXUP_VERBS,
+		.v.verbs = (const struct hda_verb[]) {
+			/* Set EAPD high */
+			{ 0x20, AC_VERB_SET_COEF_INDEX, 0x10 },
+			{ 0x20, 0x4c4, 0x20 },
+			{ 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
+			{ 0x20, 0x488, 0x00 },
+			{ }
+		},
+		.chained = true,
+		.chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC
+	},
 };
 
 static const struct snd_pci_quirk alc269_fixup_tbl[] = { @@ -6556,6 +6580,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x1043, 0x12e0, "ASUS X541SA", ALC256_FIXUP_ASUS_MIC),
 	SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC),
 	SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK),
+	SND_PCI_QUIRK(0x1043, 0x14a1, "ASUS UX533FD", 
+ALC294_FIXUP_ASUS_SPK_NOISE),
 	SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A),
 	SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC),
 	SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
--
2.11.0
Jian-Hong Pan Dec. 7, 2018, 3:48 a.m. UTC | #2
Kailang <kailang@realtek.com> 於 2018年12月7日 週五 上午11:32寫道:
>
> Hi Jian Hong,
>
> Could I know who give you the value as below?
>
> +                       { 0x20, AC_VERB_SET_COEF_INDEX, 0x10 },
> +                       { 0x20, 0x4c4, 0x20 },
> +                       { 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
> +                       { 0x20, 0x488, 0x00 },

A module maker.

Regards,
Jian-Hong Pan

> -----Original Message-----
> From: Jian-Hong Pan <jian-hong@endlessm.com>
> Sent: Thursday, December 6, 2018 4:46 PM
> To: Jaroslav Kysela <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; Kailang <kailang@realtek.com>
> Cc: Hui Wang <hui.wang@canonical.com>; alsa-devel@alsa-project.org; linux-kernel@vger.kernel.org; linux@endlessm.com; Jian-Hong Pan <jian-hong@endlessm.com>; Daniel Drake <drake@endlessm.com>
> Subject: [PATCH v2 2/3] ALSA: hda/realtek: Enable audio jacks of ASUS UX533FD with ALC294
>
> The ASUS UX533FD with ALC294 cannot detect the headset MIC and output through the internal speaker and the headphone until ALC294_FIXUP_ASUS_SPK_NOISE quirk applied.
>
> Signed-off-by: Daniel Drake <drake@endlessm.com>
> Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
> ---
> v2:
> - Modify the HDA verbs for UX333FA support
> - Make a new ALC294_FIXUP_ASUS_HEADSET_MIC quirk for ALC294 chain
> - .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE  ==> change to ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
>
>  sound/pci/hda/patch_realtek.c | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
>
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index d32e50b1ed60..1525bcdf96e8 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -5518,6 +5518,8 @@ enum {
>         ALC295_FIXUP_HP_AUTO_MUTE,
>         ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE,
>         ALC294_FIXUP_ASUS_MIC,
> +       ALC294_FIXUP_ASUS_HEADSET_MIC,
> +       ALC294_FIXUP_ASUS_SPK_NOISE,
>  };
>
>  static const struct hda_fixup alc269_fixups[] = { @@ -6414,6 +6416,28 @@ static const struct hda_fixup alc269_fixups[] = {
>                 .chained = true,
>                 .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
>         },
> +       [ALC294_FIXUP_ASUS_HEADSET_MIC] = {
> +               .type = HDA_FIXUP_PINS,
> +               .v.pins = (const struct hda_pintbl[]) {
> +                       { 0x19, 0x01a1113c }, /* use as headset mic, without its own jack detect */
> +                       { }
> +               },
> +               .chained = true,
> +               .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
> +       },
> +       [ALC294_FIXUP_ASUS_SPK_NOISE] = {
> +               .type = HDA_FIXUP_VERBS,
> +               .v.verbs = (const struct hda_verb[]) {
> +                       /* Set EAPD high */
> +                       { 0x20, AC_VERB_SET_COEF_INDEX, 0x10 },
> +                       { 0x20, 0x4c4, 0x20 },
> +                       { 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
> +                       { 0x20, 0x488, 0x00 },
> +                       { }
> +               },
> +               .chained = true,
> +               .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC
> +       },
>  };
>
>  static const struct snd_pci_quirk alc269_fixup_tbl[] = { @@ -6556,6 +6580,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
>         SND_PCI_QUIRK(0x1043, 0x12e0, "ASUS X541SA", ALC256_FIXUP_ASUS_MIC),
>         SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC),
>         SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK),
> +       SND_PCI_QUIRK(0x1043, 0x14a1, "ASUS UX533FD",
> +ALC294_FIXUP_ASUS_SPK_NOISE),
>         SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A),
>         SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC),
>         SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
> --
> 2.11.0
>
Kailang Dec. 7, 2018, 6:52 a.m. UTC | #3
Hi Jian Hong,

I call our agent guy @ WTMEC.
Please modify as bellowing then test again.
Remove EAPD control by hidden.
If this modify patch was pass audio test, please regenerate patch to Takashi.
If this patch will solve the speaker no sound issue, I think the model name maybe could rename to ALC294_FIXUP_ASUS_SPK.
Because it doesn't relate with Noise.

> +       [ALC294_FIXUP_ASUS_SPK_NOISE] = {
> +               .type = HDA_FIXUP_VERBS,
> +               .v.verbs = (const struct hda_verb[]) {
> +                       { 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
> +                       { 0x20, AC_VERB_SET_PROC_COEF, 0x8800 },
> +                       { }
> +               },
> +               .chained = true,
> +               .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC
> +       },
>  };

BR,
Kailang

-----Original Message-----
From: Jian-Hong Pan <jian-hong@endlessm.com> 
Sent: Friday, December 7, 2018 11:48 AM
To: Kailang <kailang@realtek.com>
Cc: Jaroslav Kysela <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; Hui Wang <hui.wang@canonical.com>; alsa-devel@alsa-project.org; Linux Kernel <linux-kernel@vger.kernel.org>; Linux Upstreaming Team <linux@endlessm.com>; Daniel Drake <drake@endlessm.com>
Subject: Re: [PATCH v2 2/3] ALSA: hda/realtek: Enable audio jacks of ASUS UX533FD with ALC294

Kailang <kailang@realtek.com> 於 2018年12月7日 週五 上午11:32寫道:
>
> Hi Jian Hong,
>
> Could I know who give you the value as below?
>
> +                       { 0x20, AC_VERB_SET_COEF_INDEX, 0x10 },
> +                       { 0x20, 0x4c4, 0x20 },
> +                       { 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
> +                       { 0x20, 0x488, 0x00 },

A module maker.

Regards,
Jian-Hong Pan

> -----Original Message-----
> From: Jian-Hong Pan <jian-hong@endlessm.com>
> Sent: Thursday, December 6, 2018 4:46 PM
> To: Jaroslav Kysela <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; 
> Kailang <kailang@realtek.com>
> Cc: Hui Wang <hui.wang@canonical.com>; alsa-devel@alsa-project.org; 
> linux-kernel@vger.kernel.org; linux@endlessm.com; Jian-Hong Pan 
> <jian-hong@endlessm.com>; Daniel Drake <drake@endlessm.com>
> Subject: [PATCH v2 2/3] ALSA: hda/realtek: Enable audio jacks of ASUS 
> UX533FD with ALC294
>
> The ASUS UX533FD with ALC294 cannot detect the headset MIC and output through the internal speaker and the headphone until ALC294_FIXUP_ASUS_SPK_NOISE quirk applied.
>
> Signed-off-by: Daniel Drake <drake@endlessm.com>
> Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
> ---
> v2:
> - Modify the HDA verbs for UX333FA support
> - Make a new ALC294_FIXUP_ASUS_HEADSET_MIC quirk for ALC294 chain
> - .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE  ==> change to 
> ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
>
>  sound/pci/hda/patch_realtek.c | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
>
> diff --git a/sound/pci/hda/patch_realtek.c 
> b/sound/pci/hda/patch_realtek.c index d32e50b1ed60..1525bcdf96e8 
> 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -5518,6 +5518,8 @@ enum {
>         ALC295_FIXUP_HP_AUTO_MUTE,
>         ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE,
>         ALC294_FIXUP_ASUS_MIC,
> +       ALC294_FIXUP_ASUS_HEADSET_MIC,
> +       ALC294_FIXUP_ASUS_SPK_NOISE,
>  };
>
>  static const struct hda_fixup alc269_fixups[] = { @@ -6414,6 +6416,28 @@ static const struct hda_fixup alc269_fixups[] = {
>                 .chained = true,
>                 .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
>         },
> +       [ALC294_FIXUP_ASUS_HEADSET_MIC] = {
> +               .type = HDA_FIXUP_PINS,
> +               .v.pins = (const struct hda_pintbl[]) {
> +                       { 0x19, 0x01a1113c }, /* use as headset mic, without its own jack detect */
> +                       { }
> +               },
> +               .chained = true,
> +               .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
> +       },
> +       [ALC294_FIXUP_ASUS_SPK_NOISE] = {
> +               .type = HDA_FIXUP_VERBS,
> +               .v.verbs = (const struct hda_verb[]) {
> +                       /* Set EAPD high */
> +                       { 0x20, AC_VERB_SET_COEF_INDEX, 0x10 },
> +                       { 0x20, 0x4c4, 0x20 },
> +                       { 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
> +                       { 0x20, 0x488, 0x00 },
> +                       { }
> +               },
> +               .chained = true,
> +               .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC
> +       },
>  };
>
>  static const struct snd_pci_quirk alc269_fixup_tbl[] = { @@ -6556,6 +6580,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
>         SND_PCI_QUIRK(0x1043, 0x12e0, "ASUS X541SA", ALC256_FIXUP_ASUS_MIC),
>         SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC),
>         SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", 
> ALC269VB_FIXUP_ASUS_ZENBOOK),
> +       SND_PCI_QUIRK(0x1043, 0x14a1, "ASUS UX533FD", 
> +ALC294_FIXUP_ASUS_SPK_NOISE),
>         SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A),
>         SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC),
>         SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", 
> ALC269_FIXUP_ASUS_G73JW),
> --
> 2.11.0
>

------Please consider the environment before printing this e-mail.
Jian-Hong Pan Dec. 7, 2018, 9:13 a.m. UTC | #4
> Hi Jian Hong,
>
> I call our agent guy @ WTMEC.
> Please modify as bellowing then test again.
> Remove EAPD control by hidden.
> If this modify patch was pass audio test, please regenerate patch to Takashi.
> If this patch will solve the speaker no sound issue, I think the model name maybe could rename to ALC294_FIXUP_ASUS_SPK.
> Because it doesn't relate with Noise.
>
> > +       [ALC294_FIXUP_ASUS_SPK_NOISE] = {
> > +               .type = HDA_FIXUP_VERBS,
> > +               .v.verbs = (const struct hda_verb[]) {
> > +                       { 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
> > +                       { 0x20, AC_VERB_SET_PROC_COEF, 0x8800 },
> > +                       { }
> > +               },
> > +               .chained = true,
> > +               .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC
> > +       },
> >  };
>

Thanks for the help!
I have tried the new verbs, and they work on the laptops.
I am going to send the new patches.

Regards,
Jian-Hong Pan
diff mbox series

Patch

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index d32e50b1ed60..1525bcdf96e8 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -5518,6 +5518,8 @@  enum {
 	ALC295_FIXUP_HP_AUTO_MUTE,
 	ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE,
 	ALC294_FIXUP_ASUS_MIC,
+	ALC294_FIXUP_ASUS_HEADSET_MIC,
+	ALC294_FIXUP_ASUS_SPK_NOISE,
 };
 
 static const struct hda_fixup alc269_fixups[] = {
@@ -6414,6 +6416,28 @@  static const struct hda_fixup alc269_fixups[] = {
 		.chained = true,
 		.chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
 	},
+	[ALC294_FIXUP_ASUS_HEADSET_MIC] = {
+		.type = HDA_FIXUP_PINS,
+		.v.pins = (const struct hda_pintbl[]) {
+			{ 0x19, 0x01a1113c }, /* use as headset mic, without its own jack detect */
+			{ }
+		},
+		.chained = true,
+		.chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
+	},
+	[ALC294_FIXUP_ASUS_SPK_NOISE] = {
+		.type = HDA_FIXUP_VERBS,
+		.v.verbs = (const struct hda_verb[]) {
+			/* Set EAPD high */
+			{ 0x20, AC_VERB_SET_COEF_INDEX, 0x10 },
+			{ 0x20, 0x4c4, 0x20 },
+			{ 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
+			{ 0x20, 0x488, 0x00 },
+			{ }
+		},
+		.chained = true,
+		.chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC
+	},
 };
 
 static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -6556,6 +6580,7 @@  static const struct snd_pci_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x1043, 0x12e0, "ASUS X541SA", ALC256_FIXUP_ASUS_MIC),
 	SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC),
 	SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK),
+	SND_PCI_QUIRK(0x1043, 0x14a1, "ASUS UX533FD", ALC294_FIXUP_ASUS_SPK_NOISE),
 	SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A),
 	SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC),
 	SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),