diff options
-rw-r--r-- | sound/soc/sh/rcar/scu.c | 29 |
1 files 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) | |||
264 | return !!(flags & RSND_SCU_USE_HPBIF); | 264 | return !!(flags & RSND_SCU_USE_HPBIF); |
265 | } | 265 | } |
266 | 266 | ||
267 | static int rsnd_scu_start(struct rsnd_mod *mod, | 267 | static int rsnd_scu_init(struct rsnd_mod *mod, |
268 | struct rsnd_dai *rdai, | 268 | struct rsnd_dai *rdai, |
269 | struct rsnd_dai_stream *io) | 269 | struct rsnd_dai_stream *io) |
270 | { | 270 | { |
@@ -282,13 +282,30 @@ static int rsnd_scu_start(struct rsnd_mod *mod, | |||
282 | if (ret < 0) | 282 | if (ret < 0) |
283 | return ret; | 283 | return ret; |
284 | 284 | ||
285 | ret = rsnd_scu_transfer_start(priv, mod, rdai, io); | 285 | return 0; |
286 | if (ret < 0) | 286 | } |
287 | return ret; | 287 | |
288 | static int rsnd_scu_quit(struct rsnd_mod *mod, | ||
289 | struct rsnd_dai *rdai, | ||
290 | struct rsnd_dai_stream *io) | ||
291 | { | ||
292 | struct rsnd_scu *scu = rsnd_mod_to_scu(mod); | ||
293 | |||
294 | clk_disable(scu->clk); | ||
288 | 295 | ||
289 | return 0; | 296 | return 0; |
290 | } | 297 | } |
291 | 298 | ||
299 | static int rsnd_scu_start(struct rsnd_mod *mod, | ||
300 | struct rsnd_dai *rdai, | ||
301 | struct rsnd_dai_stream *io) | ||
302 | { | ||
303 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | ||
304 | struct rsnd_scu *scu = rsnd_mod_to_scu(mod); | ||
305 | |||
306 | return rsnd_scu_transfer_start(priv, mod, rdai, io); | ||
307 | } | ||
308 | |||
292 | static int rsnd_scu_stop(struct rsnd_mod *mod, | 309 | static int rsnd_scu_stop(struct rsnd_mod *mod, |
293 | struct rsnd_dai *rdai, | 310 | struct rsnd_dai *rdai, |
294 | struct rsnd_dai_stream *io) | 311 | struct rsnd_dai_stream *io) |
@@ -298,13 +315,13 @@ static int rsnd_scu_stop(struct rsnd_mod *mod, | |||
298 | 315 | ||
299 | rsnd_scu_transfer_stop(priv, mod, rdai, io); | 316 | rsnd_scu_transfer_stop(priv, mod, rdai, io); |
300 | 317 | ||
301 | clk_disable(scu->clk); | ||
302 | |||
303 | return 0; | 318 | return 0; |
304 | } | 319 | } |
305 | 320 | ||
306 | static struct rsnd_mod_ops rsnd_scu_ops = { | 321 | static struct rsnd_mod_ops rsnd_scu_ops = { |
307 | .name = "scu", | 322 | .name = "scu", |
323 | .init = rsnd_scu_init, | ||
324 | .quit = rsnd_scu_quit, | ||
308 | .start = rsnd_scu_start, | 325 | .start = rsnd_scu_start, |
309 | .stop = rsnd_scu_stop, | 326 | .stop = rsnd_scu_stop, |
310 | }; | 327 | }; |