72
72
struct rsnd_ctu {
73
73
struct rsnd_mod mod ;
74
74
struct rsnd_kctrl_cfg_m pass ;
75
- struct rsnd_kctrl_cfg_m sv0 ;
76
- struct rsnd_kctrl_cfg_m sv1 ;
77
- struct rsnd_kctrl_cfg_m sv2 ;
78
- struct rsnd_kctrl_cfg_m sv3 ;
75
+ struct rsnd_kctrl_cfg_m sv [4 ];
79
76
struct rsnd_kctrl_cfg_s reset ;
80
77
int channels ;
81
78
u32 flags ;
@@ -120,7 +117,7 @@ static void rsnd_ctu_value_init(struct rsnd_dai_stream *io,
120
117
struct rsnd_ctu * ctu = rsnd_mod_to_ctu (mod );
121
118
u32 cpmdr = 0 ;
122
119
u32 scmdr = 0 ;
123
- int i ;
120
+ int i , j ;
124
121
125
122
for (i = 0 ; i < RSND_MAX_CHANNELS ; i ++ ) {
126
123
u32 val = rsnd_kctrl_valm (ctu -> pass , i );
@@ -139,45 +136,13 @@ static void rsnd_ctu_value_init(struct rsnd_dai_stream *io,
139
136
140
137
rsnd_mod_write (mod , CTU_SCMDR , scmdr );
141
138
142
- if (scmdr > 0 ) {
143
- rsnd_mod_write (mod , CTU_SV00R , rsnd_kctrl_valm (ctu -> sv0 , 0 ));
144
- rsnd_mod_write (mod , CTU_SV01R , rsnd_kctrl_valm (ctu -> sv0 , 1 ));
145
- rsnd_mod_write (mod , CTU_SV02R , rsnd_kctrl_valm (ctu -> sv0 , 2 ));
146
- rsnd_mod_write (mod , CTU_SV03R , rsnd_kctrl_valm (ctu -> sv0 , 3 ));
147
- rsnd_mod_write (mod , CTU_SV04R , rsnd_kctrl_valm (ctu -> sv0 , 4 ));
148
- rsnd_mod_write (mod , CTU_SV05R , rsnd_kctrl_valm (ctu -> sv0 , 5 ));
149
- rsnd_mod_write (mod , CTU_SV06R , rsnd_kctrl_valm (ctu -> sv0 , 6 ));
150
- rsnd_mod_write (mod , CTU_SV07R , rsnd_kctrl_valm (ctu -> sv0 , 7 ));
151
- }
152
- if (scmdr > 1 ) {
153
- rsnd_mod_write (mod , CTU_SV10R , rsnd_kctrl_valm (ctu -> sv1 , 0 ));
154
- rsnd_mod_write (mod , CTU_SV11R , rsnd_kctrl_valm (ctu -> sv1 , 1 ));
155
- rsnd_mod_write (mod , CTU_SV12R , rsnd_kctrl_valm (ctu -> sv1 , 2 ));
156
- rsnd_mod_write (mod , CTU_SV13R , rsnd_kctrl_valm (ctu -> sv1 , 3 ));
157
- rsnd_mod_write (mod , CTU_SV14R , rsnd_kctrl_valm (ctu -> sv1 , 4 ));
158
- rsnd_mod_write (mod , CTU_SV15R , rsnd_kctrl_valm (ctu -> sv1 , 5 ));
159
- rsnd_mod_write (mod , CTU_SV16R , rsnd_kctrl_valm (ctu -> sv1 , 6 ));
160
- rsnd_mod_write (mod , CTU_SV17R , rsnd_kctrl_valm (ctu -> sv1 , 7 ));
161
- }
162
- if (scmdr > 2 ) {
163
- rsnd_mod_write (mod , CTU_SV20R , rsnd_kctrl_valm (ctu -> sv2 , 0 ));
164
- rsnd_mod_write (mod , CTU_SV21R , rsnd_kctrl_valm (ctu -> sv2 , 1 ));
165
- rsnd_mod_write (mod , CTU_SV22R , rsnd_kctrl_valm (ctu -> sv2 , 2 ));
166
- rsnd_mod_write (mod , CTU_SV23R , rsnd_kctrl_valm (ctu -> sv2 , 3 ));
167
- rsnd_mod_write (mod , CTU_SV24R , rsnd_kctrl_valm (ctu -> sv2 , 4 ));
168
- rsnd_mod_write (mod , CTU_SV25R , rsnd_kctrl_valm (ctu -> sv2 , 5 ));
169
- rsnd_mod_write (mod , CTU_SV26R , rsnd_kctrl_valm (ctu -> sv2 , 6 ));
170
- rsnd_mod_write (mod , CTU_SV27R , rsnd_kctrl_valm (ctu -> sv2 , 7 ));
171
- }
172
- if (scmdr > 3 ) {
173
- rsnd_mod_write (mod , CTU_SV30R , rsnd_kctrl_valm (ctu -> sv3 , 0 ));
174
- rsnd_mod_write (mod , CTU_SV31R , rsnd_kctrl_valm (ctu -> sv3 , 1 ));
175
- rsnd_mod_write (mod , CTU_SV32R , rsnd_kctrl_valm (ctu -> sv3 , 2 ));
176
- rsnd_mod_write (mod , CTU_SV33R , rsnd_kctrl_valm (ctu -> sv3 , 3 ));
177
- rsnd_mod_write (mod , CTU_SV34R , rsnd_kctrl_valm (ctu -> sv3 , 4 ));
178
- rsnd_mod_write (mod , CTU_SV35R , rsnd_kctrl_valm (ctu -> sv3 , 5 ));
179
- rsnd_mod_write (mod , CTU_SV36R , rsnd_kctrl_valm (ctu -> sv3 , 6 ));
180
- rsnd_mod_write (mod , CTU_SV37R , rsnd_kctrl_valm (ctu -> sv3 , 7 ));
139
+ for (i = 0 ; i < 4 ; i ++ ) {
140
+
141
+ if (i >= scmdr )
142
+ break ;
143
+
144
+ for (j = 0 ; j < RSND_MAX_CHANNELS ; j ++ )
145
+ rsnd_mod_write (mod , CTU_SVxxR (i , j ), rsnd_kctrl_valm (ctu -> sv [i ], j ));
181
146
}
182
147
183
148
rsnd_mod_write (mod , CTU_CTUIR , 0 );
@@ -194,10 +159,10 @@ static void rsnd_ctu_value_reset(struct rsnd_dai_stream *io,
194
159
195
160
for (i = 0 ; i < RSND_MAX_CHANNELS ; i ++ ) {
196
161
rsnd_kctrl_valm (ctu -> pass , i ) = 0 ;
197
- rsnd_kctrl_valm (ctu -> sv0 , i ) = 0 ;
198
- rsnd_kctrl_valm (ctu -> sv1 , i ) = 0 ;
199
- rsnd_kctrl_valm (ctu -> sv2 , i ) = 0 ;
200
- rsnd_kctrl_valm (ctu -> sv3 , i ) = 0 ;
162
+ rsnd_kctrl_valm (ctu -> sv [ 0 ] , i ) = 0 ;
163
+ rsnd_kctrl_valm (ctu -> sv [ 1 ] , i ) = 0 ;
164
+ rsnd_kctrl_valm (ctu -> sv [ 2 ] , i ) = 0 ;
165
+ rsnd_kctrl_valm (ctu -> sv [ 3 ] , i ) = 0 ;
201
166
}
202
167
rsnd_kctrl_vals (ctu -> reset ) = 0 ;
203
168
}
@@ -247,7 +212,7 @@ static int rsnd_ctu_pcm_new(struct rsnd_mod *mod,
247
212
ret = rsnd_kctrl_new_m (mod , io , rtd , "CTU SV0" ,
248
213
rsnd_kctrl_accept_anytime ,
249
214
NULL ,
250
- & ctu -> sv0 , RSND_MAX_CHANNELS ,
215
+ & ctu -> sv [ 0 ] , RSND_MAX_CHANNELS ,
251
216
0x00FFFFFF );
252
217
if (ret < 0 )
253
218
return ret ;
@@ -256,7 +221,7 @@ static int rsnd_ctu_pcm_new(struct rsnd_mod *mod,
256
221
ret = rsnd_kctrl_new_m (mod , io , rtd , "CTU SV1" ,
257
222
rsnd_kctrl_accept_anytime ,
258
223
NULL ,
259
- & ctu -> sv1 , RSND_MAX_CHANNELS ,
224
+ & ctu -> sv [ 1 ] , RSND_MAX_CHANNELS ,
260
225
0x00FFFFFF );
261
226
if (ret < 0 )
262
227
return ret ;
@@ -265,7 +230,7 @@ static int rsnd_ctu_pcm_new(struct rsnd_mod *mod,
265
230
ret = rsnd_kctrl_new_m (mod , io , rtd , "CTU SV2" ,
266
231
rsnd_kctrl_accept_anytime ,
267
232
NULL ,
268
- & ctu -> sv2 , RSND_MAX_CHANNELS ,
233
+ & ctu -> sv [ 2 ] , RSND_MAX_CHANNELS ,
269
234
0x00FFFFFF );
270
235
if (ret < 0 )
271
236
return ret ;
@@ -274,7 +239,7 @@ static int rsnd_ctu_pcm_new(struct rsnd_mod *mod,
274
239
ret = rsnd_kctrl_new_m (mod , io , rtd , "CTU SV3" ,
275
240
rsnd_kctrl_accept_anytime ,
276
241
NULL ,
277
- & ctu -> sv3 , RSND_MAX_CHANNELS ,
242
+ & ctu -> sv [ 3 ] , RSND_MAX_CHANNELS ,
278
243
0x00FFFFFF );
279
244
if (ret < 0 )
280
245
return ret ;
0 commit comments