ASoC: rsnd: move rsnd_mod_is_working() to rsnd_io_is_working()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 15 Jun 2015 06:27:47 +0000 (06:27 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 16 Jun 2015 11:34:04 +0000 (12:34 +0100)
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.
This patch checks module working status via io instead of mod

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>
sound/soc/sh/rcar/core.c
sound/soc/sh/rcar/dma.c
sound/soc/sh/rcar/rsnd.h
sound/soc/sh/rcar/src.c
sound/soc/sh/rcar/ssi.c

index 266b24ae621dbdbd86ca0d8bbbe2a80acabbda04..1eca85ff3e916f2f5bda44fbb478c22376bd8318 100644 (file)
@@ -196,10 +196,8 @@ void rsnd_mod_interrupt(struct rsnd_mod *mod,
        }
 }
 
-int rsnd_mod_is_working(struct rsnd_mod *mod)
+int rsnd_io_is_working(struct rsnd_dai_stream *io)
 {
-       struct rsnd_dai_stream *io = rsnd_mod_to_io(mod);
-
        /* see rsnd_dai_stream_init/quit() */
        return !!io->substream;
 }
index 6ee34fcc0d684a6e9e59098b27cd820a404b86af..375a9dc33bca252e2a69d99ea89cb9aef9c20fe7 100644 (file)
@@ -52,7 +52,7 @@ static void __rsnd_dmaen_complete(struct rsnd_mod *mod,
         */
        spin_lock_irqsave(&priv->lock, flags);
 
-       if (rsnd_mod_is_working(mod))
+       if (rsnd_io_is_working(io))
                elapsed = rsnd_dai_pointer_update(io, io->byte_per_period);
 
        spin_unlock_irqrestore(&priv->lock, flags);
index fdb443b4f183c6b8a9f8657b60ffaa10393d3cdd..756930bc1914bed63ec0212f30ae2a1aae141703 100644 (file)
@@ -326,7 +326,6 @@ int rsnd_mod_init(struct rsnd_priv *priv,
                   int id);
 void rsnd_mod_quit(struct rsnd_mod *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_dai_stream *io,
                                  struct rsnd_mod *mod);
 void rsnd_mod_interrupt(struct rsnd_mod *mod,
@@ -356,7 +355,7 @@ struct rsnd_dai_stream {
 #define rsnd_io_is_play(io)    (&rsnd_io_to_rdai(io)->playback == io)
 #define rsnd_io_to_runtime(io) ((io)->substream ? \
                                (io)->substream->runtime : NULL)
-
+int rsnd_io_is_working(struct rsnd_dai_stream *io);
 
 struct rsnd_dai {
        char name[RSND_DAI_NAME_SIZE];
index 67db6968651594b623742b73fa80851c2b601b3b..c61c171801423fc03b98598a3fd1624c7eb4155c 100644 (file)
@@ -684,7 +684,7 @@ static void __rsnd_src_interrupt_gen2(struct rsnd_mod *mod,
        spin_lock(&priv->lock);
 
        /* ignore all cases if not working */
-       if (!rsnd_mod_is_working(mod))
+       if (!rsnd_io_is_working(io))
                goto rsnd_src_interrupt_gen2_out;
 
        if (rsnd_src_error_record_gen2(mod)) {
index fa1f2e5b9070d93b0eaf26a2f98f88f604624a97..2fbe59f7f9b5a845f5b97376de05bad6ff9c162f 100644 (file)
@@ -432,7 +432,7 @@ static void __rsnd_ssi_interrupt(struct rsnd_mod *mod,
        spin_lock(&priv->lock);
 
        /* ignore all cases if not working */
-       if (!rsnd_mod_is_working(mod))
+       if (!rsnd_io_is_working(io))
                goto rsnd_ssi_interrupt_out;
 
        status = rsnd_mod_read(mod, SSISR);