提交 075207d2 编写于 作者: Q Qiao Zhou 提交者: Mark Brown

ASoC: soc-pcm: skip dpcm path checking with incapable/unready FE

Skip dpcm path checking for playback or capture, if corresponding FE
doesn't support playback or capture, or currently is not ready. It
can reduce the unnecessary cost to search connected widgets.

[Tweaked comments for clarity -- broonie]
Signed-off-by: NQiao Zhou <zhouqiao@marvell.com>
Signed-off-by: NMark Brown <broonie@kernel.org>
上级 f114040e
......@@ -2248,7 +2248,13 @@ int soc_dpcm_runtime_update(struct snd_soc_card *card)
fe->dai_link->name);
/* skip if FE doesn't have playback capability */
if (!fe->cpu_dai->driver->playback.channels_min)
if (!fe->cpu_dai->driver->playback.channels_min
|| !fe->codec_dai->driver->playback.channels_min)
goto capture;
/* skip if FE isn't currently playing */
if (!fe->cpu_dai->playback_active
|| !fe->codec_dai->playback_active)
goto capture;
paths = dpcm_path_get(fe, SNDRV_PCM_STREAM_PLAYBACK, &list);
......@@ -2278,7 +2284,13 @@ int soc_dpcm_runtime_update(struct snd_soc_card *card)
dpcm_path_put(&list);
capture:
/* skip if FE doesn't have capture capability */
if (!fe->cpu_dai->driver->capture.channels_min)
if (!fe->cpu_dai->driver->capture.channels_min
|| !fe->codec_dai->driver->capture.channels_min)
continue;
/* skip if FE isn't currently capturing */
if (!fe->cpu_dai->capture_active
|| !fe->codec_dai->capture_active)
continue;
paths = dpcm_path_get(fe, SNDRV_PCM_STREAM_CAPTURE, &list);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册