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

Commit fe44efb1 authored by Dhananjay Kumar's avatar Dhananjay Kumar
Browse files

ASoC: msm: qdsp6v2: Unblock drain on reset event callback



Unblock drain on reset event callback from DSP as drain is
aborted in this case and it should be considered completed
with error.

Change-Id: Iafc68eb6b75c21635d7ada4c56dd5af0b4b2c233
Signed-off-by: default avatarDhananjay Kumar <dhakumar@codeaurora.org>
parent b7c6c742
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -546,6 +546,7 @@ static void compr_event_handler(uint32_t opcode,
		snd_compr_fragment_elapsed(cstream);
		prtd->copied_total = prtd->bytes_received;
		atomic_set(&prtd->error, 1);
		wake_up(&prtd->drain_wait);
		spin_unlock_irqrestore(&prtd->lock, flags);
		break;
	default:
@@ -1257,7 +1258,8 @@ static int msm_compr_drain_buffer(struct msm_compr_audio *prtd,
	rc = wait_event_interruptible(prtd->drain_wait,
					prtd->drain_ready ||
					prtd->cmd_interrupt ||
					atomic_read(&prtd->xrun));
					atomic_read(&prtd->xrun) ||
					atomic_read(&prtd->error));
	pr_debug("%s: out of buffer drain wait with ret %d\n", __func__, rc);
	spin_lock_irqsave(&prtd->lock, *flags);
	if (prtd->cmd_interrupt) {
@@ -1265,6 +1267,10 @@ static int msm_compr_drain_buffer(struct msm_compr_audio *prtd,
		rc = -EINTR;
		prtd->cmd_interrupt = 0;
	}
	if (atomic_read(&prtd->error)) {
		pr_err("%s: Got RESET EVENTS notification, return\n", __func__);
		rc = -ENETRESET;
	}
	return rc;
}