diff --git a/asoc/msm-lsm-client.c b/asoc/msm-lsm-client.c index d44fd49e1b5e..482f83ebd39a 100644 --- a/asoc/msm-lsm-client.c +++ b/asoc/msm-lsm-client.c @@ -1460,6 +1460,12 @@ static int msm_lsm_ioctl_shared(struct snd_pcm_substream *substream, prtd->lsm_client->lab_started = false; } } + + if (!atomic_read(&prtd->read_abort)) { + dev_dbg(rtd->dev, + "%s: set read_abort to stop buffering\n", __func__); + atomic_set(&prtd->read_abort, 1); + } rc = q6lsm_stop(prtd->lsm_client, true); if (!rc) dev_dbg(rtd->dev, @@ -2665,6 +2671,12 @@ static int msm_lsm_close(struct snd_pcm_substream *substream) __func__, ret); } } + + if (!atomic_read(&prtd->read_abort)) { + dev_dbg(rtd->dev, + "%s: set read_abort to stop buffering\n", __func__); + atomic_set(&prtd->read_abort, 1); + } ret = q6lsm_stop(prtd->lsm_client, true); if (ret) dev_err(rtd->dev, @@ -2695,6 +2707,11 @@ static int msm_lsm_close(struct snd_pcm_substream *substream) SNDRV_PCM_STREAM_CAPTURE); if (prtd->lsm_client->opened) { + if (!atomic_read(&prtd->read_abort)) { + dev_dbg(rtd->dev, + "%s: set read_abort to stop buffering\n", __func__); + atomic_set(&prtd->read_abort, 1); + } q6lsm_close(prtd->lsm_client); prtd->lsm_client->opened = false; } diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c index 3efe11aabd89..abc4c59a3077 100644 --- a/asoc/msm-pcm-routing-v2.c +++ b/asoc/msm-pcm-routing-v2.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #include @@ -14673,6 +14673,10 @@ static const struct snd_kcontrol_new mmul17_mixer_controls[] = { MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("USB_AUDIO_TX", SND_SOC_NOPM, + MSM_BACKEND_DAI_USB_TX, + MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul18_mixer_controls[] = { @@ -25644,6 +25648,7 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"}, {"MultiMedia17 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"}, {"MultiMedia17 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"}, + {"MultiMedia17 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"}, {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"}, {"MultiMedia18 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"}, {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},