Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d56b54e7 authored by Ben Romberger's avatar Ben Romberger Committed by Haynes Mathew George
Browse files

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: default avatarBen Romberger <bromberg@codeaurora.org>
parent 87aa8fb7
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -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;
	}