xref: /OK3568_Linux_fs/external/mpp/mpp/hal/rkenc/h265e/hal_h265e_vepu54x_reg_l2.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Copyright 2020 Rockchip Electronics Co. LTD
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef __HAL_H265E_VEPU54X_REG_L2_H__
18 #define __HAL_H265E_VEPU54X_REG_L2_H__
19 
20 #include "rk_type.h"
21 
22 typedef struct {
23     /* 0x48 - ATF_THD0 */
24     struct {
25         RK_U32 atf_thd0_i32       : 6;
26         RK_U32 reserved0          : 10;
27         RK_U32 atf_thd1_i32       : 6;
28         RK_U32 reserved1          : 10;
29     } atf_thd0;
30 
31     /* 0x4c - ATF_THD1 */
32     struct {
33         RK_U32 atf_thd0_i16       : 6;
34         RK_U32 reserved0          : 10;
35         RK_U32 atf_thd1_i16       : 6;
36         RK_U32 reserved1          : 10;
37     } atf_thd1;
38 
39     /* 0x50 - ATF_SAD_THD0 */
40     struct {
41         RK_U32 atf_thd0_p64       : 6;
42         RK_U32 reserved0          : 10;
43         RK_U32 atf_thd1_p64       : 6;
44         RK_U32 reserved1          : 10;
45     } atf_sad_thd0;
46 
47     /* 0x54 - ATF_SAD_THD1 */
48     struct {
49         RK_U32 atf_thd0_p32       : 6;
50         RK_U32 reserved0          : 10;
51         RK_U32 atf_thd1_p32       : 6;
52         RK_U32 reserved1          : 10;
53     } atf_sad_thd1;
54 
55     /* 0x58 - ATF_SAD_WGT0 */
56     struct {
57         RK_U32 atf_thd0_p16       : 6;
58         RK_U32 reserved0          : 10;
59         RK_U32 atf_thd1_p16       : 6;
60         RK_U32 reserved1          : 10;
61     } atf_sad_wgt0;
62 } vepu541_intra_thd;
63 
64 typedef struct {
65     /* 0x48 - ATF_THD0 */
66     struct {
67         RK_U32 atf_thd0_i32       : 10;
68         RK_U32 reserved0          : 6;
69         RK_U32 atf_thd1_i32       : 10;
70         RK_U32 reserved1          : 6;
71     } atf_thd0;
72 
73     /* 0x4c - ATF_THD1 */
74     struct {
75         RK_U32 atf_thd0_i16       : 10;
76         RK_U32 reserved0          : 6;
77         RK_U32 atf_thd1_i16       : 10;
78         RK_U32 reserved1          : 6;
79     } atf_thd1;
80 
81     /* 0x50 - ATF_SAD_THD0 */
82     struct {
83         RK_U32 atf_thd0_p64       : 10;
84         RK_U32 reserved0          : 6;
85         RK_U32 atf_thd1_p64       : 10;
86         RK_U32 reserved1          : 6;
87     } atf_sad_thd0;
88 
89     /* 0x54 - ATF_SAD_THD1 */
90     struct {
91         RK_U32 atf_thd0_p32       : 10;
92         RK_U32 reserved0          : 6;
93         RK_U32 atf_thd1_p32       : 10;
94         RK_U32 reserved1          : 6;
95     } atf_sad_thd1;
96 
97     /* 0x58 - ATF_SAD_WGT0 */
98     struct {
99         RK_U32 atf_thd0_p16       : 10;
100         RK_U32 reserved0          : 6;
101         RK_U32 atf_thd1_p16       : 10;
102         RK_U32 reserved1          : 6;
103     } atf_sad_wgt0;
104 } vepu540_intra_thd;
105 
106 
107 typedef struct H265eV54xL2RegSet_t {
108     /* L2 Register: 0x4 */
109     struct {
110         RK_U32 lvl32_intra_cst_thd0 : 12;
111         RK_U32 reserved0            : 4;
112         RK_U32 lvl32_intra_cst_thd1 : 12;
113         RK_U32 reserved1            : 4;
114     } lvl32_intra_CST_THD0;
115 
116     struct {
117         RK_U32 lvl32_intra_cst_thd2 : 12;
118         RK_U32 reserved0            : 4;
119         RK_U32 lvl32_intra_cst_thd3 : 12;
120         RK_U32 reserved1            : 4;
121     } lvl32_intra_CST_THD1;
122 
123     struct {
124         RK_U32 lvl16_intra_cst_thd0 : 12;
125         RK_U32 reserved0            : 4;
126         RK_U32 lvl16_intra_cst_thd1 : 12;
127         RK_U32 reserved1            : 4;
128     } lvl16_intra_CST_THD0;
129 
130     struct {
131         RK_U32 lvl16_intra_cst_thd2 : 12;
132         RK_U32 reserved0            : 4;
133         RK_U32 lvl16_intra_cst_thd3 : 12;
134         RK_U32 reserved1            : 4;
135     } lvl16_intra_CST_THD1;
136 
137     /* 0x14-0x1c - reserved */
138     RK_U32 lvl8_intra_CST_THD0;
139     RK_U32 lvl8_intra_CST_THD1;
140     RK_U32 lvl16_intra_UL_CST_THD;
141 
142     struct {
143         RK_U32 lvl32_intra_cst_wgt0 : 8;
144         RK_U32 lvl32_intra_cst_wgt1 : 8;
145         RK_U32 lvl32_intra_cst_wgt2 : 8;
146         RK_U32 lvl32_intra_cst_wgt3 : 8;
147     } lvl32_intra_CST_WGT0;
148 
149     struct {
150         RK_U32 lvl32_intra_cst_wgt4 : 8;
151         RK_U32 lvl32_intra_cst_wgt5 : 8;
152         RK_U32 lvl32_intra_cst_wgt6 : 8;
153         RK_U32 reserved2            : 8;
154     } lvl32_intra_CST_WGT1;
155 
156     struct {
157         RK_U32 lvl16_intra_cst_wgt0 : 8;
158         RK_U32 lvl16_intra_cst_wgt1 : 8;
159         RK_U32 lvl16_intra_cst_wgt2 : 8;
160         RK_U32 lvl16_intra_cst_wgt3 : 8;
161     } lvl16_intra_CST_WGT0;
162 
163     struct {
164         RK_U32 lvl16_intra_cst_wgt4 : 8;
165         RK_U32 lvl16_intra_cst_wgt5 : 8;
166         RK_U32 lvl16_intra_cst_wgt6 : 8;
167         RK_U32 reserved2            : 8;
168     } lvl16_intra_CST_WGT1;
169 
170     /* 0x30 - RDO_QUANT */
171     struct {
172         RK_U32 quant_f_bias_I       : 10;
173         RK_U32 quant_f_bias_P       : 10;
174         RK_U32 reserved             : 12;
175     } rdo_quant;
176 
177     /* 0x34 - ATR_THD0, reserved */
178     struct {
179         RK_U32 atr_thd0         : 12;
180         RK_U32 reserved0        : 4;
181         RK_U32 atr_thd1         : 12;
182         RK_U32 reserved1        : 4;
183     } atr_thd0;
184 
185     /* 0x38 - ATR_THD1, reserved */
186     struct {
187         RK_U32 atr_thd2         : 12;
188         RK_U32 reserved0        : 4;
189         RK_U32 atr_thdqp        : 6;
190         RK_U32 reserved1        : 10;
191     } atr_thd1;
192 
193     /* 0x3c - Lvl16_ATR_WGT, reserved */
194     struct {
195         RK_U32 lvl16_atr_wgt0       : 8;
196         RK_U32 lvl16_atr_wgt1       : 8;
197         RK_U32 lvl16_atr_wgt2       : 8;
198         RK_U32 reserved             : 8;
199     } lvl16_atr_wgt;
200 
201     /* 0x40 - Lvl8_ATR_WGT, reserved */
202     struct {
203         RK_U32 lvl8_atr_wgt0       : 8;
204         RK_U32 lvl8_atr_wgt1       : 8;
205         RK_U32 lvl8_atr_wgt2       : 8;
206         RK_U32 reserved            : 8;
207     } lvl8_atr_wgt;
208 
209     /* 0x44 - Lvl4_ATR_WGT, reserved */
210     struct {
211         RK_U32 lvl4_atr_wgt0       : 8;
212         RK_U32 lvl4_atr_wgt1       : 8;
213         RK_U32 lvl4_atr_wgt2       : 8;
214         RK_U32 reserved            : 8;
215     } lvl4_atr_wgt;
216 
217     union {
218         vepu541_intra_thd thd_541;
219         vepu540_intra_thd thd_540;
220     };
221 
222     /* 0x5c - ATF_SAD_WGT1 */
223     struct {
224         RK_U32 atf_wgt_i16       : 6;
225         RK_U32 reserved0         : 10;
226         RK_U32 atf_wgt_i32       : 6;
227         RK_U32 reserved1         : 10;
228     } atf_sad_wgt1;
229 
230     /* 0x60 - ATF_SAD_WGT2 */
231     struct {
232         RK_U32 atf_wgt_p32       : 6;
233         RK_U32 reserved0         : 10;
234         RK_U32 atf_wgt_p64       : 6;
235         RK_U32 reserved1         : 10;
236     } atf_sad_wgt2;
237 
238     /* 0x64 - ATF_SAD_OFST0 */
239     struct {
240         RK_U32 atf_wgt_p16         : 6;
241         RK_U32 reserved            : 26;
242     } atf_sad_ofst0;
243 
244     /* 0x68 - ATF_SAD_OFST1, reserved */
245     struct {
246         RK_U32 atf_sad_ofst12       : 14;
247         RK_U32 reserved0            : 2;
248         RK_U32 atf_sad_ofst20       : 14;
249         RK_U32 reserved1            : 2;
250     } atf_sad_ofst1;
251 
252     /* 0x6c - ATF_SAD_OFST2, reserved */
253     struct {
254         RK_U32 atf_sad_ofst21       : 14;
255         RK_U32 reserved0            : 2;
256         RK_U32 atf_sad_ofst30       : 14;
257         RK_U32 reserved1            : 2;
258     } atf_sad_ofst2;
259 
260     /* 0x70-0x13c - LAMD_SATD_qp */
261     RK_U32 lamd_satd_qp[52];
262 
263     /* 0x140-0x20c - LAMD_MOD_qp, combo for I and P */
264     RK_U32 lamd_moda_qp[52];
265     /* 0x210-0x2dc */
266     RK_U32 lamd_modb_qp[52];
267 
268     /* 0x2e0 - MADI_CFG */
269     struct {
270         RK_U32 reserved      : 16;
271         RK_U32 madi_thd      : 8;
272         RK_U32 reserved1     : 8;
273     } madi_cfg;
274 
275     /* 0x2e4 - AQ_THD0 */
276     struct {
277         RK_U32 aq_thld0 : 8;
278         RK_U32 aq_thld1 : 8;
279         RK_U32 aq_thld2 : 8;
280         RK_U32 aq_thld3 : 8;
281     } aq_thd0;
282 
283     /* 0x2e8 - AQ_THD1 */
284     struct {
285         RK_U32 aq_thld4 : 8;
286         RK_U32 aq_thld5 : 8;
287         RK_U32 aq_thld6 : 8;
288         RK_U32 aq_thld7 : 8;
289     } aq_thd1;
290 
291     /* 0x2ec - AQ_THD2 */
292     struct {
293         RK_U32 aq_thld8  : 8;
294         RK_U32 aq_thld9  : 8;
295         RK_U32 aq_thld10 : 8;
296         RK_U32 aq_thld11 : 8;
297     } aq_thd2;
298 
299     /* 0x2f0 - AQ_THD3 */
300     struct {
301         RK_U32 aq_thld12 : 8;
302         RK_U32 aq_thld13 : 8;
303         RK_U32 aq_thld14 : 8;
304         RK_U32 aq_thld15 : 8;
305     } aq_thd3;
306 
307     /* 0x2f4 - AQ_QP_DLT0 */
308     struct {
309         RK_S32 qp_delta0 : 6;
310         RK_S32 reserved0 : 2;
311         RK_S32 qp_delta1 : 6;
312         RK_S32 reserved1 : 2;
313         RK_S32 qp_delta2 : 6;
314         RK_S32 reserved2 : 2;
315         RK_S32 qp_delta3 : 6;
316         RK_S32 reserved3 : 2;
317     } aq_qp_dlt0;
318 
319     /* 0x2f8 - AQ_QP_DLT1 */
320     struct {
321         RK_S32 qp_delta4 : 6;
322         RK_S32 reserved0 : 2;
323         RK_S32 qp_delta5 : 6;
324         RK_S32 reserved1 : 2;
325         RK_S32 qp_delta6 : 6;
326         RK_S32 reserved2 : 2;
327         RK_S32 qp_delta7 : 6;
328         RK_S32 reserved3 : 2;
329     } aq_qp_dlt1;
330 
331     /* 0x2fc - AQ_QP_DLT2 */
332     struct {
333         RK_S32 qp_delta8  : 6;
334         RK_S32 reserved0  : 2;
335         RK_S32 qp_delta9  : 6;
336         RK_S32 reserved1  : 2;
337         RK_S32 qp_delta10 : 6;
338         RK_S32 reserved2  : 2;
339         RK_S32 qp_delta11 : 6;
340         RK_S32 reserved3  : 2;
341     } aq_qp_dlt2;
342 
343     /* 0x300 - AQ_QP_DLT3 */
344     struct {
345         RK_S32 qp_delta12 : 6;
346         RK_S32 reserved0  : 2;
347         RK_S32 qp_delta13 : 6;
348         RK_S32 reserved1  : 2;
349         RK_S32 qp_delta14 : 6;
350         RK_S32 reserved2  : 2;
351         RK_S32 qp_delta15 : 6;
352         RK_S32 reserved3  : 2;
353     } aq_qp_dlt3;
354     /*0x304-0x30c*/
355     RK_U32 reserve[3];
356     /*pre_intra class mode */
357     // 0x0310~0x394
358     // 0x0310
359     struct {
360         RK_U32 pre_intra_cla0_m0 : 6;
361         RK_U32 pre_intra_cla0_m1 : 6;
362         RK_U32 pre_intra_cla0_m2 : 6;
363         RK_U32 pre_intra_cla0_m3 : 6;
364         RK_U32 pre_intra_cla0_m4 : 6;
365         RK_U32 reserved : 2;
366     } pre_intra_cla0_B0;
367 
368     // 0x0314
369     struct {
370         RK_U32 pre_intra_cla0_m5 : 6;
371         RK_U32 pre_intra_cla0_m6 : 6;
372         RK_U32 pre_intra_cla0_m7 : 6;
373         RK_U32 pre_intra_cla0_m8 : 6;
374         RK_U32 pre_intra_cla0_m9 : 6;
375         RK_U32 reserved : 2;
376     } pre_intra_cla0_B1;
377 
378     // 0x0318
379     struct {
380         RK_U32 pre_intra_cla1_m0 : 6;
381         RK_U32 pre_intra_cla1_m1 : 6;
382         RK_U32 pre_intra_cla1_m2 : 6;
383         RK_U32 pre_intra_cla1_m3 : 6;
384         RK_U32 pre_intra_cla1_m4 : 6;
385         RK_U32 reserved : 2;
386     } pre_intra_cla1_B0;
387 
388     // 0x031c
389     struct {
390         RK_U32 pre_intra_cla1_m5 : 6;
391         RK_U32 pre_intra_cla1_m6 : 6;
392         RK_U32 pre_intra_cla1_m7 : 6;
393         RK_U32 pre_intra_cla1_m8 : 6;
394         RK_U32 pre_intra_cla1_m9 : 6;
395         RK_U32 reserved : 2;
396     } pre_intra_cla1_B1;
397 
398     // 0x0320
399     struct {
400         RK_U32 pre_intra_cla2_m0 : 6;
401         RK_U32 pre_intra_cla2_m1 : 6;
402         RK_U32 pre_intra_cla2_m2 : 6;
403         RK_U32 pre_intra_cla2_m3 : 6;
404         RK_U32 pre_intra_cla2_m4 : 6;
405         RK_U32 reserved : 2;
406     } pre_intra_cla2_B0;
407 
408     // 0x0324
409     struct {
410         RK_U32 pre_intra_cla2_m5 : 6;
411         RK_U32 pre_intra_cla2_m6 : 6;
412         RK_U32 pre_intra_cla2_m7 : 6;
413         RK_U32 pre_intra_cla2_m8 : 6;
414         RK_U32 pre_intra_cla2_m9 : 6;
415         RK_U32 reserved : 2;
416     } pre_intra_cla2_B1;
417 
418     // 0x0328
419     struct {
420         RK_U32 pre_intra_cla3_m0 : 6;
421         RK_U32 pre_intra_cla3_m1 : 6;
422         RK_U32 pre_intra_cla3_m2 : 6;
423         RK_U32 pre_intra_cla3_m3 : 6;
424         RK_U32 pre_intra_cla3_m4 : 6;
425         RK_U32 reserved : 2;
426     } pre_intra_cla3_B0;
427 
428     // 0x032c
429     struct {
430         RK_U32 pre_intra_cla3_m5 : 6;
431         RK_U32 pre_intra_cla3_m6 : 6;
432         RK_U32 pre_intra_cla3_m7 : 6;
433         RK_U32 pre_intra_cla3_m8 : 6;
434         RK_U32 pre_intra_cla3_m9 : 6;
435         RK_U32 reserved : 2;
436     } pre_intra_cla3_B1;
437 
438     // 0x0330
439     struct {
440         RK_U32 pre_intra_cla4_m0 : 6;
441         RK_U32 pre_intra_cla4_m1 : 6;
442         RK_U32 pre_intra_cla4_m2 : 6;
443         RK_U32 pre_intra_cla4_m3 : 6;
444         RK_U32 pre_intra_cla4_m4 : 6;
445         RK_U32 reserved : 2;
446     } pre_intra_cla4_B0;
447 
448     // 0x0334
449     struct {
450         RK_U32 pre_intra_cla4_m5 : 6;
451         RK_U32 pre_intra_cla4_m6 : 6;
452         RK_U32 pre_intra_cla4_m7 : 6;
453         RK_U32 pre_intra_cla4_m8 : 6;
454         RK_U32 pre_intra_cla4_m9 : 6;
455         RK_U32 reserved : 2;
456     } pre_intra_cla4_B1;
457 
458     // 0x0338
459     struct {
460         RK_U32 pre_intra_cla5_m0 : 6;
461         RK_U32 pre_intra_cla5_m1 : 6;
462         RK_U32 pre_intra_cla5_m2 : 6;
463         RK_U32 pre_intra_cla5_m3 : 6;
464         RK_U32 pre_intra_cla5_m4 : 6;
465         RK_U32 reserved : 2;
466     } pre_intra_cla5_B0;
467 
468     // 0x033c
469     struct {
470         RK_U32 pre_intra_cla5_m5 : 6;
471         RK_U32 pre_intra_cla5_m6 : 6;
472         RK_U32 pre_intra_cla5_m7 : 6;
473         RK_U32 pre_intra_cla5_m8 : 6;
474         RK_U32 pre_intra_cla5_m9 : 6;
475         RK_U32 reserved : 2;
476     } pre_intra_cla5_B1;
477 
478     // 0x0340
479     struct {
480         RK_U32 pre_intra_cla6_m0 : 6;
481         RK_U32 pre_intra_cla6_m1 : 6;
482         RK_U32 pre_intra_cla6_m2 : 6;
483         RK_U32 pre_intra_cla6_m3 : 6;
484         RK_U32 pre_intra_cla6_m4 : 6;
485         RK_U32 reserved : 2;
486     } pre_intra_cla6_B0;
487 
488     // 0x0344
489     struct {
490         RK_U32 pre_intra_cla6_m5 : 6;
491         RK_U32 pre_intra_cla6_m6 : 6;
492         RK_U32 pre_intra_cla6_m7 : 6;
493         RK_U32 pre_intra_cla6_m8 : 6;
494         RK_U32 pre_intra_cla6_m9 : 6;
495         RK_U32 reserved : 2;
496     } pre_intra_cla6_B1;
497 
498     // 0x0348
499     struct {
500         RK_U32 pre_intra_cla7_m0 : 6;
501         RK_U32 pre_intra_cla7_m1 : 6;
502         RK_U32 pre_intra_cla7_m2 : 6;
503         RK_U32 pre_intra_cla7_m3 : 6;
504         RK_U32 pre_intra_cla7_m4 : 6;
505         RK_U32 reserved : 2;
506     } pre_intra_cla7_B0;
507 
508     // 0x034c
509     struct {
510         RK_U32 pre_intra_cla7_m5 : 6;
511         RK_U32 pre_intra_cla7_m6 : 6;
512         RK_U32 pre_intra_cla7_m7 : 6;
513         RK_U32 pre_intra_cla7_m8 : 6;
514         RK_U32 pre_intra_cla7_m9 : 6;
515         RK_U32 reserved : 2;
516     } pre_intra_cla7_B1;
517 
518     // 0x0350
519     struct {
520         RK_U32 pre_intra_cla8_m0 : 6;
521         RK_U32 pre_intra_cla8_m1 : 6;
522         RK_U32 pre_intra_cla8_m2 : 6;
523         RK_U32 pre_intra_cla8_m3 : 6;
524         RK_U32 pre_intra_cla8_m4 : 6;
525         RK_U32 reserved : 2;
526     } pre_intra_cla8_B0;
527 
528     // 0x0354
529     struct {
530         RK_U32 pre_intra_cla8_m5 : 6;
531         RK_U32 pre_intra_cla8_m6 : 6;
532         RK_U32 pre_intra_cla8_m7 : 6;
533         RK_U32 pre_intra_cla8_m8 : 6;
534         RK_U32 pre_intra_cla8_m9 : 6;
535         RK_U32 reserved : 2;
536     } pre_intra_cla8_B1;
537 
538     // 0x0358
539     struct {
540         RK_U32 pre_intra_cla9_m0 : 6;
541         RK_U32 pre_intra_cla9_m1 : 6;
542         RK_U32 pre_intra_cla9_m2 : 6;
543         RK_U32 pre_intra_cla9_m3 : 6;
544         RK_U32 pre_intra_cla9_m4 : 6;
545         RK_U32 reserved : 2;
546     } pre_intra_cla9_B0;
547 
548     // 0x035c
549     struct {
550         RK_U32 pre_intra_cla9_m5 : 6;
551         RK_U32 pre_intra_cla9_m6 : 6;
552         RK_U32 pre_intra_cla9_m7 : 6;
553         RK_U32 pre_intra_cla9_m8 : 6;
554         RK_U32 pre_intra_cla9_m9 : 6;
555         RK_U32 reserved : 2;
556     } pre_intra_cla9_B1;
557 
558     // 0x0360
559     struct {
560         RK_U32 pre_intra_cla10_m0 : 6;
561         RK_U32 pre_intra_cla10_m1 : 6;
562         RK_U32 pre_intra_cla10_m2 : 6;
563         RK_U32 pre_intra_cla10_m3 : 6;
564         RK_U32 pre_intra_cla10_m4 : 6;
565         RK_U32 reserved : 2;
566     } pre_intra_cla10_B0;
567 
568     // 0x0364
569     struct {
570         RK_U32 pre_intra_cla10_m5 : 6;
571         RK_U32 pre_intra_cla10_m6 : 6;
572         RK_U32 pre_intra_cla10_m7 : 6;
573         RK_U32 pre_intra_cla10_m8 : 6;
574         RK_U32 pre_intra_cla10_m9 : 6;
575         RK_U32 reserved : 2;
576     } pre_intra_cla10_B1;
577 
578     // 0x0368
579     struct {
580         RK_U32 pre_intra_cla11_m0 : 6;
581         RK_U32 pre_intra_cla11_m1 : 6;
582         RK_U32 pre_intra_cla11_m2 : 6;
583         RK_U32 pre_intra_cla11_m3 : 6;
584         RK_U32 pre_intra_cla11_m4 : 6;
585         RK_U32 reserved : 2;
586     } pre_intra_cla11_B0;
587 
588     // 0x036c
589     struct {
590         RK_U32 pre_intra_cla11_m5 : 6;
591         RK_U32 pre_intra_cla11_m6 : 6;
592         RK_U32 pre_intra_cla11_m7 : 6;
593         RK_U32 pre_intra_cla11_m8 : 6;
594         RK_U32 pre_intra_cla11_m9 : 6;
595         RK_U32 reserved : 2;
596     } pre_intra_cla11_B1;
597 
598     // 0x0370
599     struct {
600         RK_U32 pre_intra_cla12_m0 : 6;
601         RK_U32 pre_intra_cla12_m1 : 6;
602         RK_U32 pre_intra_cla12_m2 : 6;
603         RK_U32 pre_intra_cla12_m3 : 6;
604         RK_U32 pre_intra_cla12_m4 : 6;
605         RK_U32 reserved : 2;
606     } pre_intra_cla12_B0;
607 
608     // 0x0374
609     struct {
610         RK_U32 pre_intra_cla12_m5 : 6;
611         RK_U32 pre_intra_cla12_m6 : 6;
612         RK_U32 pre_intra_cla12_m7 : 6;
613         RK_U32 pre_intra_cla12_m8 : 6;
614         RK_U32 pre_intra_cla12_m9 : 6;
615         RK_U32 reserved : 2;
616     } pre_intra_cla12_B1;
617 
618     // 0x0378
619     struct {
620         RK_U32 pre_intra_cla13_m0 : 6;
621         RK_U32 pre_intra_cla13_m1 : 6;
622         RK_U32 pre_intra_cla13_m2 : 6;
623         RK_U32 pre_intra_cla13_m3 : 6;
624         RK_U32 pre_intra_cla13_m4 : 6;
625         RK_U32 reserved : 2;
626     } pre_intra_cla13_B0;
627 
628     // 0x037c
629     struct {
630         RK_U32 pre_intra_cla13_m5 : 6;
631         RK_U32 pre_intra_cla13_m6 : 6;
632         RK_U32 pre_intra_cla13_m7 : 6;
633         RK_U32 pre_intra_cla13_m8 : 6;
634         RK_U32 pre_intra_cla13_m9 : 6;
635         RK_U32 reserved : 2;
636     } pre_intra_cla13_B1;
637 
638     // 0x0380
639     struct {
640         RK_U32 pre_intra_cla14_m0 : 6;
641         RK_U32 pre_intra_cla14_m1 : 6;
642         RK_U32 pre_intra_cla14_m2 : 6;
643         RK_U32 pre_intra_cla14_m3 : 6;
644         RK_U32 pre_intra_cla14_m4 : 6;
645         RK_U32 reserved : 2;
646     } pre_intra_cla14_B0;
647 
648     // 0x0384
649     struct {
650         RK_U32 pre_intra_cla14_m5 : 6;
651         RK_U32 pre_intra_cla14_m6 : 6;
652         RK_U32 pre_intra_cla14_m7 : 6;
653         RK_U32 pre_intra_cla14_m8 : 6;
654         RK_U32 pre_intra_cla14_m9 : 6;
655         RK_U32 reserved : 2;
656     } pre_intra_cla14_B1;
657 
658     // 0x0388
659     struct {
660         RK_U32 pre_intra_cla15_m0 : 6;
661         RK_U32 pre_intra_cla15_m1 : 6;
662         RK_U32 pre_intra_cla15_m2 : 6;
663         RK_U32 pre_intra_cla15_m3 : 6;
664         RK_U32 pre_intra_cla15_m4 : 6;
665         RK_U32 reserved : 2;
666     } pre_intra_cla15_B0;
667 
668     // 0x038c
669     struct {
670         RK_U32 pre_intra_cla15_m5 : 6;
671         RK_U32 pre_intra_cla15_m6 : 6;
672         RK_U32 pre_intra_cla15_m7 : 6;
673         RK_U32 pre_intra_cla15_m8 : 6;
674         RK_U32 pre_intra_cla15_m9 : 6;
675         RK_U32 reserved : 2;
676     } pre_intra_cla15_B1;
677 
678     // 0x0390
679     struct {
680         RK_U32 pre_intra_cla16_m0 : 6;
681         RK_U32 pre_intra_cla16_m1 : 6;
682         RK_U32 pre_intra_cla16_m2 : 6;
683         RK_U32 pre_intra_cla16_m3 : 6;
684         RK_U32 pre_intra_cla16_m4 : 6;
685         RK_U32 reserved : 2;
686     } pre_intra_cla16_B0;
687 
688     // 0x0394
689     struct {
690         RK_U32 pre_intra_cla16_m5 : 6;
691         RK_U32 pre_intra_cla16_m6 : 6;
692         RK_U32 pre_intra_cla16_m7 : 6;
693         RK_U32 pre_intra_cla16_m8 : 6;
694         RK_U32 pre_intra_cla16_m9 : 6;
695         RK_U32 reserved : 2;
696     } pre_intra_cla16_B1;
697 
698     // 0x0398 0x03fC
699     RK_U32 reg_L2reserved1[26];
700 
701     // 0x400
702     RK_U32 reg_rdo_ckg_hevc;
703 
704     // 0x404~0x40c
705     RK_U32 reg_L2reserved2[3];
706 
707     // 0x410
708     struct {
709         RK_U32 intra_l16_sobel_t0 : 12;
710         RK_U32 reserved0 : 4;
711         RK_U32 intra_l16_sobel_t1 : 12;
712         RK_U32 reserved1 : 4;
713     } i16_sobel_t_hevc;
714 
715     struct {
716         RK_U32 intra_l16_sobel_a0_qp0 : 6;
717         RK_U32 intra_l16_sobel_a0_qp1 : 6;
718         RK_U32 intra_l16_sobel_a0_qp2 : 6;
719         RK_U32 intra_l16_sobel_a0_qp3 : 6;
720         RK_U32 intra_l16_sobel_a0_qp4 : 6;
721         RK_U32 reserved0 : 2;
722     } i16_sobel_a_00_hevc;
723 
724     struct {
725         RK_U32 intra_l16_sobel_a0_qp5 : 6;
726         RK_U32 intra_l16_sobel_a0_qp6 : 6;
727         RK_U32 intra_l16_sobel_a0_qp7 : 6;
728         RK_U32 intra_l16_sobel_a0_qp8 : 6;
729         RK_U32 reserved0 : 8;
730     } i16_sobel_a_01_hevc;
731 
732     struct {
733         RK_U32 intra_l16_sobel_b0_qp0 : 15;
734         RK_U32 reserved0 : 1;
735         RK_U32 intra_l16_sobel_b0_qp1 : 15;
736         RK_U32 reserved1 : 1;
737     } i16_sobel_b_00_hevc;
738 
739     struct {
740         RK_U32 intra_l16_sobel_b0_qp2 : 15;
741         RK_U32 reserved0 : 1;
742         RK_U32 intra_l16_sobel_b0_qp3 : 15;
743         RK_U32 reserved1 : 1;
744     } i16_sobel_b_01_hevc;
745 
746     struct {
747         RK_U32 intra_l16_sobel_b0_qp4 : 15;
748         RK_U32 reserved0 : 1;
749         RK_U32 intra_l16_sobel_b0_qp5 : 15;
750         RK_U32 reserved1 : 1;
751     } i16_sobel_b_02_hevc;
752 
753     struct {
754         RK_U32 intra_l16_sobel_b0_qp6 : 15;
755         RK_U32 reserved0 : 1;
756         RK_U32 intra_l16_sobel_b0_qp7 : 15;
757         RK_U32 reserved1 : 1;
758     } i16_sobel_b_03_hevc;
759 
760     struct {
761         RK_U32 intra_l16_sobel_b0_qp8 : 15;
762         RK_U32 reserved0 : 17;
763     } i16_sobel_b_04_hevc;
764 
765     struct {
766         RK_U32 intra_l16_sobel_c0_qp0 : 6;
767         RK_U32 intra_l16_sobel_c0_qp1 : 6;
768         RK_U32 intra_l16_sobel_c0_qp2 : 6;
769         RK_U32 intra_l16_sobel_c0_qp3 : 6;
770         RK_U32 intra_l16_sobel_c0_qp4 : 6;
771         RK_U32 reserved0 : 2;
772     } i16_sobel_c_00_hevc;
773 
774     struct {
775         RK_U32 intra_l16_sobel_c0_qp5 : 6;
776         RK_U32 intra_l16_sobel_c0_qp6 : 6;
777         RK_U32 intra_l16_sobel_c0_qp7 : 6;
778         RK_U32 intra_l16_sobel_c0_qp8 : 6;
779         RK_U32 reserved0 : 8;
780     } i16_sobel_c_01_hevc;
781 
782     struct {
783         RK_U32 intra_l16_sobel_d0_qp0 : 15;
784         RK_U32 reserved0 : 1;
785         RK_U32 intra_l16_sobel_d0_qp1 : 15;
786         RK_U32 reserved1 : 1;
787     } i16_sobel_d_00_hevc;
788 
789     struct {
790         RK_U32 intra_l16_sobel_d0_qp2 : 15;
791         RK_U32 reserved0 : 1;
792         RK_U32 intra_l16_sobel_d0_qp3 : 15;
793         RK_U32 reserved1 : 1;
794     } i16_sobel_d_01_hevc;
795 
796     struct {
797         RK_U32 intra_l16_sobel_d0_qp4 : 15;
798         RK_U32 reserved0 : 1;
799         RK_U32 intra_l16_sobel_d0_qp5 : 15;
800         RK_U32 reserved1 : 1;
801     } i16_sobel_d_02_hevc;
802 
803     struct {
804         RK_U32 intra_l16_sobel_d0_qp6 : 15;
805         RK_U32 reserved0 : 1;
806         RK_U32 intra_l16_sobel_d0_qp7 : 15;
807         RK_U32 reserved1 : 1;
808     } i16_sobel_d_03_hevc;
809 
810     struct {
811         RK_U32 intra_l16_sobel_d0_qp8 : 15;
812         RK_U32 reserved0 : 17;
813     } i16_sobel_d_04_hevc;
814 
815     RK_U32 i16_sobel_e_00_17_hevc[18];// 0 2 4 ... low 32bit ; 1 3 5 ... high 2bit
816 
817     // 0x494
818     struct {
819         RK_U32 intra_l32_sobel_t2 : 12;
820         RK_U32 reserved0 : 4;
821         RK_U32 intra_l32_sobel_t3 : 12;
822         RK_U32 reserved1 : 4;
823     } i32_sobel_t_00_hevc;
824 
825     struct {
826         RK_U32 intra_l32_sobel_t4 : 6;
827         RK_U32 reserved0 : 24;
828 
829     } i32_sobel_t_01_hevc;
830 
831     struct {
832         RK_U32 intra_l32_sobel_t5 : 12;
833         RK_U32 reserved0 : 4;
834         RK_U32 intra_l32_sobel_t6 : 12;
835         RK_U32 reserved1 : 4;
836     } i32_sobel_t_02_hevc;
837 
838     struct {
839         RK_U32 intra_l32_sobel_a1_qp0 : 6;
840         RK_U32 intra_l32_sobel_a1_qp1 : 6;
841         RK_U32 intra_l32_sobel_a1_qp2 : 6;
842         RK_U32 intra_l32_sobel_a1_qp3 : 6;
843         RK_U32 intra_l32_sobel_a1_qp4 : 6;
844         RK_U32 reserved0 : 2;
845     } i32_sobel_a_hevc;
846 
847     struct {
848         RK_U32 intra_l32_sobel_b1_qp0 : 15;
849         RK_U32 reserved0 : 1;
850         RK_U32 intra_l32_sobel_b1_qp1 : 15;
851         RK_U32 reserved1 : 1;
852     } i32_sobel_b_00_hevc;
853 
854     struct {
855         RK_U32 intra_l32_sobel_b1_qp2 : 15;
856         RK_U32 reserved0 : 1;
857         RK_U32 intra_l32_sobel_b1_qp3 : 15;
858         RK_U32 reserved1 : 1;
859     } i32_sobel_b_01_hevc;
860 
861     struct {
862         RK_U32 intra_l32_sobel_b1_qp4 : 15;
863         RK_U32 reserved0 : 17;
864     } i32_sobel_b_02_hevc;
865 
866     struct {
867         RK_U32 intra_l32_sobel_c1_qp0 : 6;
868         RK_U32 intra_l32_sobel_c1_qp1 : 6;
869         RK_U32 intra_l32_sobel_c1_qp2 : 6;
870         RK_U32 intra_l32_sobel_c1_qp3 : 6;
871         RK_U32 intra_l32_sobel_c1_qp4 : 6;
872         RK_U32 reserved0 : 2;
873     } i32_sobel_c_hevc;
874 
875     struct {
876         RK_U32 intra_l32_sobel_d1_qp0 : 15;
877         RK_U32 reserved0 : 1;
878         RK_U32 intra_l32_sobel_d1_qp1 : 15;
879         RK_U32 reserved1 : 1;
880     } i32_sobel_d_00_hevc;
881 
882     struct {
883         RK_U32 intra_l32_sobel_d1_qp2 : 15;
884         RK_U32 reserved0 : 1;
885         RK_U32 intra_l32_sobel_d1_qp3 : 15;
886         RK_U32 reserved1 : 1;
887     } i32_sobel_d_01_hevc;
888 
889     struct {
890         RK_U32 intra_l32_sobel_d1_qp4 : 15;
891         RK_U32 reserved0 : 17;
892     } i32_sobel_d_02_hevc;
893     // 0x4c0~0x4e4
894     RK_U32 i32_sobel_e_00_09_hevc[10];// 0 2 4 ... low 32bit ; 1 3 5 ... high 9bit
895 } H265eV54xL2RegSet;
896 
897 #endif /* __HAL_H265E_VEPU54X_REG_L2_H__ */
898