| From 7ae4a85f32ec9e06c35111591cc873a59b012715 Mon Sep 17 00:00:00 2001 |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Date: Thu, 23 Jan 2014 18:38:33 -0800 |
| Subject: ASoC: rsnd: add rsnd_scu_init(), and separate init/start |
| |
| 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> |
| (cherry picked from commit a204d90c91208d9b63ba309a1c44f582751e58c9) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| sound/soc/sh/rcar/scu.c | 29 +++++++++++++++++++++++------ |
| 1 file changed, 23 insertions(+), 6 deletions(-) |
| |
| diff --git a/sound/soc/sh/rcar/scu.c b/sound/soc/sh/rcar/scu.c |
| index ab5f1d21731e..e1e08738b9d4 100644 |
| --- a/sound/soc/sh/rcar/scu.c |
| +++ b/sound/soc/sh/rcar/scu.c |
| @@ -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, |
| }; |
| -- |
| 2.1.2 |
| |