diff options
Diffstat (limited to 'sound/soc/soc-compress.c')
| -rw-r--r-- | sound/soc/soc-compress.c | 14 | 
1 files changed, 11 insertions, 3 deletions
diff --git a/sound/soc/soc-compress.c b/sound/soc/soc-compress.c index b5b3db71e25..ed0bfb0ddb9 100644 --- a/sound/soc/soc-compress.c +++ b/sound/soc/soc-compress.c @@ -211,19 +211,27 @@ static int soc_compr_set_params(struct snd_compr_stream *cstream,  	if (platform->driver->compr_ops && platform->driver->compr_ops->set_params) {  		ret = platform->driver->compr_ops->set_params(cstream, params);  		if (ret < 0) -			goto out; +			goto err;  	}  	if (rtd->dai_link->compr_ops && rtd->dai_link->compr_ops->set_params) {  		ret = rtd->dai_link->compr_ops->set_params(cstream);  		if (ret < 0) -			goto out; +			goto err;  	}  	snd_soc_dapm_stream_event(rtd, SNDRV_PCM_STREAM_PLAYBACK,  				SND_SOC_DAPM_STREAM_START); -out: +	/* cancel any delayed stream shutdown that is pending */ +	rtd->pop_wait = 0; +	mutex_unlock(&rtd->pcm_mutex); + +	cancel_delayed_work_sync(&rtd->delayed_work); + +	return ret; + +err:  	mutex_unlock(&rtd->pcm_mutex);  	return ret;  }  |