Each Renesas sound mod (= SSI/SRC/DVC) might be called from many paths
if it supports MIXer. In such case, mod <-> io is no longer 1:1
relationship. Then, interrupt handler can't use rsnd_mod_to_io().
This patch adds SSI/SRC/DMA common interrupt handler frame
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Keita Kobayashi <keita.kobayashi.ym@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
                clk_unprepare(mod->clk);
 }
 
+void rsnd_mod_interrupt(struct rsnd_mod *mod,
+                       void (*callback)(struct rsnd_mod *mod,
+                                        struct rsnd_dai_stream *io))
+{
+       struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
+       struct rsnd_dai_stream *io;
+       struct rsnd_dai *rdai;
+       int i, j;
+
+       for_each_rsnd_dai(rdai, priv, j) {
+
+               for (i = 0; i < RSND_MOD_MAX; i++) {
+                       io = &rdai->playback;
+                       if (mod == io->mod[i])
+                               callback(mod, io);
+
+                       io = &rdai->capture;
+                       if (mod == io->mod[i])
+                               callback(mod, io);
+               }
+       }
+}
+
 int rsnd_mod_is_working(struct rsnd_mod *mod)
 {
        struct rsnd_dai_stream *io = rsnd_mod_to_io(mod);
 
 char *rsnd_mod_name(struct rsnd_mod *mod);
 int rsnd_mod_is_working(struct rsnd_mod *mod);
 struct dma_chan *rsnd_mod_dma_req(struct rsnd_mod *mod);
+void rsnd_mod_interrupt(struct rsnd_mod *mod,
+                       void (*callback)(struct rsnd_mod *mod,
+                                        struct rsnd_dai_stream *io));
 
 /*
  *     R-Car sound DAI