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