diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2015-10-26 04:41:53 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-11-16 05:09:29 -0500 |
commit | 2daf71ad8da6cb57f919c9c876ee7e42530371df (patch) | |
tree | cbe8dd546eb929a8fa781e5a8a16ba7dc056fb08 /sound/soc/sh | |
parent | 69e32a58bde67490f57b6172da198b50c7aa6ab1 (diff) |
ASoC: rsnd: avoid pointless loop in rsnd_mod_interrupt()
Current Renesas sound driver doesn't have 1:1 relationship between
stream <-> mod because it is supporting MIX. Because of this reason
rsnd_mod_interrupt() is searching correspond mod by for loop.
But this loop is not needed, because each mod has own type.
This patch avoid pointless loop by using mod->type.
This patch is good for SSI-parent support, because stream might have
2 SSI as SSI-parent/child. SSI interrupt handler will be called twice
if stream has SSI-parent without this patch.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/sh')
-rw-r--r-- | sound/soc/sh/rcar/core.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index 5f20d6776281..8af2d22d0cd3 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c | |||
@@ -192,19 +192,16 @@ void rsnd_mod_interrupt(struct rsnd_mod *mod, | |||
192 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | 192 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); |
193 | struct rsnd_dai_stream *io; | 193 | struct rsnd_dai_stream *io; |
194 | struct rsnd_dai *rdai; | 194 | struct rsnd_dai *rdai; |
195 | int i, j; | 195 | int i; |
196 | |||
197 | for_each_rsnd_dai(rdai, priv, j) { | ||
198 | 196 | ||
199 | for (i = 0; i < RSND_MOD_MAX; i++) { | 197 | for_each_rsnd_dai(rdai, priv, i) { |
200 | io = &rdai->playback; | 198 | io = &rdai->playback; |
201 | if (mod == io->mod[i]) | 199 | if (mod == io->mod[mod->type]) |
202 | callback(mod, io); | 200 | callback(mod, io); |
203 | 201 | ||
204 | io = &rdai->capture; | 202 | io = &rdai->capture; |
205 | if (mod == io->mod[i]) | 203 | if (mod == io->mod[mod->type]) |
206 | callback(mod, io); | 204 | callback(mod, io); |
207 | } | ||
208 | } | 205 | } |
209 | } | 206 | } |
210 | 207 | ||