|
@@ -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;
|
|
|
}
|