mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
ASoC: soc-pcm: fixup dpcm_prune_paths() loop continue
[ Upstream commitbed646dc3f] dpcm_prune_paths() is checking widget at 2 parts. (A) is for CPU, (B) is for Codec. If we focus to (A) part, continue at (a) is for (1) loop. But, if we focus to (B) part, continue at (b) is for (2) loop, not for (1). This is bug. This patch fixup this issue. static int dpcm_prune_paths(...) { ... (1) for_each_dpcm_be(fe, stream, dpcm) { ... ^ widget = dai_get_widget(...); | (A) if (widget && widget_in_list(...)) | (a) continue; v ^ (2) for_each_rtd_codec_dai(...) { | widget = dai_get_widget(...); (B) | if (widget && widget_in_list(...)) v (b) continue; } ... Fixes:2e5894d737("ASoC: pcm: Add support for DAI multicodec") Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/87blui64mf.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
9d1cdde7f6
commit
0e8be3f402
@@ -1385,6 +1385,7 @@ static int dpcm_prune_paths(struct snd_soc_pcm_runtime *fe, int stream,
|
||||
struct snd_soc_dapm_widget *widget;
|
||||
struct snd_soc_dai *dai;
|
||||
int prune = 0;
|
||||
int do_prune;
|
||||
|
||||
/* Destroy any old FE <--> BE connections */
|
||||
for_each_dpcm_be(fe, stream, dpcm) {
|
||||
@@ -1398,13 +1399,16 @@ static int dpcm_prune_paths(struct snd_soc_pcm_runtime *fe, int stream,
|
||||
continue;
|
||||
|
||||
/* is there a valid CODEC DAI widget for this BE */
|
||||
do_prune = 1;
|
||||
for_each_rtd_codec_dai(dpcm->be, i, dai) {
|
||||
widget = dai_get_widget(dai, stream);
|
||||
|
||||
/* prune the BE if it's no longer in our active list */
|
||||
if (widget && widget_in_list(list, widget))
|
||||
continue;
|
||||
do_prune = 0;
|
||||
}
|
||||
if (!do_prune)
|
||||
continue;
|
||||
|
||||
dev_dbg(fe->dev, "ASoC: pruning %s BE %s for %s\n",
|
||||
stream ? "capture" : "playback",
|
||||
|
||||
Reference in New Issue
Block a user