ASoC: rsnd: add rsnd_scu_init(), and separate init/start
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Fri, 24 Jan 2014 02:38:33 +0000 (18:38 -0800)
committerMark Brown <broonie@linaro.org>
Mon, 3 Feb 2014 12:41:15 +0000 (12:41 +0000)
Current scu.c has rsnd_scu_start(),
and, operation of initialization/start
are implemented in this function.
This patch adds new rsnd_scu_init() and separates
rsnd_scu_start(), since rsnd_mod_ops has .init/.start callbacks.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/sh/rcar/scu.c

index ab5f1d21731e290b7d6cb3e50de33c538dd13888..e1e08738b9d4294bdfa26369f840c4657770dfe4 100644 (file)
@@ -264,7 +264,7 @@ bool rsnd_scu_hpbif_is_enable(struct rsnd_mod *mod)
        return !!(flags & RSND_SCU_USE_HPBIF);
 }
 
-static int rsnd_scu_start(struct rsnd_mod *mod,
+static int rsnd_scu_init(struct rsnd_mod *mod,
                          struct rsnd_dai *rdai,
                          struct rsnd_dai_stream *io)
 {
@@ -282,13 +282,30 @@ static int rsnd_scu_start(struct rsnd_mod *mod,
        if (ret < 0)
                return ret;
 
-       ret = rsnd_scu_transfer_start(priv, mod, rdai, io);
-       if (ret < 0)
-               return ret;
+       return 0;
+}
+
+static int rsnd_scu_quit(struct rsnd_mod *mod,
+                        struct rsnd_dai *rdai,
+                        struct rsnd_dai_stream *io)
+{
+       struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
+
+       clk_disable(scu->clk);
 
        return 0;
 }
 
+static int rsnd_scu_start(struct rsnd_mod *mod,
+                         struct rsnd_dai *rdai,
+                         struct rsnd_dai_stream *io)
+{
+       struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
+       struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
+
+       return rsnd_scu_transfer_start(priv, mod, rdai, io);
+}
+
 static int rsnd_scu_stop(struct rsnd_mod *mod,
                          struct rsnd_dai *rdai,
                          struct rsnd_dai_stream *io)
@@ -298,13 +315,13 @@ static int rsnd_scu_stop(struct rsnd_mod *mod,
 
        rsnd_scu_transfer_stop(priv, mod, rdai, io);
 
-       clk_disable(scu->clk);
-
        return 0;
 }
 
 static struct rsnd_mod_ops rsnd_scu_ops = {
        .name   = "scu",
+       .init   = rsnd_scu_init,
+       .quit   = rsnd_scu_quit,
        .start  = rsnd_scu_start,
        .stop   = rsnd_scu_stop,
 };