]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
ASoC: rt712-sdca: reset codec at io_init to fix silent headphone
authorTianze Shao <shaotianze@outlook.com>
Wed, 1 Jul 2026 14:56:06 +0000 (16:56 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 6 Jul 2026 13:40:32 +0000 (14:40 +0100)
commit4c9854ad3cdc7ce408453207f153bb910cc6f3c1
tree98ec76d101e550b1220d42101e0998006de4a8fe
parent04f15d8f393037ed72876399882265604a370b2b
ASoC: rt712-sdca: reset codec at io_init to fix silent headphone

On ThinkPad X1 Carbon Gen 13 (Lunar Lake, RT712-SDCA version VA) the
3.5mm headphone jack is silent after rebooting from Windows.
rt712_sdca_va_io_init() gates rt712_sdca_calibration() on the persisted
vendor SW_CONFIG1 flag, and io_init writes SW_CONFIG1=1 at the end
regardless of whether the calibration succeeded. Across a warm reboot
the codec keeps power, so SW_CONFIG1 stays unchanged, the calibration
may be skipped, and the retained state can be invalid, leaving the
headphone amp disabled.

This patch mimics the reset sequence in rt711-sdca.c, it adds an
rt712_sdca_reset() helper, and calls it from io_init so the codec is
reset before initialization. RT712_PARA_VERB_CTL,
RT712_HIDDEN_REG_SW_RESET and RT712_HDA_LEGACY_RESET_CTL are already
defined but were unused. The reset clears SW_CONFIG1 and the analog
state so rt712_sdca_calibration() runs from a clean state and
completes.

Problem reproducible: boot Windows (headphone is good) -> reboot
to Linux (silent).
The reproducibility may depend on Windows' behaviour.

Signed-off-by: Tianze Shao <shaotianze@outlook.com>
Link: https://patch.msgid.link/TYCPR01MB872223CB999D2099A5E0F58DC4F62@TYCPR01MB8722.jpnprd01.prod.outlook.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt712-sdca.c