[PATCH AUTOSEL 6.19-5.10] ALSA: hda/realtek: Add headset jack quirk for Thinkpad X390

From: Sasha Levin

Date: Tue Mar 17 2026 - 07:36:33 EST


From: Uzair Mughal <contact@xxxxxxxxxxxxxx>

[ Upstream commit 542127f6528ca7cc3cf61e1651d6ccb58495f953 ]

The Lenovo ThinkPad X390 (ALC257 codec, subsystem ID 0x17aa2288)
does not report headset button press events. Headphone insertion is
detected (SW_HEADPHONE_INSERT), but pressing the inline microphone
button on a headset produces no input events.

Add a SND_PCI_QUIRK entry that maps this subsystem ID to
ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK, which enables
headset jack button detection through alc_fixup_headset_jack()
and ThinkPad ACPI integration. This is the same fixup used by
similar ThinkPad models (P1 Gen 3, X1 Extreme Gen 3).

Signed-off-by: Uzair Mughal <contact@xxxxxxxxxxxxxx>
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
Link: https://patch.msgid.link/20260307012906.20093-1-contact@xxxxxxxxxxxxxx
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---

LLM Generated explanations, may be completely bogus:

## Analysis

### What the commit does

This is a single-line addition of a `SND_PCI_QUIRK` entry for the Lenovo
ThinkPad X390 (subsystem ID `0x17aa:0x2288`) using the ALC257 codec. It
maps this device to the existing fixup
`ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK`, which enables headset
jack button detection.

### Bug being fixed

Headset button press events are not reported on this laptop. While
headphone insertion is detected, pressing the inline microphone button
on a headset produces no input events — a functional defect for users.

### Stable kernel criteria

- **Obviously correct**: Yes — it's a one-line quirk table entry using
the same fixup already applied to similar ThinkPads (P1 Gen 3 at
`0x22c1`, X1 Extreme Gen 3 at `0x22c2`).
- **Fixes a real bug**: Yes — headset buttons don't work without this
quirk.
- **Small and contained**: Yes — one line added to a quirk table. Zero
risk of regression on other hardware.
- **No new features**: Correct — it uses an existing fixup on existing
driver infrastructure.
- **Hardware quirk exception**: This falls squarely into the "audio
codec quirks" category explicitly listed as appropriate for stable
backporting.

### Risk assessment

**Minimal risk.** The change only affects the specific subsystem ID
`0x17aa:0x2288`. It cannot affect any other hardware. The fixup chain it
invokes (`ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK`) is already
proven on multiple ThinkPad models in the same quirk table.

### Verification

- The diff shows exactly one line added in sorted order within the
existing `alc269_fixup_tbl[]` quirk table in
`sound/hda/codecs/realtek/alc269.c`.
- The same fixup `ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK` is
used by entries at `0x22c1` (P1 Gen 3) and `0x22c2` (X1 Extreme Gen
3), both visible in the diff context — confirmed directly from the
patch.
- The commit is signed off by Takashi Iwai (ALSA/HDA subsystem
maintainer), confirming maintainer review and acceptance.
- The vendor ID `0x17aa` is Lenovo, consistent with ThinkPad X390.

This is a textbook stable-worthy hardware quirk addition: one line, zero
regression risk, fixes a real hardware defect for ThinkPad X390 users.

**YES**

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 13d14c86569f9..f213f8792b01f 100644
--- a/sound/hda/codecs/realtek/alc269.c
+++ b/sound/hda/codecs/realtek/alc269.c
@@ -7471,6 +7471,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x17aa, 0x224c, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
SND_PCI_QUIRK(0x17aa, 0x224d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
SND_PCI_QUIRK(0x17aa, 0x225d, "Thinkpad T480", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
+ SND_PCI_QUIRK(0x17aa, 0x2288, "Thinkpad X390", ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK),
SND_PCI_QUIRK(0x17aa, 0x2292, "Thinkpad X1 Carbon 7th", ALC285_FIXUP_THINKPAD_HEADSET_JACK),
SND_PCI_QUIRK(0x17aa, 0x22be, "Thinkpad X1 Carbon 8th", ALC285_FIXUP_THINKPAD_HEADSET_JACK),
SND_PCI_QUIRK(0x17aa, 0x22c1, "Thinkpad P1 Gen 3", ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK),
--
2.51.0