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

Commit 25d23202 authored by Eric Laurent's avatar Eric Laurent Committed by Banajit Goswami
Browse files

ASoC: msm: Return proper error codes



Return proper error codes back to ASoc framework if
trigger operations like flush, drain fails or gets interrupted.

Change-Id: I3e2a259b55d5619eac6122083a8936a85700d657
Signed-off-by: default avatarEric Laurent <elaurent@google.com>
Git-commit: 3a14d1af02c52d19d698732f3772f07843c90f6c
Git-repo: https://android.googlesource.com/kernel/msm


[dhakumar@codeaurora.org: resolved merge conflicts]
Signed-off-by: default avatarDhananjay Kumar <dhakumar@codeaurora.org>
Signed-off-by: default avatarBanajit Goswami <bgoswami@codeaurora.org>
parent d8758114
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -563,7 +563,7 @@ static int msm_compr_trigger(struct snd_compr_stream *cstream, int cmd)
			spin_unlock_irq(&prtd->lock);

		spin_lock_irq(&prtd->lock);
		/* only reset if flush was successful */
		/* FIXME. only reset if flush was successful */
		prtd->byte_offset  = 0;
		prtd->copied_total = 0;
		prtd->app_pointer  = 0;
@@ -590,6 +590,7 @@ static int msm_compr_trigger(struct snd_compr_stream *cstream, int cmd)
		if (!atomic_read(&prtd->start)) {
			pr_err("%s: stream is not in started state\n",
				__func__);
			rc = -EPERM;
			spin_unlock_irq(&prtd->lock);
			break;
		}
@@ -602,12 +603,14 @@ static int msm_compr_trigger(struct snd_compr_stream *cstream, int cmd)
			pr_debug("%s: wait till all the data is sent to dsp\n",
				__func__);
			rc = wait_event_interruptible(prtd->drain_wait,
					prtd->drain_ready);
				   prtd->cmd_interrupt || prtd->drain_ready);
		} else
			spin_unlock_irq(&prtd->lock);

		if (!atomic_read(&prtd->start)) {
		if (!atomic_read(&prtd->start) || prtd->cmd_interrupt) {
			pr_err("%s: stream is not started\n", __func__);
			rc = -EINTR;
			prtd->cmd_interrupt = 0;
			break;
		}

@@ -617,7 +620,7 @@ static int msm_compr_trigger(struct snd_compr_stream *cstream, int cmd)
		q6asm_cmd_nowait(prtd->audio_client, CMD_EOS);

		if (cmd == SND_COMPR_TRIGGER_PARTIAL_DRAIN) {
			pr_err("PARTIAL DRAIN, do not send EOS now, why!?");
			pr_err("PARTIAL DRAIN, do not wait for EOS ack");
			break;
		}

@@ -641,7 +644,7 @@ static int msm_compr_trigger(struct snd_compr_stream *cstream, int cmd)
		break;
	}

	return 0;
	return rc;
}

static int msm_compr_pointer(struct snd_compr_stream *cstream,