Loading asoc/msm-pcm-q6-v2.c +22 −0 Original line number Diff line number Diff line Loading @@ -614,8 +614,15 @@ static int msm_pcm_open(struct snd_pcm_substream *substream) struct snd_pcm_runtime *runtime = substream->runtime; struct snd_soc_pcm_runtime *soc_prtd = substream->private_data; struct msm_audio *prtd; struct msm_plat_data *pdata; int ret = 0; pdata = (struct msm_plat_data *) dev_get_drvdata(soc_prtd->platform->dev); if (!pdata) { pr_err("%s: platform data not populated\n", __func__); return -EINVAL; } prtd = kzalloc(sizeof(struct msm_audio), GFP_KERNEL); if (prtd == NULL) return -ENOMEM; Loading Loading @@ -693,6 +700,10 @@ static int msm_pcm_open(struct snd_pcm_substream *substream) prtd->reset_event = false; runtime->private_data = prtd; msm_adsp_init_mixer_ctl_pp_event_queue(soc_prtd); /* Vote to update the Rx thread priority to RT Thread for playback */ if ((substream->stream == SNDRV_PCM_STREAM_PLAYBACK) && (pdata->perf_mode == LOW_LATENCY_PCM_MODE)) apr_start_rx_rt(prtd->audio_client->apr); return 0; } Loading Loading @@ -800,6 +811,7 @@ static int msm_pcm_playback_close(struct snd_pcm_substream *substream) struct snd_pcm_runtime *runtime = substream->runtime; struct snd_soc_pcm_runtime *soc_prtd = substream->private_data; struct msm_audio *prtd = runtime->private_data; struct msm_plat_data *pdata; uint32_t timeout; int dir = 0; int ret = 0; Loading @@ -809,6 +821,16 @@ static int msm_pcm_playback_close(struct snd_pcm_substream *substream) if (prtd->audio_client) { dir = IN; /* * Unvote to downgrade the Rx thread priority from * RT Thread for Low-Latency use case. */ pdata = (struct msm_plat_data *) dev_get_drvdata(soc_prtd->platform->dev); if (pdata) { if (pdata->perf_mode == LOW_LATENCY_PCM_MODE) apr_end_rx_rt(prtd->audio_client->apr); } /* determine timeout length */ if (runtime->frame_bits == 0 || runtime->rate == 0) { timeout = CMD_EOS_MIN_TIMEOUT_LENGTH; Loading Loading
asoc/msm-pcm-q6-v2.c +22 −0 Original line number Diff line number Diff line Loading @@ -614,8 +614,15 @@ static int msm_pcm_open(struct snd_pcm_substream *substream) struct snd_pcm_runtime *runtime = substream->runtime; struct snd_soc_pcm_runtime *soc_prtd = substream->private_data; struct msm_audio *prtd; struct msm_plat_data *pdata; int ret = 0; pdata = (struct msm_plat_data *) dev_get_drvdata(soc_prtd->platform->dev); if (!pdata) { pr_err("%s: platform data not populated\n", __func__); return -EINVAL; } prtd = kzalloc(sizeof(struct msm_audio), GFP_KERNEL); if (prtd == NULL) return -ENOMEM; Loading Loading @@ -693,6 +700,10 @@ static int msm_pcm_open(struct snd_pcm_substream *substream) prtd->reset_event = false; runtime->private_data = prtd; msm_adsp_init_mixer_ctl_pp_event_queue(soc_prtd); /* Vote to update the Rx thread priority to RT Thread for playback */ if ((substream->stream == SNDRV_PCM_STREAM_PLAYBACK) && (pdata->perf_mode == LOW_LATENCY_PCM_MODE)) apr_start_rx_rt(prtd->audio_client->apr); return 0; } Loading Loading @@ -800,6 +811,7 @@ static int msm_pcm_playback_close(struct snd_pcm_substream *substream) struct snd_pcm_runtime *runtime = substream->runtime; struct snd_soc_pcm_runtime *soc_prtd = substream->private_data; struct msm_audio *prtd = runtime->private_data; struct msm_plat_data *pdata; uint32_t timeout; int dir = 0; int ret = 0; Loading @@ -809,6 +821,16 @@ static int msm_pcm_playback_close(struct snd_pcm_substream *substream) if (prtd->audio_client) { dir = IN; /* * Unvote to downgrade the Rx thread priority from * RT Thread for Low-Latency use case. */ pdata = (struct msm_plat_data *) dev_get_drvdata(soc_prtd->platform->dev); if (pdata) { if (pdata->perf_mode == LOW_LATENCY_PCM_MODE) apr_end_rx_rt(prtd->audio_client->apr); } /* determine timeout length */ if (runtime->frame_bits == 0 || runtime->rate == 0) { timeout = CMD_EOS_MIN_TIMEOUT_LENGTH; Loading