diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-08-04 20:24:03 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-08-05 17:16:41 +0100 |
commit | 19c2c5f55e31ac8da87bb8efe0cf86aa933e6a2f (patch) | |
tree | 8e80da3d519ead118918070b32d3b59d624a0f2f /sound/soc | |
parent | 57295073b6acfdfaf9319d3caf92a5c433fdf109 (diff) | |
download | op-kernel-dev-19c2c5f55e31ac8da87bb8efe0cf86aa933e6a2f.zip op-kernel-dev-19c2c5f55e31ac8da87bb8efe0cf86aa933e6a2f.tar.gz |
ASoC: avoid duplicated DAI routes
ASoC automatically creates snd_soc_dapm_dai_in and snd_soc_dapm_dai_out
widgets for DAI drivers, and adds them to the list. Later on, ASoC
creates automatic routes between these widgets and a widget with a
stream name.
We look for a snd_soc_dapm_dai_in or snd_soc_dapm_dai_out widget, and
use this to obtain the DAI structure. We then scan all widgets for
any with a stream name refering to either the capture or the playback
stream, and create routes.
If you have both a snd_soc_dapm_dai_in and a snd_soc_dapm_dai_out
referring to the same DAI structure, this ends up creating one set of
routes for the DAI for the snd_soc_dapm_dai_in widget, and a duplicated
set of routes for the snd_soc_dapm_dai_out widget.
Fix this by checking that the stream name for the widget matches the
DAI widget name.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/soc-dapm.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 0944bc4..7f53d86 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -3551,7 +3551,7 @@ int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card) break; } - if (!w->sname) + if (!w->sname || !strstr(w->sname, dai_w->name)) continue; if (dai->driver->playback.stream_name && |