Commit fe071308 authored by Richard Fitzgerald's avatar Richard Fitzgerald Committed by Mark Brown

ASoC: wm_adsp: Allow client to hook into pre_run callback

Some HALO-based codecs need some additional custom setup in the
pre_run stage of cs_dsp. Implement the callback in wm_adsp to call
an optional codec driver callback.
Signed-off-by: default avatarRichard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20221109165331.29332-11-rf@opensource.cirrus.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 0848e94c
...@@ -1035,6 +1035,16 @@ int wm_adsp_early_event(struct snd_soc_dapm_widget *w, ...@@ -1035,6 +1035,16 @@ int wm_adsp_early_event(struct snd_soc_dapm_widget *w,
} }
EXPORT_SYMBOL_GPL(wm_adsp_early_event); EXPORT_SYMBOL_GPL(wm_adsp_early_event);
static int wm_adsp_pre_run(struct cs_dsp *cs_dsp)
{
struct wm_adsp *dsp = container_of(cs_dsp, struct wm_adsp, cs_dsp);
if (!dsp->pre_run)
return 0;
return (*dsp->pre_run)(dsp);
}
static int wm_adsp_event_post_run(struct cs_dsp *cs_dsp) static int wm_adsp_event_post_run(struct cs_dsp *cs_dsp)
{ {
struct wm_adsp *dsp = container_of(cs_dsp, struct wm_adsp, cs_dsp); struct wm_adsp *dsp = container_of(cs_dsp, struct wm_adsp, cs_dsp);
...@@ -2043,6 +2053,7 @@ static const struct cs_dsp_client_ops wm_adsp1_client_ops = { ...@@ -2043,6 +2053,7 @@ static const struct cs_dsp_client_ops wm_adsp1_client_ops = {
static const struct cs_dsp_client_ops wm_adsp2_client_ops = { static const struct cs_dsp_client_ops wm_adsp2_client_ops = {
.control_add = wm_adsp_control_add, .control_add = wm_adsp_control_add,
.control_remove = wm_adsp_control_remove, .control_remove = wm_adsp_control_remove,
.pre_run = wm_adsp_pre_run,
.post_run = wm_adsp_event_post_run, .post_run = wm_adsp_event_post_run,
.post_stop = wm_adsp_event_post_stop, .post_stop = wm_adsp_event_post_stop,
.watchdog_expired = wm_adsp_fatal_error, .watchdog_expired = wm_adsp_fatal_error,
......
...@@ -36,6 +36,7 @@ struct wm_adsp { ...@@ -36,6 +36,7 @@ struct wm_adsp {
int fw; int fw;
struct work_struct boot_work; struct work_struct boot_work;
int (*pre_run)(struct wm_adsp *dsp);
bool preloaded; bool preloaded;
bool fatal_error; bool fatal_error;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment