diff mbox series

[v2,1/1] ALSA: hda/realtek: fix speakers and micmute on HP 855 G8

Message ID 20220114165050.ouw2nknuspclynro@localhost.localdomain (mailing list archive)
State Accepted
Commit 91502a9a0b0d5252cf3f32ebd898823c2f5aadab
Headers show
Series ALSA: hda/realtek: fix speakers and micmute on HP 855 | expand

Commit Message

Alexander Sergeyev Jan. 14, 2022, 4:50 p.m. UTC
There are several PCI ids associated with HP EliteBook 855 G8 Notebook
PC. Commit 0e68c4b11f1e6 ("ALSA: hda/realtek: fix mute/micmute LEDs for
HP 855 G8") covers 0x103c:0x8896, while this commit covers 0x103c:0x8895
which needs some additional work on top of the quirk from 0e68c4b11f1e6.

Note that the device can boot up with working speakers and micmute LED
without this patch, but the success rate would be quite low (order of
16 working boots across 709 boots) at least for the built-in drivers
scenario. This also means that there are some timing issues during early
boot and this patch is a workaround.

With this patch applied speakers and headphones are consistenly working,
as well as mute/micmute LEDs and the internal microphone.

Signed-off-by: Alexander Sergeyev <sergeev917@gmail.com>
---
 sound/pci/hda/patch_realtek.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Takashi Iwai Jan. 14, 2022, 4:54 p.m. UTC | #1
On Fri, 14 Jan 2022 17:50:50 +0100,
Alexander Sergeyev wrote:
> 
> There are several PCI ids associated with HP EliteBook 855 G8 Notebook
> PC. Commit 0e68c4b11f1e6 ("ALSA: hda/realtek: fix mute/micmute LEDs for
> HP 855 G8") covers 0x103c:0x8896, while this commit covers 0x103c:0x8895
> which needs some additional work on top of the quirk from 0e68c4b11f1e6.
> 
> Note that the device can boot up with working speakers and micmute LED
> without this patch, but the success rate would be quite low (order of
> 16 working boots across 709 boots) at least for the built-in drivers
> scenario. This also means that there are some timing issues during early
> boot and this patch is a workaround.
> 
> With this patch applied speakers and headphones are consistenly working,
> as well as mute/micmute LEDs and the internal microphone.
> 
> Signed-off-by: Alexander Sergeyev <sergeev917@gmail.com>

Thanks, applied now.


Takashi
Kai-Heng Feng Jan. 15, 2022, 3:47 p.m. UTC | #2
On Sat, Jan 15, 2022 at 12:46 AM Alexander Sergeyev
<sergeev917@gmail.com> wrote:
>
> There are several PCI ids associated with HP EliteBook 855 G8 Notebook
> PC. Commit 0e68c4b11f1e6 ("ALSA: hda/realtek: fix mute/micmute LEDs for
> HP 855 G8") covers 0x103c:0x8896, while this commit covers 0x103c:0x8895
> which needs some additional work on top of the quirk from 0e68c4b11f1e6.
>
> Note that the device can boot up with working speakers and micmute LED
> without this patch, but the success rate would be quite low (order of
> 16 working boots across 709 boots) at least for the built-in drivers
> scenario. This also means that there are some timing issues during early
> boot and this patch is a workaround.
>
> With this patch applied speakers and headphones are consistenly working,
> as well as mute/micmute LEDs and the internal microphone.

Does this issue happen to warm boot (reboot) or cold boot?
If the issue only happen to warm boot, please try reverting commit
9d3fcb28f9b9 "Revert "PM: ACPI: reboot: Use S5 for reboot"".
Many HP systems requires it to have a functional reboot.

Kai-Heng

>
> Signed-off-by: Alexander Sergeyev <sergeev917@gmail.com>
> ---
>  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 eef973661b0a..668274e52674 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -6948,6 +6948,7 @@ enum {
>         ALC285_FIXUP_LEGION_Y9000X_AUTOMUTE,
>         ALC287_FIXUP_LEGION_16ACHG6,
>         ALC287_FIXUP_CS35L41_I2C_2,
> +       ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED,
>  };
>
>  static const struct hda_fixup alc269_fixups[] = {
> @@ -8698,6 +8699,16 @@ static const struct hda_fixup alc269_fixups[] = {
>                 .type = HDA_FIXUP_FUNC,
>                 .v.func = cs35l41_fixup_i2c_two,
>         },
> +       [ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED] = {
> +               .type = HDA_FIXUP_VERBS,
> +               .v.verbs = (const struct hda_verb[]) {
> +                        { 0x20, AC_VERB_SET_COEF_INDEX, 0x19 },
> +                        { 0x20, AC_VERB_SET_PROC_COEF, 0x8e11 },
> +                        { }
> +               },
> +               .chained = true,
> +               .chain_id = ALC285_FIXUP_HP_MUTE_LED,
> +       },
>  };
>
>  static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> @@ -8911,6 +8922,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
>         SND_PCI_QUIRK(0x103c, 0x8870, "HP ZBook Fury 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT),
>         SND_PCI_QUIRK(0x103c, 0x8873, "HP ZBook Studio 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT),
>         SND_PCI_QUIRK(0x103c, 0x888d, "HP ZBook Power 15.6 inch G8 Mobile Workstation PC", ALC236_FIXUP_HP_GPIO_LED),
> +       SND_PCI_QUIRK(0x103c, 0x8895, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED),
>         SND_PCI_QUIRK(0x103c, 0x8896, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_MUTE_LED),
>         SND_PCI_QUIRK(0x103c, 0x8898, "HP EliteBook 845 G8 Notebook PC", ALC285_FIXUP_HP_LIMIT_INT_MIC_BOOST),
>         SND_PCI_QUIRK(0x103c, 0x88d0, "HP Pavilion 15-eh1xxx (mainboard 88D0)", ALC287_FIXUP_HP_GPIO_LED),
> --
> 2.34.1
>
Alexander Sergeyev Jan. 15, 2022, 4:32 p.m. UTC | #3
On Sat, Jan 15, 2022 at 11:47:40PM +0800, Kai-Heng Feng wrote:
> > Note that the device can boot up with working speakers and micmute LED
> > without this patch, but the success rate would be quite low (order of
> > 16 working boots across 709 boots) at least for the built-in drivers
> > scenario. This also means that there are some timing issues during early
> > boot and this patch is a workaround.
>
> Does this issue happen to warm boot (reboot) or cold boot?

The issue is definitely not limited to warm boots only. I can confirm cold 
boots with no sound and also warm boots with functioning sound. With this in 
mind, the provided numbers (16 good boots across 709 boots) are largely coming 
from reboots since the testing was scripted and driven by SSH.

> If the issue only happen to warm boot, please try reverting commit
> 9d3fcb28f9b9 "Revert "PM: ACPI: reboot: Use S5 for reboot"".
> Many HP systems requires it to have a functional reboot.

Interesting. I haven't noticed anything breaking with reboots on this 
particular system (at least so far).
Kai-Heng Feng Jan. 17, 2022, 12:12 a.m. UTC | #4
On Sun, Jan 16, 2022 at 12:26 AM Alexander Sergeyev
<sergeev917@gmail.com> wrote:
>
> On Sat, Jan 15, 2022 at 11:47:40PM +0800, Kai-Heng Feng wrote:
> > > Note that the device can boot up with working speakers and micmute LED
> > > without this patch, but the success rate would be quite low (order of
> > > 16 working boots across 709 boots) at least for the built-in drivers
> > > scenario. This also means that there are some timing issues during early
> > > boot and this patch is a workaround.
> >
> > Does this issue happen to warm boot (reboot) or cold boot?
>
> The issue is definitely not limited to warm boots only. I can confirm cold
> boots with no sound and also warm boots with functioning sound. With this in
> mind, the provided numbers (16 good boots across 709 boots) are largely coming
> from reboots since the testing was scripted and driven by SSH.

If this issue also happens to cold boot it seems to be a BIOS issue.

>
> > If the issue only happen to warm boot, please try reverting commit
> > 9d3fcb28f9b9 "Revert "PM: ACPI: reboot: Use S5 for reboot"".
> > Many HP systems requires it to have a functional reboot.
>
> Interesting. I haven't noticed anything breaking with reboots on this
> particular system (at least so far).

If possible, please still give that commit a try.

Kai-Heng
Alexander Sergeyev Jan. 17, 2022, 6:11 p.m. UTC | #5
On Mon, Jan 17, 2022 at 08:12:08AM +0800, Kai-Heng Feng wrote:
> If this issue also happens to cold boot it seems to be a BIOS issue.

I've discussed the problem in more detail [1] before sending the patch. 
In short, speakers seems to reliably work in live Ubuntu which differs in 
using initrd with modules vs UEFI stub with built-in drivers in my case 
(I've tried Ubuntu kernel sources). I've tried using modules as well 
(modprobe'ing the list of modules which are load by Ubuntu) with no 
success.

It was suggested that there is a timing issue somewhere. I'm opened for 
ideas to try to debug the problem origins further (to avoid the need in 
the fixup).

> > > If the issue only happen to warm boot, please try reverting commit
> > > 9d3fcb28f9b9 "Revert "PM: ACPI: reboot: Use S5 for reboot"".
> > > Many HP systems requires it to have a functional reboot.
>
> If possible, please still give that commit a try.

Well, the first cold boot (with this commit reverted) didn't have any 
sound, the same goes for the subsequent reboot.

[1] https://lkml.org/lkml/2022/1/12/221
Kai-Heng Feng Jan. 19, 2022, 12:18 a.m. UTC | #6
On Tue, Jan 18, 2022 at 2:05 AM Alexander Sergeyev <sergeev917@gmail.com> wrote:
>
> On Mon, Jan 17, 2022 at 08:12:08AM +0800, Kai-Heng Feng wrote:
> > If this issue also happens to cold boot it seems to be a BIOS issue.
>
> I've discussed the problem in more detail [1] before sending the patch.
> In short, speakers seems to reliably work in live Ubuntu which differs in
> using initrd with modules vs UEFI stub with built-in drivers in my case
> (I've tried Ubuntu kernel sources). I've tried using modules as well
> (modprobe'ing the list of modules which are load by Ubuntu) with no
> success.
>
> It was suggested that there is a timing issue somewhere. I'm opened for
> ideas to try to debug the problem origins further (to avoid the need in
> the fixup).

Yes it does sound like a timing issue.
Most system firmwares are only test against Windows.

HP has started to enable Ubuntu on some of their systems, but your
case (EFI stub) is uncovered.

>
> > > > If the issue only happen to warm boot, please try reverting commit
> > > > 9d3fcb28f9b9 "Revert "PM: ACPI: reboot: Use S5 for reboot"".
> > > > Many HP systems requires it to have a functional reboot.
> >
> > If possible, please still give that commit a try.
>
> Well, the first cold boot (with this commit reverted) didn't have any
> sound, the same goes for the subsequent reboot.

Thanks for the testing.

Kai-Heng

>
> [1] https://lkml.org/lkml/2022/1/12/221
diff mbox series

Patch

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index eef973661b0a..668274e52674 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -6948,6 +6948,7 @@  enum {
 	ALC285_FIXUP_LEGION_Y9000X_AUTOMUTE,
 	ALC287_FIXUP_LEGION_16ACHG6,
 	ALC287_FIXUP_CS35L41_I2C_2,
+	ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED,
 };
 
 static const struct hda_fixup alc269_fixups[] = {
@@ -8698,6 +8699,16 @@  static const struct hda_fixup alc269_fixups[] = {
 		.type = HDA_FIXUP_FUNC,
 		.v.func = cs35l41_fixup_i2c_two,
 	},
+	[ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED] = {
+		.type = HDA_FIXUP_VERBS,
+		.v.verbs = (const struct hda_verb[]) {
+			 { 0x20, AC_VERB_SET_COEF_INDEX, 0x19 },
+			 { 0x20, AC_VERB_SET_PROC_COEF, 0x8e11 },
+			 { }
+		},
+		.chained = true,
+		.chain_id = ALC285_FIXUP_HP_MUTE_LED,
+	},
 };
 
 static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -8911,6 +8922,7 @@  static const struct snd_pci_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x103c, 0x8870, "HP ZBook Fury 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT),
 	SND_PCI_QUIRK(0x103c, 0x8873, "HP ZBook Studio 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT),
 	SND_PCI_QUIRK(0x103c, 0x888d, "HP ZBook Power 15.6 inch G8 Mobile Workstation PC", ALC236_FIXUP_HP_GPIO_LED),
+	SND_PCI_QUIRK(0x103c, 0x8895, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED),
 	SND_PCI_QUIRK(0x103c, 0x8896, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_MUTE_LED),
 	SND_PCI_QUIRK(0x103c, 0x8898, "HP EliteBook 845 G8 Notebook PC", ALC285_FIXUP_HP_LIMIT_INT_MIC_BOOST),
 	SND_PCI_QUIRK(0x103c, 0x88d0, "HP Pavilion 15-eh1xxx (mainboard 88D0)", ALC287_FIXUP_HP_GPIO_LED),