Linux Sound subsystem development
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Gigi Furnari <gigi.furnari@hotmail.de>
Cc: "alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>,
	"linux-sound@vger.kernel.org" <linux-sound@vger.kernel.org>
Subject: Re: [PATCH REQUEST] hda/realtek: Add fixup for HP Spectre x360 16-f1xxx (103c:891c, ALC245)
Date: Tue, 09 Jun 2026 12:59:44 +0200	[thread overview]
Message-ID: <87cxy06ktb.wl-tiwai@suse.de> (raw)
In-Reply-To: <AS8P250MB0887C48FD62B9F2A5B882565F41F2@AS8P250MB0887.EURP250.PROD.OUTLOOK.COM>

On Sun, 07 Jun 2026 21:16:47 +0200,
Gigi Furnari wrote:
> 
> 
> The HP Spectre x360 2-in-1 Laptop 16-f1xxx (PCI SSID 103c:891c) uses
> a Realtek ALC245 codec. Without a fixup, the upper speakers (node 0x14)
> are silent because their pin configuration is set to N/A (0x411111f0)
> and the amplifier GPIO is not initialized.
>  
> The codec layout is:
>   Node 0x14: upper speakers, connected to DAC 0x02, EAPD present
>   Node 0x17: lower speakers, connected to DAC 0x06 (active)
>   Node 0x21: headphone out, connected to DAC 0x03 (active)
>  
> The fix overrides the pin default config for node 0x14 to mark it as
> an internal fixed speaker, and chains to the existing
> ALC245_FIXUP_HP_X360_AMP fixup which toggles GPIO0 to enable the
> amplifier -- the same mechanism used by the HP Spectre x360 14
> (103c:87f7).
>  
> Note: the driver currently reads PCI SSID as 103c:0000 instead of the
> correct 103c:891c (the codec reports Subsystem Id: 0x103c891c correctly
> in /proc/asound/card0/codec#0). This means no device-specific fixup is
> applied without an explicit model parameter. This patch adds the quirk
> entry so the correct fixup is applied automatically once the SSID
> reading issue is resolved, and can be used with model= in the meantime.
>  
> Signed-off-by: [Your Name] <your@email.com>
> ---
>  
> HOW TO APPLY (context lines abbreviated; apply against current mainline):
>  
> In sound/pci/hda/patch_realtek.c:
>  
> 1) In the enum (near ALC245_FIXUP_HP_X360_AMP), add:
>    ALC245_FIXUP_HP_SPECTRE_X360_16,
>  
> 2) In alc269_fixups[], after the ALC245_FIXUP_HP_X360_AMP entry, add:
>  
>  [ALC245_FIXUP_HP_SPECTRE_X360_16] = {
>   .type = HDA_FIXUP_PINS,
>   .v.pins = (const struct hda_pintbl[]) {
>    { 0x14, 0x90170110 }, /* upper speakers */
>    { }
>   },
>   .chained = true,
>   .chain_id = ALC245_FIXUP_HP_X360_AMP,
>  },
>  
> 3) In alc269_fixup_tbl[] (keep sorted by PCI SSID), add:
>  
>  SND_PCI_QUIRK(0x103c, 0x891c, "HP Spectre x360 16-f1xxx",
>         ALC245_FIXUP_HP_SPECTRE_X360_16),
>  
> ---
> Full diff (line numbers are approximate; verify against current tree):
>  
>  sound/pci/hda/patch_realtek.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>  
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ enum (around ALC245_FIXUP_HP_X360_AMP line) @@
>   ALC245_FIXUP_HP_X360_AMP,
> + ALC245_FIXUP_HP_SPECTRE_X360_16,
>  
> @@ alc269_fixups[] (after ALC245_FIXUP_HP_X360_AMP block) @@
> + [ALC245_FIXUP_HP_SPECTRE_X360_16] = {
> + .type = HDA_FIXUP_PINS,
> + .v.pins = (const struct hda_pintbl[]) {
> + { 0x14, 0x90170110 }, /* upper speakers */
> + { }
> + },
> + .chained = true,
> + .chain_id = ALC245_FIXUP_HP_X360_AMP,
> + },
>  
> @@ alc269_fixup_tbl[] (sorted position after 0x891b if present, else near
> 0x891c) @@
> + SND_PCI_QUIRK(0x103c, 0x891c, "HP Spectre x360 16-f1xxx",
> + ALC245_FIXUP_HP_SPECTRE_X360_16),

The code change itself looks OK, so could you try to resubmit in a
proper format with sign-off?  The spaces in the patches got broken by
your mailer, and you might need to fix the mailer setup (at best
submit via git-send-email).  As a last resort, you can use an
attachment, too.

> ADDITIONAL NOTE FOR MAINTAINER:
>  
> The codec correctly reports Subsystem Id: 0x103c891c in
> /proc/asound/card0/codec#0, but dmesg shows:
>   snd_hda_codec_alc269: ALC245: picked fixup for PCI SSID 103c:0000
>  
> This SSID mismatch (0000 vs 891c) means the quirk table is never
> consulted. The root cause appears to be in how the HDA subsystem ID
> is read on this Alder Lake platform -- a separate bug that may need
> investigation in hda_codec.c or the Intel HDA driver.

This should have been already addressed recently by the fix commit
0aacce7c32e4 ("ALSA: hda: Avoid quirk matching with zero PCI SSID").
Let me know if the issue still persists even with this fix.


thanks,

Takashi

      reply	other threads:[~2026-06-09 10:59 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-07 19:16 [PATCH REQUEST] hda/realtek: Add fixup for HP Spectre x360 16-f1xxx (103c:891c, ALC245) Gigi Furnari
2026-06-09 10:59 ` Takashi Iwai [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87cxy06ktb.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=gigi.furnari@hotmail.de \
    --cc=linux-sound@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox