Re: [PATCH 1/4] ALSA: hda/realtek: Rename Line Out control to Headphone on ThinkPad X1 Carbon 6th

Takashi Iwai <[email protected]>
Newsgroups gmane.linux.sound,gmane.linux.kernel
Message-ID <[email protected]>
On Tue, 11 Aug 2026 04:48:59 +0200,
Zhang Heng wrote:
> 
> 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 <[email protected]>
> Tested-by: Branislav Klocok <[email protected]>
> ---
>  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),

Hmm,  this patch is broken -- missing the definition of enum
ALC285_LENOVO_DAC_RENAME?


thanks,

Takashi
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.