[PATCH v2 0/4] Support wm_adsp hibernation for runtime suspend
From: Stefan Binding
Date: Tue Feb 24 2026 - 11:23:16 EST
When the CS35L41 and CS35L45 drivers suspend, they are put into
hibernation, and the regmap goes into cache_only, but the firmware is
still running, and wm_adsp is not stopped. If userspace attempts to
read a firmware control, it will perform a regmap_raw_read() and this
will produce an error in the kernel log.
To prevent these spurious errors, add an apis into cs_dsp and wm_adsp
to allow wm_adsp to hibernate. In this hibernation mode, reads or
writes to the dsp controls would be rejected with -EPERM rather than
-EBUSY, and no error will be printed to the kernel log.
Changes Since v1:
- Fix minor error in cs_dsp API documentation
- Add similar patch to use new wm_adsp api for CS35L45
Ricardo Rivera-Matos (1):
ASoC: cs35l45: Hibernate wm_adsp on runtime suspend
Stefan Binding (3):
firmware: cs_dsp: Add API to hibernate the DSP
ASoC: codecs: wm_adsp: Allow wm_adsp to hibernate without stopping DSP
ASoC: cs35l41: Hibernate wm_adsp on runtime suspend
drivers/firmware/cirrus/cs_dsp.c | 49 +++++++++++++++++++++++---
include/linux/firmware/cirrus/cs_dsp.h | 3 ++
sound/soc/codecs/cs35l41.c | 5 +++
sound/soc/codecs/cs35l45.c | 3 ++
sound/soc/codecs/wm_adsp.c | 6 ++++
sound/soc/codecs/wm_adsp.h | 1 +
6 files changed, 63 insertions(+), 4 deletions(-)
--
2.43.0