diff options
-rw-r--r-- | sound/soc/sh/rcar/scu.c | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/sound/soc/sh/rcar/scu.c b/sound/soc/sh/rcar/scu.c index 7642ec52b590..3d8b57b1630b 100644 --- a/sound/soc/sh/rcar/scu.c +++ b/sound/soc/sh/rcar/scu.c | |||
@@ -106,22 +106,6 @@ static int rsnd_src_set_route_if_gen1(struct rsnd_priv *priv, | |||
106 | return 0; | 106 | return 0; |
107 | } | 107 | } |
108 | 108 | ||
109 | static int rsnd_scu_set_mode(struct rsnd_priv *priv, | ||
110 | struct rsnd_mod *mod, | ||
111 | struct rsnd_dai *rdai, | ||
112 | struct rsnd_dai_stream *io) | ||
113 | { | ||
114 | int id = rsnd_mod_id(mod); | ||
115 | u32 val; | ||
116 | |||
117 | if (rsnd_is_gen1(priv)) { | ||
118 | val = (1 << id); | ||
119 | rsnd_mod_bset(mod, SRC_ROUTE_CTRL, val, val); | ||
120 | } | ||
121 | |||
122 | return 0; | ||
123 | } | ||
124 | |||
125 | static int rsnd_scu_set_hpbif(struct rsnd_priv *priv, | 109 | static int rsnd_scu_set_hpbif(struct rsnd_priv *priv, |
126 | struct rsnd_mod *mod, | 110 | struct rsnd_mod *mod, |
127 | struct rsnd_dai *rdai, | 111 | struct rsnd_dai *rdai, |
@@ -141,12 +125,29 @@ static int rsnd_scu_set_hpbif(struct rsnd_priv *priv, | |||
141 | return -EIO; | 125 | return -EIO; |
142 | } | 126 | } |
143 | 127 | ||
144 | rsnd_mod_write(mod, BUSIF_MODE, 1); | ||
145 | rsnd_mod_write(mod, SRC_ADINR, adinr); | 128 | rsnd_mod_write(mod, SRC_ADINR, adinr); |
146 | 129 | ||
147 | return 0; | 130 | return 0; |
148 | } | 131 | } |
149 | 132 | ||
133 | static int rsnd_scu_transfer_start(struct rsnd_priv *priv, | ||
134 | struct rsnd_mod *mod, | ||
135 | struct rsnd_dai *rdai, | ||
136 | struct rsnd_dai_stream *io) | ||
137 | { | ||
138 | int id = rsnd_mod_id(mod); | ||
139 | u32 val; | ||
140 | |||
141 | if (rsnd_is_gen1(priv)) { | ||
142 | val = (1 << id); | ||
143 | rsnd_mod_bset(mod, SRC_ROUTE_CTRL, val, val); | ||
144 | } | ||
145 | |||
146 | rsnd_mod_write(mod, BUSIF_MODE, 1); | ||
147 | |||
148 | return 0; | ||
149 | } | ||
150 | |||
150 | bool rsnd_scu_hpbif_is_enable(struct rsnd_mod *mod) | 151 | bool rsnd_scu_hpbif_is_enable(struct rsnd_mod *mod) |
151 | { | 152 | { |
152 | struct rsnd_scu *scu = rsnd_mod_to_scu(mod); | 153 | struct rsnd_scu *scu = rsnd_mod_to_scu(mod); |
@@ -180,11 +181,11 @@ static int rsnd_scu_start(struct rsnd_mod *mod, | |||
180 | if (ret < 0) | 181 | if (ret < 0) |
181 | return ret; | 182 | return ret; |
182 | 183 | ||
183 | ret = rsnd_scu_set_mode(priv, mod, rdai, io); | 184 | ret = rsnd_scu_set_hpbif(priv, mod, rdai, io); |
184 | if (ret < 0) | 185 | if (ret < 0) |
185 | return ret; | 186 | return ret; |
186 | 187 | ||
187 | ret = rsnd_scu_set_hpbif(priv, mod, rdai, io); | 188 | ret = rsnd_scu_transfer_start(priv, mod, rdai, io); |
188 | if (ret < 0) | 189 | if (ret < 0) |
189 | return ret; | 190 | return ret; |
190 | 191 | ||