diff options
Diffstat (limited to 'sound/soc/codecs/wm_adsp.c')
| -rw-r--r-- | sound/soc/codecs/wm_adsp.c | 27 | 
1 files changed, 18 insertions, 9 deletions
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index 36ea0dcdc7ab..e451c009f2d9 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -1092,27 +1092,36 @@ static void wm_adsp_event_post_stop(struct cs_dsp *cs_dsp)  	dsp->fatal_error = false;  } +int wm_adsp_run(struct wm_adsp *dsp) +{ +	flush_work(&dsp->boot_work); + +	return cs_dsp_run(&dsp->cs_dsp); +} +EXPORT_SYMBOL_GPL(wm_adsp_run); + +void wm_adsp_stop(struct wm_adsp *dsp) +{ +	cs_dsp_stop(&dsp->cs_dsp); +} +EXPORT_SYMBOL_GPL(wm_adsp_stop); +  int wm_adsp_event(struct snd_soc_dapm_widget *w,  		  struct snd_kcontrol *kcontrol, int event)  {  	struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);  	struct wm_adsp *dsps = snd_soc_component_get_drvdata(component);  	struct wm_adsp *dsp = &dsps[w->shift]; -	int ret = 0;  	switch (event) {  	case SND_SOC_DAPM_POST_PMU: -		flush_work(&dsp->boot_work); -		ret = cs_dsp_run(&dsp->cs_dsp); -		break; +		return wm_adsp_run(dsp);  	case SND_SOC_DAPM_PRE_PMD: -		cs_dsp_stop(&dsp->cs_dsp); -		break; +		wm_adsp_stop(dsp); +		return 0;  	default: -		break; +		return 0;  	} - -	return ret;  }  EXPORT_SYMBOL_GPL(wm_adsp_event);  |