xref: /OK3568_Linux_fs/external/mpp/mpp/hal/rkenc/h265e/hal_h265e_vepu580_reg.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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_H265E_VEPU580_REG_H__
18 #define __HAL_H265E_VEPU580_REG_H__
19 
20 #include "rk_type.h"
21 
22 #define VEPU580_CTL_OFFSET          (0 * sizeof(RK_U32))
23 #define VEPU580_BASE_OFFSET         (160 * sizeof(RK_U32))
24 #define VEPU580_RCKULT_OFFSET       (1024 * sizeof(RK_U32))
25 #define VEPU580_WEG_OFFSET          (1472 * sizeof(RK_U32))
26 #define VEPU580_RDOCFG_OFFSET       (2048 * sizeof(RK_U32))
27 #define VEPU580_OSD_OFFSET          (3072 * sizeof(RK_U32))
28 #define VEPU580_STATUS_OFFSET       (4096 * sizeof(RK_U32))
29 #define VEPU580_DEBUG_OFFSET        (5120 * sizeof(RK_U32))
30 #define VEPU580_REG_BASE_HW_STATUS  0x2c
31 
32 /* class: control/link */
33 /* 0x00000000 reg0 - 0x00000120 reg72 */
34 typedef struct HevcVepu580ControlCfg_t {
35     /* 0x00000000 reg0 */
36     struct {
37         RK_U32 sub_ver      : 8;
38         RK_U32 h264_cap     : 1;
39         RK_U32 hevc_cap     : 1;
40         RK_U32 reserved     : 2;
41         RK_U32 res_cap      : 4;
42         RK_U32 osd_cap      : 2;
43         RK_U32 filtr_cap    : 2;
44         RK_U32 bfrm_cap     : 1;
45         RK_U32 fbc_cap      : 2;
46         RK_U32 reserved1    : 1;
47         RK_U32 ip_id        : 8;
48     } reg0001_version;
49 
50     /* 0x4 - 0xc */
51     RK_U32 reserved1_3[3];
52 
53     /* 0x00000010 reg4 */
54     struct {
55         RK_U32 lkt_num     : 8;
56         RK_U32 vepu_cmd    : 2;
57         RK_U32 reserved    : 22;
58     } reg0004_enc_strt;
59 
60     /* 0x00000014 reg5 */
61     struct {
62         RK_U32 safe_clr     : 1;
63         RK_U32 force_clr    : 1;
64         RK_U32 reserved     : 30;
65     } reg0005_enc_clr;
66 
67     /* 0x18 - 0x1c */
68     RK_U32 reserved6_7[2];
69 
70     /* 0x00000020 reg8 */
71     struct {
72         RK_U32 enc_done_en         : 1;
73         RK_U32 lkt_node_done_en    : 1;
74         RK_U32 sclr_done_en        : 1;
75         RK_U32 slc_done_en         : 1;
76         RK_U32 bsf_oflw_en         : 1;
77         RK_U32 brsp_otsd_en        : 1;
78         RK_U32 wbus_err_en         : 1;
79         RK_U32 rbus_err_en         : 1;
80         RK_U32 wdg_en              : 1;
81         RK_U32 lkt_err_int_en      : 1;
82         RK_U32 reserved            : 22;
83     } reg0008_int_en;
84 
85     /* 0x00000024 reg9 */
86     struct {
87         RK_U32 enc_done_msk         : 1;
88         RK_U32 lkt_node_done_msk    : 1;
89         RK_U32 sclr_done_msk        : 1;
90         RK_U32 slc_done_msk         : 1;
91         RK_U32 bsf_oflw_msk         : 1;
92         RK_U32 brsp_otsd_msk        : 1;
93         RK_U32 wbus_err_msk         : 1;
94         RK_U32 rbus_err_msk         : 1;
95         RK_U32 wdg_msk              : 1;
96         RK_U32 lkt_err_msk          : 1;
97         RK_U32 reserved             : 22;
98     } reg0009_int_msk;
99 
100     /* 0x00000028 reg10 */
101     struct {
102         RK_U32 enc_done_clr         : 1;
103         RK_U32 lkt_node_done_clr    : 1;
104         RK_U32 sclr_done_clr        : 1;
105         RK_U32 slc_done_clr         : 1;
106         RK_U32 bsf_oflw_clr         : 1;
107         RK_U32 brsp_otsd_clr        : 1;
108         RK_U32 wbus_err_clr         : 1;
109         RK_U32 rbus_err_clr         : 1;
110         RK_U32 wdg_clr              : 1;
111         RK_U32 lkt_err_clr          : 1;
112         RK_U32 reserved             : 22;
113     } reg0010_int_clr;
114 
115     /* 0x0000002c reg11 */
116     struct {
117         RK_U32 enc_done_sta         : 1;
118         RK_U32 lkt_node_done_sta    : 1;
119         RK_U32 sclr_done_sta        : 1;
120         RK_U32 slc_done_sta         : 1;
121         RK_U32 bsf_oflw_sta         : 1;
122         RK_U32 brsp_otsd_sta        : 1;
123         RK_U32 wbus_err_sta         : 1;
124         RK_U32 rbus_err_sta         : 1;
125         RK_U32 wdg_sta              : 1;
126         RK_U32 lkt_err_sta          : 1;
127         RK_U32 reserved             : 22;
128     } reg0011_int_sta;
129 
130     /* 0x00000030 reg12 */
131     struct {
132         RK_U32 lpfw_bus_ordr        : 1;
133         RK_U32 cmvw_bus_ordr        : 1;
134         RK_U32 dspw_bus_ordr        : 1;
135         RK_U32 rfpw_bus_ordr        : 1;
136         RK_U32 src_bus_edin         : 4;
137         RK_U32 meiw_bus_edin        : 4;
138         RK_U32 bsw_bus_edin         : 3;
139         RK_U32 lktr_bus_edin        : 4;
140         RK_U32 roir_bus_edin        : 4;
141         RK_U32 lktw_bus_edin        : 4;
142         RK_U32 afbc_bsize           : 1;
143         RK_U32 ebufw_bus_ordr       : 1;
144         RK_U32 rec_nfbc_bus_edin    : 3;
145     } reg0012_dtrns_map;
146 
147     /* 0x00000034 reg13 */
148     struct {
149         RK_U32 reserved        : 7;
150         RK_U32 dspr_otsd       : 1;
151         RK_U32 reserved1       : 8;
152         RK_U32 axi_brsp_cke    : 8;
153         RK_U32 reserved2       : 8;
154     } reg0013_dtrns_cfg;
155 
156     /* 0x00000038 reg14 */
157     struct {
158         RK_U32 vs_load_thd     : 24;
159         RK_U32 rfp_load_thd    : 8;
160     } reg0014_enc_wdg;
161 
162     /* 0x0000003c reg15 */
163     struct {
164         RK_U32 hurry_en      : 1;
165         RK_U32 hurry_low     : 3;
166         RK_U32 hurry_mid     : 3;
167         RK_U32 hurry_high    : 3;
168         RK_U32 reserved      : 22;
169     } reg0015_qos_cfg;
170 
171     /* 0x00000040 reg16 */
172     struct {
173         RK_U32 qos_period    : 16;
174         RK_U32 reserved      : 16;
175     } reg0016_qos_perd;
176 
177     /* 0x00000044 reg17 */
178     RK_U32 reg0017_hurry_thd_low;
179 
180     /* 0x00000048 reg18 */
181     RK_U32 reg0018_hurry_thd_mid;
182 
183     /* 0x0000004c reg19 */
184     RK_U32 reg0019_hurry_thd_high;
185 
186     /* 0x00000050 reg20 */
187     struct {
188         RK_U32 idle_en_core    : 1;
189         RK_U32 idle_en_axi     : 1;
190         RK_U32 idle_en_ahb     : 1;
191         RK_U32 reserved        : 29;
192     } reg0020_enc_idle_en;
193 
194     /* 0x00000054 reg21 */
195     struct {
196         RK_U32 cke                 : 1;
197         RK_U32 resetn_hw_en        : 1;
198         RK_U32 enc_done_tmvp_en    : 1;
199         RK_U32 sram_ckg_en         : 1;
200         RK_U32 reserved            : 28;
201     } reg0021_func_en;
202 
203     /* 0x00000058 reg22 */
204     struct {
205         RK_U32 recon32_ckg       : 1;
206         RK_U32 iqit32_ckg        : 1;
207         RK_U32 q32_ckg           : 1;
208         RK_U32 t32_ckg           : 1;
209         RK_U32 cabac32_ckg       : 1;
210         RK_U32 recon16_ckg       : 1;
211         RK_U32 iqit16_ckg        : 1;
212         RK_U32 q16_ckg           : 1;
213         RK_U32 t16_ckg           : 1;
214         RK_U32 cabac16_ckg       : 1;
215         RK_U32 recon8_ckg        : 1;
216         RK_U32 iqit8_ckg         : 1;
217         RK_U32 q8_ckg            : 1;
218         RK_U32 t8_ckg            : 1;
219         RK_U32 cabac8_ckg        : 1;
220         RK_U32 recon4_ckg        : 1;
221         RK_U32 iqit4_ckg         : 1;
222         RK_U32 q4_ckg            : 1;
223         RK_U32 t4_ckg            : 1;
224         RK_U32 cabac4_ckg        : 1;
225         RK_U32 intra32_ckg       : 1;
226         RK_U32 intra16_ckg       : 1;
227         RK_U32 intra8_ckg        : 1;
228         RK_U32 intra4_ckg        : 1;
229         RK_U32 inter_pred_ckg    : 1;
230         RK_U32 reserved          : 7;
231     } reg0022_rdo_ckg_hevc;
232 
233     /* 0x0000005c reg23 */
234     struct {
235         RK_U32 core_id     : 2;
236         RK_U32 reserved    : 30;
237     } reg0023_enc_id;
238 } hevc_vepu580_control_cfg;
239 
240 /* class: buffer/video syntax */
241 /* 0x00000280 reg160 - 0x000003f4 reg253*/
242 typedef struct HevcVepu580Base_t {
243     /* 0x00000280 reg160 */
244     RK_U32 reg0160_adr_src0;
245 
246     /* 0x00000284 reg161 */
247     RK_U32 reg0161_adr_src1;
248 
249     /* 0x00000288 reg162 */
250     RK_U32 reg0162_adr_src2;
251 
252     /* 0x0000028c reg163 */
253     RK_U32 reg0163_rfpw_h_addr;
254 
255     /* 0x00000290 reg164 */
256     RK_U32 reg0164_rfpw_b_addr;
257 
258     /* 0x00000294 reg165 */
259     RK_U32 reg0165_rfpr_h_addr;
260 
261     /* 0x00000298 reg166 */
262     RK_U32 reg0166_rfpr_b_addr;
263 
264     /* 0x0000029c reg167 */
265     RK_U32 reg0167_cmvw_addr;
266 
267     /* 0x000002a0 reg168 */
268     RK_U32 reg0168_cmvr_addr;
269 
270     /* 0x000002a4 reg169 */
271     RK_U32 reg0169_dspw_addr;
272 
273     /* 0x000002a8 reg170 */
274     RK_U32 reg0170_dspr_addr;
275 
276     /* 0x000002ac reg171 */
277     RK_U32 reg0171_meiw_addr;
278 
279     /* 0x000002b0 reg172 */
280     RK_U32 reg0172_bsbt_addr;
281 
282     /* 0x000002b4 reg173 */
283     RK_U32 reg0173_bsbb_addr;
284 
285     /* 0x000002b8 reg174 */
286     RK_U32 reg0174_bsbr_addr;
287 
288     /* 0x000002bc reg175 */
289     RK_U32 reg0175_adr_bsbs;
290 
291     /* 0x000002c0 reg176 */
292     RK_U32 reg0176_lpfw_addr;
293 
294     /* 0x000002c4 reg177 */
295     RK_U32 reg0177_lpfr_addr;
296 
297     /* 0x000002c8 reg178 */
298     RK_U32 reg0178_roi_addr;
299 
300     /* 0x000002cc reg179 */
301     RK_U32 reg0179_roi_qp_addr;
302 
303     /* 0x000002d0 reg180 */
304     RK_U32 reg0180_roi_amv_addr;
305 
306     /* 0x000002d4 reg181 */
307     RK_U32 reg0181_roi_mv_addr;
308 
309     /* 0x000002d8 reg182 */
310     RK_U32 reg0182_ebuft_addr;
311 
312     /* 0x000002dc reg183 */
313     RK_U32 reg183_ebufb_addr;
314 
315     /* 0x2e0 - 0x2fc */
316     RK_U32 reserved184_191[8];
317 
318     /* 0x00000300 reg192 */
319     struct {
320         RK_U32 enc_stnd           : 1;
321         RK_U32 roi_en             : 1;
322         RK_U32 cur_frm_ref        : 1;
323         RK_U32 mei_stor           : 1;
324         RK_U32 bs_scp             : 1;
325         RK_U32 reserved           : 3;
326         RK_U32 pic_qp             : 6;
327         RK_U32 num_pic_tot_cur    : 5;
328         RK_U32 log2_ctu_num       : 5;
329         RK_U32 reserved1          : 6;
330         RK_U32 slen_fifo          : 1;
331         RK_U32 rec_fbc_dis        : 1;
332     } reg0192_enc_pic;
333 
334     /* 0x00000304 reg193 */
335     struct {
336         RK_U32 dchs_txid    : 2;
337         RK_U32 dchs_rxid    : 2;
338         RK_U32 dchs_txe     : 1;
339         RK_U32 dchs_rxe     : 1;
340         RK_U32 reserved     : 10;
341         RK_U32 dchs_ofst    : 11;
342         RK_U32 reserved1    : 5;
343     } reg0193_dual_core;
344 
345     /* 0x308 - 0x30c */
346     RK_U32 reserved194_195[2];
347 
348     /* 0x00000310 reg196 */
349     struct {
350         RK_U32 pic_wd8_m1    : 11;
351         RK_U32 reserved      : 5;
352         RK_U32 pic_hd8_m1    : 11;
353         RK_U32 reserved1     : 5;
354     } reg0196_enc_rsl;
355 
356     /* 0x00000314 reg197 */
357     struct {
358         RK_U32 pic_wfill    : 6;
359         RK_U32 reserved     : 10;
360         RK_U32 pic_hfill    : 6;
361         RK_U32 reserved1    : 10;
362     } reg0197_src_fill;
363 
364     /* 0x00000318 reg198 */
365     struct {
366         RK_U32 alpha_swap    : 1;
367         RK_U32 rbuv_swap     : 1;
368         RK_U32 src_cfmt      : 4;
369         RK_U32 src_range     : 1;
370         RK_U32 out_fmt       : 1;
371         RK_U32 reserved      : 24;
372     } reg0198_src_fmt;
373 
374     /* 0x0000031c reg199 */
375     struct {
376         RK_U32 csc_wgt_b2y    : 9;
377         RK_U32 csc_wgt_g2y    : 9;
378         RK_U32 csc_wgt_r2y    : 9;
379         RK_U32 reserved       : 5;
380     } reg0199_src_udfy;
381 
382     /* 0x00000320 reg200 */
383     struct {
384         RK_U32 csc_wgt_b2u    : 9;
385         RK_U32 csc_wgt_g2u    : 9;
386         RK_U32 csc_wgt_r2u    : 9;
387         RK_U32 reserved       : 5;
388     } reg0200_src_udfu;
389 
390     /* 0x00000324 reg201 */
391     struct {
392         RK_U32 csc_wgt_b2v    : 9;
393         RK_U32 csc_wgt_g2v    : 9;
394         RK_U32 csc_wgt_r2v    : 9;
395         RK_U32 reserved       : 5;
396     } reg0201_src_udfv;
397 
398     /* 0x00000328 reg202 */
399     struct {
400         RK_U32 csc_ofst_v    : 8;
401         RK_U32 csc_ofst_u    : 8;
402         RK_U32 csc_ofst_y    : 5;
403         RK_U32 reserved      : 11;
404     } reg0202_src_udfo;
405 
406     /* 0x0000032c reg203 */
407     struct {
408         RK_U32 reserved0    : 26;
409         RK_U32 src_mirr     : 1;
410         RK_U32 src_rot      : 2;
411         RK_U32 txa_en       : 1;
412         RK_U32 afbcd_en     : 1;
413         RK_U32 reserved1    : 1;
414     } reg0203_src_proc;
415 
416     /* 0x00000330 reg204 */
417     struct {
418         RK_U32 pic_ofst_x    : 14;
419         RK_U32 reserved      : 2;
420         RK_U32 pic_ofst_y    : 14;
421         RK_U32 reserved1     : 2;
422     } reg0204_pic_ofst;
423 
424     /* 0x00000334 reg205 */
425     struct {
426         RK_U32 src_strd0    : 17;
427         RK_U32 reserved     : 15;
428     } reg0205_src_strd0;
429 
430     /* 0x00000338 reg206 */
431     struct {
432         RK_U32 src_strd1    : 16;
433         RK_U32 reserved     : 16;
434     } reg0206_src_strd1;
435 
436     /* 0x33c - 0x34c */
437     RK_U32 reserved207_211[5];
438 
439     /* 0x00000350 reg212 */
440     struct {
441         RK_U32 rc_en         : 1;
442         RK_U32 aq_en         : 1;
443         RK_U32 aq_mode       : 1;
444         RK_U32 reserved      : 9;
445         RK_U32 rc_ctu_num    : 20;
446     } reg212_rc_cfg;
447 
448     /* 0x00000354 reg213 */
449     struct {
450         RK_U32 reserved       : 16;
451         RK_U32 rc_qp_range    : 4;
452         RK_U32 rc_max_qp      : 6;
453         RK_U32 rc_min_qp      : 6;
454     } reg213_rc_qp;
455 
456     /* 0x00000358 reg214 */
457     struct {
458         RK_U32 ctu_ebit    : 20;
459         RK_U32 reserved    : 12;
460     } reg214_rc_tgt;
461 
462     /* 0x35c */
463     RK_U32 reserved_215;
464 
465     /* 0x00000360 reg216 */
466     struct {
467         RK_U32 sli_splt          : 1;
468         RK_U32 sli_splt_mode     : 1;
469         RK_U32 sli_splt_cpst     : 1;
470         RK_U32 reserved          : 12;
471         RK_U32 sli_flsh          : 1;
472         RK_U32 sli_max_num_m1    : 15;
473         RK_U32 reserved1         : 1;
474     } reg0216_sli_splt;
475 
476     /* 0x00000364 reg217 */
477     struct {
478         RK_U32 sli_splt_byte    : 20;
479         RK_U32 reserved         : 12;
480     } reg0217_sli_byte;
481 
482     /* 0x00000368 reg218 */
483     struct {
484         RK_U32 sli_splt_cnum_m1    : 20;
485         RK_U32 reserved            : 12;
486     } reg0218_sli_cnum;
487 
488     /* 0x36c */
489     RK_U32 reserved_219;
490 
491     /* 0x00000370 reg220 */
492     struct {
493         RK_U32 cme_srch_h     : 4;
494         RK_U32 cme_srch_v     : 4;
495         RK_U32 rme_srch_h     : 3;
496         RK_U32 rme_srch_v     : 3;
497         RK_U32 reserved       : 2;
498         RK_U32 dlt_frm_num    : 16;
499     } reg0220_me_rnge;
500 
501     /* 0x00000374 reg221 */
502     struct {
503         RK_U32 pmv_mdst_h    : 8;
504         RK_U32 pmv_mdst_v    : 8;
505         RK_U32 mv_limit      : 2;
506         RK_U32 pmv_num       : 2;
507         RK_U32 colmv_stor    : 1;
508         RK_U32 colmv_load    : 1;
509         RK_U32 reserved1     : 1;
510         RK_U32 rme_dis       : 4;
511         RK_U32 reserved2     : 1;
512         RK_U32 fme_dis       : 4;
513     } reg0221_me_cfg;
514 
515 
516     /* 0x00000378 reg222 */
517     struct {
518         RK_U32 cme_rama_max      : 11;
519         RK_U32 cme_rama_h        : 5;
520         RK_U32 cach_l2_tag       : 2;
521         RK_U32 cme_linebuf_w     : 9;
522         RK_U32 reserved          : 5;
523     } reg0222_me_cach;
524 
525     /* 0x37c */
526     RK_U32 reserved_223;
527 
528     /* 0x00000380 reg224 */
529     struct {
530         RK_U32 gmv_x        : 13;
531         RK_U32 reserved     : 3;
532         RK_U32 gmv_y        : 13;
533         RK_U32 reserved1    : 3;
534     } reg0224_gmv;
535 
536     /* 0x384 - 0x38c */
537     RK_U32 reserved225_227[3];
538 
539     /* 0x00000390 reg228 */
540     struct {
541         RK_U32 roi_qp_en     : 1;
542         RK_U32 roi_amv_en    : 1;
543         RK_U32 roi_mv_en     : 1;
544         RK_U32 reserved      : 29;
545     } reg0228_roi_en;
546 
547     /* 0x394 - 0x39c */
548     RK_U32 reserved229_231[3];
549 
550     /* 0x000003a0 reg232 */
551     struct {
552         RK_U32 ltm_col          : 1;
553         RK_U32 ltm_idx0l0       : 1;
554         RK_U32 chrm_spcl        : 1;
555         RK_U32 cu_inter_e       : 12;
556         RK_U32 reserved         : 4;
557         RK_U32 cu_intra_e       : 4;
558         RK_U32 ccwa_e           : 1;
559         RK_U32 scl_lst_sel      : 2;
560         RK_U32 reserved1        : 2;
561         RK_U32 satd_byps_flg    : 4;
562     } reg0232_rdo_cfg;
563 
564     /* 0x000003a4 reg233 */
565     struct {
566         RK_U32 vthd_y       : 12;
567         RK_U32 reserved     : 4;
568         RK_U32 vthd_c       : 12;
569         RK_U32 reserved1    : 4;
570     } reg0233_iprd_csts;
571 
572     /* 0x3a8 - 0x3ac */
573     RK_U32 reserved234_235[2];
574 
575     /* 0x000003b0 reg236 */
576 
577     struct {
578         RK_U32 nal_unit_type    : 6;
579         RK_U32 reserved         : 26;
580     } reg0236_synt_nal;
581 
582     /* 0x000003b4 reg237 */
583     struct {
584         RK_U32 smpl_adpt_ofst_e    : 1;
585         RK_U32 num_st_ref_pic      : 7;
586         RK_U32 lt_ref_pic_prsnt    : 1;
587         RK_U32 num_lt_ref_pic      : 6;
588         RK_U32 tmpl_mvp_e          : 1;
589         RK_U32 log2_max_poc_lsb    : 4;
590         RK_U32 strg_intra_smth     : 1;
591         RK_U32 reserved            : 11;
592     } reg0237_synt_sps;
593 
594     /* 0x000003b8 reg238 */
595     struct {
596         RK_U32 dpdnt_sli_seg_en       : 1;
597         RK_U32 out_flg_prsnt_flg      : 1;
598         RK_U32 num_extr_sli_hdr       : 3;
599         RK_U32 sgn_dat_hid_en         : 1;
600         RK_U32 cbc_init_prsnt_flg     : 1;
601         RK_U32 pic_init_qp            : 6;
602         RK_U32 cu_qp_dlt_en           : 1;
603         RK_U32 chrm_qp_ofst_prsn      : 1;
604         RK_U32 lp_fltr_acrs_sli       : 1;
605         RK_U32 dblk_fltr_ovrd_en      : 1;
606         RK_U32 lst_mdfy_prsnt_flg     : 1;
607         RK_U32 sli_seg_hdr_extn       : 1;
608         RK_U32 cu_qp_dlt_depth        : 2;
609         RK_U32 lpf_fltr_acrs_til      : 1;
610         RK_U32 reserved               : 10;
611     } reg0238_synt_pps;
612 
613     /* 0x000003bc reg239 */
614     struct {
615         RK_U32 cbc_init_flg           : 1;
616         RK_U32 mvd_l1_zero_flg        : 1;
617         RK_U32 mrg_up_flg             : 1;
618         RK_U32 mrg_lft_flg            : 1;
619         RK_U32 reserved               : 1;
620         RK_U32 ref_pic_lst_mdf_l0     : 1;
621         RK_U32 num_refidx_l1_act      : 2;
622         RK_U32 num_refidx_l0_act      : 2;
623         RK_U32 num_refidx_act_ovrd    : 1;
624         RK_U32 sli_sao_chrm_flg       : 1;
625         RK_U32 sli_sao_luma_flg       : 1;
626         RK_U32 sli_tmprl_mvp_e        : 1;
627         RK_U32 pic_out_flg            : 1;
628         RK_U32 sli_type               : 2;
629         RK_U32 sli_rsrv_flg           : 7;
630         RK_U32 dpdnt_sli_seg_flg      : 1;
631         RK_U32 sli_pps_id             : 6;
632         RK_U32 no_out_pri_pic         : 1;
633     } reg0239_synt_sli0;
634 
635     /* 0x000003c0 reg240 */
636     struct {
637         RK_U32 sp_tc_ofst_div2         : 4;
638         RK_U32 sp_beta_ofst_div2       : 4;
639         RK_U32 sli_lp_fltr_acrs_sli    : 1;
640         RK_U32 sp_dblk_fltr_dis        : 1;
641         RK_U32 dblk_fltr_ovrd_flg      : 1;
642         RK_U32 sli_cb_qp_ofst          : 5;
643         RK_U32 sli_qp                  : 6;
644         RK_U32 max_mrg_cnd             : 2;
645         RK_U32 reserved                : 1;
646         RK_U32 col_ref_idx             : 1;
647         RK_U32 col_frm_l0_flg          : 1;
648         RK_U32 lst_entry_l0            : 4;
649         RK_U32 reserved1               : 1;
650     } reg0240_synt_sli1;
651 
652     /* 0x000003c4 reg241 */
653     struct {
654         RK_U32 sli_poc_lsb        : 16;
655         RK_U32 sli_hdr_ext_len    : 9;
656         RK_U32 reserved           : 7;
657     } reg0241_synt_sli2;
658 
659     /* 0x000003c8 reg242 */
660 
661     struct {
662         RK_U32 st_ref_pic_flg    : 1;
663         RK_U32 poc_lsb_lt0       : 16;
664         RK_U32 lt_idx_sps        : 5;
665         RK_U32 num_lt_pic        : 2;
666         RK_U32 st_ref_pic_idx    : 6;
667         RK_U32 num_lt_sps        : 2;
668     } reg0242_synt_refm0;
669 
670     /* 0x000003cc reg243 */
671     struct {
672         RK_U32 used_by_s0_flg        : 4;
673         RK_U32 num_pos_pic           : 1;
674         RK_U32 num_negative_pics     : 5;
675         RK_U32 dlt_poc_msb_cycl0     : 16;
676         RK_U32 dlt_poc_msb_prsnt0    : 1;
677         RK_U32 dlt_poc_msb_prsnt1    : 1;
678         RK_U32 dlt_poc_msb_prsnt2    : 1;
679         RK_U32 used_by_lt_flg0       : 1;
680         RK_U32 used_by_lt_flg1       : 1;
681         RK_U32 used_by_lt_flg2       : 1;
682     } reg0243_synt_refm1;
683 
684     /* 0x000003d0 reg244 */
685     struct {
686         RK_U32 dlt_poc_s0_m10    : 16;
687         RK_U32 dlt_poc_s0_m11    : 16;
688     } reg0244_synt_refm2;
689     /* 0x000003d4 reg245 */
690     struct {
691         RK_U32 dlt_poc_s0_m12    : 16;
692         RK_U32 dlt_poc_s0_m13    : 16;
693     } reg0245_synt_refm3;
694 
695     /* 0x000003d8 reg246 */
696     struct {
697         RK_U32 poc_lsb_lt1    : 16;
698         RK_U32 poc_lsb_lt2    : 16;
699     } reg0246_synt_long_refm0;
700 
701     /* 0x000003dc reg247 */
702     struct {
703         RK_U32 dlt_poc_msb_cycl1    : 16;
704         RK_U32 dlt_poc_msb_cycl2    : 16;
705     } reg0247_synt_long_refm1;
706 
707     /* 0x3e0 - 0x3ec */
708     RK_U32 reserved248_251[4];
709 
710     /* 0x000003f0 reg252 */
711 
712     struct {
713         RK_U32 tile_w_m1    : 8;
714         RK_U32 reserved     : 8;
715         RK_U32 tile_h_m1    : 8;
716         RK_U32 reserved1    : 7;
717         RK_U32 tile_en      : 1;
718     } reg0252_tile_cfg;
719     /* 0x000003f4 reg253 */
720     struct {
721         RK_U32 tile_x       : 8;
722         RK_U32 reserved     : 8;
723         RK_U32 tile_y       : 8;
724         RK_U32 reserved1    : 8;
725     } reg0253_tile_pos;
726 } hevc_vepu580_base;
727 
728 /* class: rc/roi/aq/klut */
729 /* 0x00001000 reg1024 - 0x000010e0 reg1080 */
730 typedef struct HevcVepu580RcKlut_t {
731     /* 0x00001000 reg1024 */
732     struct {
733         RK_U32 qp_adj0     : 5;
734         RK_U32 qp_adj1     : 5;
735         RK_U32 qp_adj2     : 5;
736         RK_U32 qp_adj3     : 5;
737         RK_U32 qp_adj4     : 5;
738         RK_U32 reserved    : 7;
739     } rc_adj0;
740 
741     /* 0x00001004 reg1025 */
742     struct {
743         RK_U32 qp_adj5     : 5;
744         RK_U32 qp_adj6     : 5;
745         RK_U32 qp_adj7     : 5;
746         RK_U32 qp_adj8     : 5;
747         RK_U32 reserved    : 12;
748     } rc_adj1;
749 
750     /* 0x00001008 reg1026 - 0x00001028 reg1034 */
751     RK_U32 rc_dthd_0_8[9];
752 
753     /* 0x102c */
754     RK_U32 reserved_1035;
755 
756     /* 0x00001030 reg1036 */
757     struct {
758         RK_U32 qpmin_area0    : 6;
759         RK_U32 qpmax_area0    : 6;
760         RK_U32 qpmin_area1    : 6;
761         RK_U32 qpmax_area1    : 6;
762         RK_U32 qpmin_area2    : 6;
763         RK_U32 reserved       : 2;
764     } roi_qthd0;
765 
766     /* 0x00001034 reg1037 */
767     struct {
768         RK_U32 qpmax_area2    : 6;
769         RK_U32 qpmin_area3    : 6;
770         RK_U32 qpmax_area3    : 6;
771         RK_U32 qpmin_area4    : 6;
772         RK_U32 qpmax_area4    : 6;
773         RK_U32 reserved       : 2;
774     } roi_qthd1;
775 
776     /* 0x00001038 reg1038 */
777     struct {
778         RK_U32 qpmin_area5    : 6;
779         RK_U32 qpmax_area5    : 6;
780         RK_U32 qpmin_area6    : 6;
781         RK_U32 qpmax_area6    : 6;
782         RK_U32 qpmin_area7    : 6;
783         RK_U32 reserved       : 2;
784     } roi_qthd2;
785 
786     /* 0x0000103c reg1039 */
787     struct {
788         RK_U32 qpmax_area7    : 6;
789         RK_U32 reserved       : 24;
790         RK_U32 qpmap_mode     : 2;
791     } roi_qthd3;
792 
793     /* 0x00001040 reg1040 */
794     struct {
795         RK_U32 madi_mode    : 1;
796         RK_U32 reserved     : 15;
797         RK_U32 madi_thd     : 8;
798         RK_U32 reserved1    : 8;
799     } madi_cfg;
800 
801     /* 0x00001044 reg1041 */
802     struct {
803         RK_U32 aq_tthd0    : 8;
804         RK_U32 aq_tthd1    : 8;
805         RK_U32 aq_tthd2    : 8;
806         RK_U32 aq_tthd3    : 8;
807     } aq_tthd0;
808 
809     /* 0x00001048 reg1042 */
810     struct {
811         RK_U32 aq_tthd4    : 8;
812         RK_U32 aq_tthd5    : 8;
813         RK_U32 aq_tthd6    : 8;
814         RK_U32 aq_tthd7    : 8;
815     } aq_tthd1;
816 
817     /* 0x0000104c reg1043 */
818     struct {
819         RK_U32 aq_tthd8     : 8;
820         RK_U32 aq_tthd9     : 8;
821         RK_U32 aq_tthd10    : 8;
822         RK_U32 aq_tthd11    : 8;
823     } aq_tthd2;
824 
825     /* 0x00001050 reg1044 */
826     struct {
827         RK_U32 aq_tthd12    : 8;
828         RK_U32 aq_tthd13    : 8;
829         RK_U32 aq_tthd14    : 8;
830         RK_U32 aq_tthd15    : 8;
831     } aq_tthd3;
832 
833     /* 0x00001054 reg1045 */
834     struct {
835         RK_U32 aq_stp_s0     : 6;
836         RK_U32 reserved      : 2;
837         RK_U32 aq_stp_0t1    : 6;
838         RK_U32 reserved1     : 2;
839         RK_U32 aq_stp_1t2    : 6;
840         RK_U32 reserved2     : 2;
841         RK_U32 aq_stp_2t3    : 6;
842         RK_U32 reserved3     : 2;
843     } aq_stp0;
844 
845     /* 0x00001058 reg1046 */
846     struct {
847         RK_U32 aq_stp_3t4    : 6;
848         RK_U32 reserved      : 2;
849         RK_U32 aq_stp_4t5    : 6;
850         RK_U32 reserved1     : 2;
851         RK_U32 aq_stp_5t6    : 6;
852         RK_U32 reserved2     : 2;
853         RK_U32 aq_stp_6t7    : 6;
854         RK_U32 reserved3     : 2;
855     } aq_stp1;
856 
857     /* 0x0000105c reg1047 */
858     struct {
859         RK_U32 aq_stp_8t9      : 6;
860         RK_U32 reserved        : 2;
861         RK_U32 aq_stp_9t10     : 6;
862         RK_U32 reserved1       : 2;
863         RK_U32 aq_stp_10t11    : 6;
864         RK_U32 reserved2       : 2;
865         RK_U32 aq_stp_11t12    : 6;
866         RK_U32 reserved3       : 2;
867     } aq_stp2;
868 
869     /* 0x00001060 reg1048 */
870     struct {
871         RK_U32 aq_stp_12t13    : 6;
872         RK_U32 reserved        : 2;
873         RK_U32 aq_stp_13t14    : 6;
874         RK_U32 reserved1       : 2;
875         RK_U32 aq_stp_14t15    : 6;
876         RK_U32 reserved2       : 2;
877         RK_U32 aq_stp_b15      : 6;
878         RK_U32 reserved3       : 2;
879     } aq_stp3;
880 
881     /* 0x1064 - 0x106c */
882     RK_U32 reserved1049_1051[3];
883 
884     /* 0x00001070 reg1052 */
885     struct {
886         RK_U32 md_sad_thd0    : 8;
887         RK_U32 md_sad_thd1    : 8;
888         RK_U32 md_sad_thd2    : 8;
889         RK_U32 reserved       : 8;
890     } md_sad_thd;
891 
892     /* 0x00001074 reg1053 */
893     struct {
894         RK_U32 madi_thd0    : 8;
895         RK_U32 madi_thd1    : 8;
896         RK_U32 madi_thd2    : 8;
897         RK_U32 reserved     : 8;
898     } madi_thd;
899 
900     /* 0x1078 - 0x107c */
901     RK_U32 reserved1054_1055[2];
902 
903     /* 0x00001080 reg1056 */
904     struct {
905         RK_U32 chrm_klut_ofst    : 3;
906         RK_U32 reserved          : 29;
907     } klut_ofst;
908 
909     /* 0x00001084 reg1057 */
910     struct {
911         RK_U32 chrm_klut_wgt0       : 18;
912         RK_U32 reserved             : 5;
913         RK_U32 chrm_klut_wgt1_l9    : 9;
914     } klut_wgt0;
915 
916     /* 0x00001088 reg1058 */
917     struct {
918         RK_U32 chrm_klut_wgt1_h9    : 9;
919         RK_U32 reserved             : 5;
920         RK_U32 chrm_klut_wgt2       : 18;
921     } klut_wgt1;
922 
923     /* 0x0000108c reg1059 */
924     struct {
925         RK_U32 chrm_klut_wgt3       : 18;
926         RK_U32 reserved             : 5;
927         RK_U32 chrm_klut_wgt4_l9    : 9;
928     } klut_wgt2;
929 
930     /* 0x00001090 reg1060 */
931     struct {
932         RK_U32 chrm_klut_wgt4_h9    : 9;
933         RK_U32 reserved             : 5;
934         RK_U32 chrm_klut_wgt5       : 18;
935     } klut_wgt3;
936 
937     /* 0x00001094 reg1061 */
938     struct {
939         RK_U32 chrm_klut_wgt6       : 18;
940         RK_U32 reserved             : 5;
941         RK_U32 chrm_klut_wgt7_l9    : 9;
942     } klut_wgt4;
943 
944     /* 0x00001098 reg1062 */
945     struct {
946         RK_U32 chrm_klut_wgt7_h9    : 9;
947         RK_U32 reserved             : 5;
948         RK_U32 chrm_klut_wgt8       : 18;
949     } klut_wgt5;
950 
951     /* 0x0000109c reg1063 */
952     struct {
953         RK_U32 chrm_klut_wgt9        : 18;
954         RK_U32 reserved              : 5;
955         RK_U32 chrm_klut_wgt10_l9    : 9;
956     } klut_wgt6;
957 
958     /* 0x000010a0 reg1064 */
959     struct {
960         RK_U32 chrm_klut_wgt10_h9    : 9;
961         RK_U32 reserved              : 5;
962         RK_U32 chrm_klut_wgt11       : 18;
963     } klut_wgt7;
964 
965     /* 0x000010a4 reg1065 */
966     struct {
967         RK_U32 chrm_klut_wgt12       : 18;
968         RK_U32 reserved              : 5;
969         RK_U32 chrm_klut_wgt13_l9    : 9;
970     } klut_wgt8;
971 
972     /* 0x000010a8 reg1066 */
973     struct {
974         RK_U32 chrm_klut_wgt13_h9    : 9;
975         RK_U32 reserved              : 5;
976         RK_U32 chrm_klut_wgt14       : 18;
977     } klut_wgt9;
978 
979     /* 0x000010ac reg1067 */
980     struct {
981         RK_U32 chrm_klut_wgt15       : 18;
982         RK_U32 reserved              : 5;
983         RK_U32 chrm_klut_wgt16_l9    : 9;
984     } klut_wgt10;
985 
986     /* 0x000010b0 reg1068 */
987     struct {
988         RK_U32 chrm_klut_wgt16_h9    : 9;
989         RK_U32 reserved              : 5;
990         RK_U32 chrm_klut_wgt17       : 18;
991     } klut_wgt11;
992 
993     /* 0x000010b4 reg1069 */
994     struct {
995         RK_U32 chrm_klut_wgt18       : 18;
996         RK_U32 reserved              : 5;
997         RK_U32 chrm_klut_wgt19_l9    : 9;
998     } klut_wgt12;
999 
1000     /* 0x000010b8 reg1070 */
1001     struct {
1002         RK_U32 chrm_klut_wgt19_h9    : 9;
1003         RK_U32 reserved              : 5;
1004         RK_U32 chrm_klut_wgt20       : 18;
1005     } klut_wgt13;
1006 
1007     /* 0x000010bc reg1071 */
1008     struct {
1009         RK_U32 chrm_klut_wgt21       : 18;
1010         RK_U32 reserved              : 5;
1011         RK_U32 chrm_klut_wgt22_l9    : 9;
1012     } klut_wgt14;
1013 
1014     /* 0x000010c0 reg1072 */
1015     struct {
1016         RK_U32 chrm_klut_wgt22_h9    : 9;
1017         RK_U32 reserved              : 5;
1018         RK_U32 chrm_klut_wgt23       : 18;
1019     } klut_wgt15;
1020 
1021     /* 0x000010c4 reg1073 */
1022     struct {
1023         RK_U32 chrm_klut_wgt24       : 18;
1024         RK_U32 reserved              : 5;
1025         RK_U32 chrm_klut_wgt25_l9    : 9;
1026     } klut_wgt16;
1027 
1028     /* 0x000010c8 reg1074 */
1029     struct {
1030         RK_U32 chrm_klut_wgt25_h9    : 9;
1031         RK_U32 reserved              : 5;
1032         RK_U32 chrm_klut_wgt26       : 18;
1033     } klut_wgt17;
1034 
1035     /* 0x000010cc reg1075 */
1036     struct {
1037         RK_U32 chrm_klut_wgt27       : 18;
1038         RK_U32 reserved              : 5;
1039         RK_U32 chrm_klut_wgt28_l9    : 9;
1040     } klut_wgt18;
1041 
1042     /* 0x000010d0 reg1076 */
1043     struct {
1044         RK_U32 chrm_klut_wgt28_h9    : 9;
1045         RK_U32 reserved              : 5;
1046         RK_U32 chrm_klut_wgt29       : 18;
1047     } klut_wgt19;
1048 
1049     /* 0x000010d4 reg1077 */
1050     struct {
1051         RK_U32 chrm_klut_wgt30       : 18;
1052         RK_U32 reserved              : 5;
1053         RK_U32 chrm_klut_wgt31_l9    : 9;
1054     } klut_wgt20;
1055 
1056     /* 0x000010d8 reg1078 */
1057     struct {
1058         RK_U32 chrm_klut_wgt31_h9    : 9;
1059         RK_U32 reserved              : 5;
1060         RK_U32 chrm_klut_wgt32       : 18;
1061     } klut_wgt21;
1062 
1063     /* 0x000010dc reg1079 */
1064     struct {
1065         RK_U32 chrm_klut_wgt33       : 18;
1066         RK_U32 reserved              : 5;
1067         RK_U32 chrm_klut_wgt34_l9    : 9;
1068     } klut_wgt22;
1069 
1070     /* 0x000010e0 reg1080 */
1071     struct {
1072         RK_U32 chrm_klut_wgt34_h9    : 9;
1073         RK_U32 reserved              : 23;
1074     } klut_wgt23;
1075 } hevc_vepu580_rc_klut;
1076 
1077 /* class: iprd/iprd_wgt/rdo_wgta/prei_dif/sobel */
1078 /* 0x00001700 reg1472 - 0x00001cd4 reg1845 */
1079 typedef struct HevcVepu580Wgt_t {
1080     /* 0x00001700 reg1472 */
1081     struct {
1082         RK_U32 lvl32_intra_cst_thd0 : 12;
1083         RK_U32 reserved0 : 4;
1084         RK_U32 lvl32_intra_cst_thd1 : 12;
1085         RK_U32 reserved1 : 4;
1086     } lvl32_intra_CST_THD0;
1087 
1088     /* 0x1704 */
1089     struct {
1090         RK_U32 lvl32_intra_cst_thd2 : 12;
1091         RK_U32 reserved0 : 4;
1092         RK_U32 lvl32_intra_cst_thd3 : 12;
1093         RK_U32 reserved1 : 4;
1094     } lvl32_intra_CST_THD1;
1095 
1096     /* 0x1708 */
1097     struct {
1098         RK_U32 lvl16_intra_cst_thd0 : 12;
1099         RK_U32 reserved0 : 4;
1100         RK_U32 lvl16_intra_cst_thd1 : 12;
1101         RK_U32 reserved1 : 4;
1102     } lvl16_intra_CST_THD0;
1103 
1104     /* 0x170c */
1105     struct {
1106         RK_U32 lvl16_intra_cst_thd2 : 12;
1107         RK_U32 reserved0 : 4;
1108         RK_U32 lvl16_intra_cst_thd3 : 12;
1109         RK_U32 reserved1 : 4;
1110     } lvl16_intra_CST_THD1;
1111 
1112     /* 0x10-0x18 - reserved */
1113     RK_U32 reserved_0x1710_0x0x1718[3];
1114 
1115     /* 0x171c */
1116     struct {
1117         RK_U32 lvl32_intra_cst_wgt0 : 8;
1118         RK_U32 lvl32_intra_cst_wgt1 : 8;
1119         RK_U32 lvl32_intra_cst_wgt2 : 8;
1120         RK_U32 lvl32_intra_cst_wgt3 : 8;
1121     } lvl32_intra_CST_WGT0;
1122 
1123     /* 0x1720 */
1124     struct {
1125         RK_U32 lvl32_intra_cst_wgt4 : 8;
1126         RK_U32 lvl32_intra_cst_wgt5 : 8;
1127         RK_U32 lvl32_intra_cst_wgt6 : 8;
1128         RK_U32 reserved2 : 8;
1129     } lvl32_intra_CST_WGT1;
1130 
1131     /* 0x1724 */
1132     struct {
1133         RK_U32 lvl16_intra_cst_wgt0 : 8;
1134         RK_U32 lvl16_intra_cst_wgt1 : 8;
1135         RK_U32 lvl16_intra_cst_wgt2 : 8;
1136         RK_U32 lvl16_intra_cst_wgt3 : 8;
1137     } lvl16_intra_CST_WGT0;
1138 
1139     /* 0x1728 */
1140     struct {
1141         RK_U32 lvl16_intra_cst_wgt4 : 8;
1142         RK_U32 lvl16_intra_cst_wgt5 : 8;
1143         RK_U32 lvl16_intra_cst_wgt6 : 8;
1144         RK_U32 reserved2 : 8;
1145     } lvl16_intra_CST_WGT1;
1146 
1147 
1148     /* 0x172c */
1149     RK_U32 reserved_1483;
1150 
1151     /* 0x00001730 reg1484 */
1152     struct {
1153         RK_U32 qnt_bias_i    : 10;
1154         RK_U32 qnt_bias_p    : 10;
1155         RK_U32 reserved      : 12;
1156     } reg1484_qnt_bias_comb;
1157 
1158     /* 0x1734 - 0x175c */
1159     RK_U32 reserved1485_1495[11];
1160 
1161     /* 0x00001760 reg1496 */
1162     struct {
1163         RK_U32 cime_sad_mod_sel          : 1;
1164         RK_U32 cime_sad_use_big_block    : 1;
1165         RK_U32 cime_pmv_set_zero         : 1;
1166         RK_U32 reserved                  : 5;
1167         RK_U32 cime_pmv_num              : 2;
1168         RK_U32 reserved1                 : 22;
1169     } cime_sqi_cfg;
1170 
1171     /* 0x00001764 reg1497 */
1172     struct {
1173         RK_U32 cime_mvd_th0    : 9;
1174         RK_U32 reserved        : 1;
1175         RK_U32 cime_mvd_th1    : 9;
1176         RK_U32 reserved1       : 1;
1177         RK_U32 cime_mvd_th2    : 9;
1178         RK_U32 reserved2       : 3;
1179     } cime_sqi_thd;
1180 
1181     /* 0x00001768 reg1498 */
1182     struct {
1183         RK_U32 cime_multi0    : 10;
1184         RK_U32 reserved       : 6;
1185         RK_U32 cime_multi1    : 10;
1186         RK_U32 reserved1      : 6;
1187     } cime_sqi_multi0;
1188 
1189     /* 0x0000176c reg1499 */
1190     struct {
1191         RK_U32 cime_multi2    : 10;
1192         RK_U32 reserved       : 6;
1193         RK_U32 cime_multi3    : 10;
1194         RK_U32 reserved1      : 6;
1195     } cime_sqi_multi1;
1196 
1197     /* 0x00001770 reg1500 */
1198     struct {
1199         RK_U32 cime_sad_th0    : 12;
1200         RK_U32 reserved        : 4;
1201         RK_U32 rime_mvd_th0    : 4;
1202         RK_U32 reserved1       : 4;
1203         RK_U32 rime_mvd_th1    : 4;
1204         RK_U32 reserved2       : 4;
1205     } rime_sqi_thd;
1206 
1207     /* 0x00001774 reg1501 */
1208     struct {
1209         RK_U32 rime_multi0    : 10;
1210         RK_U32 rime_multi1    : 10;
1211         RK_U32 rime_multi2    : 10;
1212         RK_U32 reserved       : 2;
1213     } rime_sqi_multi;
1214 
1215     /* 0x00001778 reg1502 */
1216     struct {
1217         RK_U32 cime_sad_pu16_th    : 12;
1218         RK_U32 reserved            : 4;
1219         RK_U32 cime_sad_pu32_th    : 12;
1220         RK_U32 reserved1           : 4;
1221     } fme_sqi_thd0;
1222 
1223     /* 0x0000177c reg1503 */
1224     struct {
1225         RK_U32 cime_sad_pu64_th    : 12;
1226         RK_U32 reserved            : 4;
1227         RK_U32 move_lambda         : 4;
1228         RK_U32 reserved1           : 12;
1229     } fme_sqi_thd1;
1230 
1231     /* 0x1780 - 0x17fc */
1232     RK_U32 reserved1504_1535[32];
1233 
1234     /* 0x00001800 reg1536 - 0x000018cc reg1587  */
1235     // struct {
1236     //     RK_U32 wgt_qp0     : 20;
1237     //     RK_U32 reserved    : 12;
1238     // } iprd_wgt_qp_hevc_0_51[52];
1239     RK_U32 iprd_wgt_qp_hevc_0_51[52];
1240 
1241     /* 0x18d0 - 0x18fc */
1242     RK_U32 reserved1588_1599[12];
1243 
1244     /* wgt_qp48_grpa */
1245     /* 0x00001900 reg1600 */
1246     RK_U32 rdo_wgta_qp_grpa_0_51[52];
1247 
1248     /* 0x19d0 - 0x1afc */
1249     RK_U32 reserved1652_1727[76];
1250     // 0x1b00
1251 
1252     struct {
1253         RK_U32 pre_intra_cla0_m0 : 6;
1254         RK_U32 pre_intra_cla0_m1 : 6;
1255         RK_U32 pre_intra_cla0_m2 : 6;
1256         RK_U32 pre_intra_cla0_m3 : 6;
1257         RK_U32 pre_intra_cla0_m4 : 6;
1258         RK_U32 reserved : 2;
1259     } pre_intra_cla0_B0;
1260 
1261     // 0x1b04
1262     struct {
1263         RK_U32 pre_intra_cla0_m5 : 6;
1264         RK_U32 pre_intra_cla0_m6 : 6;
1265         RK_U32 pre_intra_cla0_m7 : 6;
1266         RK_U32 pre_intra_cla0_m8 : 6;
1267         RK_U32 pre_intra_cla0_m9 : 6;
1268         RK_U32 reserved : 2;
1269     } pre_intra_cla0_B1;
1270 
1271     // 0x1b08
1272     struct {
1273         RK_U32 pre_intra_cla1_m0 : 6;
1274         RK_U32 pre_intra_cla1_m1 : 6;
1275         RK_U32 pre_intra_cla1_m2 : 6;
1276         RK_U32 pre_intra_cla1_m3 : 6;
1277         RK_U32 pre_intra_cla1_m4 : 6;
1278         RK_U32 reserved : 2;
1279     } pre_intra_cla1_B0;
1280 
1281     // 0x1b0c
1282     struct {
1283         RK_U32 pre_intra_cla1_m5 : 6;
1284         RK_U32 pre_intra_cla1_m6 : 6;
1285         RK_U32 pre_intra_cla1_m7 : 6;
1286         RK_U32 pre_intra_cla1_m8 : 6;
1287         RK_U32 pre_intra_cla1_m9 : 6;
1288         RK_U32 reserved : 2;
1289     } pre_intra_cla1_B1;
1290 
1291     // 0x1b10
1292     // 0x0320
1293     struct {
1294         RK_U32 pre_intra_cla2_m0 : 6;
1295         RK_U32 pre_intra_cla2_m1 : 6;
1296         RK_U32 pre_intra_cla2_m2 : 6;
1297         RK_U32 pre_intra_cla2_m3 : 6;
1298         RK_U32 pre_intra_cla2_m4 : 6;
1299         RK_U32 reserved : 2;
1300     } pre_intra_cla2_B0;
1301 
1302     // 0x1b14
1303     struct {
1304         RK_U32 pre_intra_cla2_m5 : 6;
1305         RK_U32 pre_intra_cla2_m6 : 6;
1306         RK_U32 pre_intra_cla2_m7 : 6;
1307         RK_U32 pre_intra_cla2_m8 : 6;
1308         RK_U32 pre_intra_cla2_m9 : 6;
1309         RK_U32 reserved : 2;
1310     } pre_intra_cla2_B1;
1311 
1312     // 0x1b18
1313     struct {
1314         RK_U32 pre_intra_cla3_m0 : 6;
1315         RK_U32 pre_intra_cla3_m1 : 6;
1316         RK_U32 pre_intra_cla3_m2 : 6;
1317         RK_U32 pre_intra_cla3_m3 : 6;
1318         RK_U32 pre_intra_cla3_m4 : 6;
1319         RK_U32 reserved : 2;
1320     } pre_intra_cla3_B0;
1321 
1322     // 0x1b1c
1323     struct {
1324         RK_U32 pre_intra_cla3_m5 : 6;
1325         RK_U32 pre_intra_cla3_m6 : 6;
1326         RK_U32 pre_intra_cla3_m7 : 6;
1327         RK_U32 pre_intra_cla3_m8 : 6;
1328         RK_U32 pre_intra_cla3_m9 : 6;
1329         RK_U32 reserved : 2;
1330     } pre_intra_cla3_B1;
1331 
1332     // 0x1b20
1333     struct {
1334         RK_U32 pre_intra_cla4_m0 : 6;
1335         RK_U32 pre_intra_cla4_m1 : 6;
1336         RK_U32 pre_intra_cla4_m2 : 6;
1337         RK_U32 pre_intra_cla4_m3 : 6;
1338         RK_U32 pre_intra_cla4_m4 : 6;
1339         RK_U32 reserved : 2;
1340     } pre_intra_cla4_B0;
1341 
1342     // 0x1b24
1343     struct {
1344         RK_U32 pre_intra_cla4_m5 : 6;
1345         RK_U32 pre_intra_cla4_m6 : 6;
1346         RK_U32 pre_intra_cla4_m7 : 6;
1347         RK_U32 pre_intra_cla4_m8 : 6;
1348         RK_U32 pre_intra_cla4_m9 : 6;
1349         RK_U32 reserved : 2;
1350     } pre_intra_cla4_B1;
1351 
1352     // 0x1b28
1353     struct {
1354         RK_U32 pre_intra_cla5_m0 : 6;
1355         RK_U32 pre_intra_cla5_m1 : 6;
1356         RK_U32 pre_intra_cla5_m2 : 6;
1357         RK_U32 pre_intra_cla5_m3 : 6;
1358         RK_U32 pre_intra_cla5_m4 : 6;
1359         RK_U32 reserved : 2;
1360     } pre_intra_cla5_B0;
1361 
1362     // 0x1b2c
1363     struct {
1364         RK_U32 pre_intra_cla5_m5 : 6;
1365         RK_U32 pre_intra_cla5_m6 : 6;
1366         RK_U32 pre_intra_cla5_m7 : 6;
1367         RK_U32 pre_intra_cla5_m8 : 6;
1368         RK_U32 pre_intra_cla5_m9 : 6;
1369         RK_U32 reserved : 2;
1370     } pre_intra_cla5_B1;
1371 
1372     // 0x1b30
1373     struct {
1374         RK_U32 pre_intra_cla6_m0 : 6;
1375         RK_U32 pre_intra_cla6_m1 : 6;
1376         RK_U32 pre_intra_cla6_m2 : 6;
1377         RK_U32 pre_intra_cla6_m3 : 6;
1378         RK_U32 pre_intra_cla6_m4 : 6;
1379         RK_U32 reserved : 2;
1380     } pre_intra_cla6_B0;
1381 
1382     // 0x1b34
1383     struct {
1384         RK_U32 pre_intra_cla6_m5 : 6;
1385         RK_U32 pre_intra_cla6_m6 : 6;
1386         RK_U32 pre_intra_cla6_m7 : 6;
1387         RK_U32 pre_intra_cla6_m8 : 6;
1388         RK_U32 pre_intra_cla6_m9 : 6;
1389         RK_U32 reserved : 2;
1390     } pre_intra_cla6_B1;
1391 
1392     // 0x1b38
1393     struct {
1394         RK_U32 pre_intra_cla7_m0 : 6;
1395         RK_U32 pre_intra_cla7_m1 : 6;
1396         RK_U32 pre_intra_cla7_m2 : 6;
1397         RK_U32 pre_intra_cla7_m3 : 6;
1398         RK_U32 pre_intra_cla7_m4 : 6;
1399         RK_U32 reserved : 2;
1400     } pre_intra_cla7_B0;
1401 
1402     // 0x1b3c
1403     struct {
1404         RK_U32 pre_intra_cla7_m5 : 6;
1405         RK_U32 pre_intra_cla7_m6 : 6;
1406         RK_U32 pre_intra_cla7_m7 : 6;
1407         RK_U32 pre_intra_cla7_m8 : 6;
1408         RK_U32 pre_intra_cla7_m9 : 6;
1409         RK_U32 reserved : 2;
1410     } pre_intra_cla7_B1;
1411 
1412     // 0x1b40
1413     struct {
1414         RK_U32 pre_intra_cla8_m0 : 6;
1415         RK_U32 pre_intra_cla8_m1 : 6;
1416         RK_U32 pre_intra_cla8_m2 : 6;
1417         RK_U32 pre_intra_cla8_m3 : 6;
1418         RK_U32 pre_intra_cla8_m4 : 6;
1419         RK_U32 reserved : 2;
1420     } pre_intra_cla8_B0;
1421 
1422     // 0x1b44
1423     struct {
1424         RK_U32 pre_intra_cla8_m5 : 6;
1425         RK_U32 pre_intra_cla8_m6 : 6;
1426         RK_U32 pre_intra_cla8_m7 : 6;
1427         RK_U32 pre_intra_cla8_m8 : 6;
1428         RK_U32 pre_intra_cla8_m9 : 6;
1429         RK_U32 reserved : 2;
1430     } pre_intra_cla8_B1;
1431 
1432     // 0x1b48
1433     struct {
1434         RK_U32 pre_intra_cla9_m0 : 6;
1435         RK_U32 pre_intra_cla9_m1 : 6;
1436         RK_U32 pre_intra_cla9_m2 : 6;
1437         RK_U32 pre_intra_cla9_m3 : 6;
1438         RK_U32 pre_intra_cla9_m4 : 6;
1439         RK_U32 reserved : 2;
1440     } pre_intra_cla9_B0;
1441 
1442     // 0x1b4c
1443     struct {
1444         RK_U32 pre_intra_cla9_m5 : 6;
1445         RK_U32 pre_intra_cla9_m6 : 6;
1446         RK_U32 pre_intra_cla9_m7 : 6;
1447         RK_U32 pre_intra_cla9_m8 : 6;
1448         RK_U32 pre_intra_cla9_m9 : 6;
1449         RK_U32 reserved : 2;
1450     } pre_intra_cla9_B1;
1451 
1452     // 0x1b50
1453     struct {
1454         RK_U32 pre_intra_cla10_m0 : 6;
1455         RK_U32 pre_intra_cla10_m1 : 6;
1456         RK_U32 pre_intra_cla10_m2 : 6;
1457         RK_U32 pre_intra_cla10_m3 : 6;
1458         RK_U32 pre_intra_cla10_m4 : 6;
1459         RK_U32 reserved : 2;
1460     } pre_intra_cla10_B0;
1461 
1462     // 0x1b54
1463     struct {
1464         RK_U32 pre_intra_cla10_m5 : 6;
1465         RK_U32 pre_intra_cla10_m6 : 6;
1466         RK_U32 pre_intra_cla10_m7 : 6;
1467         RK_U32 pre_intra_cla10_m8 : 6;
1468         RK_U32 pre_intra_cla10_m9 : 6;
1469         RK_U32 reserved : 2;
1470     } pre_intra_cla10_B1;
1471 
1472     // 0x1b58
1473     struct {
1474         RK_U32 pre_intra_cla11_m0 : 6;
1475         RK_U32 pre_intra_cla11_m1 : 6;
1476         RK_U32 pre_intra_cla11_m2 : 6;
1477         RK_U32 pre_intra_cla11_m3 : 6;
1478         RK_U32 pre_intra_cla11_m4 : 6;
1479         RK_U32 reserved : 2;
1480     } pre_intra_cla11_B0;
1481 
1482     // 0x1b5c
1483     struct {
1484         RK_U32 pre_intra_cla11_m5 : 6;
1485         RK_U32 pre_intra_cla11_m6 : 6;
1486         RK_U32 pre_intra_cla11_m7 : 6;
1487         RK_U32 pre_intra_cla11_m8 : 6;
1488         RK_U32 pre_intra_cla11_m9 : 6;
1489         RK_U32 reserved : 2;
1490     } pre_intra_cla11_B1;
1491 
1492     // 0x1b60
1493     struct {
1494         RK_U32 pre_intra_cla12_m0 : 6;
1495         RK_U32 pre_intra_cla12_m1 : 6;
1496         RK_U32 pre_intra_cla12_m2 : 6;
1497         RK_U32 pre_intra_cla12_m3 : 6;
1498         RK_U32 pre_intra_cla12_m4 : 6;
1499         RK_U32 reserved : 2;
1500     } pre_intra_cla12_B0;
1501 
1502     // 0x1b64
1503     struct {
1504         RK_U32 pre_intra_cla12_m5 : 6;
1505         RK_U32 pre_intra_cla12_m6 : 6;
1506         RK_U32 pre_intra_cla12_m7 : 6;
1507         RK_U32 pre_intra_cla12_m8 : 6;
1508         RK_U32 pre_intra_cla12_m9 : 6;
1509         RK_U32 reserved : 2;
1510     } pre_intra_cla12_B1;
1511 
1512     // 0x1b68
1513     struct {
1514         RK_U32 pre_intra_cla13_m0 : 6;
1515         RK_U32 pre_intra_cla13_m1 : 6;
1516         RK_U32 pre_intra_cla13_m2 : 6;
1517         RK_U32 pre_intra_cla13_m3 : 6;
1518         RK_U32 pre_intra_cla13_m4 : 6;
1519         RK_U32 reserved : 2;
1520     } pre_intra_cla13_B0;
1521 
1522     // 0x1b6c
1523     struct {
1524         RK_U32 pre_intra_cla13_m5 : 6;
1525         RK_U32 pre_intra_cla13_m6 : 6;
1526         RK_U32 pre_intra_cla13_m7 : 6;
1527         RK_U32 pre_intra_cla13_m8 : 6;
1528         RK_U32 pre_intra_cla13_m9 : 6;
1529         RK_U32 reserved : 2;
1530     } pre_intra_cla13_B1;
1531 
1532     // 0x1b70
1533     struct {
1534         RK_U32 pre_intra_cla14_m0 : 6;
1535         RK_U32 pre_intra_cla14_m1 : 6;
1536         RK_U32 pre_intra_cla14_m2 : 6;
1537         RK_U32 pre_intra_cla14_m3 : 6;
1538         RK_U32 pre_intra_cla14_m4 : 6;
1539         RK_U32 reserved : 2;
1540     } pre_intra_cla14_B0;
1541 
1542     // 0x1b74
1543     struct {
1544         RK_U32 pre_intra_cla14_m5 : 6;
1545         RK_U32 pre_intra_cla14_m6 : 6;
1546         RK_U32 pre_intra_cla14_m7 : 6;
1547         RK_U32 pre_intra_cla14_m8 : 6;
1548         RK_U32 pre_intra_cla14_m9 : 6;
1549         RK_U32 reserved : 2;
1550     } pre_intra_cla14_B1;
1551 
1552     // 0x1b78
1553     struct {
1554         RK_U32 pre_intra_cla15_m0 : 6;
1555         RK_U32 pre_intra_cla15_m1 : 6;
1556         RK_U32 pre_intra_cla15_m2 : 6;
1557         RK_U32 pre_intra_cla15_m3 : 6;
1558         RK_U32 pre_intra_cla15_m4 : 6;
1559         RK_U32 reserved : 2;
1560     } pre_intra_cla15_B0;
1561 
1562     // 0x1b7c
1563     struct {
1564         RK_U32 pre_intra_cla15_m5 : 6;
1565         RK_U32 pre_intra_cla15_m6 : 6;
1566         RK_U32 pre_intra_cla15_m7 : 6;
1567         RK_U32 pre_intra_cla15_m8 : 6;
1568         RK_U32 pre_intra_cla15_m9 : 6;
1569         RK_U32 reserved : 2;
1570     } pre_intra_cla15_B1;
1571 
1572     // 0x1b80
1573     struct {
1574         RK_U32 pre_intra_cla16_m0 : 6;
1575         RK_U32 pre_intra_cla16_m1 : 6;
1576         RK_U32 pre_intra_cla16_m2 : 6;
1577         RK_U32 pre_intra_cla16_m3 : 6;
1578         RK_U32 pre_intra_cla16_m4 : 6;
1579         RK_U32 reserved : 2;
1580     } pre_intra_cla16_B0;
1581 
1582     // 0x1b84
1583     struct {
1584         RK_U32 pre_intra_cla16_m5 : 6;
1585         RK_U32 pre_intra_cla16_m6 : 6;
1586         RK_U32 pre_intra_cla16_m7 : 6;
1587         RK_U32 pre_intra_cla16_m8 : 6;
1588         RK_U32 pre_intra_cla16_m9 : 6;
1589         RK_U32 reserved : 2;
1590     } pre_intra_cla16_B1;
1591 
1592     /* 0x1b88 - 0x1bfc */
1593     RK_U32 reserved1762_1791[30];
1594 
1595     /* 0x00001c00 reg1792 */
1596     struct {
1597         RK_U32 intra_l16_sobel_t0    : 12;
1598         RK_U32 reserved              : 4;
1599         RK_U32 intra_l16_sobel_t1    : 12;
1600         RK_U32 reserved1             : 4;
1601     } i16_sobel_t;
1602 
1603     /* 0x00001c04 reg1793 */
1604     struct {
1605         RK_U32 intra_l16_sobel_a0_qp0    : 6;
1606         RK_U32 intra_l16_sobel_a0_qp1    : 6;
1607         RK_U32 intra_l16_sobel_a0_qp2    : 6;
1608         RK_U32 intra_l16_sobel_a0_qp3    : 6;
1609         RK_U32 intra_l16_sobel_a0_qp4    : 6;
1610         RK_U32 reserved                  : 2;
1611     } i16_sobel_a_00;
1612 
1613     /* 0x00001c08 reg1794 */
1614     struct {
1615         RK_U32 intra_l16_sobel_a0_qp5    : 6;
1616         RK_U32 intra_l16_sobel_a0_qp6    : 6;
1617         RK_U32 intra_l16_sobel_a0_qp7    : 6;
1618         RK_U32 intra_l16_sobel_a0_qp8    : 6;
1619         RK_U32 reserved                  : 8;
1620     } i16_sobel_a_01;
1621 
1622     /* 0x00001c0c reg1795 */
1623     struct {
1624         RK_U32 intra_l16_sobel_b0_qp0    : 15;
1625         RK_U32 reserved                  : 1;
1626         RK_U32 intra_l16_sobel_b0_qp1    : 15;
1627         RK_U32 reserved1                 : 1;
1628     } i16_sobel_b_00;
1629 
1630     /* 0x00001c10 reg1796 */
1631     struct {
1632         RK_U32 intra_l16_sobel_b0_qp2    : 15;
1633         RK_U32 reserved                  : 1;
1634         RK_U32 intra_l16_sobel_b0_qp3    : 15;
1635         RK_U32 reserved1                 : 1;
1636     } i16_sobel_b_01;
1637 
1638     /* 0x00001c14 reg1797 */
1639     struct {
1640         RK_U32 intra_l16_sobel_b0_qp4    : 15;
1641         RK_U32 reserved                  : 1;
1642         RK_U32 intra_l16_sobel_b0_qp5    : 15;
1643         RK_U32 reserved1                 : 1;
1644     } i16_sobel_b_02;
1645 
1646     /* 0x00001c18 reg1798 */
1647     struct {
1648         RK_U32 intra_l16_sobel_b0_qp6    : 15;
1649         RK_U32 reserved                  : 1;
1650         RK_U32 intra_l16_sobel_b0_qp7    : 15;
1651         RK_U32 reserved1                 : 1;
1652     } i16_sobel_b_03;
1653 
1654     /* 0x00001c1c reg1799 */
1655     struct {
1656         RK_U32 intra_l16_sobel_b0_qp8    : 15;
1657         RK_U32 reserved                  : 17;
1658     } i16_sobel_b_04;
1659 
1660     /* 0x00001c20 reg1800 */
1661     struct {
1662         RK_U32 intra_l16_sobel_c0_qp0    : 6;
1663         RK_U32 intra_l16_sobel_c0_qp1    : 6;
1664         RK_U32 intra_l16_sobel_c0_qp2    : 6;
1665         RK_U32 intra_l16_sobel_c0_qp3    : 6;
1666         RK_U32 intra_l16_sobel_c0_qp4    : 6;
1667         RK_U32 reserved                  : 2;
1668     } i16_sobel_c_00;
1669 
1670     /* 0x00001c24 reg1801 */
1671     struct {
1672         RK_U32 intra_l16_sobel_c0_qp5    : 6;
1673         RK_U32 intra_l16_sobel_c0_qp6    : 6;
1674         RK_U32 intra_l16_sobel_c0_qp7    : 6;
1675         RK_U32 intra_l16_sobel_c0_qp8    : 6;
1676         RK_U32 reserved                  : 8;
1677     } i16_sobel_c_01;
1678 
1679     /* 0x00001c28 reg1802 */
1680     struct {
1681         RK_U32 intra_l16_sobel_d0_qp0    : 15;
1682         RK_U32 reserved                  : 1;
1683         RK_U32 intra_l16_sobel_d0_qp1    : 15;
1684         RK_U32 reserved1                 : 1;
1685     } i16_sobel_d_00;
1686 
1687     /* 0x00001c2c reg1803 */
1688     struct {
1689         RK_U32 intra_l16_sobel_d0_qp2    : 15;
1690         RK_U32 reserved                  : 1;
1691         RK_U32 intra_l16_sobel_d0_qp3    : 15;
1692         RK_U32 reserved1                 : 1;
1693     } i16_sobel_d_01;
1694 
1695     /* 0x00001c30 reg1804 */
1696     struct {
1697         RK_U32 intra_l16_sobel_d0_qp4    : 15;
1698         RK_U32 reserved                  : 1;
1699         RK_U32 intra_l16_sobel_d0_qp5    : 15;
1700         RK_U32 reserved1                 : 1;
1701     } i16_sobel_d_02;
1702 
1703     /* 0x00001c34 reg1805 */
1704     struct {
1705         RK_U32 intra_l16_sobel_d0_qp6    : 15;
1706         RK_U32 reserved                  : 1;
1707         RK_U32 intra_l16_sobel_d0_qp7    : 15;
1708         RK_U32 reserved1                 : 1;
1709     } i16_sobel_d_03;
1710 
1711     /* 0x00001c38 reg1806 */
1712     struct {
1713         RK_U32 intra_l16_sobel_d0_qp8    : 15;
1714         RK_U32 reserved                  : 17;
1715     } i16_sobel_d_04;
1716 
1717     /* 0x00001c3c reg1807 */
1718     RK_U32 intra_l16_sobel_e0_qp0_low;
1719 
1720     /* 0x00001c40 reg1808 */
1721     struct {
1722         RK_U32 intra_l16_sobel_e0_qp0_high    : 2;
1723         RK_U32 reserved                       : 30;
1724     } i16_sobel_e_01;
1725 
1726     /* 0x00001c44 reg1809 */
1727     RK_U32 intra_l16_sobel_e0_qp1_low;
1728 
1729     /* 0x00001c48 reg1810 */
1730     struct {
1731         RK_U32 intra_l16_sobel_e0_qp1_high    : 2;
1732         RK_U32 reserved                       : 30;
1733     } i16_sobel_e_03;
1734 
1735     /* 0x00001c4c reg1811 */
1736     RK_U32 intra_l16_sobel_e0_qp2_low;
1737 
1738     /* 0x00001c50 reg1812 */
1739     struct {
1740         RK_U32 intra_l16_sobel_e0_qp2_high    : 2;
1741         RK_U32 reserved                       : 30;
1742     } i16_sobel_e_05;
1743 
1744     /* 0x00001c54 reg1813 */
1745     RK_U32 intra_l16_sobel_e0_qp3_low;
1746 
1747     /* 0x00001c58 reg1814 */
1748     struct {
1749         RK_U32 intra_l16_sobel_e0_qp3_high    : 2;
1750         RK_U32 reserved                       : 30;
1751     } i16_sobel_e_07;
1752 
1753     /* 0x00001c5c reg1815 */
1754     RK_U32 intra_l16_sobel_e0_qp4_low;
1755 
1756     /* 0x00001c60 reg1816 */
1757     struct {
1758         RK_U32 intra_l16_sobel_e0_qp4_high    : 2;
1759         RK_U32 reserved                       : 30;
1760     } i16_sobel_e_09;
1761 
1762     /* 0x00001c64 reg1817 */
1763     RK_U32 intra_l16_sobel_e0_qp5_low;
1764 
1765     /* 0x00001c68 reg1818 */
1766     struct {
1767         RK_U32 intra_l16_sobel_e0_qp5_high    : 2;
1768         RK_U32 reserved                       : 30;
1769     } i16_sobel_e_11;
1770 
1771     /* 0x00001c6c reg1819 */
1772     RK_U32 intra_l16_sobel_e0_qp6_low;
1773 
1774     /* 0x00001c70 reg1820 */
1775     struct {
1776         RK_U32 intra_l16_sobel_e0_qp6_high    : 2;
1777         RK_U32 reserved                       : 30;
1778     } i16_sobel_e_13;
1779 
1780     /* 0x00001c74 reg1821 */
1781     RK_U32 intra_l16_sobel_e0_qp7_low;
1782 
1783     /* 0x00001c78 reg1822 */
1784     struct {
1785         RK_U32 intra_l16_sobel_e0_qp7_high    : 2;
1786         RK_U32 reserved                       : 30;
1787     } i16_sobel_e_15;
1788 
1789     /* 0x00001c7c reg1823 */
1790     RK_U32 intra_l16_sobel_e0_qp8_low;
1791 
1792     /* 0x00001c80 reg1824 */
1793     struct {
1794         RK_U32 intra_l16_sobel_e0_qp8_high    : 2;
1795         RK_U32 reserved                       : 30;
1796     } i16_sobel_e_17;
1797 
1798     /* 0x00001c84 reg1825 */
1799     struct {
1800         RK_U32 intra_l32_sobel_t2    : 12;
1801         RK_U32 reserved              : 4;
1802         RK_U32 intra_l32_sobel_t3    : 12;
1803         RK_U32 reserved1             : 4;
1804     } i32_sobel_t_00;
1805 
1806     /* 0x00001c88 reg1826 */
1807     struct {
1808         RK_U32 intra_l32_sobel_t4    : 6;
1809         RK_U32 reserved              : 26;
1810     } i32_sobel_t_01;
1811 
1812     /* 0x00001c8c reg1827 */
1813     struct {
1814         RK_U32 intra_l32_sobel_t5    : 12;
1815         RK_U32 reserved              : 4;
1816         RK_U32 intra_l32_sobel_t6    : 12;
1817         RK_U32 reserved1             : 4;
1818     } i32_sobel_t_02;
1819 
1820     /* 0x00001c90 reg1828 */
1821     struct {
1822         RK_U32 intra_l32_sobel_a1_qp0    : 6;
1823         RK_U32 intra_l32_sobel_a1_qp1    : 6;
1824         RK_U32 intra_l32_sobel_a1_qp2    : 6;
1825         RK_U32 intra_l32_sobel_a1_qp3    : 6;
1826         RK_U32 intra_l32_sobel_a1_qp4    : 6;
1827         RK_U32 reserved                  : 2;
1828     } i32_sobel_a;
1829 
1830     /* 0x00001c94 reg1829 */
1831     struct {
1832         RK_U32 intra_l32_sobel_b1_qp0    : 15;
1833         RK_U32 reserved                  : 1;
1834         RK_U32 intra_l32_sobel_b1_qp1    : 15;
1835         RK_U32 reserved1                 : 1;
1836     } i32_sobel_b_00;
1837 
1838     /* 0x00001c98 reg1830 */
1839     struct {
1840         RK_U32 intra_l32_sobel_b1_qp2    : 15;
1841         RK_U32 reserved                  : 1;
1842         RK_U32 intra_l32_sobel_b1_qp3    : 15;
1843         RK_U32 reserved1                 : 1;
1844     } i32_sobel_b_01;
1845 
1846     /* 0x00001c9c reg1831 */
1847     struct {
1848         RK_U32 intra_l32_sobel_b1_qp4    : 15;
1849         RK_U32 reserved                  : 17;
1850     } i32_sobel_b_02;
1851 
1852     /* 0x00001ca0 reg1832 */
1853     struct {
1854         RK_U32 intra_l32_sobel_c1_qp0    : 6;
1855         RK_U32 intra_l32_sobel_c1_qp1    : 6;
1856         RK_U32 intra_l32_sobel_c1_qp2    : 6;
1857         RK_U32 intra_l32_sobel_c1_qp3    : 6;
1858         RK_U32 intra_l32_sobel_c1_qp4    : 6;
1859         RK_U32 reserved                  : 2;
1860     } i32_sobel_c;
1861 
1862     /* 0x00001ca4 reg1833 */
1863     struct {
1864         RK_U32 intra_l32_sobel_d1_qp0    : 15;
1865         RK_U32 reserved                  : 1;
1866         RK_U32 intra_l32_sobel_d1_qp1    : 15;
1867         RK_U32 reserved1                 : 1;
1868     } i32_sobel_d_00;
1869 
1870     /* 0x00001ca8 reg1834 */
1871     struct {
1872         RK_U32 intra_l32_sobel_d1_qp2    : 15;
1873         RK_U32 reserved                  : 1;
1874         RK_U32 intra_l32_sobel_d1_qp3    : 15;
1875         RK_U32 reserved1                 : 1;
1876     } i32_sobel_d_01;
1877 
1878     /* 0x00001cac reg1835 */
1879     struct {
1880         RK_U32 intra_l32_sobel_d1_qp4    : 15;
1881         RK_U32 reserved                  : 17;
1882     } i32_sobel_d_02;
1883 
1884     /* 0x00001cb0 reg1836 */
1885     RK_U32 intra_l32_sobel_e1_qp0_low;
1886 
1887     /* 0x00001cb4 reg1837 */
1888     struct {
1889         RK_U32 intra_l32_sobel_e1_qp0_high    : 9;
1890         RK_U32 reserved                       : 23;
1891     } i32_sobel_e_01;
1892 
1893     /* 0x00001cb8 reg1838 */
1894     RK_U32 intra_l32_sobel_e1_qp1_low;
1895 
1896     /* 0x00001cbc reg1839 */
1897     struct {
1898         RK_U32 intra_l32_sobel_e1_qp1_high    : 9;
1899         RK_U32 reserved                       : 23;
1900     } i32_sobel_e_03;
1901 
1902     /* 0x00001cc0 reg1840 */
1903     RK_U32 intra_l32_sobel_e1_qp2_low;
1904 
1905     /* 0x00001cc4 reg1841 */
1906     struct {
1907         RK_U32 intra_l32_sobel_e1_qp2_high    : 9;
1908         RK_U32 reserved                       : 23;
1909     } i32_sobel_e_05;
1910 
1911     /* 0x00001cc8 reg1842 */
1912     RK_U32 intra_l32_sobel_e1_qp3_low;
1913 
1914     /* 0x00001ccc reg1843 */
1915     struct {
1916         RK_U32 intra_l32_sobel_e1_qp3_high    : 9;
1917         RK_U32 reserved                       : 23;
1918     } i32_sobel_e_07;
1919 
1920     /* 0x00001cd0 reg1844 */
1921     RK_U32 intra_l32_sobel_e1_qp4_low;
1922 
1923     /* 0x00001cd4 reg1845 */
1924     struct {
1925         RK_U32 intra_l32_sobel_e1_qp4_high    : 9;
1926         RK_U32 reserved                       : 23;
1927     } i32_sobel_e_09;
1928 } hevc_vepu580_wgt;
1929 
1930 typedef struct {
1931     struct {
1932         RK_U32 cu_rdo_cime_thd0 : 12;
1933         RK_U32 reserved0 : 4;
1934         RK_U32 cu_rdo_cime_thd1 : 12;
1935         RK_U32 reserved1 : 4;
1936     } rdo_b_cime_thd0;
1937 
1938     struct {
1939         RK_U32 cu_rdo_cime_thd2 : 12;
1940         RK_U32 reserved : 20;
1941     } rdo_b_cime_thd1;
1942 
1943     struct {
1944         RK_U32 cu_rdo_var_thd00 : 12;
1945         RK_U32 reserved0 : 4;
1946         RK_U32 cu_rdo_var_thd01 : 12;
1947         RK_U32 reserved1 : 4;
1948     } rdo_b_var_thd0;
1949 
1950     struct {
1951         RK_U32 cu_rdo_var_thd10 : 12;
1952         RK_U32 reserved0 : 4;
1953         RK_U32 cu_rdo_var_thd11 : 12;
1954         RK_U32 reserved1 : 4;
1955     } rdo_b_var_thd1;
1956 
1957     struct {
1958         RK_U32 cu_rdo_var_thd20 : 12;
1959         RK_U32 reserved0 : 4;
1960         RK_U32 cu_rdo_var_thd21 : 12;
1961         RK_U32 reserved1 : 4;
1962     } rdo_b_var_thd2;
1963 
1964     struct {
1965         RK_U32 cu_rdo_var_thd30 : 12;
1966         RK_U32 reserved0 : 4;
1967         RK_U32 cu_rdo_var_thd31 : 12;
1968         RK_U32 reserved1 : 4;
1969     } rdo_b_var_thd3;
1970 
1971     struct {
1972         RK_U32 cu_rdo_atf_wgt00 : 8;
1973         RK_U32 cu_rdo_atf_wgt01 : 8;
1974         RK_U32 cu_rdo_atf_wgt02 : 8;
1975         RK_U32 reserved : 8;
1976     } rdo_b_atf_wgt0;
1977 
1978     struct {
1979         RK_U32 cu_rdo_atf_wgt10 : 8;
1980         RK_U32 cu_rdo_atf_wgt11 : 8;
1981         RK_U32 cu_rdo_atf_wgt12 : 8;
1982         RK_U32 reserved : 8;
1983     } rdo_b_atf_wgt1;
1984 
1985     struct {
1986         RK_U32 cu_rdo_atf_wgt20 : 8;
1987         RK_U32 cu_rdo_atf_wgt21 : 8;
1988         RK_U32 cu_rdo_atf_wgt22 : 8;
1989         RK_U32 reserved : 8;
1990     } rdo_b_atf_wgt2;
1991 
1992     struct {
1993         RK_U32 cu_rdo_atf_wgt30 : 8;
1994         RK_U32 cu_rdo_atf_wgt31 : 8;
1995         RK_U32 cu_rdo_atf_wgt32 : 8;
1996         RK_U32 reserved : 8;
1997     } rdo_b_atf_wgt3;
1998 } RdoAtfCfg;
1999 
2000 
2001 typedef struct {
2002     struct {
2003         RK_U32 cu_rdo_cime_thd0 : 12;
2004         RK_U32 reserved0 : 4;
2005         RK_U32 cu_rdo_cime_thd1 : 12;
2006         RK_U32 reserved1 : 4;
2007     } rdo_b_cime_thd0;
2008 
2009     struct {
2010         RK_U32 cu_rdo_cime_thd2 : 12;
2011         RK_U32 reserved0 : 4;
2012         RK_U32 cu_rdo_cime_thd3 : 12;
2013         RK_U32 reserved1 : 4;
2014     } rdo_b_cime_thd1;
2015 
2016     struct {
2017         RK_U32 cu_rdo_var_thd10 : 12;
2018         RK_U32 reserved0 : 4;
2019         RK_U32 cu_rdo_var_thd11 : 12;
2020         RK_U32 reserved1 : 4;
2021     } rdo_b_var_thd0;
2022 
2023     struct {
2024         RK_U32 cu_rdo_var_thd20 : 12;
2025         RK_U32 reserved0 : 4;
2026         RK_U32 cu_rdo_var_thd21 : 12;
2027         RK_U32 reserved1 : 4;
2028     } rdo_b_var_thd1;
2029 
2030     struct {
2031         RK_U32 cu_rdo_var_thd30 : 12;
2032         RK_U32 reserved0 : 4;
2033         RK_U32 cu_rdo_var_thd31 : 12;
2034         RK_U32 reserved1 : 4;
2035     } rdo_b_var_thd2;
2036 
2037     struct {
2038         RK_U32 cu_rdo_var_thd40 : 12;
2039         RK_U32 reserved0 : 4;
2040         RK_U32 cu_rdo_var_thd41 : 12;
2041         RK_U32 reserved1 : 4;
2042     } rdo_b_var_thd3;
2043 
2044     struct {
2045         RK_U32 cu_rdo_atf_wgt00 : 8;
2046         RK_U32 cu_rdo_atf_wgt10 : 8;
2047         RK_U32 cu_rdo_atf_wgt11 : 8;
2048         RK_U32 cu_rdo_atf_wgt12 : 8;
2049     } rdo_b_atf_wgt0;
2050 
2051     struct {
2052         RK_U32 cu_rdo_atf_wgt20 : 8;
2053         RK_U32 cu_rdo_atf_wgt21 : 8;
2054         RK_U32 cu_rdo_atf_wgt22 : 8;
2055         RK_U32 reserved : 8;
2056     } rdo_b_atf_wgt1;
2057 
2058     struct {
2059         RK_U32 cu_rdo_atf_wgt30 : 8;
2060         RK_U32 cu_rdo_atf_wgt31 : 8;
2061         RK_U32 cu_rdo_atf_wgt32 : 8;
2062         RK_U32 reserved : 8;
2063     } rdo_b_atf_wgt2;
2064 
2065     struct {
2066         RK_U32 cu_rdo_atf_wgt40 : 8;
2067         RK_U32 cu_rdo_atf_wgt41 : 8;
2068         RK_U32 cu_rdo_atf_wgt42 : 8;
2069         RK_U32 reserved : 8;
2070     } rdo_b_atf_wgt3;
2071 } RdoAtfSkipCfg;
2072 
2073 /* class: rdo/q_i */
2074 /* 0x00002000 reg2048 - 0x00002c98 reg2854 */
2075 typedef struct Vepu580RdoCfg_t {
2076     /* 0x00002000 reg2048 */
2077     struct {
2078         RK_U32 rdo_segment_en    : 1;
2079         RK_U32 rdo_smear_en      : 1;
2080         RK_U32 reserved          : 30;
2081     } rdo_sqi_cfg;
2082     // 0x2004  - 0x2028     start   VEPU_RDO_B64_INTER_CIME_THD0
2083     RdoAtfCfg rdo_b64_inter_atf;
2084     // 0x202c  - 0x2050
2085     RdoAtfSkipCfg rdo_b64_skip_atf;
2086     // 0x2054  - 0x2078
2087     RdoAtfCfg rdo_b32_intra_atf;
2088     // 0x207c  - 0x20a0
2089     RdoAtfCfg rdo_b32_inter_atf;
2090     // 0x20a4  - 0x20c8
2091     RdoAtfSkipCfg rdo_b32_skip_atf;
2092     // 0x20cc  - 0x20f0
2093     RdoAtfCfg rdo_b16_intra_atf;
2094     // 0x20f4  - 0x2118
2095     RdoAtfCfg rdo_b16_inter_atf;
2096     // 0x211c  - 0x2140
2097     RdoAtfSkipCfg rdo_b16_skip_atf;
2098     // 0x2144  - 0x2168
2099     RdoAtfCfg rdo_b8_intra_atf;
2100     // 0x216c  - 0x2190
2101     RdoAtfCfg rdo_b8_inter_atf;
2102     // 0x2194  - 0x21b8
2103     RdoAtfSkipCfg rdo_b8_skip_atf;
2104 
2105     /* 0x000021bc reg2159 */
2106     struct {
2107         RK_U32 rdo_segment_cu64_th0    : 12;
2108         RK_U32 reserved                : 4;
2109         RK_U32 rdo_segment_cu64_th1    : 12;
2110         RK_U32 reserved1               : 4;
2111     } rdo_segment_b64_thd0;
2112 
2113     /* 0x000021c0 reg2160 */
2114     struct {
2115         RK_U32 rdo_segment_cu64_th2           : 12;
2116         RK_U32 reserved                       : 4;
2117         RK_U32 rdo_segment_cu64_th3           : 4;
2118         RK_U32 rdo_segment_cu64_th4           : 4;
2119         RK_U32 rdo_segment_cu64_th5_minus1    : 4;
2120         RK_U32 rdo_segment_cu64_th6_minus1    : 4;
2121     } rdo_segment_b64_thd1;
2122 
2123     /* 0x000021c4 reg2161 */
2124     struct {
2125         RK_U32 rdo_segment_cu32_th0    : 12;
2126         RK_U32 reserved                : 4;
2127         RK_U32 rdo_segment_cu32_th1    : 12;
2128         RK_U32 reserved1               : 4;
2129     } rdo_segment_b32_thd0;
2130 
2131     /* 0x000021c8 reg2162 */
2132     struct {
2133         RK_U32 rdo_segment_cu32_th2           : 12;
2134         RK_U32 reserved                       : 4;
2135         RK_U32 rdo_segment_cu32_th3           : 2;
2136         RK_U32 reserved1                      : 2;
2137         RK_U32 rdo_segment_cu32_th4           : 2;
2138         RK_U32 reserved2                      : 2;
2139         RK_U32 rdo_segment_cu32_th5_minus1    : 2;
2140         RK_U32 reserved3                      : 2;
2141         RK_U32 rdo_segment_cu32_th6_minus1    : 2;
2142         RK_U32 reserved4                      : 2;
2143     } rdo_segment_b32_thd1;
2144 
2145     /* 0x000021cc reg2163 */
2146     struct {
2147         RK_U32 rdo_segment_cu64_multi    : 8;
2148         RK_U32 rdo_segment_cu32_multi    : 8;
2149         RK_U32 rdo_smear_cu16_multi      : 8;
2150         RK_U32 reserved                  : 8;
2151     } rdo_segment_multi;
2152 
2153     /* 0x000021d0 reg2164 */
2154     struct {
2155         RK_U32 rdo_smear_cu16_cime_sad_th0    : 12;
2156         RK_U32 reserved                       : 4;
2157         RK_U32 rdo_smear_cu16_cime_sad_th1    : 12;
2158         RK_U32 reserved1                      : 4;
2159     } rdo_b16_smear_thd0;
2160 
2161     /* 0x000021d4 reg2165 */
2162     struct {
2163         RK_U32 rdo_smear_cu16_cime_sad_th2    : 12;
2164         RK_U32 reserved                       : 4;
2165         RK_U32 rdo_smear_cu16_cime_sad_th3    : 12;
2166         RK_U32 reserved1                      : 4;
2167     } rdo_b16_smear_thd1;
2168 
2169     /* 0x000021d8 reg2166 */
2170     struct {
2171         RK_U32 pre_intra32_cst_var_th00    : 12;
2172         RK_U32 reserved                    : 4;
2173         RK_U32 pre_intra32_cst_var_th01    : 12;
2174         RK_U32 reserved1                   : 1;
2175         RK_U32 pre_intra32_mode_th         : 3;
2176     } preintra_b32_cst_var_thd;
2177 
2178     /* 0x000021dc reg2167 */
2179     struct {
2180         RK_U32 pre_intra32_cst_wgt00    : 8;
2181         RK_U32 reserved                 : 8;
2182         RK_U32 pre_intra32_cst_wgt01    : 8;
2183         RK_U32 reserved1                : 8;
2184     } preintra_b32_cst_wgt;
2185 
2186     /* 0x000021e0 reg2168 */
2187     struct {
2188         RK_U32 pre_intra16_cst_var_th00    : 12;
2189         RK_U32 reserved                    : 4;
2190         RK_U32 pre_intra16_cst_var_th01    : 12;
2191         RK_U32 reserved1                   : 1;
2192         RK_U32 pre_intra16_mode_th         : 3;
2193     } preintra_b16_cst_var_thd;
2194 
2195     /* 0x000021e4 reg2169 */
2196     struct {
2197         RK_U32 pre_intra16_cst_wgt00    : 8;
2198         RK_U32 reserved                 : 8;
2199         RK_U32 pre_intra16_cst_wgt01    : 8;
2200         RK_U32 reserved1                : 8;
2201     } preintra_b16_cst_wgt;
2202 
2203     RK_U32 reserved_0x21e8_0x21fc[6];
2204 
2205     // 0x2200 ~ 0x2c94
2206     RK_U32 scaling_list_reg[678]; /* total number really: 678 */
2207     // 0x2c98
2208     RK_U32 scal_cfg_reg;
2209 } vepu580_rdo_cfg;
2210 
2211 /* class: osd */
2212 /* 0x00003000 reg3072 - 0x00003084 reg3105*/
2213 typedef struct Vepu580OsdCfg_t {
2214     /* 0x00003000 reg3072 */
2215     struct {
2216         RK_U32 osd_lu_inv_en     : 8;
2217         RK_U32 osd_ch_inv_en     : 8;
2218         RK_U32 osd_lu_inv_msk    : 8;
2219         RK_U32 osd_ch_inv_msk    : 8;
2220     } osd_inv_en;
2221 
2222     /* 0x00003004 reg3073 */
2223     struct {
2224         RK_U32 osd_ithd_r0    : 4;
2225         RK_U32 osd_ithd_r1    : 4;
2226         RK_U32 osd_ithd_r2    : 4;
2227         RK_U32 osd_ithd_r3    : 4;
2228         RK_U32 osd_ithd_r4    : 4;
2229         RK_U32 osd_ithd_r5    : 4;
2230         RK_U32 osd_ithd_r6    : 4;
2231         RK_U32 osd_ithd_r7    : 4;
2232     } osd_inv_thd;
2233 
2234     /* 0x00003008 reg3074 */
2235     struct {
2236         RK_U32 osd_en         : 8;
2237         RK_U32 osd_itype      : 8;
2238         RK_U32 osd_plt_cks    : 1;
2239         RK_U32 osd_plt_typ    : 1;
2240         RK_U32 reserved       : 14;
2241     } osd_cfg;
2242 
2243     /* 0x300c */
2244     RK_U32 reserved_3075;
2245 
2246     /* 0x00003010 reg3076 */
2247     struct {
2248         RK_U32 osd0_lt_x    : 10;
2249         RK_U32 reserved     : 6;
2250         RK_U32 osd0_lt_y    : 10;
2251         RK_U32 reserved1    : 6;
2252     } osd0_lt_pos;
2253 
2254     /* 0x00003014 reg3077 */
2255     struct {
2256         RK_U32 osd0_rb_x    : 10;
2257         RK_U32 reserved     : 6;
2258         RK_U32 osd0_rb_y    : 10;
2259         RK_U32 reserved1    : 6;
2260     } osd0_rb_pos;
2261 
2262     /* 0x00003018 reg3078 */
2263     struct {
2264         RK_U32 osd1_lt_x    : 10;
2265         RK_U32 reserved     : 6;
2266         RK_U32 osd1_lt_y    : 10;
2267         RK_U32 reserved1    : 6;
2268     } osd1_lt_pos;
2269 
2270     /* 0x0000301c reg3079 */
2271     struct {
2272         RK_U32 osd1_rb_x    : 10;
2273         RK_U32 reserved     : 6;
2274         RK_U32 osd1_rb_y    : 10;
2275         RK_U32 reserved1    : 6;
2276     } osd1_rb_pos;
2277 
2278     /* 0x00003020 reg3080 */
2279     struct {
2280         RK_U32 osd2_lt_x    : 10;
2281         RK_U32 reserved     : 6;
2282         RK_U32 osd2_lt_y    : 10;
2283         RK_U32 reserved1    : 6;
2284     } osd2_lt_pos;
2285 
2286     /* 0x00003024 reg3081 */
2287     struct {
2288         RK_U32 osd2_rb_x    : 10;
2289         RK_U32 reserved     : 6;
2290         RK_U32 osd2_rb_y    : 10;
2291         RK_U32 reserved1    : 6;
2292     } osd2_rb_pos;
2293 
2294     /* 0x00003028 reg3082 */
2295     struct {
2296         RK_U32 osd3_lt_x    : 10;
2297         RK_U32 reserved     : 6;
2298         RK_U32 osd3_lt_y    : 10;
2299         RK_U32 reserved1    : 6;
2300     } osd3_lt_pos;
2301 
2302     /* 0x0000302c reg3083 */
2303     struct {
2304         RK_U32 osd3_rb_x    : 10;
2305         RK_U32 reserved     : 6;
2306         RK_U32 osd3_rb_y    : 10;
2307         RK_U32 reserved1    : 6;
2308     } osd3_rb_pos;
2309 
2310     /* 0x00003030 reg3084 */
2311     struct {
2312         RK_U32 osd4_lt_x    : 10;
2313         RK_U32 reserved     : 6;
2314         RK_U32 osd4_lt_y    : 10;
2315         RK_U32 reserved1    : 6;
2316     } osd4_lt_pos;
2317 
2318     /* 0x00003034 reg3085 */
2319     struct {
2320         RK_U32 osd4_rb_x    : 10;
2321         RK_U32 reserved     : 6;
2322         RK_U32 osd4_rb_y    : 10;
2323         RK_U32 reserved1    : 6;
2324     } osd4_rb_pos;
2325 
2326     /* 0x00003038 reg3086 */
2327     struct {
2328         RK_U32 osd5_lt_x    : 10;
2329         RK_U32 reserved     : 6;
2330         RK_U32 osd5_lt_y    : 10;
2331         RK_U32 reserved1    : 6;
2332     } osd5_lt_pos;
2333 
2334     /* 0x0000303c reg3087 */
2335     struct {
2336         RK_U32 osd5_rb_x    : 10;
2337         RK_U32 reserved     : 6;
2338         RK_U32 osd5_rb_y    : 10;
2339         RK_U32 reserved1    : 6;
2340     } osd5_rb_pos;
2341 
2342     /* 0x00003040 reg3088 */
2343     struct {
2344         RK_U32 osd6_lt_x    : 10;
2345         RK_U32 reserved     : 6;
2346         RK_U32 osd6_lt_y    : 10;
2347         RK_U32 reserved1    : 6;
2348     } osd6_lt_pos;
2349 
2350     /* 0x00003044 reg3089 */
2351     struct {
2352         RK_U32 osd6_rb_x    : 10;
2353         RK_U32 reserved     : 6;
2354         RK_U32 osd6_rb_y    : 10;
2355         RK_U32 reserved1    : 6;
2356     } osd6_rb_pos;
2357 
2358     /* 0x00003048 reg3090 */
2359     struct {
2360         RK_U32 osd7_lt_x    : 10;
2361         RK_U32 reserved     : 6;
2362         RK_U32 osd7_lt_y    : 10;
2363         RK_U32 reserved1    : 6;
2364     } osd7_lt_pos;
2365 
2366     /* 0x0000304c reg3091 */
2367     struct {
2368         RK_U32 osd7_rb_x    : 10;
2369         RK_U32 reserved     : 6;
2370         RK_U32 osd7_rb_y    : 10;
2371         RK_U32 reserved1    : 6;
2372     } osd7_rb_pos;
2373 
2374     /* 0x00003050 reg3092 */
2375     RK_U32 osd0_addr;
2376 
2377     /* 0x00003054 reg3093 */
2378     RK_U32 osd1_addr;
2379 
2380     /* 0x00003058 reg3094 */
2381     RK_U32 osd2_addr;
2382 
2383     /* 0x0000305c reg3095 */
2384     RK_U32 osd3_addr;
2385 
2386     /* 0x00003060 reg3096 */
2387     RK_U32 osd4_addr;
2388 
2389     /* 0x00003064 reg3097 */
2390     RK_U32 osd5_addr;
2391 
2392     /* 0x00003068 reg3098 */
2393     RK_U32 osd6_addr;
2394 
2395     /* 0x0000306c reg3099 */
2396     RK_U32 osd7_addr;
2397 
2398     /* 0x3070 - 0x307c */
2399     RK_U32 reserved3100_3103[4];
2400     /* 0x03080-0x347c reg3104-reg3360 */
2401     RK_U32 plt[256];
2402 } vepu580_osd_cfg;
2403 
2404 /* class: st */
2405 /* 0x00004000 reg4096 - 0x000042cc reg4275 */
2406 typedef struct Vepu580Status_t {
2407     /* 0x00004000 reg4096 */
2408     RK_U32 bs_lgth_l32;
2409 
2410     /* 0x00004004 reg4097 */
2411     struct {
2412         RK_U32 bs_lgth_h8    : 8;
2413         RK_U32 reserved      : 8;
2414         RK_U32 sse_l16       : 16;
2415     } st_sse_bsl;
2416 
2417     /* 0x00004008 reg4098 */
2418     RK_U32 sse_h32;
2419 
2420     /* 0x0000400c reg4099 */
2421     RK_U32 qp_sum;
2422 
2423     /* 0x00004010 reg4100 */
2424     struct {
2425         RK_U32 sao_cnum    : 16;
2426         RK_U32 sao_ynum    : 16;
2427     } st_sao;
2428 
2429     /* 0x00004014 reg4101 */
2430     RK_U32 rdo_head_bits;
2431 
2432     /* 0x00004018 reg4102 */
2433     struct {
2434         RK_U32 rdo_head_bits_h8    : 8;
2435         RK_U32 reserved            : 8;
2436         RK_U32 rdo_res_bits_l16    : 16;
2437     } st_head_res_bl;
2438 
2439     /* 0x0000401c reg4103 */
2440     RK_U32 rdo_res_bits_h24;
2441 
2442     /* 0x00004020 reg4104 */
2443     struct {
2444         RK_U32 st_enc      : 2;
2445         RK_U32 st_sclr     : 1;
2446         RK_U32 reserved    : 29;
2447     } st_enc;
2448 
2449     /* 0x00004024 reg4105 */
2450     struct {
2451         RK_U32 fnum_cfg_done    : 8;
2452         RK_U32 fnum_cfg         : 8;
2453         RK_U32 fnum_int         : 8;
2454         RK_U32 fnum_enc_done    : 8;
2455     } st_lkt;
2456 
2457     /* 0x00004028 reg4106 */
2458     RK_U32 node_addr;
2459 
2460     /* 0x0000402c reg4107 */
2461     struct {
2462         RK_U32 bsbw_ovfl    : 1;
2463         RK_U32 reserved     : 2;
2464         RK_U32 bsbw_addr    : 28;
2465         RK_U32 reserved1    : 1;
2466     } st_bsb;
2467 
2468     /* 0x00004030 reg4108 */
2469     struct {
2470         RK_U32 axib_idl     : 8;
2471         RK_U32 axib_ovfl    : 8;
2472         RK_U32 axib_err     : 8;
2473         RK_U32 axir_err     : 7;
2474         RK_U32 reserved     : 1;
2475     } st_bus;
2476 
2477     /* 0x00004034 reg4109 */
2478     struct {
2479         RK_U32 sli_num     : 6;
2480         RK_U32 reserved    : 26;
2481     } st_snum;
2482 
2483     /* 0x00004038 reg4110 */
2484     struct {
2485         RK_U32 sli_len     : 25;
2486         RK_U32 reserved    : 7;
2487     } st_slen;
2488 
2489     /* 0x403c - 0x40fc */
2490     RK_U32 reserved4111_4159[49];
2491 
2492     /* 0x00004100 reg4160 */
2493     struct {
2494         RK_U32 pnum_p64    : 17;
2495         RK_U32 reserved    : 15;
2496     } st_pnum_p64;
2497 
2498     /* 0x00004104 reg4161 */
2499     struct {
2500         RK_U32 pnum_p32    : 19;
2501         RK_U32 reserved    : 13;
2502     } st_pnum_p32;
2503 
2504     /* 0x00004108 reg4162 */
2505     struct {
2506         RK_U32 pnum_p16    : 21;
2507         RK_U32 reserved    : 11;
2508     } st_pnum_p16;
2509 
2510     /* 0x0000410c reg4163 */
2511     struct {
2512         RK_U32 pnum_p8     : 23;
2513         RK_U32 reserved    : 9;
2514     } st_pnum_p8;
2515 
2516     /* 0x00004110 reg4164 */
2517     struct {
2518         RK_U32 pnum_i32    : 19;
2519         RK_U32 reserved    : 13;
2520     } st_pnum_i32;
2521 
2522     /* 0x00004114 reg4165 */
2523     struct {
2524         RK_U32 pnum_i16    : 21;
2525         RK_U32 reserved    : 11;
2526     } st_pnum_i16;
2527 
2528     /* 0x00004118 reg4166 */
2529     struct {
2530         RK_U32 pnum_i8     : 23;
2531         RK_U32 reserved    : 9;
2532     } st_pnum_i8;
2533 
2534     /* 0x0000411c reg4167 */
2535     struct {
2536         RK_U32 pnum_i4     : 23;
2537         RK_U32 reserved    : 9;
2538     } st_pnum_i4;
2539 
2540     /* 0x00004120 reg4168 */
2541     RK_U32 madp;
2542 
2543     /* 0x00004124 reg4169 */
2544     struct {
2545         RK_U32 num_ctu     : 21;
2546         RK_U32 reserved    : 11;
2547     } st_bnum_cme;
2548 
2549     /* 0x00004128 reg4170 */
2550     RK_U32 madi;
2551 
2552     /* 0x0000412c reg4171 */
2553     struct {
2554         RK_U32 num_b16     : 23;
2555         RK_U32 reserved    : 9;
2556     } st_bnum_b16;
2557 
2558     /* 0x00004130 reg4172 */
2559     RK_U32 num_madi_max_b16;
2560 
2561     /* 0x00004134 reg4173 */
2562     RK_U32 md_sad_b16num0;
2563 
2564     /* 0x00004138 reg4174 */
2565     RK_U32 md_sad_b16num1;
2566 
2567     /* 0x0000413c reg4175 */
2568     RK_U32 md_sad_b16num2;
2569 
2570     /* 0x00004140 reg4176 */
2571     RK_U32 md_sad_b16num3;
2572 
2573     /* 0x00004144 reg4177 */
2574     RK_U32 madi_b16num0;
2575 
2576     /* 0x00004148 reg4178 */
2577     RK_U32 madi_b16num1;
2578 
2579     /* 0x0000414c reg4179 */
2580     RK_U32 madi_b16num2;
2581 
2582     /* 0x00004150 reg4180 */
2583     RK_U32 madi_b16num3;
2584 
2585     /* 0x4154 - 0x41fc */
2586     RK_U32 reserved4181_4223[43];
2587 
2588     /* 0x00004200 reg4224 */
2589     struct {
2590         RK_U32 b8num_qp0    : 22;
2591         RK_U32 reserved     : 10;
2592     } st_b8_qp0;
2593 
2594     /* 0x00004204 reg4225 */
2595     struct {
2596         RK_U32 b8num_qp1    : 22;
2597         RK_U32 reserved     : 10;
2598     } st_b8_qp1;
2599 
2600     /* 0x00004208 reg4226 */
2601     struct {
2602         RK_U32 b8num_qp2    : 22;
2603         RK_U32 reserved     : 10;
2604     } st_b8_qp2;
2605 
2606     /* 0x0000420c reg4227 */
2607     struct {
2608         RK_U32 b8num_qp3    : 22;
2609         RK_U32 reserved     : 10;
2610     } st_b8_qp3;
2611 
2612     /* 0x00004210 reg4228 */
2613     struct {
2614         RK_U32 b8num_qp4    : 22;
2615         RK_U32 reserved     : 10;
2616     } st_b8_qp4;
2617 
2618     /* 0x00004214 reg4229 */
2619     struct {
2620         RK_U32 b8num_qp5    : 22;
2621         RK_U32 reserved     : 10;
2622     } st_b8_qp5;
2623 
2624     /* 0x00004218 reg4230 */
2625     struct {
2626         RK_U32 b8num_qp6    : 22;
2627         RK_U32 reserved     : 10;
2628     } st_b8_qp6;
2629 
2630     /* 0x0000421c reg4231 */
2631     struct {
2632         RK_U32 b8num_qp7    : 22;
2633         RK_U32 reserved     : 10;
2634     } st_b8_qp7;
2635 
2636     /* 0x00004220 reg4232 */
2637     struct {
2638         RK_U32 b8num_qp8    : 22;
2639         RK_U32 reserved     : 10;
2640     } st_b8_qp8;
2641 
2642     /* 0x00004224 reg4233 */
2643     struct {
2644         RK_U32 b8num_qp9    : 22;
2645         RK_U32 reserved     : 10;
2646     } st_b8_qp9;
2647 
2648     /* 0x00004228 reg4234 */
2649     struct {
2650         RK_U32 b8num_qp10    : 22;
2651         RK_U32 reserved      : 10;
2652     } st_b8_qp10;
2653 
2654     /* 0x0000422c reg4235 */
2655     struct {
2656         RK_U32 b8num_qp11    : 22;
2657         RK_U32 reserved      : 10;
2658     } st_b8_qp11;
2659 
2660     /* 0x00004230 reg4236 */
2661     struct {
2662         RK_U32 b8num_qp12    : 22;
2663         RK_U32 reserved      : 10;
2664     } st_b8_qp12;
2665 
2666     /* 0x00004234 reg4237 */
2667     struct {
2668         RK_U32 b8num_qp13    : 22;
2669         RK_U32 reserved      : 10;
2670     } st_b8_qp13;
2671 
2672     /* 0x00004238 reg4238 */
2673     struct {
2674         RK_U32 b8num_qp14    : 22;
2675         RK_U32 reserved      : 10;
2676     } st_b8_qp14;
2677 
2678     /* 0x0000423c reg4239 */
2679     struct {
2680         RK_U32 b8num_qp15    : 22;
2681         RK_U32 reserved      : 10;
2682     } st_b8_qp15;
2683 
2684     /* 0x00004240 reg4240 */
2685     struct {
2686         RK_U32 b8num_qp16    : 22;
2687         RK_U32 reserved      : 10;
2688     } st_b8_qp16;
2689 
2690     /* 0x00004244 reg4241 */
2691     struct {
2692         RK_U32 b8num_qp17    : 22;
2693         RK_U32 reserved      : 10;
2694     } st_b8_qp17;
2695 
2696     /* 0x00004248 reg4242 */
2697     struct {
2698         RK_U32 b8num_qp18    : 22;
2699         RK_U32 reserved      : 10;
2700     } st_b8_qp18;
2701 
2702     /* 0x0000424c reg4243 */
2703     struct {
2704         RK_U32 b8num_qp19    : 22;
2705         RK_U32 reserved      : 10;
2706     } st_b8_qp19;
2707 
2708     /* 0x00004250 reg4244 */
2709     struct {
2710         RK_U32 b8num_qp20    : 22;
2711         RK_U32 reserved      : 10;
2712     } st_b8_qp20;
2713 
2714     /* 0x00004254 reg4245 */
2715     struct {
2716         RK_U32 b8num_qp21    : 22;
2717         RK_U32 reserved      : 10;
2718     } st_b8_qp21;
2719 
2720     /* 0x00004258 reg4246 */
2721     struct {
2722         RK_U32 b8num_qp22    : 22;
2723         RK_U32 reserved      : 10;
2724     } st_b8_qp22;
2725 
2726     /* 0x0000425c reg4247 */
2727     struct {
2728         RK_U32 b8num_qp23    : 22;
2729         RK_U32 reserved      : 10;
2730     } st_b8_qp23;
2731 
2732     /* 0x00004260 reg4248 */
2733     struct {
2734         RK_U32 b8num_qp24    : 22;
2735         RK_U32 reserved      : 10;
2736     } st_b8_qp24;
2737 
2738     /* 0x00004264 reg4249 */
2739     struct {
2740         RK_U32 b8num_qp25    : 22;
2741         RK_U32 reserved      : 10;
2742     } st_b8_qp25;
2743 
2744     /* 0x00004268 reg4250 */
2745     struct {
2746         RK_U32 b8num_qp26    : 22;
2747         RK_U32 reserved      : 10;
2748     } st_b8_qp26;
2749 
2750     /* 0x0000426c reg4251 */
2751     struct {
2752         RK_U32 b8num_qp27    : 22;
2753         RK_U32 reserved      : 10;
2754     } st_b8_qp27;
2755 
2756     /* 0x00004270 reg4252 */
2757     struct {
2758         RK_U32 b8num_qp28    : 22;
2759         RK_U32 reserved      : 10;
2760     } st_b8_qp28;
2761 
2762     /* 0x00004274 reg4253 */
2763     struct {
2764         RK_U32 b8num_qp29    : 22;
2765         RK_U32 reserved      : 10;
2766     } st_b8_qp29;
2767 
2768     /* 0x00004278 reg4254 */
2769     struct {
2770         RK_U32 b8num_qp30    : 22;
2771         RK_U32 reserved      : 10;
2772     } st_b8_qp30;
2773 
2774     /* 0x0000427c reg4255 */
2775     struct {
2776         RK_U32 b8num_qp31    : 22;
2777         RK_U32 reserved      : 10;
2778     } st_b8_qp31;
2779 
2780     /* 0x00004280 reg4256 */
2781     struct {
2782         RK_U32 b8num_qp32    : 22;
2783         RK_U32 reserved      : 10;
2784     } st_b8_qp32;
2785 
2786     /* 0x00004284 reg4257 */
2787     struct {
2788         RK_U32 b8num_qp33    : 22;
2789         RK_U32 reserved      : 10;
2790     } st_b8_qp33;
2791 
2792     /* 0x00004288 reg4258 */
2793     struct {
2794         RK_U32 b8num_qp34    : 22;
2795         RK_U32 reserved      : 10;
2796     } st_b8_qp34;
2797 
2798     /* 0x0000428c reg4259 */
2799     struct {
2800         RK_U32 b8num_qp35    : 22;
2801         RK_U32 reserved      : 10;
2802     } st_b8_qp35;
2803 
2804     /* 0x00004290 reg4260 */
2805     struct {
2806         RK_U32 b8num_qp36    : 22;
2807         RK_U32 reserved      : 10;
2808     } st_b8_qp36;
2809 
2810     /* 0x00004294 reg4261 */
2811     struct {
2812         RK_U32 b8num_qp37    : 22;
2813         RK_U32 reserved      : 10;
2814     } st_b8_qp37;
2815 
2816     /* 0x00004298 reg4262 */
2817     struct {
2818         RK_U32 b8num_qp38    : 22;
2819         RK_U32 reserved      : 10;
2820     } st_b8_qp38;
2821 
2822     /* 0x0000429c reg4263 */
2823     struct {
2824         RK_U32 b8num_qp39    : 22;
2825         RK_U32 reserved      : 10;
2826     } st_b8_qp39;
2827 
2828     /* 0x000042a0 reg4264 */
2829     struct {
2830         RK_U32 b8num_qp40    : 22;
2831         RK_U32 reserved      : 10;
2832     } st_b8_qp40;
2833 
2834     /* 0x000042a4 reg4265 */
2835     struct {
2836         RK_U32 b8num_qp41    : 22;
2837         RK_U32 reserved      : 10;
2838     } st_b8_qp41;
2839 
2840     /* 0x000042a8 reg4266 */
2841     struct {
2842         RK_U32 b8num_qp42    : 22;
2843         RK_U32 reserved      : 10;
2844     } st_b8_qp42;
2845 
2846     /* 0x000042ac reg4267 */
2847     struct {
2848         RK_U32 b8num_qp43    : 22;
2849         RK_U32 reserved      : 10;
2850     } st_b8_qp43;
2851 
2852     /* 0x000042b0 reg4268 */
2853     struct {
2854         RK_U32 b8num_qp44    : 22;
2855         RK_U32 reserved      : 10;
2856     } st_b8_qp44;
2857 
2858     /* 0x000042b4 reg4269 */
2859     struct {
2860         RK_U32 b8num_qp45    : 22;
2861         RK_U32 reserved      : 10;
2862     } st_b8_qp45;
2863 
2864     /* 0x000042b8 reg4270 */
2865     struct {
2866         RK_U32 b8num_qp46    : 22;
2867         RK_U32 reserved      : 10;
2868     } st_b8_qp46;
2869 
2870     /* 0x000042bc reg4271 */
2871     struct {
2872         RK_U32 b8num_qp47    : 22;
2873         RK_U32 reserved      : 10;
2874     } st_b8_qp47;
2875 
2876     /* 0x000042c0 reg4272 */
2877     struct {
2878         RK_U32 b8num_qp48    : 22;
2879         RK_U32 reserved      : 10;
2880     } st_b8_qp48;
2881 
2882     /* 0x000042c4 reg4273 */
2883     struct {
2884         RK_U32 b8num_qp49    : 22;
2885         RK_U32 reserved      : 10;
2886     } st_b8_qp49;
2887 
2888     /* 0x000042c8 reg4274 */
2889     struct {
2890         RK_U32 b8num_qp50    : 22;
2891         RK_U32 reserved      : 10;
2892     } st_b8_qp50;
2893 
2894     /* 0x000042cc reg4275 */
2895     struct {
2896         RK_U32 b8num_qp51    : 22;
2897         RK_U32 reserved      : 10;
2898     } st_b8_qp51;
2899 } vepu580Status;
2900 
2901 /* class: dbg/st/axipn */
2902 /* 0x00005000 reg5120 - 0x00005354 reg5333*/
2903 typedef struct Vepu580Dbg_t {
2904     /* 0x00005000 reg5120 */
2905     struct {
2906         RK_U32 pp_tout      : 1;
2907         RK_U32 cme_tout     : 1;
2908         RK_U32 swn_tout     : 1;
2909         RK_U32 rme_tout     : 1;
2910         RK_U32 fme_tout     : 1;
2911         RK_U32 rdo_tout     : 1;
2912         RK_U32 lpf_tout     : 1;
2913         RK_U32 etpy_tout    : 1;
2914         RK_U32 frm_tout     : 1;
2915         RK_U32 reserved     : 23;
2916     } st_wdg;
2917 
2918     /* 0x00005004 reg5121 */
2919     struct {
2920         RK_U32 pp_wrk      : 1;
2921         RK_U32 cme_wrk     : 1;
2922         RK_U32 swn_wrk     : 1;
2923         RK_U32 rme_wrk     : 1;
2924         RK_U32 fme_wrk     : 1;
2925         RK_U32 rdo_wrk     : 1;
2926         RK_U32 lpf_wrk     : 1;
2927         RK_U32 etpy_wrk    : 1;
2928         RK_U32 frm_wrk     : 1;
2929         RK_U32 reserved    : 23;
2930     } st_ppl;
2931 
2932     /* 0x00005008 reg5122 */
2933     struct {
2934         RK_U32 pp_pos_x    : 16;
2935         RK_U32 pp_pos_y    : 16;
2936     } st_ppl_pos_pp;
2937 
2938     /* 0x0000500c reg5123 */
2939     struct {
2940         RK_U32 cme_pos_x    : 16;
2941         RK_U32 cme_pos_y    : 16;
2942     } st_ppl_pos_cme;
2943 
2944     /* 0x00005010 reg5124 */
2945     struct {
2946         RK_U32 swin_pos_x    : 16;
2947         RK_U32 swin_pos_y    : 16;
2948     } st_ppl_pos_swin;
2949 
2950     /* 0x00005014 reg5125 */
2951     struct {
2952         RK_U32 rme_pos_x    : 16;
2953         RK_U32 rme_pos_y    : 16;
2954     } st_ppl_pos_rme;
2955 
2956     /* 0x00005018 reg5126 */
2957     struct {
2958         RK_U32 fme_pos_x    : 16;
2959         RK_U32 fme_pos_y    : 16;
2960     } st_ppl_pos_fme;
2961 
2962     /* 0x0000501c reg5127 */
2963     struct {
2964         RK_U32 rdo_pos_x    : 16;
2965         RK_U32 rdo_pos_y    : 16;
2966     } st_ppl_pos_rdo;
2967 
2968     /* 0x00005020 reg5128 */
2969     struct {
2970         RK_U32 lpf_pos_x    : 16;
2971         RK_U32 lpf_pos_y    : 16;
2972     } st_ppl_pos_lpf;
2973 
2974     /* 0x00005024 reg5129 */
2975     struct {
2976         RK_U32 etpy_pos_x    : 16;
2977         RK_U32 etpy_pos_y    : 16;
2978     } st_ppl_pos_etpy;
2979 
2980     /* 0x00005028 reg5130 */
2981     struct {
2982         RK_U32 sli_num     : 15;
2983         RK_U32 reserved    : 17;
2984     } st_sli_num;
2985 
2986     /* 0x0000502c reg5131 */
2987     struct {
2988         RK_U32 lkt_err     : 3;
2989         RK_U32 reserved    : 29;
2990     } st_lkt_err;
2991 
2992     /* 0x5030 - 0x50fc */
2993     RK_U32 reserved5132_5183[52];
2994 
2995     /* 0x00005100 reg5184 */
2996     struct {
2997         RK_U32 empty_oafifo        : 1;
2998         RK_U32 full_cmd_oafifo     : 1;
2999         RK_U32 full_data_oafifo    : 1;
3000         RK_U32 empty_iafifo        : 1;
3001         RK_U32 full_cmd_iafifo     : 1;
3002         RK_U32 full_info_iafifo    : 1;
3003         RK_U32 fbd_brq_st          : 4;
3004         RK_U32 fbd_hdr_vld         : 1;
3005         RK_U32 fbd_bmng_end        : 1;
3006         RK_U32 nfbd_req_st         : 4;
3007         RK_U32 acc_axi_cmd         : 8;
3008         RK_U32 reserved            : 8;
3009     } dbg_pp_st;
3010 
3011     /* 0x00005104 reg5185 */
3012     struct {
3013         RK_U32 cur_state_cime    : 2;
3014         RK_U32 cur_state_ds      : 3;
3015         RK_U32 cur_state_ref     : 2;
3016         RK_U32 cur_state_cst     : 2;
3017         RK_U32 reserved          : 23;
3018     } dbg_cime_st;
3019 
3020     /* 0x00005108 reg5186 */
3021     RK_U32 swin_dbg_inf;
3022 
3023     /* 0x0000510c reg5187 */
3024     struct {
3025         RK_U32 bbrq_cmps_left_len2    : 1;
3026         RK_U32 bbrq_cmps_left_len1    : 1;
3027         RK_U32 cmps_left_len0         : 1;
3028         RK_U32 bbrq_rdy2              : 1;
3029         RK_U32 dcps_vld2              : 1;
3030         RK_U32 bbrq_rdy1              : 1;
3031         RK_U32 dcps_vld1              : 1;
3032         RK_U32 bbrq_rdy0              : 1;
3033         RK_U32 dcps_vld0              : 1;
3034         RK_U32 hb_rdy2                : 1;
3035         RK_U32 bbrq_vld2              : 1;
3036         RK_U32 hb_rdy1                : 1;
3037         RK_U32 bbrq_vld1              : 1;
3038         RK_U32 hb_rdy0                : 1;
3039         RK_U32 bbrq_vld0              : 1;
3040         RK_U32 idle_msb2              : 1;
3041         RK_U32 idle_msb1              : 1;
3042         RK_U32 idle_msb0              : 1;
3043         RK_U32 cur_state_dcps         : 1;
3044         RK_U32 cur_state_bbrq         : 1;
3045         RK_U32 cur_state_hb           : 1;
3046         RK_U32 cke_bbrq_dcps          : 1;
3047         RK_U32 cke_dcps               : 1;
3048         RK_U32 cke_bbrq               : 1;
3049         RK_U32 rdy_lwcd_rsp           : 1;
3050         RK_U32 vld_lwcd_rsp           : 1;
3051         RK_U32 rdy_lwcd_req           : 1;
3052         RK_U32 vld_lwcd_req           : 1;
3053         RK_U32 rdy_lwrsp              : 1;
3054         RK_U32 vld_lwrsp              : 1;
3055         RK_U32 rdy_lwreq              : 1;
3056         RK_U32 vld_lwreq              : 1;
3057     } dbg_fbd_hhit0;
3058 
3059     /* 0x5110 */
3060     RK_U32 reserved_5188;
3061 
3062     /* 0x00005114 reg5189 */
3063     struct {
3064         RK_U32 mscnt_clr    : 1;
3065         RK_U32 reserved     : 31;
3066     } dbg_cach_clr;
3067 
3068     /* 0x00005118 reg5190 */
3069     RK_U32 l1_mis;
3070 
3071     /* 0x0000511c reg5191 */
3072     RK_U32 l2_mis;
3073 
3074     /* 0x00005120 reg5192 */
3075     RK_U32 rdo_st;
3076 
3077     /* 0x00005124 reg5193 */
3078     RK_U32 rdo_if;
3079 
3080     /* 0x00005128 reg5194 */
3081     struct {
3082         RK_U32 h264_sh_st_cs    : 4;
3083         RK_U32 rsd_st_cs        : 4;
3084         RK_U32 h264_sd_st_cs    : 5;
3085         RK_U32 etpy_rdy         : 1;
3086         RK_U32 reserved         : 18;
3087     } dbg_etpy;
3088 
3089     /* 0x0000512c reg5195 */
3090     struct {
3091         RK_U32 crdy_ppr    : 1;
3092         RK_U32 cvld_ppr    : 1;
3093         RK_U32 drdy_ppw    : 1;
3094         RK_U32 dvld_ppw    : 1;
3095         RK_U32 crdy_ppw    : 1;
3096         RK_U32 cvld_ppw    : 1;
3097         RK_U32 reserved    : 26;
3098     } dbg_dma_pp;
3099 
3100     /* 0x00005130 reg5196 */
3101     struct {
3102         RK_U32 axi_wrdy     : 8;
3103         RK_U32 axi_wvld     : 8;
3104         RK_U32 axi_awrdy    : 8;
3105         RK_U32 axi_awvld    : 8;
3106     } dbg_dma_w;
3107 
3108     /* 0x00005134 reg5197 */
3109     struct {
3110         RK_U32 axi_otsd_read    : 16;
3111         RK_U32 axi_arrdy        : 7;
3112         RK_U32 reserved         : 1;
3113         RK_U32 axi_arvld        : 7;
3114         RK_U32 reserved1        : 1;
3115     } dbg_dma_r;
3116 
3117     /* 0x00005138 reg5198 */
3118     struct {
3119         RK_U32 dfifo0_lvl    : 4;
3120         RK_U32 dfifo1_lvl    : 4;
3121         RK_U32 dfifo2_lvl    : 4;
3122         RK_U32 dfifo3_lvl    : 4;
3123         RK_U32 dfifo4_lvl    : 4;
3124         RK_U32 dfifo5_lvl    : 4;
3125         RK_U32 reserved      : 6;
3126         RK_U32 cmd_vld       : 1;
3127         RK_U32 reserved1     : 1;
3128     } dbg_dma_rfpr;
3129 
3130     /* 0x0000513c reg5199 */
3131     struct {
3132         RK_U32 meiw_busy    : 1;
3133         RK_U32 dspw_busy    : 1;
3134         RK_U32 bsw_rdy      : 1;
3135         RK_U32 bsw_flsh     : 1;
3136         RK_U32 bsw_busy     : 1;
3137         RK_U32 crpw_busy    : 1;
3138         RK_U32 lktw_busy    : 1;
3139         RK_U32 lpfw_busy    : 1;
3140         RK_U32 roir_busy    : 1;
3141         RK_U32 dspr_crdy    : 1;
3142         RK_U32 dspr_cvld    : 1;
3143         RK_U32 lktr_busy    : 1;
3144         RK_U32 lpfr_otsd    : 4;
3145         RK_U32 rfpr_otsd    : 12;
3146         RK_U32 dspr_otsd    : 4;
3147     } dbg_dma_ch_st;
3148 
3149     /* 0x00005140 reg5200 */
3150     struct {
3151         RK_U32 cpip_st     : 2;
3152         RK_U32 mvp_st      : 3;
3153         RK_U32 qpd6_st     : 2;
3154         RK_U32 cmd_st      : 2;
3155         RK_U32 reserved    : 23;
3156     } dbg_tctrl_cime_st;
3157 
3158     /* 0x00005144 reg5201 */
3159     struct {
3160         RK_U32 cme_byps      : 1;
3161         RK_U32 swin_byps     : 1;
3162         RK_U32 rme_byps      : 1;
3163         RK_U32 intra_byps    : 1;
3164         RK_U32 fme_byps      : 1;
3165         RK_U32 rdo_byps      : 1;
3166         RK_U32 lpf_byps      : 1;
3167         RK_U32 etpy_byps     : 1;
3168         RK_U32 reserved      : 24;
3169     } dbg_tctrl;
3170 
3171     /* 0x5148 */
3172     RK_U32 reserved_5202;
3173 
3174     /* 0x0000514c reg5203 */
3175     RK_U32 dbg_lpf_st;
3176 
3177     /* 0x00005150 reg5204 */
3178     RK_U32 dbg_topc_lpfr;
3179 
3180     /* 0x00005154 reg5205 */
3181     RK_U32 dbg0_cache;
3182 
3183     /* 0x00005158 reg5206 */
3184     RK_U32 dbg1_cache;
3185 
3186     /* 0x0000515c reg5207 */
3187     RK_U32 dbg2_cache;
3188 
3189     /* 0x5160 - 0x51fc */
3190     RK_U32 reserved5208_5247[40];
3191 
3192     /* 0x00005200 reg5248 */
3193     RK_U32 frame_cyc;
3194 
3195     /* 0x00005204 reg5249 */
3196     RK_U32 pp_fcyc;
3197 
3198     /* 0x00005208 reg5250 */
3199     RK_U32 cme_fcyc;
3200 
3201     /* 0x0000520c reg5251 */
3202     RK_U32 cme_dspr_fcyc;
3203 
3204     /* 0x00005210 reg5252 */
3205     RK_U32 ldr_fcyc;
3206 
3207     /* 0x00005214 reg5253 */
3208     RK_U32 rme_fcyc;
3209 
3210     /* 0x00005218 reg5254 */
3211     RK_U32 fme_fcyc;
3212 
3213     /* 0x0000521c reg5255 */
3214     RK_U32 rdo_fcyc;
3215 
3216     /* 0x00005220 reg5256 */
3217     RK_U32 lpf_fcyc;
3218 
3219     /* 0x00005224 reg5257 */
3220     RK_U32 etpy_fcyc;
3221 
3222     /* 0x5228 - 0x52fc */
3223     RK_U32 reserved5258_5311[54];
3224 
3225     /* 0x00005300 reg5312 */
3226     struct {
3227         RK_U32 axip_e      : 1;
3228         RK_U32 axip_clr    : 1;
3229         RK_U32 axip_mod    : 1;
3230         RK_U32 reserved    : 29;
3231     } axip0_cmd;
3232 
3233     /* 0x00005304 reg5313 */
3234     struct {
3235         RK_U32 axip_ltcy_id     : 4;
3236         RK_U32 axip_ltcy_thd    : 12;
3237         RK_U32 reserved         : 16;
3238     } axip0_ltcy;
3239 
3240     /* 0x00005308 reg5314 */
3241     struct {
3242         RK_U32 axip_cnt_typ    : 1;
3243         RK_U32 axip_cnt_ddr    : 2;
3244         RK_U32 axip_cnt_rid    : 5;
3245         RK_U32 axip_cnt_wid    : 5;
3246         RK_U32 reserved        : 19;
3247     } axip0_cnt;
3248 
3249     /* 0x530c */
3250     RK_U32 reserved_5315;
3251 
3252     /* 0x00005310 reg5316 */
3253     struct {
3254         RK_U32 axip_e      : 1;
3255         RK_U32 axip_clr    : 1;
3256         RK_U32 axip_mod    : 1;
3257         RK_U32 reserved    : 29;
3258     } axip1_cmd;
3259 
3260     /* 0x00005314 reg5317 */
3261     struct {
3262         RK_U32 axip_ltcy_id     : 4;
3263         RK_U32 axip_ltcy_thd    : 12;
3264         RK_U32 reserved         : 16;
3265     } axip1_ltcy;
3266 
3267     /* 0x00005318 reg5318 */
3268     struct {
3269         RK_U32 axip_cnt_typ    : 1;
3270         RK_U32 axip_cnt_ddr    : 2;
3271         RK_U32 axip_cnt_rid    : 5;
3272         RK_U32 axip_cnt_wid    : 5;
3273         RK_U32 reserved        : 19;
3274     } axip1_cnt;
3275 
3276     /* 0x531c */
3277     RK_U32 reserved_5319;
3278 
3279     /* 0x00005320 reg5320 */
3280     struct {
3281         RK_U32 axip_max_ltcy    : 16;
3282         RK_U32 reserved         : 16;
3283     } st_axip0_maxl;
3284 
3285     /* 0x00005324 reg5321 */
3286     RK_U32 axip0_num_ltcy;
3287 
3288     /* 0x00005328 reg5322 */
3289     RK_U32 axip0_sum_ltcy;
3290 
3291     /* 0x0000532c reg5323 */
3292     RK_U32 axip0_rbyt;
3293 
3294     /* 0x00005330 reg5324 */
3295     RK_U32 axip0_wbyt;
3296 
3297     /* 0x00005334 reg5325 */
3298     RK_U32 axip0_wrk_cyc;
3299 
3300     /* 0x5338 - 0x533c */
3301     RK_U32 reserved5326_5327[2];
3302 
3303     /* 0x00005340 reg5328 */
3304     struct {
3305         RK_U32 axip_max_ltcy    : 16;
3306         RK_U32 reserved         : 16;
3307     } st_axip1_maxl;
3308 
3309     /* 0x00005344 reg5329 */
3310     RK_U32 axip1_num_ltcy;
3311 
3312     /* 0x00005348 reg5330 */
3313     RK_U32 axip1_sum_ltcy;
3314 
3315     /* 0x0000534c reg5331 */
3316     RK_U32 axip1_rbyt;
3317 
3318     /* 0x00005350 reg5332 */
3319     RK_U32 axip1_wbyt;
3320 
3321     /* 0x00005354 reg5333 */
3322     RK_U32 axip1_wrk_cyc;
3323 } Vepu580_dbg;
3324 
3325 typedef struct H265eV580RegSet_t {
3326     hevc_vepu580_control_cfg reg_ctl;
3327     hevc_vepu580_base reg_base;
3328     hevc_vepu580_rc_klut reg_rc_klut;
3329     hevc_vepu580_wgt reg_wgt;
3330     vepu580_rdo_cfg reg_rdo;
3331     vepu580_osd_cfg reg_osd_cfg;
3332     Vepu580_dbg reg_dbg;
3333 } H265eV580RegSet;
3334 
3335 typedef struct H265eV580StatusElem_t {
3336     RK_U32 hw_status;
3337     vepu580Status st;
3338 } H265eV580StatusElem;
3339 
3340 #endif
3341