[PATCH v2 0/4] Support wm_adsp hibernation for runtime suspend

Stefan Binding posted 4 patches 1 month, 1 week ago
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(-)
[PATCH v2 0/4] Support wm_adsp hibernation for runtime suspend
Posted by Stefan Binding 1 month, 1 week ago
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
Re: [PATCH v2 0/4] Support wm_adsp hibernation for runtime suspend
Posted by Mark Brown 1 month ago
On Tue, 24 Feb 2026 16:18:04 +0000, Stefan Binding wrote:
> 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.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/4] firmware: cs_dsp: Add API to hibernate the DSP
      commit: 73942a6ea26bd7e02b7c260b8b7aa942397be894
[2/4] ASoC: codecs: wm_adsp: Allow wm_adsp to hibernate without stopping DSP
      commit: 6394a52c90c4abd10c8265983ec1f53207cd283e
[3/4] ASoC: cs35l41: Hibernate wm_adsp on runtime suspend
      commit: 4d80c0dbcda551b8b86ff14c6ae93026993970b2
[4/4] ASoC: cs35l45: Hibernate wm_adsp on runtime suspend
      commit: 17c6bf433742e0c1ff5ce175145877c0194e4a7a

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark