Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e974777b authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Greg Kroah-Hartman
Browse files

ASoC: rsnd: avoid pointless loop in rsnd_mod_interrupt()



commit 2daf71ad8da6cb57f919c9c876ee7e42530371df upstream.

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: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Signed-off-by: default avatarThong Ho <thong.ho.px@rvc.renesas.com>
Signed-off-by: default avatarNhan Nguyen <nhan.nguyen.yb@renesas.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent fdc568a4
Loading
Loading
Loading
Loading
+8 −11
Original line number Original line Diff line number Diff line
@@ -192,21 +192,18 @@ void rsnd_mod_interrupt(struct rsnd_mod *mod,
	struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
	struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
	struct rsnd_dai_stream *io;
	struct rsnd_dai_stream *io;
	struct rsnd_dai *rdai;
	struct rsnd_dai *rdai;
	int i, j;
	int i;

	for_each_rsnd_dai(rdai, priv, j) {


		for (i = 0; i < RSND_MOD_MAX; i++) {
	for_each_rsnd_dai(rdai, priv, i) {
		io = &rdai->playback;
		io = &rdai->playback;
			if (mod == io->mod[i])
		if (mod == io->mod[mod->type])
			callback(mod, io);
			callback(mod, io);


		io = &rdai->capture;
		io = &rdai->capture;
			if (mod == io->mod[i])
		if (mod == io->mod[mod->type])
			callback(mod, io);
			callback(mod, io);
	}
	}
}
}
}


int rsnd_io_is_working(struct rsnd_dai_stream *io)
int rsnd_io_is_working(struct rsnd_dai_stream *io)
{
{