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: Richard Fitzgerald <rf@opensource.cirrus.com> Link: https://lore.kernel.org/r/20221109165331.29332-11-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
0848e94c39
commit
fe07130870
@ -1035,6 +1035,16 @@ int wm_adsp_early_event(struct snd_soc_dapm_widget *w,
|
||||
}
|
||||
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)
|
||||
{
|
||||
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 = {
|
||||
static const struct cs_dsp_client_ops wm_adsp2_client_ops = {
|
||||
.control_add = wm_adsp_control_add,
|
||||
.control_remove = wm_adsp_control_remove,
|
||||
.pre_run = wm_adsp_pre_run,
|
||||
.post_run = wm_adsp_event_post_run,
|
||||
.post_stop = wm_adsp_event_post_stop,
|
||||
.watchdog_expired = wm_adsp_fatal_error,
|
||||
|
@ -36,6 +36,7 @@ struct wm_adsp {
|
||||
int fw;
|
||||
|
||||
struct work_struct boot_work;
|
||||
int (*pre_run)(struct wm_adsp *dsp);
|
||||
|
||||
bool preloaded;
|
||||
bool fatal_error;
|
||||
|
Loading…
Reference in New Issue
Block a user