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