The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH 1/4] ALSA: hda/realtek: Rename Line Out control to Headphone on ThinkPad X1 Carbon 6th
@ 2026-08-11  2:48 Zhang Heng
  2026-08-11  2:49 ` [PATCH 2/4] ALSA: hda/realtek: Add quirk for Acer Predator PH16-71 Zhang Heng
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Zhang Heng @ 2026-08-11  2:48 UTC (permalink / raw)
  To: tiwai, perex; +Cc: linux-sound, linux-kernel, Zhang Heng, Branislav Klocok

The ThinkPad X1 Carbon 6th Gen (ALC285, SSID 17aa:225c) has no physical
Line Out jack. The 3.5mm headphone jack is wired to the headphone DAC,
but the ALSA HDA driver names the corresponding control as
"Line Out Playback Volume" (node 0x02).

PipeWire's ALSA Card Profile (ACP) silences "Line Out" when headphones
are activated, which incorrectly mutes the headphone output.

Add a quirk to rename the control to "Headphone Playback Volume" via
alc285_lenovo_dac_rename().

Tested on openSUSE Tumbleweed (kernel 7.1.5):
- Control renamed successfully, no name collision with "Headphone Playback Switch"
- Headphone output works across multiple PipeWire/WirePlumber restarts
  and port switches

Closes: https://bugzilla.kernel.org/show_bug.cgi?id=221522
Signed-off-by: Zhang Heng <zhangheng@kylinos.cn>
Tested-by: Branislav Klocok <branislav.klocok@orava.sk>
---
 sound/hda/codecs/realtek/alc269.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
index 6b36c730ce78..da9c816b8c4f 100644
--- a/sound/hda/codecs/realtek/alc269.c
+++ b/sound/hda/codecs/realtek/alc269.c
@@ -2572,6 +2572,13 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec,
 	}
 }
 
+static void alc285_lenovo_dac_rename(struct hda_codec *codec,
+				     const struct hda_fixup *fix, int action)
+{
+	if (action == HDA_FIXUP_ACT_BUILD)
+		rename_ctl(codec, "Line Out Playback Volume",
+			   "Headphone Playback Volume");
+}
 static void alc290_fixup_mono_speakers(struct hda_codec *codec,
 				       const struct hda_fixup *fix, int action)
 {
@@ -6998,6 +7005,10 @@ static const struct hda_fixup alc269_fixups[] = {
 		.chained = true,
 		.chain_id = ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN,
 	},
+	[ALC285_LENOVO_DAC_RENAME] = {
+		.type = HDA_FIXUP_FUNC,
+		.v.func = alc285_lenovo_dac_rename,
+	},
 };
 
 static const struct hda_quirk alc269_fixup_tbl[] = {
@@ -7956,6 +7967,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x17aa, 0x224b, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x224c, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x224d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
+	SND_PCI_QUIRK(0x17aa, 0x225c, "Lenovo ThinkPad X1 Carbon 6th Gen", ALC285_LENOVO_DAC_RENAME),
 	SND_PCI_QUIRK(0x17aa, 0x225d, "Thinkpad T480", ALC269_FIXUP_THINKPAD_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),
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2026-08-11  6:46 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-11  2:48 [PATCH 1/4] ALSA: hda/realtek: Rename Line Out control to Headphone on ThinkPad X1 Carbon 6th Zhang Heng
2026-08-11  2:49 ` [PATCH 2/4] ALSA: hda/realtek: Add quirk for Acer Predator PH16-71 Zhang Heng
2026-08-11  6:13   ` Takashi Iwai
2026-08-11  2:49 ` [PATCH 3/4] ALSA: hda/realtek: Add quirk for Lenovo Legion Pro 5 16ADR10 Zhang Heng
2026-08-11  6:13   ` Takashi Iwai
2026-08-11  2:49 ` [PATCH 4/4] ALSA: usb-audio: Fix popping noise on Valeton GP-200 Zhang Heng
2026-08-11  6:13   ` Takashi Iwai
2026-08-11  6:12 ` [PATCH 1/4] ALSA: hda/realtek: Rename Line Out control to Headphone on ThinkPad X1 Carbon 6th Takashi Iwai
2026-08-11  6:27   ` [PATCH v2] " Zhang Heng
2026-08-11  6:45     ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox