Re: [PATCH] ALSA: hda/ca0132: Set HP/Speaker auto-detect default from headphone pin verb
On Wed, 25 Feb 2026 18:36:45 +0100, Matt DeVillier wrote:
From 79d54b6b2b2410ac3c169329b93607042b137693 Mon Sep 17 00:00:00 2001 From: Matt DeVillier matt.devillier@gmail.com Date: Wed, 25 Feb 2026 11:25:18 -0600 Subject: [PATCH] ALSA: hda/ca0132: Set HP/Speaker auto-detect default from headphone pin verb
HP/Speaker auto-detect (VNID_HP_ASEL) has been off by default for every CA0132 device since the driver was added in 2012. vnode_lswitch is always initialized to 0 in ca0132_init_chip(), and no quirk or other code path enables it. As a result, headphone jack detection works only after the user manually turns on "HP/Speaker Auto Detect" in alsamixer, which is not obvious on laptops with combo jacks (e.g. Google Link, Alienware).
Change the default to follow the headphone pin config: if the pin verb has presence detect enabled (no AC_DEFCFG_MISC_NO_PRESENCE) and the codec supports it (AC_PINCAP_PRES_DETECT), enable HP_ASEL by default. This lets firmware (coreboot, UEFI, etc.) express whether the headphone jack supports insertion detection. Devices with combo jacks can default to auto-detect; devices with fixed/no jack leave it off.
Signed-off-by: Matt DeVillier matt.devillier@gmail.com
The code change looks OK, but the patch seems malformed by your mailer, and can't be applied cleanly.
Also, the mailing list for the kernel patch submission is linux-sound@vger.kernel.org, not alsa-devel ML.
Please fix your mail setup and resubmit to the right address.
thanks,
Takashi
sound/hda/codecs/ca0132.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/sound/hda/codecs/ca0132.c b/sound/hda/codecs/ca0132.c index dd054aedd501..ca6cb57347ea 100644 --- a/sound/hda/codecs/ca0132.c +++ b/sound/hda/codecs/ca0132.c @@ -9816,6 +9816,15 @@ static void ca0132_config(struct hda_codec *codec) spec->dig_in = 0x09; break; }
- /* Default HP/Speaker auto-detect from headphone pin verb: enable if the
- pin config indicates presence detect (not AC_DEFCFG_MISC_NO_PRESENCE).
- */
- if (spec->unsol_tag_hp &&
(snd_hda_query_pin_caps(codec, spec->unsol_tag_hp) &AC_PINCAP_PRES_DETECT) &&
!(get_defcfg_misc(snd_hda_codec_get_pincfg(codec, spec->unsol_tag_hp)) &AC_DEFCFG_MISC_NO_PRESENCE))- spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID] = 1;
}
static int ca0132_prepare_verbs(struct hda_codec *codec)
2.51.0
participants (1)
-
Takashi Iwai