All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: "René Rebe" <rene@exactco.de>
Cc: linux-sound@vger.kernel.org, Takashi Iwai <tiwai@suse.com>,
	Kailang Yang <kailang@realtek.com>
Subject: Re: [PATCH] fixup realtek/alc288 headphone for MS Surface 2, 3 and
Date: Mon, 17 Nov 2025 17:20:03 +0100	[thread overview]
Message-ID: <87ikf8fx70.wl-tiwai@suse.de> (raw)
In-Reply-To: <20251116.162633.1272923634893984527.rene@exactco.de>

On Sun, 16 Nov 2025 16:26:33 +0100,
René Rebe wrote:
> 
> The Surface Pro 2 and 3 have a strage frequency response and miss most
> of the bass. I discovered connecting the HP out to the main DAC fixes
> this.  Maybe the other is mono or whatever strangely mixed signal for
> the built-in speakers?
> 
> I later noticed the Lenovo Ideapad 720S (AMD) exhibited the same
> problem, so this may be a more wide-spread general bug w/ Realtek
> codecs and the hda_auto_parser, ...

Usually in a case like this, we provide a fixed wiring by a static DAC
table, or do some other tricks instead of directly writing a verb.

Could you give the alsa-info.sh outputs from those?


thanks,

Takashi


> 
> Signed-off-by: René Rebe <rene@exactco.de>
> 
> diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
> index 4aec5067c59d..81ac86b65796 100644
> --- a/sound/hda/codecs/realtek/alc269.c
> +++ b/sound/hda/codecs/realtek/alc269.c
> @@ -2259,6 +2259,17 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec,
>  	}
>  }
>  
> +static void alc288_fixup_headset(struct hda_codec *codec,
> +				 const struct hda_fixup *fix, int action)
> +{
> +	if (action == HDA_FIXUP_ACT_INIT) {
> +		/* Surface Pro? */
> +		int nid = codec->core.vendor_id == 0x10ec0280 ? 0x15 : 0x21;
> +		/* DAC node 0x0c is giving low bass output, reverse default order. */
> +		snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_CONNECT_SEL, 1);
> +	}
> +}
> +
>  static void alc290_fixup_mono_speakers(struct hda_codec *codec,
>  				       const struct hda_fixup *fix, int action)
>  {
> @@ -3483,6 +3495,7 @@ enum {
>  	ALC283_FIXUP_SENSE_COMBO_JACK,
>  	ALC282_FIXUP_ASUS_TX300,
>  	ALC283_FIXUP_INT_MIC,
> +	ALC288_FIXUP_HEADSET,
>  	ALC290_FIXUP_MONO_SPEAKERS,
>  	ALC290_FIXUP_MONO_SPEAKERS_HSJACK,
>  	ALC290_FIXUP_SUBWOOFER,
> @@ -4245,6 +4258,10 @@ static const struct hda_fixup alc269_fixups[] = {
>  		.chained = true,
>  		.chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
>  	},
> +	[ALC288_FIXUP_HEADSET] = {
> +		.type = HDA_FIXUP_FUNC,
> +		.v.func = alc288_fixup_headset,
> +	},
>  	[ALC290_FIXUP_SUBWOOFER_HSJACK] = {
>  		.type = HDA_FIXUP_PINS,
>  		.v.pins = (const struct hda_pintbl[]) {
> @@ -6872,6 +6889,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
>  	SND_PCI_QUIRK(0x10ec, 0x12cc, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
>  	SND_PCI_QUIRK(0x10ec, 0x12f6, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
>  	SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_ASPIRE_HEADSET_MIC),
> +	SND_PCI_QUIRK(0x1414, 0x9c20, "Microsoft Surface Pro 2/3", ALC288_FIXUP_HEADSET),
>  	SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC),
>  	SND_PCI_QUIRK(0x144d, 0xc169, "Samsung Notebook 9 Pen (NP930SBE-K01US)", ALC298_FIXUP_SAMSUNG_AMP),
>  	SND_PCI_QUIRK(0x144d, 0xc176, "Samsung Notebook 9 Pro (NP930MBE-K04US)", ALC298_FIXUP_SAMSUNG_AMP),
> @@ -7053,6 +7071,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
>  	SND_PCI_QUIRK(0x17aa, 0x3801, "Lenovo Yoga9 14IAP7", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
>  	HDA_CODEC_QUIRK(0x17aa, 0x3802, "DuetITL 2021", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS),
>  	SND_PCI_QUIRK(0x17aa, 0x3802, "Lenovo Yoga Pro 9 14IRP8", ALC287_FIXUP_TAS2781_I2C),
> +	SND_PCI_QUIRK(0x17aa, 0x3812, "Lenovo Ideapad 720S", ALC288_FIXUP_HEADSET),
>  	SND_PCI_QUIRK(0x17aa, 0x3813, "Legion 7i 15IMHG05", ALC287_FIXUP_LEGION_15IMHG05_SPEAKERS),
>  	SND_PCI_QUIRK(0x17aa, 0x3818, "Lenovo C940 / Yoga Duet 7", ALC298_FIXUP_LENOVO_C940_DUET7),
>  	SND_PCI_QUIRK(0x17aa, 0x3819, "Lenovo 13s Gen2 ITL", ALC287_FIXUP_13S_GEN2_SPEAKERS),
> 
> -- 
>   René Rebe, ExactCODE GmbH, Berlin, Germany
>   https://exactco.de | https://t2linux.com | https://rene.rebe.de

  reply	other threads:[~2025-11-17 16:20 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-16 15:26 [PATCH] fixup realtek/alc288 headphone for MS Surface 2, 3 and René Rebe
2025-11-17 16:20 ` Takashi Iwai [this message]
2025-11-17 20:07   ` René Rebe
2025-11-19 15:13     ` Takashi Iwai
2025-11-19 15:44       ` Takashi Iwai
2025-11-19 17:17         ` René Rebe
2025-11-20  6:52           ` 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=87ikf8fx70.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=kailang@realtek.com \
    --cc=linux-sound@vger.kernel.org \
    --cc=rene@exactco.de \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.