diff options
-rw-r--r-- | sound/soc/sh/rcar/dvc.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sound/soc/sh/rcar/dvc.c b/sound/soc/sh/rcar/dvc.c index 9392507b5651..343d44625fa5 100644 --- a/sound/soc/sh/rcar/dvc.c +++ b/sound/soc/sh/rcar/dvc.c | |||
@@ -70,6 +70,13 @@ static void rsnd_dvc_soft_reset(struct rsnd_mod *mod) | |||
70 | rsnd_mod_write(mod, DVC_SWRSR, 1); | 70 | rsnd_mod_write(mod, DVC_SWRSR, 1); |
71 | } | 71 | } |
72 | 72 | ||
73 | #define rsnd_dvc_initialize_lock(mod) __rsnd_dvc_initialize_lock(mod, 1) | ||
74 | #define rsnd_dvc_initialize_unlock(mod) __rsnd_dvc_initialize_lock(mod, 0) | ||
75 | static void __rsnd_dvc_initialize_lock(struct rsnd_mod *mod, u32 enable) | ||
76 | { | ||
77 | rsnd_mod_write(mod, DVC_DVUIR, enable); | ||
78 | } | ||
79 | |||
73 | static void rsnd_dvc_volume_update(struct rsnd_dai_stream *io, | 80 | static void rsnd_dvc_volume_update(struct rsnd_dai_stream *io, |
74 | struct rsnd_mod *mod) | 81 | struct rsnd_mod *mod) |
75 | { | 82 | { |
@@ -150,17 +157,15 @@ static int rsnd_dvc_init(struct rsnd_mod *mod, | |||
150 | 157 | ||
151 | rsnd_dvc_soft_reset(mod); | 158 | rsnd_dvc_soft_reset(mod); |
152 | 159 | ||
153 | rsnd_path_parse(priv, io); | 160 | rsnd_dvc_initialize_lock(mod); |
154 | 161 | ||
155 | rsnd_mod_write(mod, DVC_DVUIR, 1); | 162 | rsnd_path_parse(priv, io); |
156 | 163 | ||
157 | rsnd_mod_write(mod, DVC_ADINR, rsnd_get_adinr(mod, io)); | 164 | rsnd_mod_write(mod, DVC_ADINR, rsnd_get_adinr(mod, io)); |
158 | 165 | ||
159 | /* ch0/ch1 Volume */ | 166 | /* ch0/ch1 Volume */ |
160 | rsnd_dvc_volume_update(io, mod); | 167 | rsnd_dvc_volume_update(io, mod); |
161 | 168 | ||
162 | rsnd_mod_write(mod, DVC_DVUIR, 0); | ||
163 | |||
164 | rsnd_adg_set_cmd_timsel_gen2(mod, io); | 169 | rsnd_adg_set_cmd_timsel_gen2(mod, io); |
165 | 170 | ||
166 | return 0; | 171 | return 0; |
@@ -179,6 +184,8 @@ static int rsnd_dvc_start(struct rsnd_mod *mod, | |||
179 | struct rsnd_dai_stream *io, | 184 | struct rsnd_dai_stream *io, |
180 | struct rsnd_priv *priv) | 185 | struct rsnd_priv *priv) |
181 | { | 186 | { |
187 | rsnd_dvc_initialize_unlock(mod); | ||
188 | |||
182 | rsnd_mod_write(mod, CMD_CTRL, 0x10); | 189 | rsnd_mod_write(mod, CMD_CTRL, 0x10); |
183 | 190 | ||
184 | return 0; | 191 | return 0; |