Linux Sound subsystem development
 help / color / mirror / Atom feed
From: KIM MinWoo <phrimm136@gmail.com>
To: linux-sound@vger.kernel.org
Cc: tiwai@suse.com, perex@perex.cz, shenghao-ding@ti.com
Subject: [PATCH] ALSA: hda/realtek: Add quirk for Lenovo ThinkBook 16p Gen 3 ARH (21EK)
Date: Wed, 23 Sep 2026 10:37:56 +0900	[thread overview]
Message-ID: <20260923013756.106033-1-phrimm136@gmail.com> (raw)

The ThinkBook 16p Gen 3 ARH (SSID 17aa:3871) has a TI TAS2563
amplifier device on I2C, exposed by ACPI as INT8866, the same
arrangement as the Yoga 7 14ARB7 (SSID 17aa:3870). Without a quirk,
the codec falls back to the vendor-wide Lenovo quirk
(ALC269_FIXUP_LENOVO_XPAD_ACPI), the amplifier is never bound, and the
internal speakers stay silent while the headphone output works.

Reuse the Yoga 7 14ARB7 fixup, which binds the INT8866 device as a side
codec. ALC287_FIXUP_TAS2781_I2C does not work on this machine because it
looks for a TIAS2781 device.

Assisted-by: LLM
Signed-off-by: KIM MinWoo <phrimm136@gmail.com>
---
Tested on 7.2.6-arch2-1 (BIOS KCCN40WW) with this patch applied.
Kernel log:

  without the patch:
    ALC287: picked fixup  for PCI SSID 17aa:0000
  with the patch:
    ALC287: picked fixup  for codec SSID 17aa:3871
    bound i2c-INT8866:00 (ops tas2781_hda_comp_ops [snd_hda_scodec_tas2781_i2c])

With ALC287_FIXUP_TAS2781_I2C instead, the codec's component aggregate
stays "not bound" in debugfs and the speakers stay silent.

Headphone jack switching, the internal and headset microphones, and
the volume and mute keys still work with the patch.

The speakers also need the DSP tuning file TAS2XXX3871.bin, which is
not in linux-firmware; without it the amplifier driver does not enable
playback and reports:

  tas2781-hda i2c-INT8866:00: Direct firmware load for TAS2XXX3871.bin failed with error -2

For testing, I symlinked the Yoga 7 14ARB7 file
TAS2XXX3870.bin as TAS2XXX3871.bin, and the speakers play.
Shenghao, could TI provide the tuning file for 17aa:3871?

Fang Junhua reported the same symptom on machine type 21EK to
alsa-devel on 2026-03-04 ("[ALSA][ALC287][TAS2781] Lenovo 21EK
speakers silent on Linux, headphones work"). The codec dump attached
to that report shows the same SSID, 17aa:3871.

An AI coding assistant was used to diagnose the issue (missing quirk,
no model alias for the fixup, missing firmware), to choose the fixup
by tracing the ACPI name of the amplifier, and to draft this changelog.
I reviewed the change and tested it on the hardware.

 sound/hda/codecs/realtek/alc269.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
index 8f55c3c..cc52f41 100644
--- a/sound/hda/codecs/realtek/alc269.c
+++ b/sound/hda/codecs/realtek/alc269.c
@@ -8193,6 +8193,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
 	HDA_CODEC_QUIRK(0x17aa, 0x38a8, "Legion Pro 7 16ARX8H", ALC287_FIXUP_TAS2781_I2C), /* this must match before PCI SSID 17aa:386f below */
 	SND_PCI_QUIRK(0x17aa, 0x386f, "Legion Pro 7i 16IAX7", ALC287_FIXUP_CS35L41_I2C_2),
 	SND_PCI_QUIRK(0x17aa, 0x3870, "Lenovo Yoga 7 14ARB7", ALC287_FIXUP_YOGA7_14ARB7_I2C),
+	SND_PCI_QUIRK(0x17aa, 0x3871, "Lenovo ThinkBook 16p Gen 3 ARH", ALC287_FIXUP_YOGA7_14ARB7_I2C),
 	SND_PCI_QUIRK(0x17aa, 0x3874, "Legion 7i 16IAX7", ALC287_FIXUP_CS35L41_I2C_2),
 	SND_PCI_QUIRK(0x17aa, 0x3877, "Lenovo Legion 7 Slim 16ARHA7", ALC287_FIXUP_CS35L41_I2C_2),
 	SND_PCI_QUIRK(0x17aa, 0x3878, "Lenovo Legion 7 Slim 16ARHA7", ALC287_FIXUP_CS35L41_I2C_2),
-- 
2.55.0


             reply	other threads:[~2026-09-23  1:38 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-23  1:37 KIM MinWoo [this message]
2026-09-28 11:35 ` [PATCH] ALSA: hda/realtek: Add quirk for Lenovo ThinkBook 16p Gen 3 ARH (21EK) Takashi Iwai

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=20260923013756.106033-1-phrimm136@gmail.com \
    --to=phrimm136@gmail.com \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=shenghao-ding@ti.com \
    --cc=tiwai@suse.com \
    /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