xref: /rockchip-linux_mpp/mpp/hal/rkenc/h265e/hal_h265e_vepu510_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /* SPDX-License-Identifier: Apache-2.0 */
2 /*
3  * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
4  */
5 
6 #ifndef __HAL_H265E_VEPU510_REG_H__
7 #define __HAL_H265E_VEPU510_REG_H__
8 
9 #include "rk_type.h"
10 #include "vepu510_common.h"
11 
12 typedef struct PreCstPar_t {
13     struct {
14         RK_U32 madi_thd0    : 7;
15         RK_U32 reserved     : 1;
16         RK_U32 madi_thd1    : 7;
17         RK_U32 reserved1    : 1;
18         RK_U32 madi_thd2    : 7;
19         RK_U32 reserved2    : 1;
20         RK_U32 madi_thd3    : 7;
21         RK_U32 reserved3    : 1;
22     } cst_madi_thd0;
23 
24     /* 0x000020c4 reg2097 */
25     struct {
26         RK_U32 madi_thd4    : 7;
27         RK_U32 reserved     : 1;
28         RK_U32 madi_thd5    : 7;
29         RK_U32 reserved1    : 1;
30         RK_U32 madi_thd6    : 7;
31         RK_U32 reserved2    : 1;
32         RK_U32 madi_thd7    : 7;
33         RK_U32 reserved3    : 1;
34     } cst_madi_thd1;
35 
36     /* 0x000020c8 reg2098 */
37     struct {
38         RK_U32 madi_thd8    : 7;
39         RK_U32 reserved     : 1;
40         RK_U32 madi_thd9    : 7;
41         RK_U32 reserved1    : 1;
42         RK_U32 madi_thd10   : 7;
43         RK_U32 reserved2    : 1;
44         RK_U32 madi_thd11   : 7;
45         RK_U32 reserved3    : 1;
46     } cst_madi_thd2;
47 
48     /* 0x000020cc reg2099 */
49     struct {
50         RK_U32 madi_thd12   : 7;
51         RK_U32 reserved     : 1;
52         RK_U32 madi_thd13   : 7;
53         RK_U32 reserved1    : 1;
54         RK_U32 mode_th      : 3;
55         RK_U32 reserved2    : 1;
56         RK_U32 qp_thd       : 6;
57         RK_U32 reserved3    : 6;
58     } cst_madi_thd3;
59 
60     /* 0x000020d0 reg2100 */
61     struct {
62         RK_U32 wgt0    : 8;
63         RK_U32 wgt1    : 8;
64         RK_U32 wgt2    : 8;
65         RK_U32 wgt3    : 8;
66     } cst_wgt0;
67 
68     /* 0x000020d4 reg2101 */
69     struct {
70         RK_U32 wgt4    : 8;
71         RK_U32 wgt5    : 8;
72         RK_U32 wgt6    : 8;
73         RK_U32 wgt7    : 8;
74     } cst_wgt1;
75 
76     /* 0x000020d8 reg2102 */
77     struct {
78         RK_U32 wgt8     : 8;
79         RK_U32 wgt9     : 8;
80         RK_U32 wgt10    : 8;
81         RK_U32 wgt11    : 8;
82     } cst_wgt2;
83 
84     /* 0x000020dc reg2103 */
85     struct {
86         RK_U32 wgt12            : 8;
87         RK_U32 wgt13            : 8;
88         RK_U32 wgt14            : 8;
89         RK_U32 lambda_mv_bit_0  : 3;
90         RK_U32 reserved         : 1;
91         RK_U32 lambda_mv_bit_1  : 3;
92         RK_U32 anti_strp_e      : 1;
93     } cst_wgt3;
94 } pre_cst_par;
95 
96 /* class: buffer/video syntax */
97 /* 0x00000270 reg156 - 0x000003f4 reg253*/
98 typedef struct H265eVepu510Frame_t {
99     Vepu510FrmCommon    common;
100 
101     /* 0x000003a0 reg232 */
102     struct {
103         RK_U32 ltm_col                        : 1;
104         RK_U32 ltm_idx0l0                     : 1;
105         RK_U32 chrm_spcl                      : 1;
106         RK_U32 cu_inter_e                     : 12;
107         RK_U32 reserved                       : 8;
108         RK_U32 ccwa_e                         : 1;
109         RK_U32 scl_lst_sel                    : 2;
110         RK_U32 lambda_qp_use_avg_cu16_flag    : 1;
111         RK_U32 yuvskip_calc_en                : 1;
112         RK_U32 atf_e                          : 1;
113         RK_U32 atr_e                          : 1;
114         RK_U32 reserved1                      : 2;
115     } rdo_cfg;
116 
117     /* 0x000003a4 reg233 */
118     struct {
119         RK_U32 rdo_mark_mode    : 9;
120         RK_U32 reserved         : 23;
121     } iprd_csts;
122 
123     /* 0x3a8 - 0x3ac */
124     RK_U32 reserved234_235[2];
125 
126     /* 0x000003b0 reg236 */
127     struct {
128         RK_U32 nal_unit_type    : 6;
129         RK_U32 reserved         : 26;
130     } synt_nal;
131 
132     /* 0x000003b4 reg237 */
133     struct {
134         RK_U32 smpl_adpt_ofst_e    : 1;
135         RK_U32 num_st_ref_pic      : 7;
136         RK_U32 lt_ref_pic_prsnt    : 1;
137         RK_U32 num_lt_ref_pic      : 6;
138         RK_U32 tmpl_mvp_e          : 1;
139         RK_U32 log2_max_poc_lsb    : 4;
140         RK_U32 strg_intra_smth     : 1;
141         RK_U32 reserved            : 11;
142     } synt_sps;
143 
144     /* 0x000003b8 reg238 */
145     struct {
146         RK_U32 dpdnt_sli_seg_en       : 1;
147         RK_U32 out_flg_prsnt_flg      : 1;
148         RK_U32 num_extr_sli_hdr       : 3;
149         RK_U32 sgn_dat_hid_en         : 1;
150         RK_U32 cbc_init_prsnt_flg     : 1;
151         RK_U32 pic_init_qp            : 6;
152         RK_U32 cu_qp_dlt_en           : 1;
153         RK_U32 chrm_qp_ofst_prsn      : 1;
154         RK_U32 lp_fltr_acrs_sli       : 1;
155         RK_U32 dblk_fltr_ovrd_en      : 1;
156         RK_U32 lst_mdfy_prsnt_flg     : 1;
157         RK_U32 sli_seg_hdr_extn       : 1;
158         RK_U32 cu_qp_dlt_depth        : 2;
159         RK_U32 lpf_fltr_acrs_til      : 1;
160         RK_U32 csip_flag              : 1;
161         RK_U32 reserved               : 9;
162     } synt_pps;
163 
164     /* 0x000003bc reg239 */
165     struct {
166         RK_U32 cbc_init_flg           : 1;
167         RK_U32 mvd_l1_zero_flg        : 1;
168         RK_U32 reserved               : 3;
169         RK_U32 ref_pic_lst_mdf_l0     : 1;
170         RK_U32 num_refidx_l1_act      : 2;
171         RK_U32 num_refidx_l0_act      : 2;
172         RK_U32 num_refidx_act_ovrd    : 1;
173         RK_U32 sli_sao_chrm_flg       : 1;
174         RK_U32 sli_sao_luma_flg       : 1;
175         RK_U32 sli_tmprl_mvp_e        : 1;
176         RK_U32 pic_out_flg            : 1;
177         RK_U32 sli_type               : 2;
178         RK_U32 sli_rsrv_flg           : 7;
179         RK_U32 dpdnt_sli_seg_flg      : 1;
180         RK_U32 sli_pps_id             : 6;
181         RK_U32 no_out_pri_pic         : 1;
182     } synt_sli0;
183 
184     /* 0x000003c0 reg240 */
185     struct {
186         RK_U32 sp_tc_ofst_div2         : 4;
187         RK_U32 sp_beta_ofst_div2       : 4;
188         RK_U32 sli_lp_fltr_acrs_sli    : 1;
189         RK_U32 sp_dblk_fltr_dis        : 1;
190         RK_U32 dblk_fltr_ovrd_flg      : 1;
191         RK_U32 sli_cb_qp_ofst          : 5;
192         RK_U32 sli_qp                  : 6;
193         RK_U32 max_mrg_cnd             : 2;
194         RK_U32 reserved                : 1;
195         RK_U32 col_ref_idx             : 1;
196         RK_U32 col_frm_l0_flg          : 1;
197         RK_U32 lst_entry_l0            : 4;
198         RK_U32 reserved1               : 1;
199     } synt_sli1;
200 
201     /* 0x000003c4 reg241 */
202     struct {
203         RK_U32 sli_poc_lsb        : 16;
204         RK_U32 sli_hdr_ext_len    : 9;
205         RK_U32 reserved           : 7;
206     } synt_sli2;
207 
208     /* 0x000003c8 reg242 */
209     struct {
210         RK_U32 st_ref_pic_flg    : 1;
211         RK_U32 poc_lsb_lt0       : 16;
212         RK_U32 lt_idx_sps        : 5;
213         RK_U32 num_lt_pic        : 2;
214         RK_U32 st_ref_pic_idx    : 6;
215         RK_U32 num_lt_sps        : 2;
216     } synt_refm0;
217 
218     /* 0x000003cc reg243 */
219     struct {
220         RK_U32 used_by_s0_flg        : 4;
221         RK_U32 num_pos_pic           : 1;
222         RK_U32 num_negative_pics     : 5;
223         RK_U32 dlt_poc_msb_cycl0     : 16;
224         RK_U32 dlt_poc_msb_prsnt0    : 1;
225         RK_U32 dlt_poc_msb_prsnt1    : 1;
226         RK_U32 dlt_poc_msb_prsnt2    : 1;
227         RK_U32 used_by_lt_flg0       : 1;
228         RK_U32 used_by_lt_flg1       : 1;
229         RK_U32 used_by_lt_flg2       : 1;
230     } synt_refm1;
231 
232     /* 0x000003d0 reg244 */
233     struct {
234         RK_U32 dlt_poc_s0_m10    : 16;
235         RK_U32 dlt_poc_s0_m11    : 16;
236     } synt_refm2;
237 
238     /* 0x000003d4 reg245 */
239     struct {
240         RK_U32 dlt_poc_s0_m12    : 16;
241         RK_U32 dlt_poc_s0_m13    : 16;
242     } synt_refm3;
243 
244     /* 0x000003d8 reg246 */
245     struct {
246         RK_U32 poc_lsb_lt1    : 16;
247         RK_U32 poc_lsb_lt2    : 16;
248     } synt_long_refm0;
249 
250     /* 0x000003dc reg247 */
251     struct {
252         RK_U32 dlt_poc_msb_cycl1    : 16;
253         RK_U32 dlt_poc_msb_cycl2    : 16;
254     } synt_long_refm1;
255 
256     struct {
257         RK_U32 sao_lambda_multi    : 3;
258         RK_U32 reserved            : 29;
259     } sao_cfg;
260 
261     /* 0x3e4 - 0x3ec */
262     RK_U32 reserved249_251[3];
263 
264     /* 0x000003f0 reg252 */
265     struct {
266         RK_U32 tile_w_m1    : 9;
267         RK_U32 reserved     : 7;
268         RK_U32 tile_h_m1    : 9;
269         RK_U32 reserved1    : 6;
270         RK_U32 tile_en      : 1;
271     } tile_cfg;
272 
273     /* 0x000003f4 reg253 */
274     struct {
275         RK_U32 tile_x       : 9;
276         RK_U32 reserved     : 7;
277         RK_U32 tile_y       : 9;
278         RK_U32 reserved1    : 7;
279     } tile_pos_hevc;
280 } H265eVepu510Frame;
281 
282 /* class: param */
283 /* 0x00001700 reg1472 - 0x000019cc reg1651 */
284 typedef struct H265eVepu510Param_t {
285     /* 0x00001700 reg1472 - 0x0000172c reg1483*/
286     RK_U32 reserved_1472_1483[12];
287 
288     /* 0x00001730 reg1484 */
289     struct {
290         RK_U32    qnt_f_bias_i  : 10;
291         RK_U32    qnt_f_bias_p  : 10;
292         RK_U32    reserve       : 12;
293     } qnt_bias_comb;
294 
295     /* 0x00001734 reg1485 - 0x0000175c reg1495*/
296     RK_U32 reserved1485_1495[11];
297 
298     /* 0x00001760 reg1496 */
299     struct {
300         RK_U32 cime_pmv_num      : 1;
301         RK_U32 cime_fuse         : 1;
302         RK_U32 itp_mode          : 1;
303         RK_U32 reserved          : 1;
304         RK_U32 move_lambda       : 4;
305         RK_U32 rime_lvl_mrg      : 2;
306         RK_U32 rime_prelvl_en    : 2;
307         RK_U32 rime_prersu_en    : 3;
308         RK_U32 reserved1         : 17;
309     } me_sqi_comb;
310 
311     /* 0x00001764 reg1497 */
312     struct {
313         RK_U32 cime_mvd_th0    : 9;
314         RK_U32 reserved        : 1;
315         RK_U32 cime_mvd_th1    : 9;
316         RK_U32 reserved1       : 1;
317         RK_U32 cime_mvd_th2    : 9;
318         RK_U32 reserved2       : 3;
319     }  cime_mvd_th_comb;
320 
321     /* 0x00001768 reg1498 */
322     struct {
323         RK_U32 cime_madp_th    : 12;
324         RK_U32 reserved        : 20;
325     } cime_madp_th_comb;
326 
327     /* 0x0000176c reg1499 */
328     struct {
329         RK_U32 cime_multi0    : 8;
330         RK_U32 cime_multi1    : 8;
331         RK_U32 cime_multi2    : 8;
332         RK_U32 cime_multi3    : 8;
333     } cime_multi_comb;
334 
335     /* 0x00001770 reg1500 */
336     struct {
337         RK_U32 rime_mvd_th0    : 3;
338         RK_U32 reserved        : 1;
339         RK_U32 rime_mvd_th1    : 3;
340         RK_U32 reserved1       : 9;
341         RK_U32 fme_madp_th     : 12;
342         RK_U32 reserved2       : 4;
343     } rime_mvd_th_comb;
344 
345     /* 0x00001774 reg1501 */
346     struct {
347         RK_U32 rime_madp_th0    : 12;
348         RK_U32 reserved         : 4;
349         RK_U32 rime_madp_th1    : 12;
350         RK_U32 reserved1        : 4;
351     } rime_madp_th_comb;
352 
353     /* 0x00001778 reg1502 */
354     struct {
355         RK_U32 rime_multi0    : 10;
356         RK_U32 rime_multi1    : 10;
357         RK_U32 rime_multi2    : 10;
358         RK_U32 reserved       : 2;
359     } rime_multi_comb;
360 
361     /* 0x0000177c reg1503 */
362     struct {
363         RK_U32 cmv_th0     : 8;
364         RK_U32 cmv_th1     : 8;
365         RK_U32 cmv_th2     : 8;
366         RK_U32 reserved    : 8;
367     } cmv_st_th_comb;
368 
369     /* 0x1780 - 0x17fc */
370     RK_U32 reserved1504_1535[32];
371 
372     /* 0x00001800 reg1536 - 0x000018cc reg1587*/
373     RK_U32 pprd_lamb_satd_0_51[52];
374 
375     /* 0x000018d0 reg1588 */
376     struct {
377         RK_U32 lambda_satd_offset    : 5;
378         RK_U32 reserved              : 27;
379     } iprd_lamb_satd_ofst;
380 
381     /* 0x18d4 - 0x18fc */
382     RK_U32 reserved1589_1599[11];
383 
384     /* 0x00001900 reg1600 - 0x000019cc reg1651*/
385     RK_U32 rdo_wgta_qp_grpa_0_51[52];
386 } H265eVepu510Param;
387 
388 /* class: rdo/q_i */
389 /* 0x00002000 reg2048 - 0x000020fc reg2111 */
390 typedef struct H265eVepu510SqiCfg_t {
391     /* 0x00002000 reg2048 */
392     struct {
393         RK_U32 subj_opt_en            : 1;
394         RK_U32 subj_opt_strength      : 3;
395         RK_U32 aq_subj_en             : 1;
396         RK_U32 aq_subj_strength       : 3;
397         RK_U32 reserved               : 4;
398         RK_U32 thre_sum_grdn_point    : 20;
399     } subj_opt_cfg;
400 
401     /* 0x00002004 reg2049 */
402     struct {
403         RK_U32 common_thre_num_grdn_point_dep0    : 8;
404         RK_U32 common_thre_num_grdn_point_dep1    : 8;
405         RK_U32 common_thre_num_grdn_point_dep2    : 8;
406         RK_U32 reserved                           : 8;
407     } subj_opt_dpth_thd;
408 
409     /* 0x00002008 reg2050 */
410     struct {
411         RK_U32 common_rdo_cu_intra_r_coef_dep0    : 8;
412         RK_U32 common_rdo_cu_intra_r_coef_dep1    : 8;
413         RK_U32 reserved                           : 16;
414     } subj_opt_inrar_coef;
415 
416     /* 0x200c */
417     RK_U32 reserved_2051;
418 
419     /* 0x00002010 reg2052 */
420     struct {
421         RK_U32 anti_smear_en                  : 1;
422         RK_U32 frm_static                     : 1;
423         RK_U32 smear_stor_en                  : 1;
424         RK_U32 smear_load_en                  : 1;
425         RK_U32 smear_strength                 : 3;
426         RK_U32 reserved                       : 1;
427         RK_U32 thre_mv_inconfor_cime          : 4;
428         RK_U32 thre_mv_confor_cime            : 2;
429         RK_U32 thre_mv_confor_cime_gmv        : 2;
430         RK_U32 thre_mv_inconfor_cime_gmv      : 4;
431         RK_U32 thre_num_mv_confor_cime        : 2;
432         RK_U32 thre_num_mv_confor_cime_gmv    : 2;
433         RK_U32 reserved1                      : 8;
434     } smear_opt_cfg0;
435 
436     /* 0x00002014 reg2053 */
437     struct {
438         RK_U32 dist0_frm_avg               : 14;
439         RK_U32 thre_dsp_static             : 5;
440         RK_U32 thre_dsp_mov                : 5;
441         RK_U32 thre_dist_mv_confor_cime    : 7;
442         RK_U32 reserved                    : 1;
443     } smear_opt_cfg1;
444 
445     /* 0x00002018 reg2054 */
446     struct {
447         RK_U32 thre_madp_stc_dep0    : 4;
448         RK_U32 thre_madp_stc_dep1    : 4;
449         RK_U32 thre_madp_stc_dep2    : 4;
450         RK_U32 thre_madp_mov_dep0    : 6;
451         RK_U32 thre_madp_mov_dep1    : 6;
452         RK_U32 thre_madp_mov_dep2    : 6;
453         RK_U32 reserved              : 2;
454     } smear_madp_thd;
455 
456     /* 0x0000201c reg2055 */
457     struct {
458         RK_U32 thre_num_pt_stc_dep0    : 6;
459         RK_U32 thre_num_pt_stc_dep1    : 4;
460         RK_U32 thre_num_pt_stc_dep2    : 2;
461         RK_U32 reserved                : 4;
462         RK_U32 thre_num_pt_mov_dep0    : 6;
463         RK_U32 thre_num_pt_mov_dep1    : 4;
464         RK_U32 thre_num_pt_mov_dep2    : 2;
465         RK_U32 reserved1               : 4;
466     } smear_stat_thd;
467 
468     /* 0x00002020 reg2056 */
469     struct {
470         RK_U32 thre_ratio_dist_mv_confor_cime_gmv0      : 5;
471         RK_U32 reserved                                 : 3;
472         RK_U32 thre_ratio_dist_mv_confor_cime_gmv1      : 5;
473         RK_U32 reserved1                                : 3;
474         RK_U32 thre_ratio_dist_mv_inconfor_cime_gmv0    : 6;
475         RK_U32 reserved2                                : 2;
476         RK_U32 thre_ratio_dist_mv_inconfor_cime_gmv1    : 6;
477         RK_U32 reserved3                                : 2;
478     } smear_bmv_dist_thd0;
479 
480     /* 0x00002024 reg2057 */
481     struct {
482         RK_U32 thre_ratio_dist_mv_inconfor_cime_gmv2    : 6;
483         RK_U32 reserved                                 : 2;
484         RK_U32 thre_ratio_dist_mv_inconfor_cime_gmv3    : 6;
485         RK_U32 reserved1                                : 2;
486         RK_U32 thre_ratio_dist_mv_inconfor_cime_gmv4    : 6;
487         RK_U32 reserved2                                : 10;
488     } smear_bmv_dist_thd1;
489 
490     /* 0x00002028 reg2058 */
491     struct {
492         RK_U32 thre_min_num_confor_csu0_bndry_cime_gmv      : 2;
493         RK_U32 thre_max_num_confor_csu0_bndry_cime_gmv      : 2;
494         RK_U32 thre_min_num_inconfor_csu0_bndry_cime_gmv    : 2;
495         RK_U32 thre_max_num_inconfor_csu0_bndry_cime_gmv    : 2;
496         RK_U32 thre_split_dep0                              : 2;
497         RK_U32 thre_zero_srgn                               : 5;
498         RK_U32 reserved                                     : 1;
499         RK_U32 madi_thre_dep0                               : 8;
500         RK_U32 madi_thre_dep1                               : 8;
501     } smear_min_bndry_gmv;
502 
503     /* 0x0000202c reg2059 */
504     struct {
505         RK_U32 thre_madp_stc_cover0    : 6;
506         RK_U32 thre_madp_stc_cover1    : 6;
507         RK_U32 thre_madp_mov_cover0    : 5;
508         RK_U32 thre_madp_mov_cover1    : 5;
509         RK_U32 smear_qp_strength       : 4;
510         RK_U32 smear_thre_qp           : 6;
511     } smear_madp_cov_thd;
512 
513     /* 0x00002030 reg2060 */
514     struct {
515         RK_U32 skin_en                        : 1;
516         RK_U32 skin_strength                  : 3;
517         RK_U32 thre_uvsqr16_skin              : 8;
518         RK_U32 skin_thre_cst_best_mad         : 10;
519         RK_U32 skin_thre_cst_best_grdn_blk    : 7;
520         RK_U32 reserved                       : 1;
521         RK_U32 frame_skin_ratio               : 2;
522     } skin_opt_cfg;
523 
524     /* 0x00002034 reg2061 */
525     struct {
526         RK_U32 thre_sum_mad_intra         : 2;
527         RK_U32 thre_sum_grdn_blk_intra    : 2;
528         RK_U32 vld_thre_skin_v            : 3;
529         RK_U32 reserved                   : 1;
530         RK_U32 thre_min_skin_u            : 8;
531         RK_U32 thre_max_skin_u            : 8;
532         RK_U32 thre_min_skin_v            : 8;
533     } skin_chrm_thd;
534 
535     /* 0x00002038 reg2062 */
536     struct {
537         RK_U32 block_en                        : 1;
538         RK_U32 reserved                        : 1;
539         RK_U32 block_thre_cst_best_mad         : 10;
540         RK_U32 reserved1                       : 4;
541         RK_U32 block_thre_cst_best_grdn_blk    : 6;
542         RK_U32 reserved2                       : 2;
543         RK_U32 thre_num_grdnt_point_cmplx      : 2;
544         RK_U32 block_delta_qp_flag             : 2;
545         RK_U32 reserved3                       : 4;
546     } block_opt_cfg;
547 
548     /* 0x0000203c reg2063 */
549     struct {
550         RK_U32 cmplx_thre_cst_best_mad_dep0    : 13;
551         RK_U32 reserved                        : 3;
552         RK_U32 cmplx_thre_cst_best_mad_dep1    : 13;
553         RK_U32 reserved1                       : 2;
554         RK_U32 cmplx_en                        : 1;
555     } cmplx_opt_cfg;
556 
557     /* 0x00002040 reg2064 */
558     struct {
559         RK_U32 cmplx_thre_cst_best_mad_dep2         : 13;
560         RK_U32 reserved                             : 3;
561         RK_U32 cmplx_thre_cst_best_grdn_blk_dep0    : 11;
562         RK_U32 reserved1                            : 5;
563     } cmplx_bst_mad_thd;
564 
565     /* 0x00002044 reg2065 */
566     struct {
567         RK_U32 cmplx_thre_cst_best_grdn_blk_dep1    : 11;
568         RK_U32 reserved                             : 5;
569         RK_U32 cmplx_thre_cst_best_grdn_blk_dep2    : 11;
570         RK_U32 reserved1                            : 5;
571     } cmplx_bst_grdn_thd;
572 
573     /* 0x00002048 reg2066 */
574     struct {
575         RK_U32 line_en                                 : 1;
576         RK_U32 line_thre_min_cst_best_grdn_blk_dep0    : 5;
577         RK_U32 line_thre_min_cst_best_grdn_blk_dep1    : 5;
578         RK_U32 line_thre_min_cst_best_grdn_blk_dep2    : 5;
579         RK_U32 line_thre_ratio_best_grdn_blk_dep0      : 4;
580         RK_U32 line_thre_ratio_best_grdn_blk_dep1      : 4;
581         RK_U32 reserved                                : 8;
582     } line_opt_cfg;
583 
584     /* 0x0000204c reg2067 */
585     struct {
586         RK_U32 line_thre_max_cst_best_grdn_blk_dep0    : 7;
587         RK_U32 reserved                                : 1;
588         RK_U32 line_thre_max_cst_best_grdn_blk_dep1    : 7;
589         RK_U32 reserved1                               : 1;
590         RK_U32 line_thre_max_cst_best_grdn_blk_dep2    : 7;
591         RK_U32 reserved2                               : 9;
592     } line_cst_bst_grdn;
593 
594     /* 0x00002050 reg2068 */
595     struct {
596         RK_U32 line_thre_qp               : 6;
597         RK_U32 block_strength             : 3;
598         RK_U32 block_thre_qp              : 6;
599         RK_U32 cmplx_strength             : 3;
600         RK_U32 cmplx_thre_qp              : 6;
601         RK_U32 cmplx_thre_max_grdn_blk    : 6;
602         RK_U32 reserved                   : 2;
603     } subj_opt_dqp0;
604 
605     /* 0x00002054 reg2069 */
606     struct {
607         RK_U32 skin_thre_qp                      : 6;
608         RK_U32 reserved                          : 2;
609         RK_U32 bndry_rdo_cu_intra_r_coef_dep0    : 8;
610         RK_U32 bndry_rdo_cu_intra_r_coef_dep1    : 8;
611         RK_U32 reserved1                         : 8;
612     } subj_opt_dqp1;
613 
614     /* 0x2058 - 0x205c */
615     RK_U32 reserved2070_2071[2];
616 
617     /* 0x00002060 reg2072 - 0x0000206c reg2075 */
618     rdo_skip_par rdo_b32_skip;
619 
620     /* 0x00002070 reg2076 - 0x0000207c reg2079*/
621     rdo_skip_par rdo_b16_skip;
622 
623     /* 0x00002080 reg2080 - 0x00002088 reg2082 */
624     rdo_noskip_par rdo_b32_inter;
625 
626     /* 0x0000208c reg2083 - 0x00002094 reg2085 */
627     rdo_noskip_par rdo_b16_inter;
628 
629     /* 0x00002098 reg2086 - 0x000020a4 reg2088 */
630     rdo_noskip_par rdo_b32_intra;
631 
632     /* 0x000020a8 reg2089 - 0x000020ac reg2091 */
633     rdo_noskip_par rdo_b16_intra;
634 
635     /* 0x000020b0 reg2092 */
636     struct {
637         RK_U32 blur_low_madi_thd     : 7;
638         RK_U32 reserved              : 1;
639         RK_U32 blur_high_madi_thd    : 7;
640         RK_U32 reserved1             : 1;
641         RK_U32 blur_low_cnt_thd      : 4;
642         RK_U32 blur_hight_cnt_thd    : 4;
643         RK_U32 blur_sum_cnt_thd      : 4;
644         RK_U32 anti_blur_en          : 1;
645         RK_U32 reserved2             : 3;
646     } subj_anti_blur_thd;
647 
648     /* 0x000020b4 reg2093 */
649     struct {
650         RK_U32 blur_motion_thd           : 12;
651         RK_U32 sao_ofst_thd_eo_luma      : 3;
652         RK_U32 reserved                  : 1;
653         RK_U32 sao_ofst_thd_bo_luma      : 3;
654         RK_U32 reserved1                 : 1;
655         RK_U32 sao_ofst_thd_eo_chroma    : 3;
656         RK_U32 reserved2                 : 1;
657         RK_U32 sao_ofst_thd_bo_chroma    : 3;
658         RK_U32 reserved3                 : 5;
659     } subj_anti_blur_sao;
660 
661     /* 0x000020b8 reg2094 - 0x000020bc reg2095*/
662     RK_U32 reserved_2094_2095[2];
663 
664     /* 0x000020c0 reg2096 - 0x000020dc reg2103 */
665     pre_cst_par preintra32_cst;
666 
667     /* 0x000020e0 reg2104 - 0x000020fc reg2111 */
668     pre_cst_par preintra16_cst;
669 
670     /* 0x00002100 reg2112 */
671     struct {
672         RK_U32 base_thre_rough_mad32_intra           : 4;
673         RK_U32 delta0_thre_rough_mad32_intra         : 4;
674         RK_U32 delta1_thre_rough_mad32_intra         : 6;
675         RK_U32 delta2_thre_rough_mad32_intra         : 6;
676         RK_U32 delta3_thre_rough_mad32_intra         : 7;
677         RK_U32 delta4_thre_rough_mad32_intra_low5    : 5;
678     } cudecis_thd0;
679 
680     /* 0x00002104 reg2113 */
681     struct {
682         RK_U32 delta4_thre_rough_mad32_intra_high2    : 2;
683         RK_U32 delta5_thre_rough_mad32_intra          : 7;
684         RK_U32 delta6_thre_rough_mad32_intra          : 7;
685         RK_U32 base_thre_fine_mad32_intra             : 4;
686         RK_U32 delta0_thre_fine_mad32_intra           : 4;
687         RK_U32 delta1_thre_fine_mad32_intra           : 5;
688         RK_U32 delta2_thre_fine_mad32_intra_low3      : 3;
689     } cudecis_thd1;
690 
691     /* 0x00002108 reg2114 */
692     struct {
693         RK_U32 delta2_thre_fine_mad32_intra_high2    : 2;
694         RK_U32 delta3_thre_fine_mad32_intra          : 5;
695         RK_U32 delta4_thre_fine_mad32_intra          : 5;
696         RK_U32 delta5_thre_fine_mad32_intra          : 6;
697         RK_U32 delta6_thre_fine_mad32_intra          : 6;
698         RK_U32 base_thre_str_edge_mad32_intra        : 3;
699         RK_U32 delta0_thre_str_edge_mad32_intra      : 2;
700         RK_U32 delta1_thre_str_edge_mad32_intra      : 3;
701     } cudecis_thd2;
702 
703     /* 0x0000210c reg2115 */
704     struct {
705         RK_U32 delta2_thre_str_edge_mad32_intra      : 3;
706         RK_U32 delta3_thre_str_edge_mad32_intra      : 4;
707         RK_U32 base_thre_str_edge_bgrad32_intra      : 5;
708         RK_U32 delta0_thre_str_edge_bgrad32_intra    : 2;
709         RK_U32 delta1_thre_str_edge_bgrad32_intra    : 3;
710         RK_U32 delta2_thre_str_edge_bgrad32_intra    : 4;
711         RK_U32 delta3_thre_str_edge_bgrad32_intra    : 5;
712         RK_U32 base_thre_mad16_intra                 : 3;
713         RK_U32 delta0_thre_mad16_intra               : 3;
714     } cudecis_thd3;
715 
716     /* 0x00002110 reg2116 */
717     struct {
718         RK_U32 delta1_thre_mad16_intra          : 3;
719         RK_U32 delta2_thre_mad16_intra          : 4;
720         RK_U32 delta3_thre_mad16_intra          : 5;
721         RK_U32 delta4_thre_mad16_intra          : 5;
722         RK_U32 delta5_thre_mad16_intra          : 6;
723         RK_U32 delta6_thre_mad16_intra          : 6;
724         RK_U32 delta0_thre_mad16_ratio_intra    : 3;
725     } cudecis_thd4;
726 
727     /* 0x00002114 reg2117 */
728     struct {
729         RK_U32 delta1_thre_mad16_ratio_intra           : 3;
730         RK_U32 delta2_thre_mad16_ratio_intra           : 3;
731         RK_U32 delta3_thre_mad16_ratio_intra           : 3;
732         RK_U32 delta4_thre_mad16_ratio_intra           : 3;
733         RK_U32 delta5_thre_mad16_ratio_intra           : 3;
734         RK_U32 delta6_thre_mad16_ratio_intra           : 3;
735         RK_U32 delta7_thre_mad16_ratio_intra           : 3;
736         RK_U32 delta0_thre_rough_bgrad32_intra         : 3;
737         RK_U32 delta1_thre_rough_bgrad32_intra         : 4;
738         RK_U32 delta2_thre_rough_bgrad32_intra_low4    : 4;
739     } cudecis_thd5;
740 
741     /* 0x00002118 reg2118 */
742     struct {
743         RK_U32 delta2_thre_rough_bgrad32_intra_high2    : 2;
744         RK_U32 delta3_thre_rough_bgrad32_intra          : 10;
745         RK_U32 delta4_thre_rough_bgrad32_intra          : 10;
746         RK_U32 delta5_thre_rough_bgrad32_intra_low10    : 10;
747     } cudecis_thd6;
748 
749     /* 0x0000211c reg2119 */
750     struct {
751         RK_U32 delta5_thre_rough_bgrad32_intra_high1    : 1;
752         RK_U32 delta6_thre_rough_bgrad32_intra          : 12;
753         RK_U32 delta7_thre_rough_bgrad32_intra          : 13;
754         RK_U32 delta0_thre_bgrad16_ratio_intra          : 4;
755         RK_U32 delta1_thre_bgrad16_ratio_intra_low2     : 2;
756     } cudecis_thd7;
757 
758     /* 0x00002120 reg2120 */
759     struct {
760         RK_U32 delta1_thre_bgrad16_ratio_intra_high2    : 2;
761         RK_U32 delta2_thre_bgrad16_ratio_intra          : 4;
762         RK_U32 delta3_thre_bgrad16_ratio_intra          : 4;
763         RK_U32 delta4_thre_bgrad16_ratio_intra          : 4;
764         RK_U32 delta5_thre_bgrad16_ratio_intra          : 4;
765         RK_U32 delta6_thre_bgrad16_ratio_intra          : 4;
766         RK_U32 delta7_thre_bgrad16_ratio_intra          : 4;
767         RK_U32 delta0_thre_fme_ratio_inter              : 3;
768         RK_U32 delta1_thre_fme_ratio_inter              : 3;
769     } cudecis_thdt8;
770 
771     /* 0x00002124 reg2121 */
772     struct {
773         RK_U32 delta2_thre_fme_ratio_inter    : 3;
774         RK_U32 delta3_thre_fme_ratio_inter    : 3;
775         RK_U32 delta4_thre_fme_ratio_inter    : 3;
776         RK_U32 delta5_thre_fme_ratio_inter    : 3;
777         RK_U32 delta6_thre_fme_ratio_inter    : 3;
778         RK_U32 delta7_thre_fme_ratio_inter    : 3;
779         RK_U32 base_thre_fme32_inter          : 3;
780         RK_U32 delta0_thre_fme32_inter        : 3;
781         RK_U32 delta1_thre_fme32_inter        : 4;
782         RK_U32 delta2_thre_fme32_inter        : 4;
783     } cudecis_thd9;
784 
785     /* 0x00002128 reg2122 */
786     struct {
787         RK_U32 delta3_thre_fme32_inter    : 5;
788         RK_U32 delta4_thre_fme32_inter    : 6;
789         RK_U32 delta5_thre_fme32_inter    : 7;
790         RK_U32 delta6_thre_fme32_inter    : 8;
791         RK_U32 thre_cme32_inter           : 6;
792     } cudecis_thd10;
793 
794     /* 0x0000212c reg2123 */
795     struct {
796         RK_U32 delta0_thre_mad_fme_ratio_inter    : 4;
797         RK_U32 delta1_thre_mad_fme_ratio_inter    : 4;
798         RK_U32 delta2_thre_mad_fme_ratio_inter    : 4;
799         RK_U32 delta3_thre_mad_fme_ratio_inter    : 4;
800         RK_U32 delta4_thre_mad_fme_ratio_inter    : 4;
801         RK_U32 delta5_thre_mad_fme_ratio_inter    : 4;
802         RK_U32 delta6_thre_mad_fme_ratio_inter    : 4;
803         RK_U32 delta7_thre_mad_fme_ratio_inter    : 4;
804     } cudecis_thd11;
805 } H265eVepu510Sqi;
806 
807 typedef struct H265eV510RegSet_t {
808     Vepu510ControlCfg         reg_ctl;
809     H265eVepu510Frame         reg_frm;
810     Vepu510RcRoi              reg_rc_roi;
811     H265eVepu510Param         reg_param;
812     H265eVepu510Sqi           reg_sqi;
813     Vepu510SclCfg             reg_scl;
814     Vepu510Dbg                reg_dbg;
815 } H265eV510RegSet;
816 
817 typedef struct H265eV510StatusElem_t {
818     RK_U32 hw_status;
819     Vepu510Status st;
820 } H265eV510StatusElem;
821 
822 #endif
823