]> Pileus Git - ~andy/linux/blobdiff - sound/soc/sh/rcar/scu.c
ASoC: rsnd: add rsnd_scu_transfer_start()
[~andy/linux] / sound / soc / sh / rcar / scu.c
index 7642ec52b5900ab75814c1626786bba042544e32..3d8b57b1630b0d441163a87afa72ab98f2ebba79 100644 (file)
@@ -106,22 +106,6 @@ static int rsnd_src_set_route_if_gen1(struct rsnd_priv *priv,
        return 0;
 }
 
-static int rsnd_scu_set_mode(struct rsnd_priv *priv,
-                            struct rsnd_mod *mod,
-                            struct rsnd_dai *rdai,
-                            struct rsnd_dai_stream *io)
-{
-       int id = rsnd_mod_id(mod);
-       u32 val;
-
-       if (rsnd_is_gen1(priv)) {
-               val = (1 << id);
-               rsnd_mod_bset(mod, SRC_ROUTE_CTRL, val, val);
-       }
-
-       return 0;
-}
-
 static int rsnd_scu_set_hpbif(struct rsnd_priv *priv,
                              struct rsnd_mod *mod,
                              struct rsnd_dai *rdai,
@@ -141,12 +125,29 @@ static int rsnd_scu_set_hpbif(struct rsnd_priv *priv,
                return -EIO;
        }
 
-       rsnd_mod_write(mod, BUSIF_MODE, 1);
        rsnd_mod_write(mod, SRC_ADINR, adinr);
 
        return 0;
 }
 
+static int rsnd_scu_transfer_start(struct rsnd_priv *priv,
+                                  struct rsnd_mod *mod,
+                                  struct rsnd_dai *rdai,
+                                  struct rsnd_dai_stream *io)
+{
+       int id = rsnd_mod_id(mod);
+       u32 val;
+
+       if (rsnd_is_gen1(priv)) {
+               val = (1 << id);
+               rsnd_mod_bset(mod, SRC_ROUTE_CTRL, val, val);
+       }
+
+       rsnd_mod_write(mod, BUSIF_MODE, 1);
+
+       return 0;
+}
+
 bool rsnd_scu_hpbif_is_enable(struct rsnd_mod *mod)
 {
        struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
@@ -180,11 +181,11 @@ static int rsnd_scu_start(struct rsnd_mod *mod,
        if (ret < 0)
                return ret;
 
-       ret = rsnd_scu_set_mode(priv, mod, rdai, io);
+       ret = rsnd_scu_set_hpbif(priv, mod, rdai, io);
        if (ret < 0)
                return ret;
 
-       ret = rsnd_scu_set_hpbif(priv, mod, rdai, io);
+       ret = rsnd_scu_transfer_start(priv, mod, rdai, io);
        if (ret < 0)
                return ret;