xref: /rockchip-linux_mpp/mpp/hal/rkenc/h265e/hal_h265e_vepu511_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /* SPDX-License-Identifier: Apache-2.0 */
2 /*
3  * Copyright (c) 2025 Rockchip Electronics Co., Ltd.
4  */
5 
6 #ifndef __HAL_H265E_VEPU511_REG_H__
7 #define __HAL_H265E_VEPU511_REG_H__
8 
9 #include "rk_type.h"
10 #include "vepu511_common.h"
11 
12 typedef struct PreCstPar_t {
13     /* 0x00002120 reg2120 - 0x00002140 reg2128 */
14     struct {
15         RK_U32 madi_thd0    : 7;
16         RK_U32 reserved     : 1;
17         RK_U32 madi_thd1    : 7;
18         RK_U32 reserved1    : 1;
19         RK_U32 madi_thd2    : 7;
20         RK_U32 reserved2    : 1;
21         RK_U32 madi_thd3    : 7;
22         RK_U32 reserved3    : 1;
23     } cst_madi_thd0;
24 
25     /* 0x00002124 reg2121 */
26     struct {
27         RK_U32 madi_thd4    : 7;
28         RK_U32 reserved     : 1;
29         RK_U32 madi_thd5    : 7;
30         RK_U32 reserved1    : 1;
31         RK_U32 madi_thd6    : 7;
32         RK_U32 reserved2    : 1;
33         RK_U32 madi_thd7    : 7;
34         RK_U32 reserved3    : 1;
35     } cst_madi_thd1;
36 
37     /* 0x00002128 reg2122 */
38     struct {
39         RK_U32 madi_thd8    : 7;
40         RK_U32 reserved     : 1;
41         RK_U32 madi_thd9    : 7;
42         RK_U32 reserved1    : 1;
43         RK_U32 madi_thd10   : 7;
44         RK_U32 reserved2    : 1;
45         RK_U32 madi_thd11   : 7;
46         RK_U32 reserved3    : 1;
47     } cst_madi_thd2;
48 
49     /* 0x0000212c reg2123 */
50     struct {
51         RK_U32 madi_thd12   : 7;
52         RK_U32 reserved     : 1;
53         RK_U32 madi_thd13   : 7;
54         RK_U32 reserved1    : 1;
55         RK_U32 mode_th      : 3;
56         RK_U32 reserved2    : 1;
57         RK_U32 qp_thd       : 6;
58         RK_U32 reserved3    : 6;
59     } cst_madi_thd3;
60 
61     /* 0x00002130 reg2124 */
62     struct {
63         RK_U32 wgt0    : 8;
64         RK_U32 wgt1    : 8;
65         RK_U32 wgt2    : 8;
66         RK_U32 wgt3    : 8;
67     } cst_wgt0;
68 
69     /* 0x00002134 reg2125 */
70     struct {
71         RK_U32 wgt4    : 8;
72         RK_U32 wgt5    : 8;
73         RK_U32 wgt6    : 8;
74         RK_U32 wgt7    : 8;
75     } cst_wgt1;
76 
77     /* 0x00002138 reg2126 */
78     struct {
79         RK_U32 wgt8     : 8;
80         RK_U32 wgt9     : 8;
81         RK_U32 wgt10    : 8;
82         RK_U32 wgt11    : 8;
83     } cst_wgt2;
84 
85     /* 0x0000213c reg2127 */
86     struct {
87         RK_U32 wgt12            : 8;
88         RK_U32 wgt13            : 8;
89         RK_U32 wgt14            : 8;
90         RK_U32 lambda_mv_bit_0  : 3;
91         RK_U32 reserved         : 1;
92         RK_U32 lambda_mv_bit_1  : 3;
93         RK_U32 anti_strp_e      : 1;
94     } cst_wgt3;
95 } pre_cst_par;
96 
97 /* class: buffer/video syntax */
98 /* 0x00000270 reg156 - 0x00000538 reg334 */
99 typedef struct H265eVepu511Frame_t {
100     /* 0x00000270 reg156  - 0x0000039c reg231 */
101     Vepu511FrmCommon common;
102 
103     /* 0x000003a0 reg232 */
104     struct {
105         RK_U32 ltm_col                     : 1;
106         RK_U32 ltm_idx0l0                  : 1;
107         RK_U32 chrm_spcl                   : 1;
108         RK_U32 cu_inter_e                  : 12;
109         RK_U32 reserved                    : 1;
110         RK_U32 cu32_split_lambda_qp_sel    : 3;
111         RK_U32 reserved1                   : 4;
112         RK_U32 ccwa_e                      : 1;
113         RK_U32 scl_lst_sel                 : 2;
114         RK_U32 reserved2                   : 2;
115         RK_U32 atf_e                       : 1;
116         RK_U32 atr_e                       : 1;
117         RK_U32 reserved3                   : 2;
118     } rdo_cfg;
119 
120     struct {
121         RK_U32 intra_pu32_mode_num    : 2;
122         RK_U32 intra_pu16_mode_num    : 2;
123         RK_U32 intra_pu8_mode_num     : 2;
124         RK_U32 intra_pu4_mode_num     : 2;
125         RK_U32 reserved               : 24;
126     } rdo_intra_mode;
127 
128     /* 0x000003a8 reg234 */
129     struct {
130         RK_U32 rdoqx_pixel_e        : 1;
131         RK_U32 rdoqx_cgzero_e       : 1;
132         RK_U32 rdoqx_lastxy_e       : 1;
133         RK_U32 rdoq4_rdoq_e         : 1;
134         RK_U32 reserved             : 4;
135         RK_U32 rdoq_intra_r_coef    : 5;
136         RK_U32 reserved1            : 19;
137     } rdoq_cfg_hevc;
138 
139     /* 0x3ac */
140     RK_U32 reserved_235;
141 
142     /* 0x000003b0 reg236 */
143     struct {
144         RK_U32 nal_unit_type    : 6;
145         RK_U32 reserved         : 26;
146     } synt_nal;
147 
148     /* 0x000003b4 reg237 */
149     struct {
150         RK_U32 smpl_adpt_ofst_e    : 1;
151         RK_U32 num_st_ref_pic      : 7;
152         RK_U32 lt_ref_pic_prsnt    : 1;
153         RK_U32 num_lt_ref_pic      : 6;
154         RK_U32 tmpl_mvp_e          : 1;
155         RK_U32 log2_max_poc_lsb    : 4;
156         RK_U32 strg_intra_smth     : 1;
157         RK_U32 reserved            : 11;
158     } synt_sps;
159 
160     /* 0x000003b8 reg238 */
161     struct {
162         RK_U32 dpdnt_sli_seg_en       : 1;
163         RK_U32 out_flg_prsnt_flg      : 1;
164         RK_U32 num_extr_sli_hdr       : 3;
165         RK_U32 sgn_dat_hid_en         : 1;
166         RK_U32 cbc_init_prsnt_flg     : 1;
167         RK_U32 pic_init_qp            : 6;
168         RK_U32 cu_qp_dlt_en           : 1;
169         RK_U32 chrm_qp_ofst_prsn      : 1;
170         RK_U32 lp_fltr_acrs_sli       : 1;
171         RK_U32 dblk_fltr_ovrd_en      : 1;
172         RK_U32 lst_mdfy_prsnt_flg     : 1;
173         RK_U32 sli_seg_hdr_extn       : 1;
174         RK_U32 cu_qp_dlt_depth        : 2;
175         RK_U32 lpf_fltr_acrs_til      : 1;
176         RK_U32 csip_flag              : 1;
177         RK_U32 reserved               : 9;
178     } synt_pps;
179 
180     /* 0x000003bc reg239 */
181     struct {
182         RK_U32 cbc_init_flg           : 1;
183         RK_U32 mvd_l1_zero_flg        : 1;
184         RK_U32 mrg_up_flg             : 1;
185         RK_U32 mrg_lft_flg            : 1;
186         RK_U32 reserved               : 1;
187         RK_U32 ref_pic_lst_mdf_l0     : 1;
188         RK_U32 num_refidx_l1_act      : 2;
189         RK_U32 num_refidx_l0_act      : 2;
190         RK_U32 num_refidx_act_ovrd    : 1;
191         RK_U32 sli_sao_chrm_flg       : 1;
192         RK_U32 sli_sao_luma_flg       : 1;
193         RK_U32 sli_tmprl_mvp_e        : 1;
194         RK_U32 pic_out_flg            : 1;
195         RK_U32 sli_type               : 2;
196         RK_U32 sli_rsrv_flg           : 7;
197         RK_U32 dpdnt_sli_seg_flg      : 1;
198         RK_U32 sli_pps_id             : 6;
199         RK_U32 no_out_pri_pic         : 1;
200     } synt_sli0;
201 
202     /* 0x000003c0 reg240 */
203     struct {
204         RK_U32 sp_tc_ofst_div2         : 4;
205         RK_U32 sp_beta_ofst_div2       : 4;
206         RK_U32 sli_lp_fltr_acrs_sli    : 1;
207         RK_U32 sp_dblk_fltr_dis        : 1;
208         RK_U32 dblk_fltr_ovrd_flg      : 1;
209         RK_U32 sli_cb_qp_ofst          : 5;
210         RK_U32 sli_qp                  : 6;
211         RK_U32 max_mrg_cnd             : 2;
212         RK_U32 reserved                : 1;
213         RK_U32 col_ref_idx             : 1;
214         RK_U32 col_frm_l0_flg          : 1;
215         RK_U32 lst_entry_l0            : 4;
216         RK_U32 reserved1               : 1;
217     } synt_sli1;
218 
219     /* 0x000003c4 reg241 */
220     struct {
221         RK_U32 sli_poc_lsb        : 16;
222         RK_U32 sli_hdr_ext_len    : 9;
223         RK_U32 reserved           : 7;
224     } synt_sli2;
225 
226     /* 0x000003c8 reg242 */
227     struct {
228         RK_U32 st_ref_pic_flg    : 1;
229         RK_U32 poc_lsb_lt0       : 16;
230         RK_U32 lt_idx_sps        : 5;
231         RK_U32 num_lt_pic        : 2;
232         RK_U32 st_ref_pic_idx    : 6;
233         RK_U32 num_lt_sps        : 2;
234     } synt_refm0;
235 
236     /* 0x000003cc reg243 */
237     struct {
238         RK_U32 used_by_s0_flg        : 4;
239         RK_U32 num_pos_pic           : 1;
240         RK_U32 num_negative_pics     : 5;
241         RK_U32 dlt_poc_msb_cycl0     : 16;
242         RK_U32 dlt_poc_msb_prsnt0    : 1;
243         RK_U32 dlt_poc_msb_prsnt1    : 1;
244         RK_U32 dlt_poc_msb_prsnt2    : 1;
245         RK_U32 used_by_lt_flg0       : 1;
246         RK_U32 used_by_lt_flg1       : 1;
247         RK_U32 used_by_lt_flg2       : 1;
248     } synt_refm1;
249 
250     /* 0x000003d0 reg244 */
251     struct {
252         RK_U32 dlt_poc_s0_m10    : 16;
253         RK_U32 dlt_poc_s0_m11    : 16;
254     } synt_refm2;
255 
256     /* 0x000003d4 reg245 */
257     struct {
258         RK_U32 dlt_poc_s0_m12    : 16;
259         RK_U32 dlt_poc_s0_m13    : 16;
260     } synt_refm3;
261 
262     /* 0x000003d8 reg246 */
263     struct {
264         RK_U32 poc_lsb_lt1    : 16;
265         RK_U32 poc_lsb_lt2    : 16;
266     } synt_long_refm0;
267 
268     /* 0x000003dc reg247 */
269     struct {
270         RK_U32 dlt_poc_msb_cycl1    : 16;
271         RK_U32 dlt_poc_msb_cycl2    : 16;
272     } synt_long_refm1;
273 
274     /* 0x000003e0 reg248 */
275     struct {
276         RK_U32 sao_lambda_multi    : 3;
277         RK_U32 reserved            : 29;
278     } sao_cfg;
279 
280     /* 0x3e4 - 0x3ec */
281     RK_U32 reserved249_251[3];
282 
283     /* 0x000003f0 reg252 */
284     struct {
285         RK_U32 tile_w_m1    : 9;
286         RK_U32 reserved     : 7;
287         RK_U32 tile_h_m1    : 9;
288         RK_U32 reserved1    : 6;
289         RK_U32 tile_en      : 1;
290     } tile_cfg;
291 
292     /* 0x000003f4 reg253 */
293     struct {
294         RK_U32 tile_x       : 9;
295         RK_U32 reserved     : 7;
296         RK_U32 tile_y       : 9;
297         RK_U32 reserved1    : 7;
298     } tile_pos_hevc;
299 
300     /* 0x000003f8 reg254 */
301     struct {
302         RK_U32 slice_sta_x      : 9;
303         RK_U32 reserved1        : 7;
304         RK_U32 slice_sta_y      : 10;
305         RK_U32 reserved2        : 5;
306         RK_U32 slice_enc_ena    : 1;
307     } slice_enc_cfg0;
308 
309     /* 0x000003fc reg255 */
310     struct {
311         RK_U32 slice_end_x    : 9;
312         RK_U32 reserved       : 7;
313         RK_U32 slice_end_y    : 10;
314         RK_U32 reserved1      : 6;
315     } slice_enc_cfg1;
316 
317     /* 0x00000400 reg256 */
318     struct {
319         RK_U32 reserved          : 8;
320         RK_U32 bsbt_addr_jpeg    : 24;
321     } adr_bsbt_jpeg;
322 
323     /* 0x00000404 reg257 */
324     struct {
325         RK_U32 reserved          : 8;
326         RK_U32 bsbb_addr_jpeg    : 24;
327     } adr_bsbb_jpeg;
328 
329     /* 0x00000408 reg258 */
330     RK_U32 adr_bsbs_jpeg;
331 
332     /* 0x0000040c reg259 */
333     struct {
334         RK_U32 bsadr_msk_jpeg    : 4;
335         RK_U32 reserved          : 4;
336         RK_U32 bsbr_addr_jpeg    : 24;
337     } adr_bsbr_jpeg;
338 
339     /* 0x00000410 reg260 */
340     struct {
341         RK_U32 reserved          : 4;
342         RK_U32 adr_vsy_b_jpeg    : 28;
343     } adr_vsy_b_jpeg;
344 
345     /* 0x00000414 reg261 */
346     struct {
347         RK_U32 reserved          : 4;
348         RK_U32 adr_vsc_b_jpeg    : 28;
349     } adr_vsc_b_jpeg;
350 
351     /* 0x00000418 reg262 */
352     struct {
353         RK_U32 reserved          : 4;
354         RK_U32 adr_vsy_t_jpeg    : 28;
355     } adr_vsy_t_jpeg;
356 
357     /* 0x0000041c reg263 */
358     struct {
359         RK_U32 reserved          : 4;
360         RK_U32 adr_vsc_t_jpeg    : 28;
361     } adr_vsc_t_jpeg;
362 
363     /* 0x00000420 reg264 */
364     RK_U32 adr_src0_jpeg;
365 
366     /* 0x00000424 reg265 */
367     RK_U32 adr_src1_jpeg;
368 
369     /* 0x00000428 reg266 */
370     RK_U32 adr_src2_jpeg;
371 
372     /* 0x0000042c reg267 */
373     RK_U32 bsp_size_jpeg;
374 
375     /* 0x430 - 0x43c */
376     RK_U32 reserved268_271[4];
377 
378     /* 0x00000440 reg272 */
379     struct {
380         RK_U32 pic_wd8_m1    : 11;
381         RK_U32 reserved      : 1;
382         RK_U32 pp0_vnum_m1   : 4;
383         RK_U32 pic_hd8_m1    : 11;
384         RK_U32 reserved1     : 1;
385         RK_U32 pp0_jnum_m1   : 4;
386     } enc_rsl_jpeg;
387 
388     /* 0x00000444 reg273 */
389     struct {
390         RK_U32 pic_wfill_jpeg    : 6;
391         RK_U32 reserved          : 10;
392         RK_U32 pic_hfill_jpeg    : 6;
393         RK_U32 reserved1         : 10;
394     } src_fill_jpeg;
395 
396     /* 0x00000448 reg274 */
397     struct {
398         RK_U32 alpha_swap_jpeg            : 1;
399         RK_U32 rbuv_swap_jpeg             : 1;
400         RK_U32 src_cfmt_jpeg              : 4;
401         RK_U32 reserved                   : 2;
402         RK_U32 src_range_trns_en_jpeg     : 1;
403         RK_U32 src_range_trns_sel_jpeg    : 1;
404         RK_U32 chroma_ds_mode_jpeg        : 1;
405         RK_U32 reserved1                  : 21;
406     } src_fmt_jpeg;
407 
408     /* 0x0000044c reg275 */
409     struct {
410         RK_U32 csc_wgt_b2y_jpeg    : 9;
411         RK_U32 csc_wgt_g2y_jpeg    : 9;
412         RK_U32 csc_wgt_r2y_jpeg    : 9;
413         RK_U32 reserved            : 5;
414     } src_udfy_jpeg;
415 
416     /* 0x00000450 reg276 */
417     struct {
418         RK_U32 csc_wgt_b2u_jpeg    : 9;
419         RK_U32 csc_wgt_g2u_jpeg    : 9;
420         RK_U32 csc_wgt_r2u_jpeg    : 9;
421         RK_U32 reserved            : 5;
422     } src_udfu_jpeg;
423 
424     /* 0x00000454 reg277 */
425     struct {
426         RK_U32 csc_wgt_b2v_jpeg    : 9;
427         RK_U32 csc_wgt_g2v_jpeg    : 9;
428         RK_U32 csc_wgt_r2v_jpeg    : 9;
429         RK_U32 reserved            : 5;
430     } src_udfv_jpeg;
431 
432     /* 0x00000458 reg278 */
433     struct {
434         RK_U32 csc_ofst_v_jpeg    : 8;
435         RK_U32 csc_ofst_u_jpeg    : 8;
436         RK_U32 csc_ofst_y_jpeg    : 5;
437         RK_U32 reserved           : 11;
438     } src_udfo_jpeg;
439 
440     /* 0x0000045c reg279 */
441     struct {
442         RK_U32 cr_force_value_jpeg     : 8;
443         RK_U32 cb_force_value_jpeg     : 8;
444         RK_U32 chroma_force_en_jpeg    : 1;
445         RK_U32 reserved                : 9;
446         RK_U32 src_mirr_jpeg           : 1;
447         RK_U32 src_rot_jpeg            : 2;
448         RK_U32 reserved1               : 1;
449         RK_U32 rkfbcd_en_jpeg          : 1;
450         RK_U32 reserved2               : 1;
451     } src_proc_jpeg;
452 
453     /* 0x00000460 reg280 */
454     struct {
455         RK_U32 pic_ofst_x_jpeg    : 14;
456         RK_U32 reserved           : 2;
457         RK_U32 pic_ofst_y_jpeg    : 14;
458         RK_U32 reserved1          : 2;
459     } pic_ofst_jpeg;
460 
461     /* 0x00000464 reg281 */
462     struct {
463         RK_U32 src_strd0_jpeg    : 21;
464         RK_U32 reserved          : 11;
465     } src_strd0_jpeg;
466 
467     /* 0x00000468 reg282 */
468     struct {
469         RK_U32 src_strd1_jpeg    : 16;
470         RK_U32 reserved          : 16;
471     } src_strd1_jpeg;
472 
473     /* 0x0000046c reg283 */
474     struct {
475         RK_U32 pp_corner_filter_strength_jpeg      : 2;
476         RK_U32 reserved                            : 2;
477         RK_U32 pp_edge_filter_strength_jpeg        : 2;
478         RK_U32 reserved1                           : 2;
479         RK_U32 pp_internal_filter_strength_jpeg    : 2;
480         RK_U32 reserved2                           : 22;
481     } src_flt_cfg_jpeg;
482 
483     /* 0x00000470 reg284 */
484     struct {
485         RK_U32 jpeg_bias_y    : 15;
486         RK_U32 reserved       : 17;
487     } jpeg_y_cfg;
488 
489     /* 0x00000474 reg285 */
490     struct {
491         RK_U32 jpeg_bias_u    : 15;
492         RK_U32 reserved       : 17;
493     } jpeg_u_cfg;
494 
495     /* 0x00000478 reg286 */
496     struct {
497         RK_U32 jpeg_bias_v    : 15;
498         RK_U32 reserved       : 17;
499     } jpeg_v_cfg;
500 
501     /* 0x0000047c reg287 */
502     struct {
503         RK_U32 jpeg_ri              : 25;
504         RK_U32 jpeg_out_mode        : 1;
505         RK_U32 jpeg_start_rst_m     : 3;
506         RK_U32 jpeg_pic_last_ecs    : 1;
507         RK_U32 reserved             : 1;
508         RK_U32 jpeg_stnd            : 1;
509     } jpeg_base_cfg;
510 
511     /* 0x00000480 reg288 */
512     struct {
513         RK_U32 uvc_partition0_len_jpeg    : 12;
514         RK_U32 uvc_partition_len_jpeg     : 12;
515         RK_U32 uvc_skip_len_jpeg          : 6;
516         RK_U32 reserved                   : 2;
517     } uvc_cfg_jpeg;
518 
519     /* 0x00000484 reg289 */
520     struct {
521         RK_U32 reserved          : 4;
522         RK_U32 eslf_badr_jpeg    : 28;
523     } adr_eslf_jpeg;
524 
525     /* 0x00000488 reg290 */
526     struct {
527         RK_U32 eslf_rptr_jpeg    : 10;
528         RK_U32 eslf_wptr_jpeg    : 10;
529         RK_U32 eslf_blen_jpeg    : 10;
530         RK_U32 eslf_updt_jpeg    : 2;
531     } eslf_buf_jpeg;
532 
533     /* 0x48c */
534     RK_U32 reserved_291;
535 
536     /* 0x00000490 reg292 */
537     struct {
538         RK_U32 roi0_rdoq_start_x    : 11;
539         RK_U32 roi0_rdoq_start_y    : 11;
540         RK_U32 reserved             : 3;
541         RK_U32 roi0_rdoq_level      : 6;
542         RK_U32 roi0_rdoq_en         : 1;
543     } jpeg_roi0_cfg0;
544 
545     /* 0x00000494 reg293 */
546     struct {
547         RK_U32 roi0_rdoq_width_m1     : 11;
548         RK_U32 roi0_rdoq_height_m1    : 11;
549         RK_U32 reserved               : 3;
550         RK_U32 frm_rdoq_level         : 6;
551         RK_U32 frm_rdoq_en            : 1;
552     } jpeg_roi0_cfg1;
553 
554     /* 0x00000498 reg294 */
555     struct {
556         RK_U32 roi1_rdoq_start_x    : 11;
557         RK_U32 roi1_rdoq_start_y    : 11;
558         RK_U32 reserved             : 3;
559         RK_U32 roi1_rdoq_level      : 6;
560         RK_U32 roi1_rdoq_en         : 1;
561     } jpeg_roi1_cfg0;
562 
563     /* 0x0000049c reg295 */
564     struct {
565         RK_U32 roi1_rdoq_width_m1     : 11;
566         RK_U32 roi1_rdoq_height_m1    : 11;
567         RK_U32 reserved               : 10;
568     } jpeg_roi1_cfg1;
569 
570     /* 0x000004a0 reg296 */
571     struct {
572         RK_U32 roi2_rdoq_start_x    : 11;
573         RK_U32 roi2_rdoq_start_y    : 11;
574         RK_U32 reserved             : 3;
575         RK_U32 roi2_rdoq_level      : 6;
576         RK_U32 roi2_rdoq_en         : 1;
577     } jpeg_roi2_cfg0;
578 
579     /* 0x000004a4 reg297 */
580     struct {
581         RK_U32 roi2_rdoq_width_m1     : 11;
582         RK_U32 roi2_rdoq_height_m1    : 11;
583         RK_U32 reserved               : 10;
584     } jpeg_roi2_cfg1;
585 
586     /* 0x000004a8 reg298 */
587     struct {
588         RK_U32 roi3_rdoq_start_x    : 11;
589         RK_U32 roi3_rdoq_start_y    : 11;
590         RK_U32 reserved             : 3;
591         RK_U32 roi3_rdoq_level      : 6;
592         RK_U32 roi3_rdoq_en         : 1;
593     } jpeg_roi3_cfg0;
594 
595     /* 0x000004ac reg299 */
596     struct {
597         RK_U32 roi3_rdoq_width_m1     : 11;
598         RK_U32 roi3_rdoq_height_m1    : 11;
599         RK_U32 reserved               : 10;
600     } jpeg_roi3_cfg1;
601 
602     /* 0x000004b0 reg300 */
603     struct {
604         RK_U32 roi4_rdoq_start_x    : 11;
605         RK_U32 roi4_rdoq_start_y    : 11;
606         RK_U32 reserved             : 3;
607         RK_U32 roi4_rdoq_level      : 6;
608         RK_U32 roi4_rdoq_en         : 1;
609     } jpeg_roi4_cfg0;
610 
611     /* 0x000004b4 reg301 */
612     struct {
613         RK_U32 roi4_rdoq_width_m1     : 11;
614         RK_U32 roi4_rdoq_height_m1    : 11;
615         RK_U32 reserved               : 10;
616     } jpeg_roi4_cfg1;
617 
618     /* 0x000004b8 reg302 */
619     struct {
620         RK_U32 roi5_rdoq_start_x    : 11;
621         RK_U32 roi5_rdoq_start_y    : 11;
622         RK_U32 reserved             : 3;
623         RK_U32 roi5_rdoq_level      : 6;
624         RK_U32 roi5_rdoq_en         : 1;
625     } jpeg_roi5_cfg0;
626 
627     /* 0x000004bc reg303 */
628     struct {
629         RK_U32 roi5_rdoq_width_m1     : 11;
630         RK_U32 roi5_rdoq_height_m1    : 11;
631         RK_U32 reserved               : 10;
632     } jpeg_roi5_cfg1;
633 
634     /* 0x000004c0 reg304 */
635     struct {
636         RK_U32 roi6_rdoq_start_x    : 11;
637         RK_U32 roi6_rdoq_start_y    : 11;
638         RK_U32 reserved             : 3;
639         RK_U32 roi6_rdoq_level      : 6;
640         RK_U32 roi6_rdoq_en         : 1;
641     } jpeg_roi6_cfg0;
642 
643     /* 0x000004c4 reg305 */
644     struct {
645         RK_U32 roi6_rdoq_width_m1     : 11;
646         RK_U32 roi6_rdoq_height_m1    : 11;
647         RK_U32 reserved               : 10;
648     } jpeg_roi6_cfg1;
649 
650     /* 0x000004c8 reg306 */
651     struct {
652         RK_U32 roi7_rdoq_start_x    : 11;
653         RK_U32 roi7_rdoq_start_y    : 11;
654         RK_U32 reserved             : 3;
655         RK_U32 roi7_rdoq_level      : 6;
656         RK_U32 roi7_rdoq_en         : 1;
657     } jpeg_roi7_cfg0;
658 
659     /* 0x000004cc reg307 */
660     struct {
661         RK_U32 roi7_rdoq_width_m1     : 11;
662         RK_U32 roi7_rdoq_height_m1    : 11;
663         RK_U32 reserved               : 10;
664     } jpeg_roi7_cfg1;
665 
666     /* 0x000004d0 reg308 */
667     struct {
668         RK_U32 roi8_rdoq_start_x    : 11;
669         RK_U32 roi8_rdoq_start_y    : 11;
670         RK_U32 reserved             : 3;
671         RK_U32 roi8_rdoq_level      : 6;
672         RK_U32 roi8_rdoq_en         : 1;
673     } jpeg_roi8_cfg0;
674 
675     /* 0x000004d4 reg309 */
676     struct {
677         RK_U32 roi8_rdoq_width_m1     : 11;
678         RK_U32 roi8_rdoq_height_m1    : 11;
679         RK_U32 reserved               : 10;
680     } jpeg_roi8_cfg1;
681 
682     /* 0x000004d8 reg310 */
683     struct {
684         RK_U32 roi9_rdoq_start_x    : 11;
685         RK_U32 roi9_rdoq_start_y    : 11;
686         RK_U32 reserved             : 3;
687         RK_U32 roi9_rdoq_level      : 6;
688         RK_U32 roi9_rdoq_en         : 1;
689     } jpeg_roi9_cfg0;
690 
691     /* 0x000004dc reg311 */
692     struct {
693         RK_U32 roi9_rdoq_width_m1     : 11;
694         RK_U32 roi9_rdoq_height_m1    : 11;
695         RK_U32 reserved               : 10;
696     } jpeg_roi9_cfg1;
697 
698     /* 0x000004e0 reg312 */
699     struct {
700         RK_U32 roi10_rdoq_start_x    : 11;
701         RK_U32 roi10_rdoq_start_y    : 11;
702         RK_U32 reserved              : 3;
703         RK_U32 roi10_rdoq_level      : 6;
704         RK_U32 roi10_rdoq_en         : 1;
705     } jpeg_roi10_cfg0;
706 
707     /* 0x000004e4 reg313 */
708     struct {
709         RK_U32 roi10_rdoq_width_m1     : 11;
710         RK_U32 roi10_rdoq_height_m1    : 11;
711         RK_U32 reserved                : 10;
712     } jpeg_roi10_cfg1;
713 
714     /* 0x000004e8 reg314 */
715     struct {
716         RK_U32 roi11_rdoq_start_x    : 11;
717         RK_U32 roi11_rdoq_start_y    : 11;
718         RK_U32 reserved              : 3;
719         RK_U32 roi11_rdoq_level      : 6;
720         RK_U32 roi11_rdoq_en         : 1;
721     } jpeg_roi11_cfg0;
722 
723     /* 0x000004ec reg315 */
724     struct {
725         RK_U32 roi11_rdoq_width_m1     : 11;
726         RK_U32 roi11_rdoq_height_m1    : 11;
727         RK_U32 reserved                : 10;
728     } jpeg_roi11_cfg1;
729 
730     /* 0x000004f0 reg316 */
731     struct {
732         RK_U32 roi12_rdoq_start_x    : 11;
733         RK_U32 roi12_rdoq_start_y    : 11;
734         RK_U32 reserved              : 3;
735         RK_U32 roi12_rdoq_level      : 6;
736         RK_U32 roi12_rdoq_en         : 1;
737     } jpeg_roi12_cfg0;
738 
739     /* 0x000004f4 reg317 */
740     struct {
741         RK_U32 roi12_rdoq_width_m1     : 11;
742         RK_U32 roi12_rdoq_height_m1    : 11;
743         RK_U32 reserved                : 10;
744     } jpeg_roi12_cfg1;
745 
746     /* 0x000004f8 reg318 */
747     struct {
748         RK_U32 roi13_rdoq_start_x    : 11;
749         RK_U32 roi13_rdoq_start_y    : 11;
750         RK_U32 reserved              : 3;
751         RK_U32 roi13_rdoq_level      : 6;
752         RK_U32 roi13_rdoq_en         : 1;
753     } jpeg_roi13_cfg0;
754 
755     /* 0x000004fc reg319 */
756     struct {
757         RK_U32 roi13_rdoq_width_m1     : 11;
758         RK_U32 roi13_rdoq_height_m1    : 11;
759         RK_U32 reserved                : 10;
760     } jpeg_roi13_cfg1;
761 
762     /* 0x00000500 reg320 */
763     struct {
764         RK_U32 roi14_rdoq_start_x    : 11;
765         RK_U32 roi14_rdoq_start_y    : 11;
766         RK_U32 reserved              : 3;
767         RK_U32 roi14_rdoq_level      : 6;
768         RK_U32 roi14_rdoq_en         : 1;
769     } jpeg_roi14_cfg0;
770 
771     /* 0x00000504 reg321 */
772     struct {
773         RK_U32 roi14_rdoq_width_m1     : 11;
774         RK_U32 roi14_rdoq_height_m1    : 11;
775         RK_U32 reserved                : 10;
776     } jpeg_roi14_cfg1;
777 
778     /* 0x00000508 reg322 */
779     struct {
780         RK_U32 roi15_rdoq_start_x    : 11;
781         RK_U32 roi15_rdoq_start_y    : 11;
782         RK_U32 reserved              : 3;
783         RK_U32 roi15_rdoq_level      : 6;
784         RK_U32 roi15_rdoq_en         : 1;
785     } jpeg_roi15_cfg0;
786 
787     /* 0x0000050c reg323 */
788     struct {
789         RK_U32 roi15_rdoq_width_m1     : 11;
790         RK_U32 roi15_rdoq_height_m1    : 11;
791         RK_U32 reserved                : 10;
792     } jpeg_roi15_cfg1;
793 
794     /* 0x510 - 0x51c */
795     RK_U32 reserved324_327[4];
796 
797     /* 0x00000520 reg328 */
798     struct {
799         RK_U32 reserved        : 4;
800         RK_U32 base_addr_md    : 28;
801     } adr_md_vpp;
802 
803     /* 0x00000524 reg329 */
804     struct {
805         RK_U32 reserved        : 4;
806         RK_U32 base_addr_od    : 28;
807     } adr_od_vpp;
808 
809     /* 0x00000528 reg330 */
810     struct {
811         RK_U32 reserved             : 4;
812         RK_U32 base_addr_ref_mdw    : 28;
813     } adr_ref_mdw;
814 
815     /* 0x0000052c reg331 */
816     struct {
817         RK_U32 reserved             : 4;
818         RK_U32 base_addr_ref_mdr    : 28;
819     } adr_ref_mdr;
820 
821     /* 0x00000530 reg332 */
822     struct {
823         RK_U32 sto_stride_md          : 8;
824         RK_U32 sto_stride_od          : 8;
825         RK_U32 cur_frm_en_md          : 1;
826         RK_U32 ref_frm_en_md          : 1;
827         RK_U32 switch_sad_md          : 2;
828         RK_U32 night_mode_en_md       : 1;
829         RK_U32 flycatkin_flt_en_md    : 1;
830         RK_U32 en_od                  : 1;
831         RK_U32 background_en_od       : 1;
832         RK_U32 sad_comp_en_od         : 1;
833         RK_U32 reserved               : 6;
834         RK_U32 vepu_pp_en             : 1;
835     } vpp_base_cfg;
836 
837     /* 0x00000534 reg333 */
838     struct {
839         RK_U32 thres_sad_md          : 12;
840         RK_U32 thres_move_md         : 3;
841         RK_U32 reserved              : 1;
842         RK_U32 thres_dust_move_md    : 4;
843         RK_U32 thres_dust_blk_md     : 3;
844         RK_U32 reserved1             : 1;
845         RK_U32 thres_dust_chng_md    : 8;
846     } thd_md_vpp;
847 
848     /* 0x00000538 reg334 */
849     struct {
850         RK_U32 thres_complex_od        : 12;
851         RK_U32 thres_complex_cnt_od    : 3;
852         RK_U32 thres_sad_od            : 14;
853         RK_U32 reserved                : 3;
854     } thd_od_vpp;
855 } H265eVepu511Frame;
856 
857 /* class: param */
858 /* 0x00001700 reg1472 - 0x000019cc reg1651*/
859 typedef struct H265eVepu511Param_t {
860     /* 0x00001700 reg1472 - 0x0000172c reg1483*/
861     RK_U32 reserved_1472_1483[12];
862 
863     /* 0x00001730 reg1484 */
864     struct {
865         RK_U32 bias_madi_th0    : 8;
866         RK_U32 bias_madi_th1    : 8;
867         RK_U32 bias_madi_th2    : 8;
868         RK_U32 reserved         : 8;
869     } bias_madi_thd_comb;
870 
871     /* 0x00001734 reg1485 */
872     struct {
873         RK_U32 bias_i_val0    : 10;
874         RK_U32 bias_i_val1    : 10;
875         RK_U32 bias_i_val2    : 10;
876         RK_U32 reserved       : 2;
877     } qnt0_i_bias_comb;
878 
879     /* 0x00001738 reg1486 */
880     struct {
881         RK_U32 bias_i_val3    : 10;
882         RK_U32 reserved       : 22;
883     } qnt1_i_bias_comb;
884 
885     /* 0x0000173c reg1487 */
886     struct {
887         RK_U32 bias_p_val0    : 10;
888         RK_U32 bias_p_val1    : 10;
889         RK_U32 bias_p_val2    : 10;
890         RK_U32 reserved       : 2;
891     } qnt0_p_bias_comb;
892 
893     /* 0x00001740 reg1488 */
894     struct {
895         RK_U32 bias_p_val3    : 10;
896         RK_U32 reserved       : 22;
897     } qnt1_p_bias_comb;
898 
899     /* 0x00001744 reg1489 */
900     struct {
901         RK_U32 light_change_en         : 1;
902         RK_U32 light_ratio_mult1       : 5;
903         RK_U32 light_ratio_mult2       : 4;
904         RK_U32 light_thre_csu1_cnt     : 2;
905         RK_U32 srch_rgn_en             : 1;
906         RK_U32 reserved                : 3;
907         RK_U32 light_thre_madp         : 8;
908         RK_U32 light_thre_lightmadp    : 8;
909     } light_cfg_hevc;
910 
911     /* 0x1748 - 0x175c */
912     RK_U32 reserved1490_1495[6];
913 
914     /* 0x00001760 reg1496 */
915     struct {
916         RK_U32 cime_pmv_num      : 1;
917         RK_U32 cime_fuse         : 1;
918         RK_U32 reserved          : 2;
919         RK_U32 move_lambda       : 4;
920         RK_U32 rime_lvl_mrg      : 2;
921         RK_U32 rime_prelvl_en    : 2;
922         RK_U32 rime_prersu_en    : 3;
923         RK_U32 fme_lvl_mrg       : 1;
924         RK_U32 reserved1         : 16;
925     } me_sqi_comb;
926 
927     /* 0x00001764 reg1497 */
928     struct {
929         RK_U32 cime_mvd_th0    : 9;
930         RK_U32 reserved        : 1;
931         RK_U32 cime_mvd_th1    : 9;
932         RK_U32 reserved1       : 1;
933         RK_U32 cime_mvd_th2    : 9;
934         RK_U32 reserved2       : 3;
935     }  cime_mvd_th_comb;
936 
937     /* 0x00001768 reg1498 */
938     struct {
939         RK_U32 cime_madp_th       : 12;
940         RK_U32 ratio_consi_cfg    : 4;
941         RK_U32 ratio_bmv_dist     : 4;
942         RK_U32 reserved           : 12;
943     } cime_madp_th_comb;
944 
945     /* 0x0000176c reg1499 */
946     struct {
947         RK_U32 cime_multi0    : 8;
948         RK_U32 cime_multi1    : 8;
949         RK_U32 cime_multi2    : 8;
950         RK_U32 cime_multi3    : 8;
951     } cime_multi_comb;
952 
953     /* 0x00001770 reg1500 */
954     struct {
955         RK_U32 rime_mvd_th0    : 3;
956         RK_U32 reserved        : 1;
957         RK_U32 rime_mvd_th1    : 3;
958         RK_U32 reserved1       : 9;
959         RK_U32 fme_madp_th     : 12;
960         RK_U32 reserved2       : 4;
961     } rime_mvd_th_comb;
962 
963     /* 0x00001774 reg1501 */
964     struct {
965         RK_U32 rime_madp_th0    : 12;
966         RK_U32 reserved         : 4;
967         RK_U32 rime_madp_th1    : 12;
968         RK_U32 reserved1        : 4;
969     } rime_madp_th_comb;
970 
971     /* 0x00001778 reg1502 */
972     struct {
973         RK_U32 rime_multi0    : 10;
974         RK_U32 rime_multi1    : 10;
975         RK_U32 rime_multi2    : 10;
976         RK_U32 reserved       : 2;
977     } rime_multi_comb;
978 
979     /* 0x0000177c reg1503 */
980     struct {
981         RK_U32 cmv_th0     : 8;
982         RK_U32 cmv_th1     : 8;
983         RK_U32 cmv_th2     : 8;
984         RK_U32 reserved    : 8;
985     } cmv_st_th_comb;
986 
987     /* 0x1780 - 0x17fc */
988     RK_U32 reserved1504_1535[32];
989 
990     /* 0x00001800 reg1536 - 0x000018cc reg1587*/
991     RK_U32 pprd_lamb_satd_0_51[52];
992 
993     /* 0x000018d0 reg1588 */
994     struct {
995         RK_U32 lambda_luma_offset      : 5;
996         RK_U32 lambda_chroma_offset    : 5;
997         RK_U32 reserved                : 22;
998     } prmd_intra_lamb_ofst;
999 
1000     /* 0x18d4 - 0x18fc */
1001     RK_U32 reserved1589_1599[11];
1002 
1003     /* 0x00001900 reg1600 - 0x000019cc reg1651*/
1004     RK_U32 rdo_wgta_qp_grpa_0_51[52];
1005 } H265eVepu511Param;
1006 
1007 /* class: rdo/q_i */
1008 /* 0x00002000 reg2048 - 0x00002160 reg2136 */
1009 typedef struct H265eVepu511SqiCfg_t {
1010     /* 0x00002000 reg2048 */
1011     struct {
1012         RK_U32 subj_opt_en                     : 1;
1013         RK_U32 subj_opt_strength               : 3;
1014         RK_U32 aq_subj_en                      : 1;
1015         RK_U32 aq_subj_strength                : 3;
1016         RK_U32 bndry_cmplx_static_choose_en    : 2;
1017         RK_U32 feature_cal_en                  : 1;
1018         RK_U32 reserved                        : 1;
1019         RK_U32 thre_sum_grdn_point             : 20;
1020     } subj_opt_cfg;
1021 
1022     /* 0x00002004 reg2049 */
1023     struct {
1024         RK_U32 common_thre_num_grdn_point_dep0    : 8;
1025         RK_U32 common_thre_num_grdn_point_dep1    : 8;
1026         RK_U32 common_thre_num_grdn_point_dep2    : 8;
1027         RK_U32 reserved                           : 8;
1028     } subj_opt_dpth_thd;
1029 
1030     /* 0x00002008 reg2050 */
1031     struct {
1032         RK_U32 cover_rdo_mode_intra_jcoef_d0    : 6;
1033         RK_U32 cover_rdo_mode_intra_jcoef_d1    : 6;
1034         RK_U32 cover_rmd_mode_intra_jcoef_d0    : 6;
1035         RK_U32 cover_rmd_mode_intra_jcoef_d1    : 6;
1036         RK_U32 cover_rdoq_rcoef_d0              : 4;
1037         RK_U32 cover_rdoq_rcoef_d1              : 4;
1038     } subj_opt_inrar_coef;
1039 
1040     /* 0x0000200c reg2051 */
1041     struct {
1042         RK_U32 cfc_rmd_mode_intra_jcoef_d0    : 6;
1043         RK_U32 cfc_rmd_mode_intra_jcoef_d1    : 6;
1044         RK_U32 cfc_rdo_mode_intra_jcoef_d0    : 6;
1045         RK_U32 cfc_rdo_mode_intra_jcoef_d1    : 6;
1046         RK_U32 cfc_rdoq_rcoef_d0              : 4;
1047         RK_U32 cfc_rdoq_rcoef_d1              : 4;
1048     } smear_opt_cfc_coef;
1049 
1050     /* 0x00002010 reg2052 */
1051     struct {
1052         RK_U32 anti_smear_en                  : 1;
1053         RK_U32 frm_static                     : 1;
1054         RK_U32 smear_stor_en                  : 1;
1055         RK_U32 smear_load_en                  : 1;
1056         RK_U32 smear_strength                 : 3;
1057         RK_U32 reserved                       : 1;
1058         RK_U32 thre_mv_inconfor_cime          : 4;
1059         RK_U32 thre_mv_confor_cime            : 2;
1060         RK_U32 thre_mv_confor_cime_gmv        : 2;
1061         RK_U32 thre_mv_inconfor_cime_gmv      : 4;
1062         RK_U32 thre_num_mv_confor_cime        : 2;
1063         RK_U32 thre_num_mv_confor_cime_gmv    : 2;
1064         RK_U32 ref1_subj_opt_en               : 1;
1065         RK_U32 smear_cfc_en                   : 1;
1066         RK_U32 reserved1                      : 6;
1067     } smear_opt_cfg0;
1068 
1069     /* 0x00002014 reg2053 */
1070     struct {
1071         RK_U32 dist0_frm_avg               : 14;
1072         RK_U32 thre_dsp_static             : 5;
1073         RK_U32 thre_dsp_mov                : 5;
1074         RK_U32 thre_dist_mv_confor_cime    : 7;
1075         RK_U32 reserved                    : 1;
1076     } smear_opt_cfg1;
1077 
1078     /* 0x00002018 reg2054 */
1079     struct {
1080         RK_U32 thre_madp_stc_dep0    : 4;
1081         RK_U32 thre_madp_stc_dep1    : 4;
1082         RK_U32 thre_madp_stc_dep2    : 4;
1083         RK_U32 thre_madp_mov_dep0    : 6;
1084         RK_U32 thre_madp_mov_dep1    : 6;
1085         RK_U32 thre_madp_mov_dep2    : 6;
1086         RK_U32 reserved              : 2;
1087     } smear_madp_thd;
1088 
1089     /* 0x0000201c reg2055 */
1090     struct {
1091         RK_U32 thre_num_pt_stc_dep0    : 6;
1092         RK_U32 thre_num_pt_stc_dep1    : 4;
1093         RK_U32 thre_num_pt_stc_dep2    : 2;
1094         RK_U32 reserved                : 4;
1095         RK_U32 thre_num_pt_mov_dep0    : 6;
1096         RK_U32 thre_num_pt_mov_dep1    : 4;
1097         RK_U32 thre_num_pt_mov_dep2    : 2;
1098         RK_U32 reserved1               : 4;
1099     } smear_stat_thd;
1100 
1101     /* 0x00002020 reg2056 */
1102     struct {
1103         RK_U32 confor_cime_gmv0      : 5;
1104         RK_U32 reserved              : 3;
1105         RK_U32 confor_cime_gmv1      : 5;
1106         RK_U32 reserved1             : 3;
1107         RK_U32 inconfor_cime_gmv0    : 6;
1108         RK_U32 reserved2             : 2;
1109         RK_U32 inconfor_cime_gmv1    : 6;
1110         RK_U32 reserved3             : 2;
1111     } smear_bmv_dist_thd0;
1112 
1113     /* 0x00002024 reg2057 */
1114     struct {
1115         RK_U32 inconfor_cime_gmv2    : 6;
1116         RK_U32 reserved              : 2;
1117         RK_U32 inconfor_cime_gmv3    : 6;
1118         RK_U32 reserved1             : 2;
1119         RK_U32 inconfor_cime_gmv4    : 6;
1120         RK_U32 reserved2             : 10;
1121     } smear_bmv_dist_thd1;
1122 
1123     /* 0x00002028 reg2058 */
1124     struct {
1125         RK_U32 thre_min_num_confor_csu0_bndry_cime_gmv      : 2;
1126         RK_U32 thre_max_num_confor_csu0_bndry_cime_gmv      : 2;
1127         RK_U32 thre_min_num_inconfor_csu0_bndry_cime_gmv    : 2;
1128         RK_U32 thre_max_num_inconfor_csu0_bndry_cime_gmv    : 2;
1129         RK_U32 thre_split_dep0                              : 2;
1130         RK_U32 thre_zero_srgn                               : 5;
1131         RK_U32 reserved                                     : 1;
1132         RK_U32 madi_thre_dep0                               : 8;
1133         RK_U32 madi_thre_dep1                               : 8;
1134     } smear_min_bndry_gmv;
1135 
1136     /* 0x0000202c reg2059 */
1137     struct {
1138         RK_U32 thre_madp_stc_cover0    : 6;
1139         RK_U32 thre_madp_stc_cover1    : 6;
1140         RK_U32 thre_madp_mov_cover0    : 5;
1141         RK_U32 thre_madp_mov_cover1    : 5;
1142         RK_U32 smear_qp_strength       : 4;
1143         RK_U32 smear_thre_qp           : 6;
1144     } smear_madp_cov_thd;
1145 
1146     /* 0x00002030 reg2060 */
1147     struct {
1148         RK_U32 skin_en                        : 1;
1149         RK_U32 skin_strength                  : 3;
1150         RK_U32 thre_uvsqr16_skin              : 8;
1151         RK_U32 skin_thre_cst_best_mad         : 10;
1152         RK_U32 skin_thre_cst_best_grdn_blk    : 7;
1153         RK_U32 reserved                       : 1;
1154         RK_U32 frame_skin_ratio               : 2;
1155     } skin_opt_cfg;
1156 
1157     /* 0x00002034 reg2061 */
1158     struct {
1159         RK_U32 thre_sum_mad_intra         : 2;
1160         RK_U32 thre_sum_grdn_blk_intra    : 2;
1161         RK_U32 vld_thre_skin_v            : 3;
1162         RK_U32 reserved                   : 1;
1163         RK_U32 thre_min_skin_u            : 8;
1164         RK_U32 thre_max_skin_u            : 8;
1165         RK_U32 thre_min_skin_v            : 8;
1166     } skin_chrm_thd;
1167 
1168     /* 0x00002038 reg2062 */
1169     struct {
1170         RK_U32 block_en                        : 1;
1171         RK_U32 reserved                        : 1;
1172         RK_U32 block_thre_cst_best_mad         : 10;
1173         RK_U32 reserved1                       : 4;
1174         RK_U32 block_thre_cst_best_grdn_blk    : 6;
1175         RK_U32 reserved2                       : 2;
1176         RK_U32 thre_num_grdnt_point_cmplx      : 2;
1177         RK_U32 block_delta_qp_flag             : 2;
1178         RK_U32 reserved3                       : 4;
1179     } block_opt_cfg;
1180 
1181     /* 0x0000203c reg2063 */
1182     struct {
1183         RK_U32 cmplx_thre_cst_best_mad_dep0    : 13;
1184         RK_U32 reserved                        : 3;
1185         RK_U32 cmplx_thre_cst_best_mad_dep1    : 13;
1186         RK_U32 reserved1                       : 2;
1187         RK_U32 cmplx_en                        : 1;
1188     } cmplx_opt_cfg;
1189 
1190     /* 0x00002040 reg2064 */
1191     struct {
1192         RK_U32 cmplx_thre_cst_best_mad_dep2         : 13;
1193         RK_U32 reserved                             : 3;
1194         RK_U32 cmplx_thre_cst_best_grdn_blk_dep0    : 11;
1195         RK_U32 reserved1                            : 5;
1196     } cmplx_bst_mad_thd;
1197 
1198     /* 0x00002044 reg2065 */
1199     struct {
1200         RK_U32 cmplx_thre_cst_best_grdn_blk_dep1    : 11;
1201         RK_U32 reserved                             : 5;
1202         RK_U32 cmplx_thre_cst_best_grdn_blk_dep2    : 11;
1203         RK_U32 reserved1                            : 5;
1204     } cmplx_bst_grdn_thd;
1205 
1206     /* 0x00002048 reg2066 */
1207     struct {
1208         RK_U32 line_en                                 : 1;
1209         RK_U32 line_thre_min_cst_best_grdn_blk_dep0    : 5;
1210         RK_U32 line_thre_min_cst_best_grdn_blk_dep1    : 8;
1211         RK_U32 line_thre_min_cst_best_grdn_blk_dep2    : 8;
1212         RK_U32 line_thre_ratio_best_grdn_blk_dep0      : 4;
1213         RK_U32 line_thre_ratio_best_grdn_blk_dep1      : 4;
1214         RK_U32 reserved                                : 2;
1215     } line_opt_cfg;
1216 
1217     /* 0x0000204c reg2067 */
1218     struct {
1219         RK_U32 line_thre_max_cst_best_grdn_blk_dep0    : 7;
1220         RK_U32 reserved                                : 1;
1221         RK_U32 line_thre_max_cst_best_grdn_blk_dep1    : 8;
1222         RK_U32 line_thre_max_cst_best_grdn_blk_dep2    : 8;
1223         RK_U32 reserved1                               : 8;
1224     } line_cst_bst_grdn;
1225 
1226     /* 0x00002050 reg2068 */
1227     struct {
1228         RK_U32 line_thre_qp               : 6;
1229         RK_U32 block_strength             : 3;
1230         RK_U32 block_thre_qp              : 6;
1231         RK_U32 cmplx_strength             : 3;
1232         RK_U32 cmplx_thre_qp              : 6;
1233         RK_U32 cmplx_thre_max_grdn_blk    : 6;
1234         RK_U32 reserved                   : 2;
1235     } subj_opt_dqp0;
1236 
1237     /* 0x00002054 reg2069 */
1238     struct {
1239         RK_U32 skin_thre_qp                     : 6;
1240         RK_U32 smear_frame_thre_qp              : 6;
1241         RK_U32 bndry_rdo_mode_intra_jcoef_d0    : 6;
1242         RK_U32 bndry_rdo_mode_intra_jcoef_d1    : 6;
1243         RK_U32 skin_thre_madp                   : 8;
1244     } subj_opt_dqp1;
1245 
1246     /* 0x00002058 reg2070 */
1247     struct {
1248         RK_U32 line_rdo_split_rcoef_d0    : 5;
1249         RK_U32 line_rdo_split_rcoef_d1    : 5;
1250         RK_U32 choose_cu32_split_jcoef    : 6;
1251         RK_U32 choose_cu16_split_jcoef    : 5;
1252         RK_U32 reserved                   : 11;
1253     } subj_opt_rdo_split;
1254 
1255     /* 0x0000205c reg2071 */
1256     struct {
1257         RK_U32 lid_grdn_blk_cu16_th       : 8;
1258         RK_U32 lid_rmd_intra_jcoef_ang    : 5;
1259         RK_U32 lid_rdo_intra_rcoef_ang    : 5;
1260         RK_U32 lid_rmd_intra_jcoef_dp     : 6;
1261         RK_U32 lid_rdo_intra_rcoef_dp     : 6;
1262         RK_U32 lid_en                     : 1;
1263         RK_U32 reserved                   : 1;
1264     } line_intra_dir_cfg;
1265 
1266     /* 0x00002060 reg2072 -  0x0000206c reg 2076*/
1267     rdo_b32_skip_par rdo_b32_skip;
1268 
1269     /* 0x00002070 reg2076 - 0x0000207c reg2079*/
1270     rdo_skip_par rdo_b16_skip;
1271 
1272     /* 0x00002080 reg2080 - 0x00002088 reg2082 */
1273     rdo_b32_noskip_par rdo_b32_inter;
1274 
1275     /* 0x0000208c reg2083 - 0x00002094 reg2085 */
1276     rdo_noskip_par rdo_b16_inter;
1277 
1278     /* 0x00002098 reg2086 - 0x000020a0 reg2087 */
1279     rdo_noskip_par rdo_b32_intra;
1280 
1281     /* 0x000020a4 reg2088 - 0x000020ac reg2091 */
1282     rdo_noskip_par rdo_b16_intra;
1283 
1284     /* 0x000020b0 reg2092 */
1285     struct {
1286         RK_U32 ref1_rmd_mode_lr_jcoef_d0    : 5;
1287         RK_U32 ref1_rmd_mode_lr_jcoef_d1    : 5;
1288         RK_U32 ref1_rdo_mode_lr_jcoef_d0    : 5;
1289         RK_U32 ref1_rdo_mode_lr_jcoef_d1    : 5;
1290         RK_U32 ref1_rmd_mv_lr_jcoef_d0      : 5;
1291         RK_U32 ref1_rmd_mv_lr_jcoef_d1      : 5;
1292         RK_U32 reserved                     : 2;
1293     } smear_ref1_cfg0;
1294 
1295     /* 0x000020b4 reg2093 */
1296     struct {
1297         RK_U32 ref1_rdo_inter_tu_res_joef_d0    : 5;
1298         RK_U32 ref1_rdo_inter_tu_res_joef_d1    : 5;
1299         RK_U32 ref1_rdoq_zero_mv_rcoef_d0       : 5;
1300         RK_U32 ref1_rdoq_zero_mv_rcoef_d1       : 5;
1301         RK_U32 ref1_rmd_inter_lr_jcoef_d0       : 5;
1302         RK_U32 ref1_rmd_inter_lr_jcoef_d1       : 5;
1303         RK_U32 reserved                         : 2;
1304     } smear_ref1_cfg1;
1305 
1306     /* 0x000020b8 reg2094 - 0x000020bc reg2095*/
1307     RK_U32 reserved_2094_2095[2];
1308 
1309     /* 0x000020c0 reg2096 */
1310     struct {
1311         RK_U32 thre_max_luma_dark        : 8;
1312         RK_U32 thre_min_luma_bright      : 8;
1313         RK_U32 thre_ratio_dark_bright    : 6;
1314         RK_U32 reserved                  : 2;
1315         RK_U32 thre_qp_dark_bright       : 6;
1316         RK_U32 reserved1                 : 1;
1317         RK_U32 dark_bright_en            : 1;
1318     } dark_brgt_opt_cfg;
1319 
1320     /* 0x000020c4 reg2097 */
1321     struct {
1322         RK_U32 madp_th_dep0_dark_bright    : 8;
1323         RK_U32 madp_th_dep1_dark_bright    : 8;
1324         RK_U32 madi_th_dep0_dark_bright    : 6;
1325         RK_U32 reserved                    : 2;
1326         RK_U32 madi_th_dep1_dark_bright    : 6;
1327         RK_U32 reserved1                   : 2;
1328     } dark_brgt_madi_thd;
1329 
1330     /* 0x000020c8 reg2098 */
1331     struct {
1332         RK_U32 dark_bright_inter_res_j_coef_wgt_dep0    : 8;
1333         RK_U32 dark_bright_inter_res_j_coef_wgt_dep1    : 8;
1334         RK_U32 dark_bright_intra_j_coef_wgt_dep0        : 8;
1335         RK_U32 dark_bright_intra_j_coef_wgt_dep1        : 8;
1336     } dark_brgt_wgt0;
1337 
1338     /* 0x000020cc reg2099 */
1339     struct {
1340         RK_U32 dark_bright_split_rcoef_d0    : 6;
1341         RK_U32 reserved                      : 2;
1342         RK_U32 dark_bright_split_rcoef_d1    : 6;
1343         RK_U32 reserved1                     : 18;
1344     } dark_brgt_wgt1;
1345 
1346     /* 0x000020d0 reg2100 */
1347     struct {
1348         RK_U32 cmplx_static_en               : 1;
1349         RK_U32 cmplx_static_lgt_chng_en      : 1;
1350         RK_U32 thre_qp_cmplx_static          : 6;
1351         RK_U32 madp_th0_dep0_cmplx_static    : 6;
1352         RK_U32 madp_th1_dep0_cmplx_static    : 8;
1353         RK_U32 madp_th2_dep0_cmplx_static    : 10;
1354     } cmplx_statc_cfg;
1355 
1356     /* 0x000020d4 reg2101 */
1357     struct {
1358         RK_U32 num_grdn_point_th1_dep0_cmplx_static    : 8;
1359         RK_U32 num_grdn_point_th2_dep0_cmplx_static    : 8;
1360         RK_U32 madi_th1_dep0_cmplx_static              : 6;
1361         RK_U32 reserved                                : 2;
1362         RK_U32 madi_th2_dep0_cmplx_static              : 6;
1363         RK_U32 reserved1                               : 2;
1364     } cmplx_statc_thd0;
1365 
1366     /* 0x000020d8 reg2102 */
1367     struct {
1368         RK_U32 madp_th0_dep1_cmplx_static           : 6;
1369         RK_U32 madp_th1_dep1_cmplx_static           : 8;
1370         RK_U32 madp_th2_dep1_cmplx_static           : 10;
1371         RK_U32 static_num_thre_dep1_cmplx_static    : 2;
1372         RK_U32 srch_rgn_mv_th_cmplx_static          : 5;
1373         RK_U32 reserved                             : 1;
1374     } cmplx_statc_thd1;
1375 
1376     /* 0x000020dc reg2103 */
1377     struct {
1378         RK_U32 num_grdn_point_th1_dep1_cmplx_static    : 6;
1379         RK_U32 num_grdn_point_th2_dep1_cmplx_static    : 6;
1380         RK_U32 madi_th1_dep1_cmplx_static              : 6;
1381         RK_U32 madi_th2_dep1_cmplx_static              : 6;
1382         RK_U32 num_cu16_th                : 3;
1383         RK_U32 frame_qp_en                : 1;
1384         RK_U32 ratio_light_madp_th        : 2;
1385         RK_U32 reserved                   : 2;
1386     } cmplx_statc_thd2;
1387 
1388     /* 0x000020e0 reg2104 */
1389     struct {
1390         RK_U32 inter_res_j_coef_wgt1_dep0    : 8;
1391         RK_U32 inter_res_j_coef_wgt2_dep0    : 8;
1392         RK_U32 inter_res_j_coef_wgt1_dep1    : 8;
1393         RK_U32 inter_res_j_coef_wgt2_dep1    : 8;
1394     } cmplx_statc_wgt0;
1395 
1396     /* 0x000020e4 reg2105 */
1397     struct {
1398         RK_U32 intra_j_coef_wgt1_dep0    : 8;
1399         RK_U32 intra_j_coef_wgt2_dep0    : 8;
1400         RK_U32 intra_j_coef_wgt1_dep1    : 8;
1401         RK_U32 intra_j_coef_wgt2_dep1    : 8;
1402     } cmplx_statc_wgt1;
1403 
1404     /* 0x000020e8 reg2106 */
1405     struct {
1406         RK_U32 split_rcoef_w1d0    : 6;
1407         RK_U32 split_rcoef_w1d1    : 6;
1408         RK_U32 split_rcoef_w2d0    : 6;
1409         RK_U32 split_rcoef_w2d1    : 6;
1410         RK_U32 reserved            : 8;
1411     } cmplx_statc_wgt2;
1412 
1413     /* 0x20ec - 0x20fc */
1414     RK_U32 reserved2107_2111[5];
1415 
1416     /* 0x00002100 reg2112 */
1417     struct {
1418         RK_U32 blur_low_madi_thd     : 7;
1419         RK_U32 reserved              : 1;
1420         RK_U32 blur_high_madi_thd    : 7;
1421         RK_U32 reserved1             : 1;
1422         RK_U32 blur_low_cnt_thd      : 4;
1423         RK_U32 blur_hight_cnt_thd    : 4;
1424         RK_U32 blur_sum_cnt_thd      : 4;
1425         RK_U32 anti_blur_en          : 1;
1426         RK_U32 scene_mode            : 1;
1427         RK_U32 reserved2             : 2;
1428     } subj_anti_blur_thd;
1429 
1430     /* 0x00002104 reg2113 */
1431     struct {
1432         RK_U32 blur_motion_thd           : 12;
1433         RK_U32 sao_ofst_thd_eo_luma      : 3;
1434         RK_U32 reserved                  : 1;
1435         RK_U32 sao_ofst_thd_bo_luma      : 3;
1436         RK_U32 reserved1                 : 1;
1437         RK_U32 sao_ofst_thd_eo_chroma    : 3;
1438         RK_U32 reserved2                 : 1;
1439         RK_U32 sao_ofst_thd_bo_chroma    : 3;
1440         RK_U32 reserved3                 : 5;
1441     } subj_anti_blur_sao;
1442 
1443     /* 0x00002108 reg2114 */
1444     struct {
1445         RK_U32 notmerge_ofst_dist_eo_wgt0    : 8;
1446         RK_U32 notmerge_ofst_dist_bo_wgt0    : 8;
1447         RK_U32 notmerge_ofst_dist_eo_wgt1    : 8;
1448         RK_U32 notmerge_ofst_dist_bo_wgt1    : 8;
1449     } subj_anti_blur_wgt0;
1450 
1451     /* 0x0000210c reg2115 */
1452     struct {
1453         RK_U32 notmerge_ofst_lambda_eo_wgt0     : 8;
1454         RK_U32 notmerge_ofst_lambda_bo_wgt0     : 8;
1455         RK_U32 notmerge_compare_dist_eo_wgt0    : 8;
1456         RK_U32 notmerge_compare_dist_bo_wgt0    : 8;
1457     } subj_anti_blur_wgt1;
1458 
1459     /* 0x00002110 reg2116 */
1460     struct {
1461         RK_U32 notmerge_compare_dist_eo_wgt1    : 8;
1462         RK_U32 notmerge_compare_dist_bo_wgt1    : 8;
1463         RK_U32 notmerge_compare_rate_eo_wgt0    : 8;
1464         RK_U32 notmerge_compare_rate_bo_wgt0    : 8;
1465     } subj_anti_blur_wgt2;
1466 
1467     /* 0x00002114 reg2117 */
1468     struct {
1469         RK_U32 sao_mode_compare_dist_eo_wgt0    : 8;
1470         RK_U32 sao_mode_compare_dist_bo_wgt0    : 8;
1471         RK_U32 merge_cost_dist_eo_wgt0          : 8;
1472         RK_U32 merge_cost_dist_bo_wgt0          : 8;
1473     } subj_anti_blur_wgt3;
1474 
1475     /* 0x00002118 reg2118 */
1476     struct {
1477         RK_U32 merge_cost_dist_eo_wgt1    : 8;
1478         RK_U32 merge_cost_dist_bo_wgt1    : 8;
1479         RK_U32 merge_cost_bit_eo_wgt0     : 8;
1480         RK_U32 merge_cost_bit_bo_wgt0     : 8;
1481     } subj_anti_blur_wgt4;
1482 
1483     /* 0x211c */
1484     RK_U32 reserved_2119;
1485 
1486     /* 0x00002120 reg2120 - 0x0000213c reg2127 */
1487     pre_cst_par preintra32_cst;
1488 
1489     /* 0x00002140 reg2128 - 0x0000215c reg2135 */
1490     pre_cst_par preintra16_cst;
1491 
1492     /* 0x00002160 reg2136 */
1493     struct {
1494         RK_U32 offset_thd                      : 4;
1495         RK_U32 offset_diff_thd                 : 4;
1496         RK_U32 weak_texture_offset_thd         : 3;
1497         RK_U32 weak_texture_offset_diff_thd    : 3;
1498         RK_U32 reserved                        : 18;
1499     } atr_thd_hevc;
1500 } H265eVepu511Sqi;
1501 
1502 /* class: scaling list  */
1503 /* 0x00002200 reg2176- 0x00002c9c reg2855*/
1504 typedef struct H265eVepu511SclCfg_t {
1505     /* 0x2200 - 0x2584 iq_scal_y8_intra_ac0 ~ iq_scal_list_dc1 only HEVC*/
1506     RK_U32 tu8_intra_y[16];
1507     RK_U32 tu8_intra_u[16];
1508     RK_U32 tu8_intra_v[16];
1509     RK_U32 tu8_inter_y[16];
1510     RK_U32 tu8_inter_u[16];
1511     RK_U32 tu8_inter_v[16];
1512     RK_U32 tu16_intra_y_ac[16];
1513     RK_U32 tu16_intra_u_ac[16];
1514     RK_U32 tu16_intra_v_ac[16];
1515     RK_U32 tu16_inter_y_ac[16];
1516     RK_U32 tu16_inter_u_ac[16];
1517     RK_U32 tu16_inter_v_ac[16];
1518     RK_U32 tu32_intra_y_ac[16];
1519     RK_U32 tu32_inter_y_ac[16];
1520 
1521     /* 0x2580 */
1522     struct {
1523         RK_U32 tu16_intra_y_dc  : 8;
1524         RK_U32 tu16_intra_u_dc  : 8;
1525         RK_U32 tu16_intra_v_dc  : 8;
1526         RK_U32 tu16_inter_y_dc  : 8;
1527     } tu_dc0;
1528 
1529     /* 0x2584 reg 2401*/
1530     struct {
1531         RK_U32 tu16_inter_u_dc  : 8;
1532         RK_U32 tu16_inter_v_dc  : 8;
1533         RK_U32 tu32_intra_y_dc  : 8;
1534         RK_U32 tu32_inter_y_dc  : 8;
1535     } tu_dc1;
1536 
1537     /* 0x2588 reg 2402 - 0x258c reg 2403*/
1538     RK_U32 reserved2402_2403[2];
1539 
1540     /* 0x2590 reg 2404 - 0x2c9c reg 2855*/
1541     RK_U32 q_y8_intra[32];
1542     RK_U32 q_u8_intra[32];
1543     RK_U32 q_v8_intra[32];
1544     RK_U32 q_y8_inter[32];
1545     RK_U32 q_u8_inter[32];
1546     RK_U32 q_v8_inter[32];
1547     RK_U32 q_y16_intra[32];
1548     RK_U32 q_u16_intra[32];
1549     RK_U32 q_v16_intra[32];
1550     RK_U32 q_y16_inter[32];
1551     RK_U32 q_u16_inter[32];
1552     RK_U32 q_v16_inter[32];
1553     RK_U32 q_y32_intra[32];
1554     RK_U32 q_y32_inter[32];
1555 
1556     RK_U32 q_list[4];
1557 } H265eVepu511SclCfg;
1558 
1559 typedef struct H265eV511RegSet_t {
1560     Vepu511ControlCfg         reg_ctl;
1561     H265eVepu511Frame         reg_frm;
1562     Vepu511RcRoi              reg_rc_roi;
1563     H265eVepu511Param         reg_param;
1564     H265eVepu511Sqi           reg_sqi;
1565     H265eVepu511SclCfg        reg_scl;
1566     Vepu511OsdRegs            reg_osd;
1567     Vepu511Dbg                reg_dbg;
1568 } H265eV511RegSet;
1569 
1570 typedef struct H265eV511StatusElem_t {
1571     RK_U32 hw_status;
1572     Vepu511Status st;
1573 } H265eV511StatusElem;
1574 
1575 #endif
1576