diff options
| author | Ben Romberger <bromberg@codeaurora.org> | 2015-10-08 13:29:38 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:11:20 -0700 |
| commit | 24102570c8bc285d121d41a246e9e2e1dc5e698a (patch) | |
| tree | c82fbb7666c76be9937f522ee9d81a9255268c0f | |
| parent | 60ae3d3db46e588d9a0d6bd2695c9527795cb208 (diff) | |
ASoC: msm: Interrupt events in compress free
Interrupt any wait events during free of the compress driver
and move spinlock unlock to after the ASM client is freed.
Change-Id: Idb865ebbb47b86ac32043ba4562053d3f9795b4d
Signed-off-by: Ben Romberger <bromberg@codeaurora.org>
| -rwxr-xr-x | sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c b/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c index abb02bcb046e..8399f02fd4a2 100755 --- a/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c +++ b/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c @@ -1144,6 +1144,8 @@ static int msm_compr_free(struct snd_compr_stream *cstream) pr_err("%s prtd is null\n", __func__); return 0; } + prtd->cmd_interrupt = 1; + wake_up(&prtd->drain_wait); pdata = snd_soc_platform_get_drvdata(soc_prtd->platform); ac = prtd->audio_client; if (!pdata || !ac) { @@ -1838,6 +1840,12 @@ static int msm_compr_trigger(struct snd_compr_stream *cstream, int cmd) __func__); break; } + + spin_lock_irqsave(&prtd->lock, flags); + prtd->gapless_state.stream_opened[stream_index] = 1; + prtd->gapless_state.set_next_stream_id = true; + spin_unlock_irqrestore(&prtd->lock, flags); + rc = msm_compr_send_media_format_block(cstream, stream_id, false); if (rc < 0) { @@ -1847,10 +1855,6 @@ static int msm_compr_trigger(struct snd_compr_stream *cstream, int cmd) } msm_compr_send_dec_params(cstream, pdata->dec_params[fe_id], stream_id); - spin_lock_irqsave(&prtd->lock, flags); - prtd->gapless_state.stream_opened[stream_index] = 1; - prtd->gapless_state.set_next_stream_id = true; - spin_unlock_irqrestore(&prtd->lock, flags); break; } |
