xref: /rockchip-linux_mpp/mpp/hal/rkenc/h264e/hal_h264e_vepu580_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /*
2  * Copyright 2021 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_H264E_VEPU580_REG_H__
18 #define __HAL_H264E_VEPU580_REG_H__
19 
20 #include "rk_type.h"
21 
22 #define VEPU580_CONTROL_CFG_OFFSET  (0 * sizeof(RK_U32))
23 #define VEPU580_BASE_CFG_OFFSET     (160 * sizeof(RK_U32))
24 #define VEPU580_RC_KLUT_CFG_OFFSET  (1024 * sizeof(RK_U32))
25 #define VEPU580_SECTION_3_OFFSET    (1472 * sizeof(RK_U32))
26 #define VEPU580_RDO_CFG_OFFSET      (2048 * sizeof(RK_U32))
27 #define VEPU580_SCL_CFG_OFFSET      (2176 * sizeof(RK_U32))
28 #define VEPU580_OSD_OFFSET          (3072 * sizeof(RK_U32))
29 #define VEPU580_STATUS_OFFSET       (4096 * sizeof(RK_U32))
30 #define VEPU580_DBG_OFFSET          (5120 * sizeof(RK_U32))
31 #define VEPU580_REG_BASE_HW_STATUS  0x2c
32 
33 typedef struct {
34     RK_U32 lt_pos_x : 10;
35     RK_U32 reserved0 : 6;
36     RK_U32 lt_pos_y : 10;
37     RK_U32 reserved1 : 6;
38 } OsdLtPos;
39 
40 typedef struct {
41     RK_U32 rb_pos_x : 10;
42     RK_U32 reserved0 : 6;
43     RK_U32 rb_pos_y : 10;
44     RK_U32 reserved1 : 6;
45 } OsdRbPos;
46 
47 typedef struct OSD_POS_NEW {
48     OsdLtPos lt; /* left-top */
49     OsdRbPos rb; /* right-bottom */
50 } OSD_POS_NEW;
51 
52 /* class: control/link */
53 /* 0x00000000 reg0 - 0x00000120 reg72 */
54 typedef struct Vepu580ControlCfg_t {
55     /* 0x00000000 reg0 */
56     struct {
57         RK_U32 sub_ver      : 8;
58         RK_U32 cap     : 1;
59         RK_U32 hevc_cap     : 1;
60         RK_U32 reserved     : 2;
61         RK_U32 res_cap      : 4;
62         RK_U32 osd_cap      : 2;
63         RK_U32 filtr_cap    : 2;
64         RK_U32 bfrm_cap     : 1;
65         RK_U32 fbc_cap      : 2;
66         RK_U32 reserved1    : 1;
67         RK_U32 ip_id        : 8;
68     } version;
69 
70     /* 0x4 - 0xc */
71     RK_U32 reserved1_3[3];
72 
73     /* 0x00000010 reg4 */
74     struct {
75         RK_U32 lkt_num     : 8;
76         RK_U32 vepu_cmd    : 2;
77         RK_U32 reserved    : 22;
78     } enc_strt;
79 
80     /* 0x00000014 reg5 */
81     struct {
82         RK_U32 safe_clr     : 1;
83         RK_U32 force_clr    : 1;
84         RK_U32 reserved     : 30;
85     } enc_clr;
86 
87     /* 0x18 - 0x1c */
88     RK_U32 reserved6_7[2];
89 
90     /* 0x00000020 reg8 */
91     struct {
92         RK_U32 enc_done_en         : 1;
93         RK_U32 lkt_node_done_en    : 1;
94         RK_U32 sclr_done_en        : 1;
95         RK_U32 slc_done_en         : 1;
96         RK_U32 bsf_oflw_en         : 1;
97         RK_U32 brsp_otsd_en        : 1;
98         RK_U32 wbus_err_en         : 1;
99         RK_U32 rbus_err_en         : 1;
100         RK_U32 wdg_en              : 1;
101         RK_U32 lkt_err_int_en      : 1;
102         RK_U32 reserved            : 22;
103     } int_en;
104 
105     /* 0x00000024 reg9 */
106     struct {
107         RK_U32 enc_done_msk         : 1;
108         RK_U32 lkt_node_done_msk    : 1;
109         RK_U32 sclr_done_msk        : 1;
110         RK_U32 slc_done_msk         : 1;
111         RK_U32 bsf_oflw_msk         : 1;
112         RK_U32 brsp_otsd_msk        : 1;
113         RK_U32 wbus_err_msk         : 1;
114         RK_U32 rbus_err_msk         : 1;
115         RK_U32 wdg_msk              : 1;
116         RK_U32 lkt_err_msk          : 1;
117         RK_U32 reserved             : 22;
118     } int_msk;
119 
120     /* 0x00000028 reg10 */
121     struct {
122         RK_U32 enc_done_clr         : 1;
123         RK_U32 lkt_node_done_clr    : 1;
124         RK_U32 sclr_done_clr        : 1;
125         RK_U32 slc_done_clr         : 1;
126         RK_U32 bsf_oflw_clr         : 1;
127         RK_U32 brsp_otsd_clr        : 1;
128         RK_U32 wbus_err_clr         : 1;
129         RK_U32 rbus_err_clr         : 1;
130         RK_U32 wdg_clr              : 1;
131         RK_U32 lkt_err_clr          : 1;
132         RK_U32 reserved             : 22;
133     } int_clr;
134 
135     /* 0x0000002c reg11 */
136     struct {
137         RK_U32 enc_done_sta         : 1;
138         RK_U32 lkt_node_done_sta    : 1;
139         RK_U32 sclr_done_sta        : 1;
140         RK_U32 slc_done_sta         : 1;
141 
142         RK_U32 bsf_oflw_sta         : 1;
143         RK_U32 brsp_otsd_sta        : 1;
144         RK_U32 wbus_err_sta         : 1;
145         RK_U32 rbus_err_sta         : 1;
146 
147         RK_U32 wdg_sta              : 1;
148         RK_U32 lkt_err_sta          : 1;
149         RK_U32 reserved             : 22;
150     } int_sta;
151 
152     /* 0x00000030 reg12 */
153     struct {
154         RK_U32 lpfw_bus_ordr        : 1;
155         RK_U32 cmvw_bus_ordr        : 1;
156         RK_U32 dspw_bus_ordr        : 1;
157         RK_U32 rfpw_bus_ordr        : 1;
158         RK_U32 src_bus_edin         : 4;
159         RK_U32 meiw_bus_edin        : 4;
160         RK_U32 bsw_bus_edin         : 3;
161         RK_U32 lktr_bus_edin        : 4;
162         RK_U32 roir_bus_edin        : 4;
163         RK_U32 lktw_bus_edin        : 4;
164         RK_U32 afbc_bsize           : 1;
165         RK_U32 ebufw_bus_ordr       : 1;
166         RK_U32 rec_nfbc_bus_edin    : 3;
167     } dtrns_map;
168 
169     /* 0x00000034 reg13 */
170     struct {
171         RK_U32 reserved        : 7;
172         RK_U32 dspr_otsd       : 1;
173         RK_U32 reserved1       : 8;
174         RK_U32 axi_brsp_cke    : 8;
175         RK_U32 reserved2       : 8;
176     } dtrns_cfg;
177 
178     /* 0x00000038 reg14 */
179     struct {
180         RK_U32 vs_load_thd     : 24;
181         RK_U32 rfp_load_thd    : 8;
182     } enc_wdg;
183 
184     /* 0x0000003c reg15 */
185     struct {
186         RK_U32 hurry_en      : 1;
187         RK_U32 hurry_low     : 3;
188         RK_U32 hurry_mid     : 3;
189         RK_U32 hurry_high    : 3;
190         RK_U32 reserved      : 22;
191     } qos_cfg;
192 
193     /* 0x00000040 reg16 */
194     struct {
195         RK_U32 qos_period    : 16;
196         RK_U32 reserved      : 16;
197     } qos_perd;
198 
199     /* 0x00000044 reg17 */
200     RK_U32 hurry_thd_low;
201 
202     /* 0x00000048 reg18 */
203     RK_U32 hurry_thd_mid;
204 
205     /* 0x0000004c reg19 */
206     RK_U32 hurry_thd_high;
207 
208     /* 0x00000050 reg20 */
209     struct {
210         RK_U32 idle_en_core    : 1;
211         RK_U32 idle_en_axi     : 1;
212         RK_U32 idle_en_ahb     : 1;
213         RK_U32 reserved        : 29;
214     } enc_idle_en;
215 
216     /* 0x00000054 reg21 */
217     struct {
218         RK_U32 cke                 : 1;
219         RK_U32 resetn_hw_en        : 1;
220         RK_U32 enc_done_tmvp_en    : 1;
221         RK_U32 sram_ckg_en         : 1;
222         RK_U32 reserved            : 28;
223     } func_en;
224 
225     /* 0x00000058 reg22 */
226     struct {
227         RK_U32 tq8_ckg           : 1;
228         RK_U32 tq4_ckg           : 1;
229         RK_U32 bits_ckg_8x8      : 1;
230         RK_U32 bits_ckg_4x4_1    : 1;
231         RK_U32 bits_ckg_4x4_0    : 1;
232         RK_U32 inter_mode_ckg    : 1;
233         RK_U32 inter_ctrl_ckg    : 1;
234         RK_U32 inter_pred_ckg    : 1;
235         RK_U32 intra8_ckg        : 1;
236         RK_U32 intra4_ckg        : 1;
237         RK_U32 reserved          : 22;
238     } rdo_ckg;
239 
240     /* 0x0000005c reg23 */
241     struct {
242         RK_U32 core_id     : 2;
243         RK_U32 reserved    : 30;
244     } enc_id;
245 } Vepu580ControlCfg;
246 
247 /* class: buffer/video syntax */
248 /* 0x00000280 reg160 - 0x000003f4 reg253*/
249 typedef struct Vepu580BaseCfg_t {
250     /* 0x00000280 reg160 */
251     RK_U32 adr_src0;
252 
253     /* 0x00000284 reg161 */
254     RK_U32 adr_src1;
255 
256     /* 0x00000288 reg162 */
257     RK_U32 adr_src2;
258 
259     /* 0x0000028c reg163 */
260     RK_U32 rfpw_h_addr;
261 
262     /* 0x00000290 reg164 */
263     RK_U32 rfpw_b_addr;
264 
265     /* 0x00000294 reg165 */
266     RK_U32 rfpr_h_addr;
267 
268     /* 0x00000298 reg166 */
269     RK_U32 rfpr_b_addr;
270 
271     /* 0x0000029c reg167 */
272     RK_U32 cmvw_addr;
273 
274     /* 0x000002a0 reg168 */
275     RK_U32 cmvr_addr;
276 
277     /* 0x000002a4 reg169 */
278     RK_U32 dspw_addr;
279 
280     /* 0x000002a8 reg170 */
281     RK_U32 dspr_addr;
282 
283     /* 0x000002ac reg171 */
284     RK_U32 meiw_addr;
285 
286     /* 0x000002b0 reg172 */
287     RK_U32 bsbt_addr;
288 
289     /* 0x000002b4 reg173 */
290     RK_U32 bsbb_addr;
291 
292     /* 0x000002b8 reg174 */
293     RK_U32 bsbr_addr;
294 
295     /* 0x000002bc reg175 */
296     RK_U32 adr_bsbs;
297 
298     /* 0x000002c0 reg176 */
299     RK_U32 lpfw_addr;
300 
301     /* 0x000002c4 reg177 */
302     RK_U32 lpfr_addr;
303 
304     /* 0x000002c8 reg178 */
305     RK_U32 roi_addr;
306 
307     /* 0x000002cc reg179 */
308     RK_U32 roi_qp_addr;
309 
310     /* 0x000002d0 reg180 */
311     RK_U32 qoi_amv_addr;
312 
313     /* 0x000002d4 reg181 */
314     RK_U32 qoi_mv_addr;
315 
316     /* 0x000002d8 reg182 */
317     RK_U32 ebuft_addr;
318 
319     /* 0x000002dc reg183 */
320     RK_U32 ebufb_addr;
321 
322     /* 0x2e0 - 0x2fc */
323     RK_U32 reserved184_191[8];
324 
325     /* 0x00000300 reg192 */
326     struct {
327         RK_U32 enc_stnd           : 1;
328         RK_U32 roi_en             : 1;
329         RK_U32 cur_frm_ref        : 1;
330         RK_U32 mei_stor           : 1;
331         RK_U32 bs_scp             : 1;
332         RK_U32 reserved           : 3;
333         RK_U32 pic_qp             : 6;
334         RK_U32 num_pic_tot_cur    : 5;
335         RK_U32 log2_ctu_num       : 5;
336         RK_U32 reserved1          : 6;
337         RK_U32 slen_fifo          : 1;
338         RK_U32 rec_fbc_dis        : 1;
339     } enc_pic;
340 
341     /* 0x00000304 reg193 */
342     struct {
343         RK_U32 dchs_txid    : 2;
344         RK_U32 dchs_rxid    : 2;
345         RK_U32 dchs_txe     : 1;
346         RK_U32 dchs_rxe     : 1;
347         RK_U32 reserved     : 10;
348         RK_U32 dchs_ofst    : 11;
349         RK_U32 reserved1    : 5;
350     } dual_core;
351 
352     /* 0x308 - 0x30c */
353     RK_U32 reserved194_195[2];
354 
355     /* 0x00000310 reg196 */
356     struct {
357         RK_U32 pic_wd8_m1    : 11;
358         RK_U32 reserved      : 5;
359         RK_U32 pic_hd8_m1    : 11;
360         RK_U32 reserved1     : 5;
361     } enc_rsl;
362 
363     /* 0x00000314 reg197 */
364     struct {
365         RK_U32 pic_wfill    : 6;
366         RK_U32 reserved     : 10;
367         RK_U32 pic_hfill    : 6;
368         RK_U32 reserved1    : 10;
369     } src_fill;
370 
371     /* 0x00000318 reg198 */
372     struct {
373         RK_U32 alpha_swap    : 1;
374         RK_U32 rbuv_swap     : 1;
375         RK_U32 src_cfmt      : 4;
376         RK_U32 src_range     : 1;
377         RK_U32 out_fmt       : 1;
378         RK_U32 reserved      : 24;
379     } src_fmt;
380 
381     /* 0x0000031c reg199 */
382     struct {
383         RK_U32 csc_wgt_b2y    : 9;
384         RK_U32 csc_wgt_g2y    : 9;
385         RK_U32 csc_wgt_r2y    : 9;
386         RK_U32 reserved       : 5;
387     } src_udfy;
388 
389     /* 0x00000320 reg200 */
390     struct {
391         RK_U32 csc_wgt_b2u    : 9;
392         RK_U32 csc_wgt_g2u    : 9;
393         RK_U32 csc_wgt_r2u    : 9;
394         RK_U32 reserved       : 5;
395     } src_udfu;
396 
397     /* 0x00000324 reg201 */
398     struct {
399         RK_U32 csc_wgt_b2v    : 9;
400         RK_U32 csc_wgt_g2v    : 9;
401         RK_U32 csc_wgt_r2v    : 9;
402         RK_U32 reserved       : 5;
403     } src_udfv;
404 
405     /* 0x00000328 reg202 */
406     struct {
407         RK_U32 csc_ofst_v    : 8;
408         RK_U32 csc_ofst_u    : 8;
409         RK_U32 csc_ofst_y    : 5;
410         RK_U32 reserved      : 11;
411     } src_udfo;
412 
413     /* 0x0000032c reg203 */
414     struct {
415         RK_U32 reserved0   : 26;
416         RK_U32 src_mirr    : 1;
417         RK_U32 src_rot     : 2;
418         RK_U32 txa_en      : 1;
419         RK_U32 afbcd_en    : 1;
420         RK_U32 reserved1   : 1;
421     } src_proc;
422 
423     /* 0x00000330 reg204 */
424     struct {
425         RK_U32 pic_ofst_x    : 14;
426         RK_U32 reserved      : 2;
427         RK_U32 pic_ofst_y    : 14;
428         RK_U32 reserved1     : 2;
429     } pic_ofst;
430 
431     /* 0x00000334 reg205 */
432     struct {
433         RK_U32 src_strd0    : 17;
434         RK_U32 reserved     : 15;
435     } src_strd0;
436 
437     /* 0x00000338 reg206 */
438     struct {
439         RK_U32 src_strd1    : 16;
440         RK_U32 reserved     : 16;
441     } src_strd1;
442 
443     /* 0x33c - 0x34c */
444     RK_U32 reserved207_211[5];
445 
446     /* 0x00000350 reg212 */
447     struct {
448         RK_U32 rc_en         : 1;
449         RK_U32 aq_en         : 1;
450         RK_U32 aq_mode       : 1;
451         RK_U32 reserved      : 9;
452         RK_U32 rc_ctu_num    : 20;
453     } rc_cfg;
454 
455     /* 0x00000354 reg213 */
456     struct {
457         RK_U32 reserved       : 16;
458         RK_U32 rc_qp_range    : 4;
459         RK_U32 rc_max_qp      : 6;
460         RK_U32 rc_min_qp      : 6;
461     } rc_qp;
462 
463     /* 0x00000358 reg214 */
464     struct {
465         RK_U32 ctu_ebit    : 20;
466         RK_U32 reserved    : 12;
467     } rc_tgt;
468 
469     /* 0x35c */
470     RK_U32 reserved_215;
471 
472     /* 0x00000360 reg216 */
473     struct {
474         RK_U32 sli_splt          : 1;
475         RK_U32 sli_splt_mode     : 1;
476         RK_U32 sli_splt_cpst     : 1;
477         RK_U32 reserved          : 12;
478         RK_U32 sli_flsh          : 1;
479         RK_U32 sli_max_num_m1    : 15;
480         RK_U32 reserved1         : 1;
481     } sli_splt;
482 
483     /* 0x00000364 reg217 */
484     struct {
485         RK_U32 sli_splt_byte    : 20;
486         RK_U32 reserved         : 12;
487     } sli_byte;
488 
489     /* 0x00000368 reg218 */
490     struct {
491         RK_U32 sli_splt_cnum_m1    : 20;
492         RK_U32 reserved            : 12;
493     } sli_cnum;
494 
495     /* 0x36c */
496     RK_U32 reserved_219;
497 
498     /* 0x00000370 reg220 */
499     struct {
500         RK_U32 cme_srch_h     : 4;
501         RK_U32 cme_srch_v     : 4;
502         RK_U32 rme_srch_h     : 3;
503         RK_U32 rme_srch_v     : 3;
504         RK_U32 reserved       : 2;
505         RK_U32 dlt_frm_num    : 16;
506     } me_rnge;
507 
508     /* 0x00000374 reg221 */
509     struct {
510         RK_U32 pmv_mdst_h      : 8;
511         RK_U32 pmv_mdst_v      : 8;
512         RK_U32 mv_limit        : 2;
513         RK_U32 pmv_num         : 2;
514         RK_U32 colmv_stor      : 1;
515         RK_U32 colmv_load      : 1;
516         RK_U32 rme_dis         : 3;
517         RK_U32 reserved        : 2;
518         RK_U32 fme_dis         : 3;
519         RK_U32 reserved1       : 1;
520         RK_U32 lvl4_ovrd_en    : 1;
521     } me_cfg;
522 
523     /* 0x00000378 reg222 */
524     struct {
525         RK_U32 cme_rama_max      : 11;
526         RK_U32 cme_rama_h        : 5;
527         RK_U32 cach_l2_tag       : 2;
528         RK_U32 cme_linebuf_w     : 9;
529         RK_U32 reserved          : 5;
530     } me_cach;
531 
532     /* 0x37c */
533     RK_U32 reserved_223;
534 
535     /* 0x00000380 reg224 */
536     struct {
537         RK_U32 gmv_x        : 13;
538         RK_U32 reserved     : 3;
539         RK_U32 gmv_y        : 13;
540         RK_U32 reserved1    : 3;
541     } gmv;
542 
543     /* 0x384 - 0x38c */
544     RK_U32 reserved225_227[3];
545 
546     /* 0x00000390 reg228 */
547     struct {
548         RK_U32 roi_qp_en     : 1;
549         RK_U32 roi_amv_en    : 1;
550         RK_U32 roi_mv_en     : 1;
551         RK_U32 reserved      : 29;
552     } roi_en;
553 
554     /* 0x394 - 0x39c */
555     RK_U32 reserved229_231[3];
556 
557     /* 0x000003a0 reg232 */
558     struct {
559         RK_U32 rect_size      : 1;
560         RK_U32 inter_4x4      : 1;
561         RK_U32 arb_sel        : 1;
562         RK_U32 vlc_lmt        : 1;
563         RK_U32 chrm_spcl      : 1;
564         RK_U32 rdo_mask       : 8;
565         RK_U32 ccwa_e         : 1;
566         RK_U32 reserved       : 1;
567         RK_U32 atr_e          : 1;
568         RK_U32 reserved1      : 3;
569         RK_U32 atf_intra_e    : 1;
570         RK_U32 scl_lst_sel    : 2;
571         RK_U32 reserved2      : 10;
572     } rdo_cfg;
573 
574     /* 0x000003a4 reg233 */
575     struct {
576         RK_U32 vthd_y       : 12;
577         RK_U32 reserved     : 4;
578         RK_U32 vthd_c       : 12;
579         RK_U32 reserved1    : 4;
580     } iprd_csts;
581 
582     /* 0x3a8 - 0x3ac */
583     RK_U32 reserved234_235[2];
584 
585     /* 0x000003b0 reg236 */
586     struct {
587         RK_U32 nal_ref_idc      : 2;
588         RK_U32 nal_unit_type    : 5;
589         RK_U32 reserved         : 25;
590     } synt_nal;
591 
592     /* 0x000003b4 reg237 */
593     struct {
594         RK_U32 max_fnum    : 4;
595         RK_U32 drct_8x8    : 1;
596         RK_U32 mpoc_lm4    : 4;
597         RK_U32 reserved    : 23;
598     } synt_sps;
599 
600     /* 0x000003b8 reg238 */
601     struct {
602         RK_U32 etpy_mode       : 1;
603         RK_U32 trns_8x8        : 1;
604         RK_U32 csip_flag       : 1;
605         RK_U32 num_ref0_idx    : 2;
606         RK_U32 num_ref1_idx    : 2;
607         RK_U32 pic_init_qp     : 6;
608         RK_U32 cb_ofst         : 5;
609         RK_U32 cr_ofst         : 5;
610         RK_U32 wght_pred       : 1;
611         RK_U32 dbf_cp_flg      : 1;
612         RK_U32 reserved        : 7;
613     } synt_pps;
614 
615     /* 0x000003bc reg239 */
616     struct {
617         RK_U32 sli_type        : 2;
618         RK_U32 pps_id          : 8;
619         RK_U32 drct_smvp       : 1;
620         RK_U32 num_ref_ovrd    : 1;
621         RK_U32 cbc_init_idc    : 2;
622         RK_U32 reserved        : 2;
623         RK_U32 frm_num         : 16;
624     } synt_sli0;
625 
626     /* 0x000003c0 reg240 */
627     struct {
628         RK_U32 idr_pid    : 16;
629         RK_U32 poc_lsb    : 16;
630     } synt_sli1;
631 
632     /* 0x000003c4 reg241 */
633     struct {
634         RK_U32 rodr_pic_idx      : 2;
635         RK_U32 ref_list0_rodr    : 1;
636         RK_U32 sli_beta_ofst     : 4;
637         RK_U32 sli_alph_ofst     : 4;
638         RK_U32 dis_dblk_idc      : 2;
639         RK_U32 reserved          : 3;
640         RK_U32 rodr_pic_num      : 16;
641     } synt_sli2;
642 
643     /* 0x000003c8 reg242 */
644     struct {
645         RK_U32 nopp_flg      : 1;
646         RK_U32 ltrf_flg      : 1;
647         RK_U32 arpm_flg      : 1;
648         RK_U32 mmco4_pre     : 1;
649         RK_U32 mmco_type0    : 3;
650         RK_U32 mmco_parm0    : 16;
651         RK_U32 mmco_type1    : 3;
652         RK_U32 mmco_type2    : 3;
653         RK_U32 reserved      : 3;
654     } synt_refm0;
655 
656     /* 0x000003cc reg243 */
657     struct {
658         RK_U32 mmco_parm1    : 16;
659         RK_U32 mmco_parm2    : 16;
660     } synt_refm1;
661 
662     /* 0x000003d0 reg244 */
663     struct {
664         RK_U32 long_term_frame_idx0    : 4;
665         RK_U32 long_term_frame_idx1    : 4;
666         RK_U32 long_term_frame_idx2    : 4;
667         RK_U32 reserved                : 20;
668     } synt_refm2;
669 
670     /* 0x000003d4 reg245 */
671     struct {
672         RK_U32 dlt_poc_s0_m12    : 16;
673         RK_U32 dlt_poc_s0_m13    : 16;
674     } synt_refm3_hevc;
675 
676     /* 0x000003d8 reg246 */
677     struct {
678         RK_U32 poc_lsb_lt1    : 16;
679         RK_U32 poc_lsb_lt2    : 16;
680     } synt_long_refm0;
681 
682     /* 0x000003dc reg247 */
683     struct {
684         RK_U32 dlt_poc_msb_cycl1    : 16;
685         RK_U32 dlt_poc_msb_cycl2    : 16;
686     } synt_long_refm1;
687 
688     /* 0x3e0 - 0x3ec */
689     RK_U32 reserved248_251[4];
690 
691     /* 0x000003f0 reg252 */
692     struct {
693         RK_U32 mv_v_lmt_thd    : 14;
694         RK_U32 reserved        : 1;
695         RK_U32 mv_v_lmt_en     : 1;
696         RK_U32 reserved1       : 15;
697         RK_U32 sli_crs_en      : 1;
698     } sli_cfg;
699 
700     /* 0x000003f4 reg253 */
701     struct {
702         RK_U32 tile_x       : 8;
703         RK_U32 reserved     : 8;
704         RK_U32 tile_y       : 8;
705         RK_U32 reserved1    : 8;
706     } tile_pos;
707 } Vepu580BaseCfg;
708 
709 /* class: rc/roi/aq/klut */
710 /* 0x00001000 reg1024 - 0x000010e0 reg1080 */
711 typedef struct Vepu580RcKlutCfg_t {
712     /* 0x00001000 reg1024 */
713     struct {
714         RK_U32 qp_adj0     : 5;
715         RK_U32 qp_adj1     : 5;
716         RK_U32 qp_adj2     : 5;
717         RK_U32 qp_adj3     : 5;
718         RK_U32 qp_adj4     : 5;
719         RK_U32 reserved    : 7;
720     } rc_adj0;
721 
722     /* 0x00001004 reg1025 */
723     struct {
724         RK_U32 qp_adj5     : 5;
725         RK_U32 qp_adj6     : 5;
726         RK_U32 qp_adj7     : 5;
727         RK_U32 qp_adj8     : 5;
728         RK_U32 reserved    : 12;
729     } rc_adj1;
730 
731     /* 0x00001008 reg1026 - 0x00001028 reg1034 */
732     RK_U32 rc_dthd_0_8[9];
733 
734     /* 0x102c */
735     RK_U32 reserved_1035;
736 
737     /* 0x00001030 reg1036 */
738     struct {
739         RK_U32 qpmin_area0    : 6;
740         RK_U32 qpmax_area0    : 6;
741         RK_U32 qpmin_area1    : 6;
742         RK_U32 qpmax_area1    : 6;
743         RK_U32 qpmin_area2    : 6;
744         RK_U32 reserved       : 2;
745     } roi_qthd0;
746 
747     /* 0x00001034 reg1037 */
748     struct {
749         RK_U32 qpmax_area2    : 6;
750         RK_U32 qpmin_area3    : 6;
751         RK_U32 qpmax_area3    : 6;
752         RK_U32 qpmin_area4    : 6;
753         RK_U32 qpmax_area4    : 6;
754         RK_U32 reserved       : 2;
755     } roi_qthd1;
756 
757     /* 0x00001038 reg1038 */
758     struct {
759         RK_U32 qpmin_area5    : 6;
760         RK_U32 qpmax_area5    : 6;
761         RK_U32 qpmin_area6    : 6;
762         RK_U32 qpmax_area6    : 6;
763         RK_U32 qpmin_area7    : 6;
764         RK_U32 reserved       : 2;
765     } roi_qthd2;
766 
767     /* 0x0000103c reg1039 */
768     struct {
769         RK_U32 qpmax_area7    : 6;
770         RK_U32 reserved       : 24;
771         RK_U32 qpmap_mode     : 2;
772     } roi_qthd3;
773 
774     /* 0x00001040 reg1040 */
775     struct {
776         RK_U32 madi_mode    : 1;
777         RK_U32 reserved     : 15;
778         RK_U32 madi_thd     : 8;
779         RK_U32 reserved1    : 8;
780     } madi_cfg;
781 
782     /* 0x00001044 reg1041 - 0x00001050 reg1044 */
783     RK_U8 aq_tthd[16];
784 
785     /* 0x00001054 reg1045 */
786     /*
787      * 0x00001054 reg1045 - 0x00001060 reg1048
788      * only low 6 bits is valid for per step.
789      */
790     RK_U8 aq_step[16];
791 
792     /* 0x1064 - 0x106c */
793     RK_U32 reserved1049_1051[3];
794 
795     /* 0x00001070 reg1052 */
796     struct {
797         RK_U32 md_sad_thd0    : 8;
798         RK_U32 md_sad_thd1    : 8;
799         RK_U32 md_sad_thd2    : 8;
800         RK_U32 reserved       : 8;
801     } md_sad_thd;
802 
803     /* 0x00001074 reg1053 */
804     struct {
805         RK_U32 madi_thd0    : 8;
806         RK_U32 madi_thd1    : 8;
807         RK_U32 madi_thd2    : 8;
808         RK_U32 reserved     : 8;
809     } madi_thd;
810 
811     /* 0x1078 - 0x107c */
812     RK_U32 reserved1054_1055[2];
813 
814     /* 0x00001080 reg1056 */
815     struct {
816         RK_U32 chrm_klut_ofst    : 3;
817         RK_U32 reserved          : 29;
818     } klut_ofst;
819 
820     /* 0x00001084 reg1057 */
821     struct {
822         RK_U32 chrm_klut_wgt0       : 18;
823         RK_U32 reserved             : 5;
824         RK_U32 chrm_klut_wgt1_l9    : 9;
825     } klut_wgt0;
826 
827     /* 0x00001088 reg1058 */
828     struct {
829         RK_U32 chrm_klut_wgt1_h9    : 9;
830         RK_U32 reserved             : 5;
831         RK_U32 chrm_klut_wgt2       : 18;
832     } klut_wgt1;
833 
834     /* 0x0000108c reg1059 */
835     struct {
836         RK_U32 chrm_klut_wgt3       : 18;
837         RK_U32 reserved             : 5;
838         RK_U32 chrm_klut_wgt4_l9    : 9;
839     } klut_wgt2;
840 
841     /* 0x00001090 reg1060 */
842     struct {
843         RK_U32 chrm_klut_wgt4_h9    : 9;
844         RK_U32 reserved             : 5;
845         RK_U32 chrm_klut_wgt5       : 18;
846     } klut_wgt3;
847 
848     /* 0x00001094 reg1061 */
849     struct {
850         RK_U32 chrm_klut_wgt6       : 18;
851         RK_U32 reserved             : 5;
852         RK_U32 chrm_klut_wgt7_l9    : 9;
853     } klut_wgt4;
854 
855     /* 0x00001098 reg1062 */
856     struct {
857         RK_U32 chrm_klut_wgt7_h9    : 9;
858         RK_U32 reserved             : 5;
859         RK_U32 chrm_klut_wgt8       : 18;
860     } klut_wgt5;
861 
862     /* 0x0000109c reg1063 */
863     struct {
864         RK_U32 chrm_klut_wgt9        : 18;
865         RK_U32 reserved              : 5;
866         RK_U32 chrm_klut_wgt10_l9    : 9;
867     } klut_wgt6;
868 
869     /* 0x000010a0 reg1064 */
870     struct {
871         RK_U32 chrm_klut_wgt10_h9    : 9;
872         RK_U32 reserved              : 5;
873         RK_U32 chrm_klut_wgt11       : 18;
874     } klut_wgt7;
875 
876     /* 0x000010a4 reg1065 */
877     struct {
878         RK_U32 chrm_klut_wgt12       : 18;
879         RK_U32 reserved              : 5;
880         RK_U32 chrm_klut_wgt13_l9    : 9;
881     } klut_wgt8;
882 
883     /* 0x000010a8 reg1066 */
884     struct {
885         RK_U32 chrm_klut_wgt13_h9    : 9;
886         RK_U32 reserved              : 5;
887         RK_U32 chrm_klut_wgt14       : 18;
888     } klut_wgt9;
889 
890     /* 0x000010ac reg1067 */
891     struct {
892         RK_U32 chrm_klut_wgt15       : 18;
893         RK_U32 reserved              : 5;
894         RK_U32 chrm_klut_wgt16_l9    : 9;
895     } klut_wgt10;
896 
897     /* 0x000010b0 reg1068 */
898     struct {
899         RK_U32 chrm_klut_wgt16_h9    : 9;
900         RK_U32 reserved              : 5;
901         RK_U32 chrm_klut_wgt17       : 18;
902     } klut_wgt11;
903 
904     /* 0x000010b4 reg1069 */
905     struct {
906         RK_U32 chrm_klut_wgt18       : 18;
907         RK_U32 reserved              : 5;
908         RK_U32 chrm_klut_wgt19_l9    : 9;
909     } klut_wgt12;
910 
911     /* 0x000010b8 reg1070 */
912     struct {
913         RK_U32 chrm_klut_wgt19_h9    : 9;
914         RK_U32 reserved              : 5;
915         RK_U32 chrm_klut_wgt20       : 18;
916     } klut_wgt13;
917 
918     /* 0x000010bc reg1071 */
919     struct {
920         RK_U32 chrm_klut_wgt21       : 18;
921         RK_U32 reserved              : 5;
922         RK_U32 chrm_klut_wgt22_l9    : 9;
923     } klut_wgt14;
924 
925     /* 0x000010c0 reg1072 */
926     struct {
927         RK_U32 chrm_klut_wgt22_h9    : 9;
928         RK_U32 reserved              : 5;
929         RK_U32 chrm_klut_wgt23       : 18;
930     } klut_wgt15;
931 
932     /* 0x000010c4 reg1073 */
933     struct {
934         RK_U32 chrm_klut_wgt24       : 18;
935         RK_U32 reserved              : 5;
936         RK_U32 chrm_klut_wgt25_l9    : 9;
937     } klut_wgt16;
938 
939     /* 0x000010c8 reg1074 */
940     struct {
941         RK_U32 chrm_klut_wgt25_h9    : 9;
942         RK_U32 reserved              : 5;
943         RK_U32 chrm_klut_wgt26       : 18;
944     } klut_wgt17;
945 
946     /* 0x000010cc reg1075 */
947     struct {
948         RK_U32 chrm_klut_wgt27       : 18;
949         RK_U32 reserved              : 5;
950         RK_U32 chrm_klut_wgt28_l9    : 9;
951     } klut_wgt18;
952 
953     /* 0x000010d0 reg1076 */
954     struct {
955         RK_U32 chrm_klut_wgt28_h9    : 9;
956         RK_U32 reserved              : 5;
957         RK_U32 chrm_klut_wgt29       : 18;
958     } klut_wgt19;
959 
960     /* 0x000010d4 reg1077 */
961     struct {
962         RK_U32 chrm_klut_wgt30       : 18;
963         RK_U32 reserved              : 5;
964         RK_U32 chrm_klut_wgt31_l9    : 9;
965     } klut_wgt20;
966 
967     /* 0x000010d8 reg1078 */
968     struct {
969         RK_U32 chrm_klut_wgt31_h9    : 9;
970         RK_U32 reserved              : 5;
971         RK_U32 chrm_klut_wgt32       : 18;
972     } klut_wgt21;
973 
974     /* 0x000010dc reg1079 */
975     struct {
976         RK_U32 chrm_klut_wgt33       : 18;
977         RK_U32 reserved              : 5;
978         RK_U32 chrm_klut_wgt34_l9    : 9;
979     } klut_wgt22;
980 
981     /* 0x000010e0 reg1080 */
982     struct {
983         RK_U32 chrm_klut_wgt34_h9    : 9;
984         RK_U32 reserved              : 23;
985     } klut_wgt23;
986 } Vepu580RcKlutCfg;
987 
988 /* class: iprd/iprd_wgt/rdo_wgta/prei_dif/sobel */
989 /* 0x00001700 reg1472 - 0x00001cd4 reg1845 */
990 typedef struct Vepu580Section3_t {
991     /* 0x1700 */
992     struct {
993         RK_U32    lvl4_intra_cst_thd0 : 12;
994         RK_U32    reserve0 : 4;
995         RK_U32    lvl4_intra_cst_thd1 : 12;
996         RK_U32    reserve1 : 4;
997     } lvl32_intra_CST_THD0;
998 
999     /* 0x1704 */
1000     struct {
1001         RK_U32    lvl4_intra_cst_thd2 : 12;
1002         RK_U32    reserve0 : 4;
1003         RK_U32    lvl4_intra_cst_thd3 : 12;
1004         RK_U32    reserve1 : 4;
1005     } lvl32_intra_CST_THD1;
1006 
1007     /* 0x1708 */
1008     struct {
1009         RK_U32    lvl8_intra_chrm_cst_thd0 : 12;
1010         RK_U32    reserve0 : 4;
1011         RK_U32    lvl8_intra_chrm_cst_thd1 : 12;
1012         RK_U32    reserve1 : 4;
1013     } lvl16_intra_CST_THD0;
1014 
1015     /* 0x170c */
1016     struct {
1017         RK_U32    lvl8_intra_chrm_cst_thd2 : 12;
1018         RK_U32    reserve0 : 4;
1019         RK_U32    lvl8_intra_chrm_cst_thd3 : 12;
1020         RK_U32    reserve1 : 4;
1021     } lvl16_intra_CST_THD1;
1022 
1023     /* 0x1710 */
1024     struct {
1025         RK_U32    lvl8_intra_cst_thd0 : 12;
1026         RK_U32    reserve0 : 4;
1027         RK_U32    lvl8_intra_cst_thd1 : 12;
1028         RK_U32    reserve1 : 4;
1029     } lvl8_intra_CST_THD0; //     only 264
1030 
1031     /* 0x1714 */
1032     struct {
1033         RK_U32    lvl8_intra_cst_thd2 : 12;
1034         RK_U32    reserve0 : 4;
1035         RK_U32    lvl8_intra_cst_thd3 : 12;
1036         RK_U32    reserve1 : 4;
1037     } lvl8_intra_CST_THD1; //     only 264
1038 
1039     /* 0x1718 */
1040     struct {
1041         RK_U32    lvl16_intra_ul_cst_thld : 12;
1042         RK_U32    reserve0 : 20;
1043     } lvl16_intra_UL_CST_THD; //      only 264
1044 
1045     /* 0x171c */
1046     struct {
1047         RK_U32    lvl8_intra_cst_wgt0 : 8;
1048 
1049         RK_U32    lvl8_intra_cst_wgt1 : 8;
1050 
1051         RK_U32    lvl8_intra_cst_wgt2 : 8;
1052 
1053         RK_U32    lvl8_intra_cst_wgt3 : 8;
1054 
1055     } lvl32_intra_CST_WGT0;
1056 
1057     /* 0x1720 */
1058     struct {
1059         RK_U32    lvl4_intra_cst_wgt0 : 8;
1060 
1061         RK_U32    lvl4_intra_cst_wgt1 : 8;
1062 
1063         RK_U32    lvl4_intra_cst_wgt2 : 8;
1064 
1065         RK_U32    lvl4_intra_cst_wgt3 : 8;
1066 
1067     } lvl32_intra_CST_WGT1; //
1068 
1069     /* 0x1724 */
1070     struct {
1071         RK_U32    lvl16_intra_cst_wgt0 : 8;
1072 
1073         RK_U32    lvl16_intra_cst_wgt1 : 8;
1074 
1075         RK_U32    lvl16_intra_cst_wgt2 : 8;
1076 
1077         RK_U32    lvl16_intra_cst_wgt3 : 8;
1078 
1079     } lvl16_intra_CST_WGT0; //  7.10
1080 
1081     /* 0x1728 */
1082     struct {
1083         RK_U32    lvl8_intra_chrm_cst_wgt0 : 8;
1084 
1085         RK_U32    lvl8_intra_chrm_cst_wgt1 : 8;
1086 
1087         RK_U32    lvl8_intra_chrm_cst_wgt2 : 8;
1088 
1089         RK_U32    lvl8_intra_chrm_cst_wgt3 : 8;
1090 
1091     } lvl16_intra_CST_WGT1; //
1092 
1093     /* 0x172c */
1094     RK_U32 reserved_1483;
1095 
1096     /* 0x00001730 reg1484 */
1097     struct {
1098         RK_U32    quant_f_bias_I : 10;
1099         RK_U32    quant_f_bias_P : 10;
1100         RK_U32    reserve : 12;
1101     } RDO_QUANT;
1102 
1103     /* 0x1734 - 0x173c */
1104     RK_U32 reserved1485_1487[3];
1105 
1106     /* 0x00001740 reg1488 */
1107     // atr
1108     struct {
1109         RK_U32    atr_thd0 : 12;
1110         RK_U32    reserve0 : 4;
1111         RK_U32    atr_thd1 : 12;
1112         RK_U32    reserve1 : 4;
1113     } ATR_THD0; //       only 264
1114 
1115     /* 0x1744 */
1116     struct {
1117         RK_U32    atr_thd2 : 12;
1118         RK_U32    reserve0 : 4;
1119         RK_U32    atr_thdqp : 6;
1120         RK_U32    reserve1 : 10;
1121     } ATR_THD1; //       only 264
1122 
1123     /* 0x1748 */
1124     struct {
1125         RK_U32    atr1_thd0 : 12;
1126         RK_U32    reserve0 : 4;
1127         RK_U32    atr1_thd1 : 12;
1128         RK_U32    reserve1 : 4;
1129     } ATR_THD10; //       only 264
1130 
1131     /* 0x174c */
1132     struct {
1133         RK_U32    atr1_thd2 : 12;
1134         RK_U32    reserve1 : 20;
1135     } ATR_THD11; //       only 264
1136 
1137     // /* 0x1748 - 0x174c */
1138     // RK_U32 reserved1490_1491[2];
1139 
1140     /* 0x00001750 reg1492 */
1141     struct {
1142         RK_U32    lvl16_atr_wgt0 : 8;
1143         RK_U32    lvl16_atr_wgt1 : 8;
1144         RK_U32    lvl16_atr_wgt2 : 8;
1145         RK_U32    reserved       : 8;
1146     } Lvl16_ATR_WGT; //      only 264
1147 
1148     /* 0x1754 */
1149     struct {
1150         RK_U32    lvl8_atr_wgt0 : 8;
1151         RK_U32    lvl8_atr_wgt1 : 8;
1152         RK_U32    lvl8_atr_wgt2 : 8;
1153         RK_U32    reserved      : 8;
1154     } Lvl8_ATR_WGT; //      only 264
1155 
1156     /* 0x1758 */
1157     struct {
1158         RK_U32    lvl4_atr_wgt0 : 8;
1159         RK_U32    lvl4_atr_wgt1 : 8;
1160         RK_U32    lvl4_atr_wgt2 : 8;
1161         RK_U32    reserved      : 8;
1162     } Lvl4_ATR_WGT; //      only 264
1163 
1164     /* 0x175c */
1165     RK_U32 reserved_1495;
1166 
1167     /* 0x00001760 reg1496 */
1168     struct {
1169         RK_U32 cime_sad_mod_sel          : 1;
1170         RK_U32 cime_sad_use_big_block    : 1;
1171         RK_U32 cime_pmv_set_zero         : 1;
1172         RK_U32 reserved                  : 5;
1173         RK_U32 cime_pmv_num              : 2;
1174         RK_U32 reserved1                 : 22;
1175     } cime_sqi_cfg;
1176 
1177     /* 0x00001764 reg1497 */
1178     struct {
1179         RK_U32 cime_mvd_th0    : 9;
1180         RK_U32 reserved        : 1;
1181         RK_U32 cime_mvd_th1    : 9;
1182         RK_U32 reserved1       : 1;
1183         RK_U32 cime_mvd_th2    : 9;
1184         RK_U32 reserved2       : 3;
1185     } cime_sqi_thd;
1186 
1187     /* 0x00001768 reg1498 */
1188     struct {
1189         RK_U32 cime_multi0    : 10;
1190         RK_U32 reserved       : 6;
1191         RK_U32 cime_multi1    : 10;
1192         RK_U32 reserved1      : 6;
1193     } cime_sqi_multi0;
1194 
1195     /* 0x0000176c reg1499 */
1196     struct {
1197         RK_U32 cime_multi2    : 10;
1198         RK_U32 reserved       : 6;
1199         RK_U32 cime_multi3    : 10;
1200         RK_U32 reserved1      : 6;
1201     } cime_sqi_multi1;
1202 
1203     /* 0x00001770 reg1500 */
1204     struct {
1205         RK_U32 cime_sad_th0    : 12;
1206         RK_U32 reserved        : 4;
1207         RK_U32 rime_mvd_th0    : 4;
1208         RK_U32 reserved1       : 4;
1209         RK_U32 rime_mvd_th1    : 4;
1210         RK_U32 reserved2       : 4;
1211     } rime_sqi_thd;
1212 
1213     /* 0x00001774 reg1501 */
1214     struct {
1215         RK_U32 rime_multi0    : 10;
1216         RK_U32 rime_multi1    : 10;
1217         RK_U32 rime_multi2    : 10;
1218         RK_U32 reserved       : 2;
1219     } rime_sqi_multi;
1220 
1221     /* 0x00001778 reg1502 */
1222     struct {
1223         RK_U32 cime_sad_pu16_th    : 12;
1224         RK_U32 reserved            : 4;
1225         RK_U32 cime_sad_pu32_th    : 12;
1226         RK_U32 reserved1           : 4;
1227     } fme_sqi_thd0;
1228 
1229     /* 0x0000177c reg1503 */
1230     struct {
1231         RK_U32 cime_sad_pu64_th    : 12;
1232         RK_U32 reserved            : 4;
1233         RK_U32 move_lambda         : 4;
1234         RK_U32 reserved1           : 12;
1235     } fme_sqi_thd1;
1236 
1237     /* 0x1780 - 0x17fc */
1238     RK_U32 reserved1504_1535[32];
1239 
1240     /* 0x00001800 reg1536 - 0x000018cc reg1587  */
1241     // struct {
1242     //     RK_U32 wgt_qp0     : 20;
1243     //     RK_U32 reserved    : 12;
1244     // } iprd_wgt_qp_hevc_0_51[52];
1245     RK_U32 iprd_wgt_qp_hevc_0_51[52];
1246 
1247     /* 0x18d0 - 0x18fc */
1248     RK_U32 reserved1588_1599[12];
1249 
1250     /* wgt_qp48_grpa */
1251     /* 0x00001900 reg1600 - 0x19cc */
1252     RK_U32 rdo_wgta_qp_grpa_0_51[52];
1253 } Vepu580Section3;
1254 
1255 /* class: rdo/q_i */
1256 /* 0x00002000 reg2048 - 0x00002c98 reg2854 */
1257 typedef struct Vepu580RdoCfg_t {
1258     /* 0x00002000 reg2048 */
1259     struct {
1260         RK_U32 atf_pskip_en    : 1;
1261         RK_U32 reserved             : 31;
1262     } rdo_sqi_cfg;
1263 
1264     /* 0x00002004 reg2049 */
1265     struct {
1266         RK_U32 cu64_rdo_inter_cime_thd0    : 12;
1267         RK_U32 reserved                    : 4;
1268         RK_U32 cu64_rdo_inter_cime_thd1    : 12;
1269         RK_U32 reserved1                   : 4;
1270     } rdo_b64_inter_cime_thd0;
1271 
1272     /* 0x00002008 reg2050 */
1273     struct {
1274         RK_U32 cu64_rdo_inter_cime_thd2    : 12;
1275         RK_U32 reserved                    : 20;
1276     } rdo_b64_inter_cime_thd1;
1277 
1278     /* 0x0000200c reg2051 */
1279     struct {
1280         RK_U32 cu64_rdo_inter_var_thd00    : 12;
1281         RK_U32 reserved                    : 4;
1282         RK_U32 cu64_rdo_inter_var_thd01    : 12;
1283         RK_U32 reserved1                   : 4;
1284     } rdo_b64_inter_var_thd0;
1285 
1286     /* 0x00002010 reg2052 */
1287     struct {
1288         RK_U32 cu64_rdo_inter_var_thd10    : 12;
1289         RK_U32 reserved                    : 4;
1290         RK_U32 cu64_rdo_inter_var_thd11    : 12;
1291         RK_U32 reserved1                   : 4;
1292     } rdo_b64_inter_var_thd1;
1293 
1294     /* 0x00002014 reg2053 */
1295     struct {
1296         RK_U32 cu64_rdo_inter_var_thd20    : 12;
1297         RK_U32 reserved                    : 4;
1298         RK_U32 cu64_rdo_inter_var_thd21    : 12;
1299         RK_U32 reserved1                   : 4;
1300     } rdo_b64_inter_var_thd2;
1301 
1302     /* 0x00002018 reg2054 */
1303     struct {
1304         RK_U32 cu64_rdo_inter_var_thd30    : 12;
1305         RK_U32 reserved                    : 4;
1306         RK_U32 cu64_rdo_inter_var_thd31    : 12;
1307         RK_U32 reserved1                   : 4;
1308     } rdo_b64_inter_var_thd3;
1309 
1310     /* 0x0000201c reg2055 */
1311     struct {
1312         RK_U32 cu64_rdo_inter_atf_wgt00    : 8;
1313         RK_U32 cu64_rdo_inter_atf_wgt01    : 8;
1314         RK_U32 cu64_rdo_inter_atf_wgt02    : 8;
1315         RK_U32 reserved                    : 8;
1316     } rdo_b64_inter_atf_wgt0;
1317 
1318     /* 0x00002020 reg2056 */
1319     struct {
1320         RK_U32 cu64_rdo_inter_atf_wgt10    : 8;
1321         RK_U32 cu64_rdo_inter_atf_wgt11    : 8;
1322         RK_U32 cu64_rdo_inter_atf_wgt12    : 8;
1323         RK_U32 reserved                    : 8;
1324     } rdo_b64_inter_atf_wgt1;
1325 
1326     /* 0x00002024 reg2057 */
1327     struct {
1328         RK_U32 cu64_rdo_inter_atf_wgt20    : 8;
1329         RK_U32 cu64_rdo_inter_atf_wgt21    : 8;
1330         RK_U32 cu64_rdo_inter_atf_wgt22    : 8;
1331         RK_U32 reserved                    : 8;
1332     } rdo_b64_inter_atf_wgt2;
1333 
1334     /* 0x00002028 reg2058 */
1335     struct {
1336         RK_U32 cu64_rdo_inter_atf_wgt30    : 8;
1337         RK_U32 cu64_rdo_inter_atf_wgt31    : 8;
1338         RK_U32 cu64_rdo_inter_atf_wgt32    : 8;
1339         RK_U32 reserved                    : 8;
1340     } rdo_b64_inter_atf_wgt3;
1341 
1342     /* 0x0000202c reg2059 */
1343     struct {
1344         RK_U32 cu64_rdo_skip_cime_thd0    : 12;
1345         RK_U32 reserved                   : 4;
1346         RK_U32 cu64_rdo_skip_cime_thd1    : 12;
1347         RK_U32 reserved1                  : 4;
1348     } rdo_b64_skip_cime_thd0;
1349 
1350     /* 0x00002030 reg2060 */
1351     struct {
1352         RK_U32 cu64_rdo_skip_cime_thd2    : 12;
1353         RK_U32 reserved                   : 4;
1354         RK_U32 cu64_rdo_skip_cime_thd3    : 12;
1355         RK_U32 reserved1                  : 4;
1356     } rdo_b64_skip_cime_thd1;
1357 
1358     /* 0x00002034 reg2061 */
1359     struct {
1360         RK_U32 cu64_rdo_skip_var_thd10    : 12;
1361         RK_U32 reserved                   : 4;
1362         RK_U32 cu64_rdo_skip_var_thd11    : 12;
1363         RK_U32 reserved1                  : 4;
1364     } rdo_b64_skip_var_thd0;
1365 
1366     /* 0x00002038 reg2062 */
1367     struct {
1368         RK_U32 cu64_rdo_skip_var_thd20    : 12;
1369         RK_U32 reserved                   : 4;
1370         RK_U32 cu64_rdo_skip_var_thd21    : 12;
1371         RK_U32 reserved1                  : 4;
1372     } rdo_b64_skip_var_thd1;
1373 
1374     /* 0x0000203c reg2063 */
1375     struct {
1376         RK_U32 cu64_rdo_skip_var_thd30    : 12;
1377         RK_U32 reserved                   : 4;
1378         RK_U32 cu64_rdo_skip_var_thd31    : 12;
1379         RK_U32 reserved1                  : 4;
1380     } rdo_b64_skip_var_thd2;
1381 
1382     /* 0x00002040 reg2064 */
1383     struct {
1384         RK_U32 cu64_rdo_skip_var_thd40    : 12;
1385         RK_U32 reserved                   : 4;
1386         RK_U32 cu64_rdo_skip_var_thd41    : 12;
1387         RK_U32 reserved1                  : 4;
1388     } rdo_b64_skip_var_thd3;
1389 
1390     /* 0x00002044 reg2065 */
1391     struct {
1392         RK_U32 cu64_rdo_skip_atf_wgt00    : 8;
1393         RK_U32 cu64_rdo_skip_atf_wgt10    : 8;
1394         RK_U32 cu64_rdo_skip_atf_wgt11    : 8;
1395         RK_U32 cu64_rdo_skip_atf_wgt12    : 8;
1396     } rdo_b64_skip_atf_wgt0;
1397 
1398     /* 0x00002048 reg2066 */
1399     struct {
1400         RK_U32 cu64_rdo_skip_atf_wgt20    : 8;
1401         RK_U32 cu64_rdo_skip_atf_wgt21    : 8;
1402         RK_U32 cu64_rdo_skip_atf_wgt22    : 8;
1403         RK_U32 reserved                   : 8;
1404     } rdo_b64_skip_atf_wgt1;
1405 
1406     /* 0x0000204c reg2067 */
1407     struct {
1408         RK_U32 cu64_rdo_skip_atf_wgt30    : 8;
1409         RK_U32 cu64_rdo_skip_atf_wgt31    : 8;
1410         RK_U32 cu64_rdo_skip_atf_wgt32    : 8;
1411         RK_U32 reserved                   : 8;
1412     } rdo_b64_skip_atf_wgt2;
1413 
1414     /* 0x00002050 reg2068 */
1415     struct {
1416         RK_U32 cu64_rdo_skip_atf_wgt40    : 8;
1417         RK_U32 cu64_rdo_skip_atf_wgt41    : 8;
1418         RK_U32 cu64_rdo_skip_atf_wgt42    : 8;
1419         RK_U32 reserved                   : 8;
1420     } rdo_b64_skip_atf_wgt3;
1421 
1422     /* 0x00002054 reg2069 */
1423     struct {
1424         RK_U32 cu32_rdo_intra_cime_thd0    : 12;
1425         RK_U32 reserved                    : 4;
1426         RK_U32 cu32_rdo_intra_cime_thd1    : 12;
1427         RK_U32 reserved1                   : 4;
1428     } rdo_b32_intra_cime_thd0;
1429 
1430     /* 0x00002058 reg2070 */
1431     struct {
1432         RK_U32 cu32_rdo_intra_cime_thd2    : 12;
1433         RK_U32 reserved                    : 20;
1434     } rdo_b32_intra_cime_thd1;
1435 
1436     /* 0x0000205c reg2071 */
1437     struct {
1438         RK_U32 cu32_rdo_intra_var_thd00    : 12;
1439         RK_U32 reserved                    : 4;
1440         RK_U32 cu32_rdo_intra_var_thd01    : 12;
1441         RK_U32 reserved1                   : 4;
1442     } rdo_b32_intra_var_thd0;
1443 
1444     /* 0x00002060 reg2072 */
1445     struct {
1446         RK_U32 cu32_rdo_intra_var_thd10    : 12;
1447         RK_U32 reserved                    : 4;
1448         RK_U32 cu32_rdo_intra_var_thd11    : 12;
1449         RK_U32 reserved1                   : 4;
1450     } rdo_b32_intra_var_thd1;
1451 
1452     /* 0x00002064 reg2073 */
1453     struct {
1454         RK_U32 cu32_rdo_intra_var_thd20    : 12;
1455         RK_U32 reserved                    : 4;
1456         RK_U32 cu32_rdo_intra_var_thd21    : 12;
1457         RK_U32 reserved1                   : 4;
1458     } rdo_b32_intra_var_thd2;
1459 
1460     /* 0x00002068 reg2074 */
1461     struct {
1462         RK_U32 cu32_rdo_intra_var_thd30    : 12;
1463         RK_U32 reserved                    : 4;
1464         RK_U32 cu32_rdo_intra_var_thd31    : 12;
1465         RK_U32 reserved1                   : 4;
1466     } rdo_b32_intra_var_thd3;
1467 
1468     /* 0x0000206c reg2075 */
1469     struct {
1470         RK_U32 cu32_rdo_intra_atf_wgt00    : 8;
1471         RK_U32 cu32_rdo_intra_atf_wgt01    : 8;
1472         RK_U32 cu32_rdo_intra_atf_wgt02    : 8;
1473         RK_U32 reserved                    : 8;
1474     } rdo_b32_intra_atf_wgt0;
1475 
1476     /* 0x00002070 reg2076 */
1477     struct {
1478         RK_U32 cu32_rdo_intra_atf_wgt10    : 8;
1479         RK_U32 cu32_rdo_intra_atf_wgt11    : 8;
1480         RK_U32 cu32_rdo_intra_atf_wgt12    : 8;
1481         RK_U32 reserved                    : 8;
1482     } rdo_b32_intra_atf_wgt1;
1483 
1484     /* 0x00002074 reg2077 */
1485     struct {
1486         RK_U32 cu32_rdo_intra_atf_wgt20    : 8;
1487         RK_U32 cu32_rdo_intra_atf_wgt21    : 8;
1488         RK_U32 cu32_rdo_intra_atf_wgt22    : 8;
1489         RK_U32 reserved                    : 8;
1490     } rdo_b32_intra_atf_wgt2;
1491 
1492     /* 0x00002078 reg2078 */
1493     struct {
1494         RK_U32 cu32_rdo_intra_atf_wgt30    : 8;
1495         RK_U32 cu32_rdo_intra_atf_wgt31    : 8;
1496         RK_U32 cu32_rdo_intra_atf_wgt32    : 8;
1497         RK_U32 reserved                    : 8;
1498     } rdo_b32_intra_atf_wgt3;
1499 
1500     /* 0x0000207c reg2079 */
1501     struct {
1502         RK_U32 cu32_rdo_inter_cime_thd0    : 12;
1503         RK_U32 reserved                    : 4;
1504         RK_U32 cu32_rdo_inter_cime_thd1    : 12;
1505         RK_U32 reserved1                   : 4;
1506     } rdo_b32_inter_cime_thd0;
1507 
1508     /* 0x00002080 reg2080 */
1509     struct {
1510         RK_U32 cu32_rdo_inter_cime_thd2    : 12;
1511         RK_U32 reserved                    : 20;
1512     } rdo_b32_inter_cime_thd1;
1513 
1514     /* 0x00002084 reg2081 */
1515     struct {
1516         RK_U32 cu32_rdo_inter_var_thd00    : 12;
1517         RK_U32 reserved                    : 4;
1518         RK_U32 cu32_rdo_inter_var_thd01    : 12;
1519         RK_U32 reserved1                   : 4;
1520     } rdo_b32_inter_var_thd0;
1521 
1522     /* 0x00002088 reg2082 */
1523     struct {
1524         RK_U32 cu32_rdo_inter_var_thd10    : 12;
1525         RK_U32 reserved                    : 4;
1526         RK_U32 cu32_rdo_inter_var_thd11    : 12;
1527         RK_U32 reserved1                   : 4;
1528     } rdo_b32_inter_var_thd1;
1529 
1530     /* 0x0000208c reg2083 */
1531     struct {
1532         RK_U32 cu32_rdo_inter_var_thd20    : 12;
1533         RK_U32 reserved                    : 4;
1534         RK_U32 cu32_rdo_inter_var_thd21    : 12;
1535         RK_U32 reserved1                   : 4;
1536     } rdo_b32_inter_var_thd2;
1537 
1538     /* 0x00002090 reg2084 */
1539     struct {
1540         RK_U32 cu32_rdo_inter_var_thd30    : 12;
1541         RK_U32 reserved                    : 4;
1542         RK_U32 cu32_rdo_inter_var_thd31    : 12;
1543         RK_U32 reserved1                   : 4;
1544     } rdo_b32_inter_var_thd3;
1545 
1546     /* 0x00002094 reg2085 */
1547     struct {
1548         RK_U32 cu32_rdo_inter_atf_wgt00    : 8;
1549         RK_U32 cu32_rdo_inter_atf_wgt01    : 8;
1550         RK_U32 cu32_rdo_inter_atf_wgt02    : 8;
1551         RK_U32 reserved                    : 8;
1552     } rdo_b32_inter_atf_wgt0;
1553 
1554     /* 0x00002098 reg2086 */
1555     struct {
1556         RK_U32 cu32_rdo_inter_atf_wgt10    : 8;
1557         RK_U32 cu32_rdo_inter_atf_wgt11    : 8;
1558         RK_U32 cu32_rdo_inter_atf_wgt12    : 8;
1559         RK_U32 reserved                    : 8;
1560     } rdo_b32_inter_atf_wgt1;
1561 
1562     /* 0x0000209c reg2087 */
1563     struct {
1564         RK_U32 cu32_rdo_inter_atf_wgt20    : 8;
1565         RK_U32 cu32_rdo_inter_atf_wgt21    : 8;
1566         RK_U32 cu32_rdo_inter_atf_wgt22    : 8;
1567         RK_U32 reserved                    : 8;
1568     } rdo_b32_inter_atf_wgt2;
1569 
1570     /* 0x000020a0 reg2088 */
1571     struct {
1572         RK_U32 cu32_rdo_inter_atf_wgt30    : 8;
1573         RK_U32 cu32_rdo_inter_atf_wgt31    : 8;
1574         RK_U32 cu32_rdo_inter_atf_wgt32    : 8;
1575         RK_U32 reserved                    : 8;
1576     } rdo_b32_inter_atf_wgt3;
1577 
1578     /* 0x000020a4 reg2089 */
1579     struct {
1580         RK_U32 cu32_rdo_skip_cime_thd0    : 12;
1581         RK_U32 reserved                   : 4;
1582         RK_U32 cu32_rdo_skip_cime_thd1    : 12;
1583         RK_U32 reserved1                  : 4;
1584     } rdo_b32_skip_cime_thd0;
1585 
1586     /* 0x000020a8 reg2090 */
1587     struct {
1588         RK_U32 cu32_rdo_skip_cime_thd2    : 12;
1589         RK_U32 reserved                   : 4;
1590         RK_U32 cu32_rdo_skip_cime_thd3    : 12;
1591         RK_U32 reserved1                  : 4;
1592     } rdo_b32_skip_cime_thd1;
1593 
1594     /* 0x000020ac reg2091 */
1595     struct {
1596         RK_U32 cu32_rdo_skip_var_thd10    : 12;
1597         RK_U32 reserved                   : 4;
1598         RK_U32 cu32_rdo_skip_var_thd11    : 12;
1599         RK_U32 reserved1                  : 4;
1600     } rdo_b32_sskip_var_thd0;
1601 
1602     /* 0x000020b0 reg2092 */
1603     struct {
1604         RK_U32 cu32_rdo_skip_var_thd20    : 12;
1605         RK_U32 reserved                   : 4;
1606         RK_U32 cu32_rdo_skip_var_thd21    : 12;
1607         RK_U32 reserved1                  : 4;
1608     } rdo_b32_sskip_var_thd1;
1609 
1610     /* 0x000020b4 reg2093 */
1611     struct {
1612         RK_U32 cu32_rdo_skip_var_thd30    : 12;
1613         RK_U32 reserved                   : 4;
1614         RK_U32 cu32_rdo_skip_var_thd31    : 12;
1615         RK_U32 reserved1                  : 4;
1616     } rdo_b32_sskip_var_thd2;
1617 
1618     /* 0x000020b8 reg2094 */
1619     struct {
1620         RK_U32 cu32_rdo_skip_var_thd40    : 12;
1621         RK_U32 reserved                   : 4;
1622         RK_U32 cu32_rdo_skip_var_thd41    : 12;
1623         RK_U32 reserved1                  : 4;
1624     } rdo_b32_sskip_var_thd3;
1625 
1626     /* 0x000020bc reg2095 */
1627     struct {
1628         RK_U32 cu32_rdo_skip_atf_wgt00    : 8;
1629         RK_U32 cu32_rdo_skip_atf_wgt10    : 8;
1630         RK_U32 cu32_rdo_skip_atf_wgt11    : 8;
1631         RK_U32 cu32_rdo_skip_atf_wgt12    : 8;
1632     } rdo_b32_skip_atf_wgt0;
1633 
1634     /* 0x000020c0 reg2096 */
1635     struct {
1636         RK_U32 cu32_rdo_skip_atf_wgt20    : 8;
1637         RK_U32 cu32_rdo_skip_atf_wgt21    : 8;
1638         RK_U32 cu32_rdo_skip_atf_wgt22    : 8;
1639         RK_U32 reserved                   : 8;
1640     } rdo_b32_skip_atf_wgt1;
1641 
1642     /* 0x000020c4 reg2097 */
1643     struct {
1644         RK_U32 cu32_rdo_skip_atf_wgt30    : 8;
1645         RK_U32 cu32_rdo_skip_atf_wgt31    : 8;
1646         RK_U32 cu32_rdo_skip_atf_wgt32    : 8;
1647         RK_U32 reserved                   : 8;
1648     } rdo_b32_skip_atf_wgt2;
1649 
1650     /* 0x000020c8 reg2098 */
1651     struct {
1652         RK_U32 cu32_rdo_skip_atf_wgt40    : 8;
1653         RK_U32 cu32_rdo_skip_atf_wgt41    : 8;
1654         RK_U32 cu32_rdo_skip_atf_wgt42    : 8;
1655         RK_U32 reserved                   : 8;
1656     } rdo_b32_skip_atf_wgt3;
1657 
1658     /* 0x000020cc reg2099 */
1659     struct {
1660         RK_U32 atf_rdo_intra_cime_thd0    : 12;
1661         RK_U32 reserved                        : 4;
1662         RK_U32 atf_rdo_intra_cime_thd1    : 12;
1663         RK_U32 reserved1                       : 4;
1664     } rdo_intra_cime_thd0;
1665 
1666     /* 0x000020d0 reg2100 */
1667     struct {
1668         RK_U32 atf_rdo_intra_cime_thd2    : 12;
1669         RK_U32 reserved                        : 20;
1670     } rdo_intra_cime_thd1;
1671 
1672     /* 0x000020d4 reg2101 */
1673     struct {
1674         RK_U32 atf_rdo_intra_var_thd00    : 12;
1675         RK_U32 reserved                        : 4;
1676         RK_U32 atf_rdo_intra_var_thd01    : 12;
1677         RK_U32 reserved1                       : 4;
1678     } rdo_intra_var_thd0;
1679 
1680     /* 0x000020d8 reg2102 */
1681     struct {
1682         RK_U32 atf_rdo_intra_var_thd10    : 12;
1683         RK_U32 reserved                        : 4;
1684         RK_U32 atf_rdo_intra_var_thd11    : 12;
1685         RK_U32 reserved1                       : 4;
1686     } rdo_intra_var_thd1;
1687 
1688     /* 0x000020dc reg2103 */
1689     struct {
1690         RK_U32 atf_rdo_intra_var_thd20    : 12;
1691         RK_U32 reserved                        : 4;
1692         RK_U32 atf_rdo_intra_var_thd21    : 12;
1693         RK_U32 reserved1                       : 4;
1694     } rdo_intra_var_thd2;
1695 
1696     /* 0x000020e0 reg2104 */
1697     struct {
1698         RK_U32 atf_rdo_intra_var_thd30    : 12;
1699         RK_U32 reserved                        : 4;
1700         RK_U32 atf_rdo_intra_var_thd31    : 12;
1701         RK_U32 reserved1                       : 4;
1702     } rdo_intra_var_thd3;
1703 
1704     /* 0x000020e4 reg2105 */
1705     struct {
1706         RK_U32 atf_rdo_intra_wgt00    : 8;
1707         RK_U32 atf_rdo_intra_wgt01    : 8;
1708         RK_U32 atf_rdo_intra_wgt02    : 8;
1709         RK_U32 reserved                    : 8;
1710     } rdo_intra_atf_wgt0;
1711 
1712     /* 0x000020e8 reg2106 */
1713     struct {
1714         RK_U32 atf_rdo_intra_wgt10    : 8;
1715         RK_U32 atf_rdo_intra_wgt11    : 8;
1716         RK_U32 atf_rdo_intra_wgt12    : 8;
1717         RK_U32 reserved                    : 8;
1718     } rdo_intra_atf_wgt1;
1719 
1720     /* 0x000020ec reg2107 */
1721     struct {
1722         RK_U32 atf_rdo_intra_wgt20    : 8;
1723         RK_U32 atf_rdo_intra_wgt21    : 8;
1724         RK_U32 atf_rdo_intra_wgt22    : 8;
1725         RK_U32 reserved                    : 8;
1726     } rdo_intra_atf_wgt2;
1727 
1728     /* 0x000020f0 reg2108 */
1729     struct {
1730         RK_U32 atf_rdo_intra_wgt30    : 8;
1731         RK_U32 atf_rdo_intra_wgt31    : 8;
1732         RK_U32 atf_rdo_intra_wgt32    : 8;
1733         RK_U32 reserved                    : 8;
1734     } rdo_intra_atf_wgt3;
1735 
1736     /* 0x000020f4 reg2109 */
1737     struct {
1738         RK_U32 cu16_rdo_inter_cime_thd0    : 12;
1739         RK_U32 reserved                    : 4;
1740         RK_U32 cu16_rdo_inter_cime_thd1    : 12;
1741         RK_U32 reserved1                   : 4;
1742     } rdo_b16_inter_cime_thd0;
1743 
1744     /* 0x000020f8 reg2110 */
1745     struct {
1746         RK_U32 cu16_rdo_inter_cime_thd2    : 12;
1747         RK_U32 reserved                    : 20;
1748     } rdo_b16_inter_cime_thd1;
1749 
1750     /* 0x000020fc reg2111 */
1751     struct {
1752         RK_U32 cu16_rdo_inter_var_thd00    : 12;
1753         RK_U32 reserved                    : 4;
1754         RK_U32 cu16_rdo_inter_var_thd01    : 12;
1755         RK_U32 reserved1                   : 4;
1756     } rdo_b16_inter_var_thd0;
1757 
1758     /* 0x00002100 reg2112 */
1759     struct {
1760         RK_U32 cu16_rdo_inter_var_thd10    : 12;
1761         RK_U32 reserved                    : 4;
1762         RK_U32 cu16_rdo_inter_var_thd11    : 12;
1763         RK_U32 reserved1                   : 4;
1764     } rdo_b16_inter_var_thd1;
1765 
1766     /* 0x00002104 reg2113 */
1767     struct {
1768         RK_U32 cu16_rdo_inter_var_thd20    : 12;
1769         RK_U32 reserved                    : 4;
1770         RK_U32 cu16_rdo_inter_var_thd21    : 12;
1771         RK_U32 reserved1                   : 4;
1772     } rdo_b16_inter_var_thd2;
1773 
1774     /* 0x00002108 reg2114 */
1775     struct {
1776         RK_U32 cu16_rdo_inter_var_thd30    : 12;
1777         RK_U32 reserved                    : 4;
1778         RK_U32 cu16_rdo_inter_var_thd31    : 12;
1779         RK_U32 reserved1                   : 4;
1780     } rdo_b16_inter_var_thd3;
1781 
1782     /* 0x0000210c reg2115 */
1783     struct {
1784         RK_U32 cu16_rdo_inter_atf_wgt00    : 8;
1785         RK_U32 cu16_rdo_inter_atf_wgt01    : 8;
1786         RK_U32 cu16_rdo_inter_atf_wgt02    : 8;
1787         RK_U32 reserved                    : 8;
1788     } rdo_b16_inter_atf_wgt0;
1789 
1790     /* 0x00002110 reg2116 */
1791     struct {
1792         RK_U32 cu16_rdo_inter_atf_wgt10    : 8;
1793         RK_U32 cu16_rdo_inter_atf_wgt11    : 8;
1794         RK_U32 cu16_rdo_inter_atf_wgt12    : 8;
1795         RK_U32 reserved                    : 8;
1796     } rdo_b16_inter_atf_wgt1;
1797 
1798     /* 0x00002114 reg2117 */
1799     struct {
1800         RK_U32 cu16_rdo_inter_atf_wgt20    : 8;
1801         RK_U32 cu16_rdo_inter_atf_wgt21    : 8;
1802         RK_U32 cu16_rdo_inter_atf_wgt22    : 8;
1803         RK_U32 reserved                    : 8;
1804     } rdo_b16_inter_atf_wgt2;
1805 
1806     /* 0x00002118 reg2118 */
1807     struct {
1808         RK_U32 cu16_rdo_inter_atf_wgt30    : 8;
1809         RK_U32 cu16_rdo_inter_atf_wgt31    : 8;
1810         RK_U32 cu16_rdo_inter_atf_wgt32    : 8;
1811         RK_U32 reserved                    : 8;
1812     } rdo_b16_inter_atf_wgt3;
1813 
1814     /* 0x0000211c reg2119 */
1815     struct {
1816         RK_U32 atf_rdo_skip_cime_thd0    : 12;
1817         RK_U32 reserved                       : 4;
1818         RK_U32 atf_rdo_skip_cime_thd1    : 12;
1819         RK_U32 reserved1                      : 4;
1820     } rdo_skip_cime_thd0;
1821 
1822     /* 0x00002120 reg2120 */
1823     struct {
1824         RK_U32 atf_rdo_skip_cime_thd2    : 12;
1825         RK_U32 reserved                       : 4;
1826         RK_U32 atf_rdo_skip_cime_thd3    : 12;
1827         RK_U32 reserved1                      : 4;
1828     } rdo_skip_cime_thd1;
1829 
1830     /* 0x00002124 reg2121 */
1831     struct {
1832         RK_U32 atf_rdo_skip_var_thd10    : 12;
1833         RK_U32 reserved                       : 4;
1834         RK_U32 atf_rdo_skip_var_thd11    : 12;
1835         RK_U32 reserved1                      : 4;
1836     } rdo_skip_var_thd0;
1837 
1838     /* 0x00002128 reg2122 */
1839     struct {
1840         RK_U32 atf_rdo_skip_var_thd20    : 12;
1841         RK_U32 reserved                       : 4;
1842         RK_U32 atf_rdo_skip_var_thd21    : 12;
1843         RK_U32 reserved1                      : 4;
1844     } rdo_skip_var_thd1;
1845 
1846     /* 0x0000212c reg2123 */
1847     struct {
1848         RK_U32 atf_rdo_skip_var_thd30    : 12;
1849         RK_U32 reserved                       : 4;
1850         RK_U32 atf_rdo_skip_var_thd31    : 12;
1851         RK_U32 reserved1                      : 4;
1852     } rdo_skip_var_thd2;
1853 
1854     /* 0x00002130 reg2124 */
1855     struct {
1856         RK_U32 atf_rdo_skip_var_thd40    : 12;
1857         RK_U32 reserved                       : 4;
1858         RK_U32 atf_rdo_skip_var_thd41    : 12;
1859         RK_U32 reserved1                      : 4;
1860     } rdo_skip_var_thd3;
1861 
1862     /* 0x00002134 reg2125 */
1863     struct {
1864         RK_U32 atf_rdo_skip_atf_wgt00    : 8;
1865         RK_U32 atf_rdo_skip_atf_wgt10    : 8;
1866         RK_U32 atf_rdo_skip_atf_wgt11    : 8;
1867         RK_U32 atf_rdo_skip_atf_wgt12    : 8;
1868     } rdo_skip_atf_wgt0;
1869 
1870     /* 0x00002138 reg2126 */
1871     struct {
1872         RK_U32 atf_rdo_skip_atf_wgt20    : 8;
1873         RK_U32 atf_rdo_skip_atf_wgt21    : 8;
1874         RK_U32 atf_rdo_skip_atf_wgt22    : 8;
1875         RK_U32 reserved                       : 8;
1876     } rdo_skip_atf_wgt1;
1877 
1878     /* 0x0000213c reg2127 */
1879     struct {
1880         RK_U32 atf_rdo_skip_atf_wgt30    : 8;
1881         RK_U32 atf_rdo_skip_atf_wgt31    : 8;
1882         RK_U32 atf_rdo_skip_atf_wgt32    : 8;
1883         RK_U32 reserved                       : 8;
1884     } rdo_skip_atf_wgt2;
1885 
1886     /* 0x00002140 reg2128 */
1887     struct {
1888         RK_U32 atf_rdo_skip_atf_wgt40    : 8;
1889         RK_U32 atf_rdo_skip_atf_wgt41    : 8;
1890         RK_U32 atf_rdo_skip_atf_wgt42    : 8;
1891         RK_U32 reserved                       : 8;
1892     } rdo_skip_atf_wgt3;
1893 
1894     /* 0x00002144 reg2129 */
1895     struct {
1896         RK_U32 cu8_rdo_intra_cime_thd0    : 12;
1897         RK_U32 reserved                   : 4;
1898         RK_U32 cu8_rdo_intra_cime_thd1    : 12;
1899         RK_U32 reserved1                  : 4;
1900     } rdo_b8_intra_cime_thd0;
1901 
1902     /* 0x00002148 reg2130 */
1903     struct {
1904         RK_U32 cu8_rdo_intra_cime_thd2    : 12;
1905         RK_U32 reserved                   : 20;
1906     } rdo_b8_intra_cime_thd1;
1907 
1908     /* 0x0000214c reg2131 */
1909     struct {
1910         RK_U32 cu8_rdo_intra_var_thd00    : 12;
1911         RK_U32 reserved                   : 4;
1912         RK_U32 cu8_rdo_intra_var_thd01    : 12;
1913         RK_U32 reserved1                  : 4;
1914     } rdo_b8_intra_var_thd0;
1915 
1916     /* 0x00002150 reg2132 */
1917     struct {
1918         RK_U32 cu8_rdo_intra_var_thd10    : 12;
1919         RK_U32 reserved                   : 4;
1920         RK_U32 cu8_rdo_intra_var_thd11    : 12;
1921         RK_U32 reserved1                  : 4;
1922     } rdo_b8_intra_var_thd1;
1923 
1924     /* 0x00002154 reg2133 */
1925     struct {
1926         RK_U32 cu8_rdo_intra_var_thd20    : 12;
1927         RK_U32 reserved                   : 4;
1928         RK_U32 cu8_rdo_intra_var_thd21    : 12;
1929         RK_U32 reserved1                  : 4;
1930     } rdo_b8_intra_var_thd2;
1931 
1932     /* 0x00002158 reg2134 */
1933     struct {
1934         RK_U32 cu8_rdo_intra_var_thd30    : 12;
1935         RK_U32 reserved                   : 4;
1936         RK_U32 cu8_rdo_intra_var_thd31    : 12;
1937         RK_U32 reserved1                  : 4;
1938     } rdo_b8_intra_var_thd3;
1939 
1940     /* 0x0000215c reg2135 */
1941     struct {
1942         RK_U32 cu8_rdo_intra_atf_wgt00    : 8;
1943         RK_U32 cu8_rdo_intra_atf_wgt01    : 8;
1944         RK_U32 cu8_rdo_intra_atf_wgt02    : 8;
1945         RK_U32 reserved                   : 8;
1946     } rdo_b8_intra_atf_wgt0;
1947 
1948     /* 0x00002160 reg2136 */
1949     struct {
1950         RK_U32 cu8_rdo_intra_atf_wgt10    : 8;
1951         RK_U32 cu8_rdo_intra_atf_wgt11    : 8;
1952         RK_U32 cu8_rdo_intra_atf_wgt12    : 8;
1953         RK_U32 reserved                   : 8;
1954     } rdo_b8_intra_atf_wgt1;
1955 
1956     /* 0x00002164 reg2137 */
1957     struct {
1958         RK_U32 cu8_rdo_intra_atf_wgt20    : 8;
1959         RK_U32 cu8_rdo_intra_atf_wgt21    : 8;
1960         RK_U32 cu8_rdo_intra_atf_wgt22    : 8;
1961         RK_U32 reserved                   : 8;
1962     } rdo_b8_intra_atf_wgt2;
1963 
1964     /* 0x00002168 reg2138 */
1965     struct {
1966         RK_U32 cu8_rdo_intra_atf_wgt30    : 8;
1967         RK_U32 cu8_rdo_intra_atf_wgt31    : 8;
1968         RK_U32 cu8_rdo_intra_atf_wgt32    : 8;
1969         RK_U32 reserved                   : 8;
1970     } rdo_b8_intra_atf_wgt3;
1971 
1972     /* 0x0000216c reg2139 */
1973     struct {
1974         RK_U32 cu8_rdo_inter_cime_thd0    : 12;
1975         RK_U32 reserved                   : 4;
1976         RK_U32 cu8_rdo_inter_cime_thd1    : 12;
1977         RK_U32 reserved1                  : 4;
1978     } rdo_b8_inter_cime_thd0;
1979 
1980     /* 0x00002170 reg2140 */
1981     struct {
1982         RK_U32 cu8_rdo_inter_cime_thd2    : 12;
1983         RK_U32 reserved                   : 20;
1984     } rdo_b8_inter_cime_thd1;
1985 
1986     /* 0x00002174 reg2141 */
1987     struct {
1988         RK_U32 cu8_rdo_inter_var_thd00    : 12;
1989         RK_U32 reserved                   : 4;
1990         RK_U32 cu8_rdo_inter_var_thd01    : 12;
1991         RK_U32 reserved1                  : 4;
1992     } rdo_b8_inter_var_thd0;
1993 
1994     /* 0x00002178 reg2142 */
1995     struct {
1996         RK_U32 cu8_rdo_inter_var_thd10    : 12;
1997         RK_U32 reserved                   : 4;
1998         RK_U32 cu8_rdo_inter_var_thd11    : 12;
1999         RK_U32 reserved1                  : 4;
2000     } rdo_b8_inter_var_thd1;
2001 
2002     /* 0x0000217c reg2143 */
2003     struct {
2004         RK_U32 cu8_rdo_inter_var_thd20    : 12;
2005         RK_U32 reserved                   : 4;
2006         RK_U32 cu8_rdo_inter_var_thd21    : 12;
2007         RK_U32 reserved1                  : 4;
2008     } rdo_b8_inter_var_thd2;
2009 
2010     /* 0x00002180 reg2144 */
2011     struct {
2012         RK_U32 cu8_rdo_inter_var_thd30    : 12;
2013         RK_U32 reserved                   : 4;
2014         RK_U32 cu8_rdo_inter_var_thd31    : 12;
2015         RK_U32 reserved1                  : 4;
2016     } rdo_b8_inter_var_thd3;
2017 
2018     /* 0x00002184 reg2145 */
2019     struct {
2020         RK_U32 cu8_rdo_inter_atf_wgt00    : 8;
2021         RK_U32 cu8_rdo_inter_atf_wgt01    : 8;
2022         RK_U32 cu8_rdo_inter_atf_wgt02    : 8;
2023         RK_U32 reserved                   : 8;
2024     } rdo_b8_inter_atf_wgt0;
2025 
2026     /* 0x00002188 reg2146 */
2027     struct {
2028         RK_U32 cu8_rdo_inter_atf_wgt10    : 8;
2029         RK_U32 cu8_rdo_inter_atf_wgt11    : 8;
2030         RK_U32 cu8_rdo_inter_atf_wgt12    : 8;
2031         RK_U32 reserved                   : 8;
2032     } rdo_b8_inter_atf_wgt1;
2033 
2034     /* 0x0000218c reg2147 */
2035     struct {
2036         RK_U32 cu8_rdo_inter_atf_wgt20    : 8;
2037         RK_U32 cu8_rdo_inter_atf_wgt21    : 8;
2038         RK_U32 cu8_rdo_inter_atf_wgt22    : 8;
2039         RK_U32 reserved                   : 8;
2040     } rdo_b8_inter_atf_wgt2;
2041 
2042     /* 0x00002190 reg2148 */
2043     struct {
2044         RK_U32 cu8_rdo_inter_atf_wgt30    : 8;
2045         RK_U32 cu8_rdo_inter_atf_wgt31    : 8;
2046         RK_U32 cu8_rdo_inter_atf_wgt32    : 8;
2047         RK_U32 reserved                   : 8;
2048     } rdo_b8_inter_atf_wgt3;
2049 
2050     /* 0x00002194 reg2149 */
2051     struct {
2052         RK_U32 cu8_rdo_skip_cime_thd0    : 12;
2053         RK_U32 reserved                  : 4;
2054         RK_U32 cu8_rdo_skip_cime_thd1    : 12;
2055         RK_U32 reserved1                 : 4;
2056     } rdo_b8_skip_cime_thd0;
2057 
2058     /* 0x00002198 reg2150 */
2059     struct {
2060         RK_U32 cu8_rdo_skip_cime_thd2    : 12;
2061         RK_U32 reserved                  : 4;
2062         RK_U32 cu8_rdo_skip_cime_thd3    : 12;
2063         RK_U32 reserved1                 : 4;
2064     } rdo_b8_skip_cime_thd1;
2065 
2066     /* 0x0000219c reg2151 */
2067     struct {
2068         RK_U32 cu8_rdo_skip_var_thd10    : 12;
2069         RK_U32 reserved                  : 4;
2070         RK_U32 cu8_rdo_skip_var_thd11    : 12;
2071         RK_U32 reserved1                 : 4;
2072     } rdo_b8_skip_var_thd0;
2073 
2074     /* 0x000021a0 reg2152 */
2075     struct {
2076         RK_U32 cu8_rdo_skip_var_thd20    : 12;
2077         RK_U32 reserved                  : 4;
2078         RK_U32 cu8_rdo_skip_var_thd21    : 12;
2079         RK_U32 reserved1                 : 4;
2080     } rdo_b8_skip_var_thd1;
2081 
2082     /* 0x000021a4 reg2153 */
2083     struct {
2084         RK_U32 cu8_rdo_skip_var_thd30    : 12;
2085         RK_U32 reserved                  : 4;
2086         RK_U32 cu8_rdo_skip_var_thd31    : 12;
2087         RK_U32 reserved1                 : 4;
2088     } rdo_b8_skip_var_thd2;
2089 
2090     /* 0x000021a8 reg2154 */
2091     struct {
2092         RK_U32 cu8_rdo_skip_var_thd40    : 12;
2093         RK_U32 reserved                  : 4;
2094         RK_U32 cu8_rdo_skip_var_thd41    : 12;
2095         RK_U32 reserved1                 : 4;
2096     } rdo_b8_skip_var_thd3;
2097 
2098     /* 0x000021ac reg2155 */
2099     struct {
2100         RK_U32 cu8_rdo_skip_atf_wgt00    : 8;
2101         RK_U32 cu8_rdo_skip_atf_wgt10    : 8;
2102         RK_U32 cu8_rdo_skip_atf_wgt11    : 8;
2103         RK_U32 cu8_rdo_skip_atf_wgt12    : 8;
2104     } rdo_b8_skip_atf_wgt0;
2105 
2106     /* 0x000021b0 reg2156 */
2107     struct {
2108         RK_U32 cu8_rdo_skip_atf_wgt20    : 8;
2109         RK_U32 cu8_rdo_skip_atf_wgt21    : 8;
2110         RK_U32 cu8_rdo_skip_atf_wgt22    : 8;
2111         RK_U32 reserved                  : 8;
2112     } rdo_b8_skip_atf_wgt1;
2113 
2114     /* 0x000021b4 reg2157 */
2115     struct {
2116         RK_U32 cu8_rdo_skip_atf_wgt30    : 8;
2117         RK_U32 cu8_rdo_skip_atf_wgt31    : 8;
2118         RK_U32 cu8_rdo_skip_atf_wgt32    : 8;
2119         RK_U32 reserved                  : 8;
2120     } rdo_b8_skip_atf_wgt2;
2121 
2122     /* 0x000021b8 reg2158 */
2123     struct {
2124         RK_U32 cu8_rdo_skip_atf_wgt40    : 8;
2125         RK_U32 cu8_rdo_skip_atf_wgt41    : 8;
2126         RK_U32 cu8_rdo_skip_atf_wgt42    : 8;
2127         RK_U32 reserved                  : 8;
2128     } rdo_b8_skip_atf_wgt3;
2129 
2130     /* 0x000021bc reg2159 */
2131     struct {
2132         RK_U32 rdo_segment_cu64_th0    : 12;
2133         RK_U32 reserved                : 4;
2134         RK_U32 rdo_segment_cu64_th1    : 12;
2135         RK_U32 reserved1               : 4;
2136     } rdo_segment_b64_thd0;
2137 
2138     /* 0x000021c0 reg2160 */
2139     struct {
2140         RK_U32 rdo_segment_cu64_th2           : 12;
2141         RK_U32 reserved                       : 4;
2142         RK_U32 rdo_segment_cu64_th3           : 4;
2143         RK_U32 rdo_segment_cu64_th4           : 4;
2144         RK_U32 rdo_segment_cu64_th5_minus1    : 4;
2145         RK_U32 rdo_segment_cu64_th6_minus1    : 4;
2146     } rdo_segment_b64_thd1;
2147 
2148     /* 0x000021c4 reg2161 */
2149     struct {
2150         RK_U32 rdo_segment_cu32_th0    : 12;
2151         RK_U32 reserved                : 4;
2152         RK_U32 rdo_segment_cu32_th1    : 12;
2153         RK_U32 reserved1               : 4;
2154     } rdo_segment_b32_thd0;
2155 
2156     /* 0x000021c8 reg2162 */
2157     struct {
2158         RK_U32 rdo_segment_cu32_th2           : 12;
2159         RK_U32 reserved                       : 4;
2160         RK_U32 rdo_segment_cu32_th3           : 2;
2161         RK_U32 reserved1                      : 2;
2162         RK_U32 rdo_segment_cu32_th4           : 2;
2163         RK_U32 reserved2                      : 2;
2164         RK_U32 rdo_segment_cu32_th5_minus1    : 2;
2165         RK_U32 reserved3                      : 2;
2166         RK_U32 rdo_segment_cu32_th6_minus1    : 2;
2167         RK_U32 reserved4                      : 2;
2168     } rdo_segment_b32_thd1;
2169 
2170     /* 0x000021cc reg2163 */
2171     struct {
2172         RK_U32 rdo_segment_cu64_multi    : 8;
2173         RK_U32 rdo_segment_cu32_multi    : 8;
2174         RK_U32 rdo_smear_cu16_multi      : 8;
2175         RK_U32 reserved                  : 8;
2176     } rdo_segment_multi;
2177 
2178     /* 0x000021d0 reg2164 */
2179     struct {
2180         RK_U32 rdo_smear_cu16_cime_sad_th0    : 12;
2181         RK_U32 reserved                       : 4;
2182         RK_U32 rdo_smear_cu16_cime_sad_th1    : 12;
2183         RK_U32 reserved1                      : 4;
2184     } rdo_b16_smear_thd0;
2185 
2186     /* 0x000021d4 reg2165 */
2187     struct {
2188         RK_U32 rdo_smear_cu16_cime_sad_th2    : 12;
2189         RK_U32 reserved                       : 4;
2190         RK_U32 rdo_smear_cu16_cime_sad_th3    : 12;
2191         RK_U32 reserved1                      : 4;
2192     } rdo_b16_smear_thd1;
2193 
2194     /* 0x000021d8 reg2166 */
2195     struct {
2196         RK_U32 pre_intra32_cst_var_th00    : 12;
2197         RK_U32 reserved                    : 4;
2198         RK_U32 pre_intra32_cst_var_th01    : 12;
2199         RK_U32 reserved1                   : 1;
2200         RK_U32 pre_intra32_mode_th         : 3;
2201     } preintra_b32_cst_var_thd;
2202 
2203     /* 0x000021dc reg2167 */
2204     struct {
2205         RK_U32 pre_intra32_cst_wgt00    : 8;
2206         RK_U32 reserved                 : 8;
2207         RK_U32 pre_intra32_cst_wgt01    : 8;
2208         RK_U32 reserved1                : 8;
2209     } preintra_b32_cst_wgt;
2210 
2211     /* 0x000021e0 reg2168 */
2212     struct {
2213         RK_U32 pre_intra16_cst_var_th00    : 12;
2214         RK_U32 reserved                    : 4;
2215         RK_U32 pre_intra16_cst_var_th01    : 12;
2216         RK_U32 reserved1                   : 1;
2217         RK_U32 pre_intra16_mode_th         : 3;
2218     } preintra_b16_cst_var_thd;
2219 
2220     /* 0x000021e4 reg2169 */
2221     struct {
2222         RK_U32 pre_intra16_cst_wgt00    : 8;
2223         RK_U32 reserved                 : 8;
2224         RK_U32 pre_intra16_cst_wgt01    : 8;
2225         RK_U32 reserved1                : 8;
2226     } preintra_b16_cst_wgt;
2227 } Vepu580RdoCfg;
2228 
2229 /* class: scaling list  */
2230 /* 0x00002200 reg2200 - 0x00003084 reg3105*/
2231 typedef struct Vepu580SclCfg_t {
2232     /* 0x00002200 */
2233     RK_U16  intra8_y[64];
2234     RK_U16  intra8_u[64];
2235     RK_U16  intra8_v[64];
2236     RK_U16  inter8_y[64];
2237     RK_U16  inter8_u[64];
2238     RK_U16  inter8_v[64];
2239     /* 0x00002500 */
2240     RK_U32  q_iq_16_32[480];
2241     /* 0x00002c80 */
2242     RK_U32  q_dc_y16;
2243     RK_U32  q_dc_u16;
2244     RK_U32  q_dc_v16;
2245     RK_U32  q_dc_v32;
2246     /* 0x00002c90 */
2247     RK_U32  iq_dc_0;
2248     RK_U32  iq_dc_1;
2249     /* 0x00002c98 */
2250     RK_U32  scal_clk_sel;
2251 } Vepu580SclCfg;
2252 
2253 /* class: osd */
2254 /* 0x00003000 reg3072 - 0x00003084 reg3105*/
2255 typedef struct Vepu580Osd_t {
2256     /* 0x00003000 reg3072 */
2257     struct {
2258         RK_U32 osd_lu_inv_en     : 8;
2259         RK_U32 osd_ch_inv_en     : 8;
2260         RK_U32 osd_lu_inv_msk    : 8;
2261         RK_U32 osd_ch_inv_msk    : 8;
2262     } osd_inv_en;
2263 
2264     /* 0x00003004 reg3073 */
2265     struct {
2266         RK_U32 osd_ithd_r0    : 4;
2267         RK_U32 osd_ithd_r1    : 4;
2268         RK_U32 osd_ithd_r2    : 4;
2269         RK_U32 osd_ithd_r3    : 4;
2270         RK_U32 osd_ithd_r4    : 4;
2271         RK_U32 osd_ithd_r5    : 4;
2272         RK_U32 osd_ithd_r6    : 4;
2273         RK_U32 osd_ithd_r7    : 4;
2274     } osd_inv_thd;
2275 
2276     /* 0x00003008 reg3074 */
2277     struct {
2278         RK_U32 osd_en         : 8;
2279         RK_U32 osd_itype      : 8;
2280         RK_U32 osd_plt_cks    : 1;
2281         RK_U32 osd_plt_typ    : 1;
2282         RK_U32 reserved       : 14;
2283     } osd_cfg;
2284 
2285     /* 0x300c */
2286     RK_U32 reserved_3075;
2287 
2288     /* 0x00003010 reg3076 - 0x0000304c reg3091*/
2289     OSD_POS_NEW osd_pos[8];
2290 
2291     /* 0x00003050 reg3092 - 0x0000306c reg3099 */
2292     RK_U32 osd_addr[8];
2293 
2294     /* 0x3070 - 0x307c */
2295     RK_U32 reserved3100_3103[4];
2296 
2297     /* 0x03080-0x347c reg3104-reg3360 */
2298     RK_U32 plt[256];
2299 } Vepu580Osd;
2300 
2301 // /* class: osd_plt 255 */
2302 // /* 0x0000347c reg3359 */
2303 // typedef struct Vepu580Section6_t {
2304 //     /* 0x0000347c reg3359 */
2305 //     struct {
2306 //         RK_U32 y        : 8;
2307 //         RK_U32 u        : 8;
2308 //         RK_U32 v        : 8;
2309 //         RK_U32 alpha    : 8;
2310 //     } osd_plt255;
2311 // } vepu580section6;
2312 
2313 /* class: st */
2314 /* 0x00004000 reg4096 - 0x000042cc reg4275 */
2315 typedef struct Vepu580Status_t {
2316     /* 0x00004000 reg4096 */
2317     RK_U32 bs_lgth_l32;
2318 
2319     /* 0x00004004 reg4097 */
2320     struct {
2321         RK_U32 bs_lgth_h8    : 8;
2322         RK_U32 reserved      : 8;
2323         RK_U32 sse_l16       : 16;
2324     } st_sse_bsl;
2325 
2326     /* 0x00004008 reg4098 */
2327     RK_U32 sse_h32;
2328 
2329     /* 0x0000400c reg4099 */
2330     RK_U32 qp_sum;
2331 
2332     /* 0x00004010 reg4100 */
2333     struct {
2334         RK_U32 sao_cnum    : 16;
2335         RK_U32 sao_ynum    : 16;
2336     } st_sao;
2337 
2338     /* 0x00004014 reg4101 */
2339     RK_U32 rdo_head_bits;
2340 
2341     /* 0x00004018 reg4102 */
2342     struct {
2343         RK_U32 rdo_head_bits_h8    : 8;
2344         RK_U32 reserved            : 8;
2345         RK_U32 rdo_res_bits_l16    : 16;
2346     } st_head_res_bl;
2347 
2348     /* 0x0000401c reg4103 */
2349     RK_U32 rdo_res_bits_h24;
2350 
2351     /* 0x00004020 reg4104 */
2352     struct {
2353         RK_U32 st_enc      : 2;
2354         RK_U32 st_sclr     : 1;
2355         RK_U32 reserved    : 29;
2356     } st_enc;
2357 
2358     /* 0x00004024 reg4105 */
2359     struct {
2360         RK_U32 fnum_cfg_done    : 8;
2361         RK_U32 fnum_cfg         : 8;
2362         RK_U32 fnum_int         : 8;
2363         RK_U32 fnum_enc_done    : 8;
2364     } st_lkt;
2365 
2366     /* 0x00004028 reg4106 */
2367     RK_U32 node_addr;
2368 
2369     /* 0x0000402c reg4107 */
2370     struct {
2371         RK_U32 bsbw_ovfl    : 1;
2372         RK_U32 reserved     : 2;
2373         RK_U32 bsbw_addr    : 28;
2374         RK_U32 reserved1    : 1;
2375     } st_bsb;
2376 
2377     /* 0x00004030 reg4108 */
2378     struct {
2379         RK_U32 axib_idl     : 8;
2380         RK_U32 axib_ovfl    : 8;
2381         RK_U32 axib_err     : 8;
2382         RK_U32 axir_err     : 7;
2383         RK_U32 reserved     : 1;
2384     } st_bus;
2385 
2386     /* 0x00004034 reg4109 */
2387     struct {
2388         RK_U32 sli_num     : 6;
2389         RK_U32 reserved    : 26;
2390     } st_snum;
2391 
2392     /* 0x00004038 reg4110 */
2393     struct {
2394         RK_U32 sli_len     : 25;
2395         RK_U32 reserved    : 7;
2396     } st_slen;
2397 
2398     /* 0x403c - 0x40fc */
2399     RK_U32 reserved4111_4159[49];
2400 
2401     /* 0x00004100 reg4160 */
2402     struct {
2403         RK_U32 pnum_p64    : 17;
2404         RK_U32 reserved    : 15;
2405     } st_pnum_p64;
2406 
2407     /* 0x00004104 reg4161 */
2408     struct {
2409         RK_U32 pnum_p32    : 19;
2410         RK_U32 reserved    : 13;
2411     } st_pnum_p32;
2412 
2413     /* 0x00004108 reg4162 */
2414     struct {
2415         RK_U32 pnum_p16    : 21;
2416         RK_U32 reserved    : 11;
2417     } st_pnum_p16;
2418 
2419     /* 0x0000410c reg4163 */
2420     struct {
2421         RK_U32 pnum_p8     : 23;
2422         RK_U32 reserved    : 9;
2423     } st_pnum_p8;
2424 
2425     /* 0x00004110 reg4164 */
2426     struct {
2427         RK_U32 pnum_i32    : 19;
2428         RK_U32 reserved    : 13;
2429     } st_pnum_i32;
2430 
2431     /* 0x00004114 reg4165 */
2432     struct {
2433         RK_U32 pnum_i16    : 21;
2434         RK_U32 reserved    : 11;
2435     } st_pnum_i16;
2436 
2437     /* 0x00004118 reg4166 */
2438     struct {
2439         RK_U32 pnum_i8     : 23;
2440         RK_U32 reserved    : 9;
2441     } st_pnum_i8;
2442 
2443     /* 0x0000411c reg4167 */
2444     struct {
2445         RK_U32 pnum_i4     : 23;
2446         RK_U32 reserved    : 9;
2447     } st_pnum_i4;
2448 
2449     /* 0x00004120 reg4168 */
2450     RK_U32 madp;
2451 
2452     /* 0x00004124 reg4169 */
2453     struct {
2454         RK_U32 num_ctu     : 21;
2455         RK_U32 reserved    : 11;
2456     } st_bnum_cme;
2457 
2458     /* 0x00004128 reg4170 */
2459     RK_U32 madi;
2460 
2461     /* 0x0000412c reg4171 */
2462     struct {
2463         RK_U32 num_b16     : 23;
2464         RK_U32 reserved    : 9;
2465     } st_bnum_b16;
2466 
2467     /* 0x00004130 reg4172 */
2468     RK_U32 num_madi_max_b16;
2469 
2470     /* 0x00004134 reg4173 */
2471     RK_U32 md_sad_b16num0;
2472 
2473     /* 0x00004138 reg4174 */
2474     RK_U32 md_sad_b16num1;
2475 
2476     /* 0x0000413c reg4175 */
2477     RK_U32 md_sad_b16num2;
2478 
2479     /* 0x00004140 reg4176 */
2480     RK_U32 md_sad_b16num3;
2481 
2482     /* 0x00004144 reg4177 */
2483     RK_U32 madi_b16num0;
2484 
2485     /* 0x00004148 reg4178 */
2486     RK_U32 madi_b16num1;
2487 
2488     /* 0x0000414c reg4179 */
2489     RK_U32 madi_b16num2;
2490 
2491     /* 0x00004150 reg4180 */
2492     RK_U32 madi_b16num3;
2493 
2494     /* 0x4154 - 0x41fc */
2495     RK_U32 reserved4181_4223[43];
2496 
2497     /* 0x00004200 reg4224 - 0x000042cc reg4275 */
2498     // b8num_qp0-51
2499     /*
2500      * RK_U32 b8num_qp0    : 22;
2501      * RK_U32 reserved     : 10;
2502      */
2503     RK_U32 st_b8_qp[52];
2504 } Vepu580Status;
2505 
2506 /* class: dbg/st/axipn */
2507 /* 0x00005000 reg5120 - 0x00005354 reg5333*/
2508 typedef struct Vepu580Dbg_t {
2509     /* 0x00005000 reg5120 */
2510     struct {
2511         RK_U32 pp_tout      : 1;
2512         RK_U32 cme_tout     : 1;
2513         RK_U32 swn_tout     : 1;
2514         RK_U32 rme_tout     : 1;
2515         RK_U32 fme_tout     : 1;
2516         RK_U32 rdo_tout     : 1;
2517         RK_U32 lpf_tout     : 1;
2518         RK_U32 etpy_tout    : 1;
2519         RK_U32 frm_tout     : 1;
2520         RK_U32 reserved     : 23;
2521     } st_wdg;
2522 
2523     /* 0x00005004 reg5121 */
2524     struct {
2525         RK_U32 pp_wrk      : 1;
2526         RK_U32 cme_wrk     : 1;
2527         RK_U32 swn_wrk     : 1;
2528         RK_U32 rme_wrk     : 1;
2529         RK_U32 fme_wrk     : 1;
2530         RK_U32 rdo_wrk     : 1;
2531         RK_U32 lpf_wrk     : 1;
2532         RK_U32 etpy_wrk    : 1;
2533         RK_U32 frm_wrk     : 1;
2534         RK_U32 reserved    : 23;
2535     } st_ppl;
2536 
2537     /* 0x00005008 reg5122 */
2538     struct {
2539         RK_U32 pp_pos_x    : 16;
2540         RK_U32 pp_pos_y    : 16;
2541     } st_ppl_pos_pp;
2542 
2543     /* 0x0000500c reg5123 */
2544     struct {
2545         RK_U32 cme_pos_x    : 16;
2546         RK_U32 cme_pos_y    : 16;
2547     } st_ppl_pos_cme;
2548 
2549     /* 0x00005010 reg5124 */
2550     struct {
2551         RK_U32 swin_pos_x    : 16;
2552         RK_U32 swin_pos_y    : 16;
2553     } st_ppl_pos_swin;
2554 
2555     /* 0x00005014 reg5125 */
2556     struct {
2557         RK_U32 rme_pos_x    : 16;
2558         RK_U32 rme_pos_y    : 16;
2559     } st_ppl_pos_rme;
2560 
2561     /* 0x00005018 reg5126 */
2562     struct {
2563         RK_U32 fme_pos_x    : 16;
2564         RK_U32 fme_pos_y    : 16;
2565     } st_ppl_pos_fme;
2566 
2567     /* 0x0000501c reg5127 */
2568     struct {
2569         RK_U32 rdo_pos_x    : 16;
2570         RK_U32 rdo_pos_y    : 16;
2571     } st_ppl_pos_rdo;
2572 
2573     /* 0x00005020 reg5128 */
2574     struct {
2575         RK_U32 lpf_pos_x    : 16;
2576         RK_U32 lpf_pos_y    : 16;
2577     } st_ppl_pos_lpf;
2578 
2579     /* 0x00005024 reg5129 */
2580     struct {
2581         RK_U32 etpy_pos_x    : 16;
2582         RK_U32 etpy_pos_y    : 16;
2583     } st_ppl_pos_etpy;
2584 
2585     /* 0x00005028 reg5130 */
2586     struct {
2587         RK_U32 sli_num     : 15;
2588         RK_U32 reserved    : 17;
2589     } st_sli_num;
2590 
2591     /* 0x0000502c reg5131 */
2592     struct {
2593         RK_U32 lkt_err     : 3;
2594         RK_U32 reserved    : 29;
2595     } st_lkt_err;
2596 
2597     /* 0x5030 - 0x50fc */
2598     RK_U32 reserved5132_5183[52];
2599 
2600     /* 0x00005100 reg5184 */
2601     struct {
2602         RK_U32 empty_oafifo        : 1;
2603         RK_U32 full_cmd_oafifo     : 1;
2604         RK_U32 full_data_oafifo    : 1;
2605         RK_U32 empty_iafifo        : 1;
2606         RK_U32 full_cmd_iafifo     : 1;
2607         RK_U32 full_info_iafifo    : 1;
2608         RK_U32 fbd_brq_st          : 4;
2609         RK_U32 fbd_hdr_vld         : 1;
2610         RK_U32 fbd_bmng_end        : 1;
2611         RK_U32 nfbd_req_st         : 4;
2612         RK_U32 acc_axi_cmd         : 8;
2613         RK_U32 reserved            : 8;
2614     } dbg_pp_st;
2615 
2616     /* 0x00005104 reg5185 */
2617     struct {
2618         RK_U32 cur_state_cime    : 2;
2619         RK_U32 cur_state_ds      : 3;
2620         RK_U32 cur_state_ref     : 2;
2621         RK_U32 cur_state_cst     : 2;
2622         RK_U32 reserved          : 23;
2623     } dbg_cime_st;
2624 
2625     /* 0x00005108 reg5186 */
2626     RK_U32 swin_dbg_inf;
2627 
2628     /* 0x0000510c reg5187 */
2629     struct {
2630         RK_U32 bbrq_cmps_left_len2    : 1;
2631         RK_U32 bbrq_cmps_left_len1    : 1;
2632         RK_U32 cmps_left_len0         : 1;
2633         RK_U32 bbrq_rdy2              : 1;
2634         RK_U32 dcps_vld2              : 1;
2635         RK_U32 bbrq_rdy1              : 1;
2636         RK_U32 dcps_vld1              : 1;
2637         RK_U32 bbrq_rdy0              : 1;
2638         RK_U32 dcps_vld0              : 1;
2639         RK_U32 hb_rdy2                : 1;
2640         RK_U32 bbrq_vld2              : 1;
2641         RK_U32 hb_rdy1                : 1;
2642         RK_U32 bbrq_vld1              : 1;
2643         RK_U32 hb_rdy0                : 1;
2644         RK_U32 bbrq_vld0              : 1;
2645         RK_U32 idle_msb2              : 1;
2646         RK_U32 idle_msb1              : 1;
2647         RK_U32 idle_msb0              : 1;
2648         RK_U32 cur_state_dcps         : 1;
2649         RK_U32 cur_state_bbrq         : 1;
2650         RK_U32 cur_state_hb           : 1;
2651         RK_U32 cke_bbrq_dcps          : 1;
2652         RK_U32 cke_dcps               : 1;
2653         RK_U32 cke_bbrq               : 1;
2654         RK_U32 rdy_lwcd_rsp           : 1;
2655         RK_U32 vld_lwcd_rsp           : 1;
2656         RK_U32 rdy_lwcd_req           : 1;
2657         RK_U32 vld_lwcd_req           : 1;
2658         RK_U32 rdy_lwrsp              : 1;
2659         RK_U32 vld_lwrsp              : 1;
2660         RK_U32 rdy_lwreq              : 1;
2661         RK_U32 vld_lwreq              : 1;
2662     } dbg_fbd_hhit0;
2663 
2664     /* 0x5110 */
2665     RK_U32 reserved_5188;
2666 
2667     /* 0x00005114 reg5189 */
2668     struct {
2669         RK_U32 mscnt_clr    : 1;
2670         RK_U32 reserved     : 31;
2671     } dbg_cach_clr;
2672 
2673     /* 0x00005118 reg5190 */
2674     RK_U32 l1_mis;
2675 
2676     /* 0x0000511c reg5191 */
2677     RK_U32 l2_mis;
2678 
2679     /* 0x00005120 reg5192 */
2680     RK_U32 rdo_st;
2681 
2682     /* 0x00005124 reg5193 */
2683     RK_U32 rdo_if;
2684 
2685     /* 0x00005128 reg5194 */
2686     struct {
2687         RK_U32 sh_st_cs    : 4;
2688         RK_U32 rsd_st_cs        : 4;
2689         RK_U32 sd_st_cs    : 5;
2690         RK_U32 etpy_rdy         : 1;
2691         RK_U32 reserved         : 18;
2692     } dbg_etpy;
2693 
2694     /* 0x0000512c reg5195 */
2695     struct {
2696         RK_U32 crdy_ppr    : 1;
2697         RK_U32 cvld_ppr    : 1;
2698         RK_U32 drdy_ppw    : 1;
2699         RK_U32 dvld_ppw    : 1;
2700         RK_U32 crdy_ppw    : 1;
2701         RK_U32 cvld_ppw    : 1;
2702         RK_U32 reserved    : 26;
2703     } dbg_dma_pp;
2704 
2705     /* 0x00005130 reg5196 */
2706     struct {
2707         RK_U32 axi_wrdy     : 8;
2708         RK_U32 axi_wvld     : 8;
2709         RK_U32 axi_awrdy    : 8;
2710         RK_U32 axi_awvld    : 8;
2711     } dbg_dma_w;
2712 
2713     /* 0x00005134 reg5197 */
2714     struct {
2715         RK_U32 axi_otsd_read    : 16;
2716         RK_U32 axi_arrdy        : 7;
2717         RK_U32 reserved         : 1;
2718         RK_U32 axi_arvld        : 7;
2719         RK_U32 reserved1        : 1;
2720     } dbg_dma_r;
2721 
2722     /* 0x00005138 reg5198 */
2723     struct {
2724         RK_U32 dfifo0_lvl    : 4;
2725         RK_U32 dfifo1_lvl    : 4;
2726         RK_U32 dfifo2_lvl    : 4;
2727         RK_U32 dfifo3_lvl    : 4;
2728         RK_U32 dfifo4_lvl    : 4;
2729         RK_U32 dfifo5_lvl    : 4;
2730         RK_U32 reserved      : 6;
2731         RK_U32 cmd_vld       : 1;
2732         RK_U32 reserved1     : 1;
2733     } dbg_dma_rfpr;
2734 
2735     /* 0x0000513c reg5199 */
2736     struct {
2737         RK_U32 meiw_busy    : 1;
2738         RK_U32 dspw_busy    : 1;
2739         RK_U32 bsw_rdy      : 1;
2740         RK_U32 bsw_flsh     : 1;
2741         RK_U32 bsw_busy     : 1;
2742         RK_U32 crpw_busy    : 1;
2743         RK_U32 lktw_busy    : 1;
2744         RK_U32 lpfw_busy    : 1;
2745         RK_U32 roir_busy    : 1;
2746         RK_U32 dspr_crdy    : 1;
2747         RK_U32 dspr_cvld    : 1;
2748         RK_U32 lktr_busy    : 1;
2749         RK_U32 lpfr_otsd    : 4;
2750         RK_U32 rfpr_otsd    : 12;
2751         RK_U32 dspr_otsd    : 4;
2752     } dbg_dma_ch_st;
2753 
2754     /* 0x00005140 reg5200 */
2755     struct {
2756         RK_U32 cpip_st     : 2;
2757         RK_U32 mvp_st      : 3;
2758         RK_U32 qpd6_st     : 2;
2759         RK_U32 cmd_st      : 2;
2760         RK_U32 reserved    : 23;
2761     } dbg_tctrl_cime_st;
2762 
2763     /* 0x00005144 reg5201 */
2764     struct {
2765         RK_U32 cme_byps      : 1;
2766         RK_U32 swin_byps     : 1;
2767         RK_U32 rme_byps      : 1;
2768         RK_U32 intra_byps    : 1;
2769         RK_U32 fme_byps      : 1;
2770         RK_U32 rdo_byps      : 1;
2771         RK_U32 lpf_byps      : 1;
2772         RK_U32 etpy_byps     : 1;
2773         RK_U32 reserved      : 24;
2774     } dbg_tctrl;
2775 
2776     /* 0x5148 */
2777     RK_U32 reserved_5202;
2778 
2779     /* 0x0000514c reg5203 */
2780     RK_U32 dbg_lpf_st;
2781 
2782     /* 0x00005150 reg5204 */
2783     RK_U32 dbg_topc_lpfr;
2784 
2785     /* 0x00005154 reg5205 */
2786     RK_U32 dbg0_cache;
2787 
2788     /* 0x00005158 reg5206 */
2789     RK_U32 dbg1_cache;
2790 
2791     /* 0x0000515c reg5207 */
2792     RK_U32 dbg2_cache;
2793 
2794     /* 0x5160 - 0x51fc */
2795     RK_U32 reserved5208_5247[40];
2796 
2797     /* 0x00005200 reg5248 */
2798     RK_U32 frame_cyc;
2799 
2800     /* 0x00005204 reg5249 */
2801     RK_U32 pp_fcyc;
2802 
2803     /* 0x00005208 reg5250 */
2804     RK_U32 cme_fcyc;
2805 
2806     /* 0x0000520c reg5251 */
2807     RK_U32 cme_dspr_fcyc;
2808 
2809     /* 0x00005210 reg5252 */
2810     RK_U32 ldr_fcyc;
2811 
2812     /* 0x00005214 reg5253 */
2813     RK_U32 rme_fcyc;
2814 
2815     /* 0x00005218 reg5254 */
2816     RK_U32 fme_fcyc;
2817 
2818     /* 0x0000521c reg5255 */
2819     RK_U32 rdo_fcyc;
2820 
2821     /* 0x00005220 reg5256 */
2822     RK_U32 lpf_fcyc;
2823 
2824     /* 0x00005224 reg5257 */
2825     RK_U32 etpy_fcyc;
2826 
2827     /* 0x5228 - 0x52fc */
2828     RK_U32 reserved5258_5311[54];
2829 
2830     /* 0x00005300 reg5312 */
2831     struct {
2832         RK_U32 axip_e      : 1;
2833         RK_U32 axip_clr    : 1;
2834         RK_U32 axip_mod    : 1;
2835         RK_U32 reserved    : 29;
2836     } axip0_cmd;
2837 
2838     /* 0x00005304 reg5313 */
2839     struct {
2840         RK_U32 axip_ltcy_id     : 4;
2841         RK_U32 axip_ltcy_thd    : 12;
2842         RK_U32 reserved         : 16;
2843     } axip0_ltcy;
2844 
2845     /* 0x00005308 reg5314 */
2846     struct {
2847         RK_U32 axip_cnt_typ    : 1;
2848         RK_U32 axip_cnt_ddr    : 2;
2849         RK_U32 axip_cnt_rid    : 5;
2850         RK_U32 axip_cnt_wid    : 5;
2851         RK_U32 reserved        : 19;
2852     } axip0_cnt;
2853 
2854     /* 0x530c */
2855     RK_U32 reserved_5315;
2856 
2857     /* 0x00005310 reg5316 */
2858     struct {
2859         RK_U32 axip_e      : 1;
2860         RK_U32 axip_clr    : 1;
2861         RK_U32 axip_mod    : 1;
2862         RK_U32 reserved    : 29;
2863     } axip1_cmd;
2864 
2865     /* 0x00005314 reg5317 */
2866     struct {
2867         RK_U32 axip_ltcy_id     : 4;
2868         RK_U32 axip_ltcy_thd    : 12;
2869         RK_U32 reserved         : 16;
2870     } axip1_ltcy;
2871 
2872     /* 0x00005318 reg5318 */
2873     struct {
2874         RK_U32 axip_cnt_typ    : 1;
2875         RK_U32 axip_cnt_ddr    : 2;
2876         RK_U32 axip_cnt_rid    : 5;
2877         RK_U32 axip_cnt_wid    : 5;
2878         RK_U32 reserved        : 19;
2879     } axip1_cnt;
2880 
2881     /* 0x531c */
2882     RK_U32 reserved_5319;
2883 
2884     /* 0x00005320 reg5320 */
2885     struct {
2886         RK_U32 axip_max_ltcy    : 16;
2887         RK_U32 reserved         : 16;
2888     } st_axip0_maxl;
2889 
2890     /* 0x00005324 reg5321 */
2891     RK_U32 axip0_num_ltcy;
2892 
2893     /* 0x00005328 reg5322 */
2894     RK_U32 axip0_sum_ltcy;
2895 
2896     /* 0x0000532c reg5323 */
2897     RK_U32 axip0_rbyt;
2898 
2899     /* 0x00005330 reg5324 */
2900     RK_U32 axip0_wbyt;
2901 
2902     /* 0x00005334 reg5325 */
2903     RK_U32 axip0_wrk_cyc;
2904 
2905     /* 0x5338 - 0x533c */
2906     RK_U32 reserved5326_5327[2];
2907 
2908     /* 0x00005340 reg5328 */
2909     struct {
2910         RK_U32 axip_max_ltcy    : 16;
2911         RK_U32 reserved         : 16;
2912     } st_axip1_maxl;
2913 
2914     /* 0x00005344 reg5329 */
2915     RK_U32 axip1_num_ltcy;
2916 
2917     /* 0x00005348 reg5330 */
2918     RK_U32 axip1_sum_ltcy;
2919 
2920     /* 0x0000534c reg5331 */
2921     RK_U32 axip1_rbyt;
2922 
2923     /* 0x00005350 reg5332 */
2924     RK_U32 axip1_wbyt;
2925 
2926     /* 0x00005354 reg5333 */
2927     RK_U32 axip1_wrk_cyc;
2928 } Vepu580Dbg;
2929 
2930 /* class: mmu */
2931 /* 0x0000f000 reg15360 - 0x0000f064 reg15385 */
2932 
2933 typedef struct HalVepu580Reg_t {
2934     Vepu580ControlCfg   reg_ctl;
2935     Vepu580BaseCfg      reg_base;
2936     Vepu580RcKlutCfg    reg_rc_klut;
2937     Vepu580Section3     reg_s3;
2938     Vepu580RdoCfg       reg_rdo;
2939     Vepu580SclCfg       reg_scl;
2940     Vepu580Osd          reg_osd;
2941     Vepu580Status       reg_st;
2942     Vepu580Dbg          reg_dbg;
2943 } HalVepu580RegSet;
2944 
2945 #endif
2946