ASoC: codecs: wm_adsp: Allow wm_adsp to hibernate without stopping DSP

Some parts do not stop the DSP core before runtime suspend, however,
this leaves the DSP controls enabled and accessible whilst the part is
suspended and the regmap is cache_only.

Add new APIs to allow for the DSP to hibernate when the part is
suspended, and the DSP is not shut down.

Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://patch.msgid.link/20260224161821.93365-3-sbinding@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Stefan Binding 2026-02-24 16:18:06 +00:00 committed by Mark Brown
parent 73942a6ea2
commit 6394a52c90
2 changed files with 7 additions and 0 deletions

View File

@ -1100,6 +1100,12 @@ void wm_adsp_stop(struct wm_adsp *dsp)
}
EXPORT_SYMBOL_GPL(wm_adsp_stop);
void wm_adsp_hibernate(struct wm_adsp *dsp, bool hibernate)
{
cs_dsp_hibernate(&dsp->cs_dsp, hibernate);
}
EXPORT_SYMBOL_GPL(wm_adsp_hibernate);
int wm_adsp_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event)
{

View File

@ -103,6 +103,7 @@ irqreturn_t wm_halo_wdt_expire(int irq, void *data);
int wm_adsp_run(struct wm_adsp *dsp);
void wm_adsp_stop(struct wm_adsp *dsp);
void wm_adsp_hibernate(struct wm_adsp *dsp, bool hibernate);
int wm_adsp_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event);