[RFC PATCH 0/2] ASoC: CS42L83 Apple headset remote support
From: Ryan Murray
Date: Thu Sep 17 2026 - 03:23:48 EST
Hi,
This series adds Apple wired-headset remote support to CS42L83, including
volume-button events while audio is idle. Identification is bounded and
falls back to the analogue detector on failure. It uses the existing
regmap, threaded IRQ and ASoC jack paths; no new DT or clock interface is
needed.
Patch 1 checks interrupt I/O and runtime-resume errors. Patch 2 adds remote
identification and button handling. Machine drivers must expose the button
capabilities and key mappings; J700 platform support is outside this series.
Hardware testing on J700/CS42L83 B0 with Apple earbuds covered idle buttons,
unplug/replug, playback, capture and full duplex, including identification
with streams running. The mainline series was build-tested separately:
arm64 modules with PM on/off and built-in PM. Extracted-source ASan/UBSan
tests cover malformed replies, timeouts, I/O faults and recovery.
Other boards/revisions, OMTP, analogue-only headsets and system
suspend/resume remain untested.
I'd appreciate Cirrus/ASoC feedback on:
- Whether CS42L83 identity alone is sufficient across revisions.
- The undocumented receiver controls, particularly HS_BIAS_CTL bits 3:2,
and the receive-acknowledgment/identifier interpretation.
This is an independent implementation based on register-level reverse
engineering and hardware tests. No proprietary source or firmware is
included. LLM assistance covered implementation, analysis, testing and
text; the patches carry Assisted-by: LLM.
Thanks,
Ryan
Ryan Murray (2):
ASoC: cs42l42: handle jack interrupt I/O and resume errors
ASoC: cs42l42: support Apple headset remotes on CS42L83
sound/soc/codecs/cs42l42.c | 286 +++++++++++++++++++++++++++++++++++--
sound/soc/codecs/cs42l42.h | 15 ++
2 files changed, 293 insertions(+), 8 deletions(-)
base-commit: 238650ef6c7c7cca08e032527329424c9fbd70e5