From 38869968253464c5f2f6c03507265fb341230b8b Mon Sep 17 00:00:00 2001 From: Cong Tang Date: Tue, 6 Mar 2018 12:04:19 +0800 Subject: [PATCH] ASoC: msm: Fix repeated reg phy stream issue Fix repeated reg phy stream issue in loopback driver which cause audio dsp calibration failure due to rtac device could not remove successfully. Change-Id: Ifa1b9cd579bc313d4addc00d48a8b4b636181220 Signed-off-by: Cong Tang --- sound/soc/msm/qdsp6v2/msm-pcm-loopback-v2.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sound/soc/msm/qdsp6v2/msm-pcm-loopback-v2.c b/sound/soc/msm/qdsp6v2/msm-pcm-loopback-v2.c index 476789c67535..15f4b49749a1 100644 --- a/sound/soc/msm/qdsp6v2/msm-pcm-loopback-v2.c +++ b/sound/soc/msm/qdsp6v2/msm-pcm-loopback-v2.c @@ -416,6 +416,12 @@ static int msm_pcm_prepare(struct snd_pcm_substream *substream) dev_dbg(rtd->platform->dev, "%s: ASM loopback stream:%d\n", __func__, substream->stream); + + if (pcm->playback_start && pcm->capture_start) { + mutex_unlock(&pcm->lock); + return ret; + } + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { if (!pcm->playback_start) pcm->playback_start = 1; @@ -424,7 +430,7 @@ static int msm_pcm_prepare(struct snd_pcm_substream *substream) pcm->capture_start = 1; } - if (pcm->instance == 2) { + if (pcm->playback_start && pcm->capture_start) { struct snd_soc_pcm_runtime *soc_pcm_rx = pcm->playback_substream->private_data; struct snd_soc_pcm_runtime *soc_pcm_tx = -- 2.11.0