1 /* SPDX-License-Identifier: Apache-2.0 */ 2 /* 3 * Copyright (c) 2025 Rockchip Electronics Co., Ltd. 4 */ 5 6 #ifndef __HAL_H264E_VEPU511_REG_H__ 7 #define __HAL_H264E_VEPU511_REG_H__ 8 9 #include "rk_type.h" 10 #include "vepu511_common.h" 11 12 /* class: buffer/video syntax */ 13 /* 0x00000270 reg156 - 0x00000538 reg334 */ 14 typedef struct H264eVepu511Frame_t { 15 /* 0x00000270 reg156 - 0x0000039c reg231 */ 16 Vepu511FrmCommon common; 17 18 /* 0x000003a0 reg232 */ 19 struct { 20 RK_U32 rect_size : 1; 21 RK_U32 reserved : 2; 22 RK_U32 vlc_lmt : 1; 23 RK_U32 reserved1 : 9; 24 RK_U32 ccwa_e : 1; 25 RK_U32 reserved2 : 1; 26 RK_U32 atr_e : 1; 27 RK_U32 reserved3 : 4; 28 RK_U32 scl_lst_sel : 2; 29 RK_U32 reserved4 : 6; 30 RK_U32 atf_e : 1; 31 RK_U32 atr_mult_sel_e : 1; 32 RK_U32 reserved5 : 2; 33 } rdo_cfg; 34 35 /* 0x000003a4 reg233 */ 36 struct { 37 RK_U32 rdo_mark_mode : 9; 38 RK_U32 reserved : 5; 39 RK_U32 p16_interp_num : 2; 40 RK_U32 p16t8_rdo_num : 2; 41 RK_U32 p16t4_rmd_num : 2; 42 RK_U32 p8_interp_num : 2; 43 RK_U32 p8t8_rdo_num : 2; 44 RK_U32 p8t4_rmd_num : 2; 45 RK_U32 iframe_i16_rdo_num : 2; 46 RK_U32 i8_rdo_num : 2; 47 RK_U32 iframe_i4_rdo_num : 2; 48 } rdo_mark_mode; 49 50 /* 0x3a8 - 0x3ac */ 51 RK_U32 reserved234_235[2]; 52 53 /* 0x000003b0 reg236 */ 54 struct { 55 RK_U32 nal_ref_idc : 2; 56 RK_U32 nal_unit_type : 5; 57 RK_U32 reserved : 25; 58 } synt_nal; 59 60 /* 0x000003b4 reg237 */ 61 struct { 62 RK_U32 max_fnum : 4; 63 RK_U32 drct_8x8 : 1; 64 RK_U32 mpoc_lm4 : 4; 65 RK_U32 poc_type : 2; 66 RK_U32 reserved : 21; 67 } synt_sps; 68 69 /* 0x000003b8 reg238 */ 70 struct { 71 RK_U32 etpy_mode : 1; 72 RK_U32 trns_8x8 : 1; 73 RK_U32 csip_flag : 1; 74 RK_U32 num_ref0_idx : 2; 75 RK_U32 num_ref1_idx : 2; 76 RK_U32 pic_init_qp : 6; 77 RK_U32 cb_ofst : 5; 78 RK_U32 cr_ofst : 5; 79 RK_U32 reserved : 1; 80 RK_U32 dbf_cp_flg : 1; 81 RK_U32 reserved1 : 7; 82 } synt_pps; 83 84 /* 0x000003bc reg239 */ 85 struct { 86 RK_U32 sli_type : 2; 87 RK_U32 pps_id : 8; 88 RK_U32 drct_smvp : 1; 89 RK_U32 num_ref_ovrd : 1; 90 RK_U32 cbc_init_idc : 2; 91 RK_U32 reserved : 2; 92 RK_U32 frm_num : 16; 93 } synt_sli0; 94 95 /* 0x000003c0 reg240 */ 96 struct { 97 RK_U32 idr_pid : 16; 98 RK_U32 poc_lsb : 16; 99 } synt_sli1; 100 101 /* 0x000003c4 reg241 */ 102 struct { 103 RK_U32 rodr_pic_idx : 2; 104 RK_U32 ref_list0_rodr : 1; 105 RK_U32 sli_beta_ofst : 4; 106 RK_U32 sli_alph_ofst : 4; 107 RK_U32 dis_dblk_idc : 2; 108 RK_U32 reserved : 3; 109 RK_U32 rodr_pic_num : 16; 110 } synt_sli2; 111 112 /* 0x000003c8 reg242 */ 113 struct { 114 RK_U32 nopp_flg : 1; 115 RK_U32 ltrf_flg : 1; 116 RK_U32 arpm_flg : 1; 117 RK_U32 mmco4_pre : 1; 118 RK_U32 mmco_type0 : 3; 119 RK_U32 mmco_parm0 : 16; 120 RK_U32 mmco_type1 : 3; 121 RK_U32 mmco_type2 : 3; 122 RK_U32 reserved : 3; 123 } synt_refm0; 124 125 /* 0x000003cc reg243 */ 126 struct { 127 RK_U32 mmco_parm1 : 16; 128 RK_U32 mmco_parm2 : 16; 129 } synt_refm1; 130 131 /* 0x000003d0 reg244 */ 132 struct { 133 RK_U32 long_term_frame_idx0 : 4; 134 RK_U32 long_term_frame_idx1 : 4; 135 RK_U32 long_term_frame_idx2 : 4; 136 RK_U32 reserved : 20; 137 } synt_refm2; 138 139 /* 0x000003d4 reg245 - 0x0x00000 reg251 */ 140 RK_U32 reserved245_251[7]; 141 142 /* 0x000003f0 reg252 */ 143 struct { 144 RK_U32 mv_v_lmt_thd : 14; 145 RK_U32 reserved : 1; 146 RK_U32 mv_v_lmt_en : 1; 147 RK_U32 reserved1 : 16; 148 } sli_cfg; 149 150 /* 0x000003f4 reg253 */ 151 RK_U32 reserved253; 152 153 /* 0x000003f8 reg254 */ 154 struct { 155 RK_U32 slice_sta_x : 9; 156 RK_U32 reserved1 : 7; 157 RK_U32 slice_sta_y : 10; 158 RK_U32 reserved2 : 5; 159 RK_U32 slice_enc_ena : 1; 160 } slice_enc_cfg0; 161 162 /* 0x000003fc reg255 */ 163 struct { 164 RK_U32 slice_end_x : 9; 165 RK_U32 reserved : 7; 166 RK_U32 slice_end_y : 10; 167 RK_U32 reserved1 : 6; 168 } slice_enc_cfg1; 169 170 /* 0x00000400 reg256 */ 171 struct { 172 RK_U32 reserved : 8; 173 RK_U32 bsbt_addr_jpeg : 24; 174 } adr_bsbt_jpeg; 175 176 /* 0x00000404 reg257 */ 177 struct { 178 RK_U32 reserved : 8; 179 RK_U32 bsbb_addr_jpeg : 24; 180 } adr_bsbb_jpeg; 181 182 /* 0x00000408 reg258 */ 183 RK_U32 adr_bsbs_jpeg; 184 185 /* 0x0000040c reg259 */ 186 struct { 187 RK_U32 bsadr_msk_jpeg : 4; 188 RK_U32 reserved : 4; 189 RK_U32 bsbr_addr_jpeg : 24; 190 } adr_bsbr_jpeg; 191 192 /* 0x00000410 reg260 */ 193 struct { 194 RK_U32 reserved : 4; 195 RK_U32 adr_vsy_b_jpeg : 28; 196 } adr_vsy_b_jpeg; 197 198 /* 0x00000414 reg261 */ 199 struct { 200 RK_U32 reserved : 4; 201 RK_U32 adr_vsc_b_jpeg : 28; 202 } adr_vsc_b_jpeg; 203 204 /* 0x00000418 reg262 */ 205 struct { 206 RK_U32 reserved : 4; 207 RK_U32 adr_vsy_t_jpeg : 28; 208 } adr_vsy_t_jpeg; 209 210 /* 0x0000041c reg263 */ 211 struct { 212 RK_U32 reserved : 4; 213 RK_U32 adr_vsc_t_jpeg : 28; 214 } adr_vsc_t_jpeg; 215 216 /* 0x00000420 reg264 */ 217 RK_U32 adr_src0_jpeg; 218 219 /* 0x00000424 reg265 */ 220 RK_U32 adr_src1_jpeg; 221 222 /* 0x00000428 reg266 */ 223 RK_U32 adr_src2_jpeg; 224 225 /* 0x0000042c reg267 */ 226 RK_U32 bsp_size_jpeg; 227 228 /* 0x430 - 0x43c */ 229 RK_U32 reserved268_271[4]; 230 231 /* 0x00000440 reg272 */ 232 struct { 233 RK_U32 pic_wd8_m1 : 11; 234 RK_U32 reserved : 1; 235 RK_U32 pp0_vnum_m1 : 4; 236 RK_U32 pic_hd8_m1 : 11; 237 RK_U32 reserved1 : 1; 238 RK_U32 pp0_jnum_m1 : 4; 239 } enc_rsl_jpeg; 240 241 /* 0x00000444 reg273 */ 242 struct { 243 RK_U32 pic_wfill_jpeg : 6; 244 RK_U32 reserved : 10; 245 RK_U32 pic_hfill_jpeg : 6; 246 RK_U32 reserved1 : 10; 247 } src_fill_jpeg; 248 249 /* 0x00000448 reg274 */ 250 struct { 251 RK_U32 alpha_swap_jpeg : 1; 252 RK_U32 rbuv_swap_jpeg : 1; 253 RK_U32 src_cfmt_jpeg : 4; 254 RK_U32 reserved : 2; 255 RK_U32 src_range_trns_en_jpeg : 1; 256 RK_U32 src_range_trns_sel_jpeg : 1; 257 RK_U32 chroma_ds_mode_jpeg : 1; 258 RK_U32 reserved1 : 21; 259 } src_fmt_jpeg; 260 261 /* 0x0000044c reg275 */ 262 struct { 263 RK_U32 csc_wgt_b2y_jpeg : 9; 264 RK_U32 csc_wgt_g2y_jpeg : 9; 265 RK_U32 csc_wgt_r2y_jpeg : 9; 266 RK_U32 reserved : 5; 267 } src_udfy_jpeg; 268 269 /* 0x00000450 reg276 */ 270 struct { 271 RK_U32 csc_wgt_b2u_jpeg : 9; 272 RK_U32 csc_wgt_g2u_jpeg : 9; 273 RK_U32 csc_wgt_r2u_jpeg : 9; 274 RK_U32 reserved : 5; 275 } src_udfu_jpeg; 276 277 /* 0x00000454 reg277 */ 278 struct { 279 RK_U32 csc_wgt_b2v_jpeg : 9; 280 RK_U32 csc_wgt_g2v_jpeg : 9; 281 RK_U32 csc_wgt_r2v_jpeg : 9; 282 RK_U32 reserved : 5; 283 } src_udfv_jpeg; 284 285 /* 0x00000458 reg278 */ 286 struct { 287 RK_U32 csc_ofst_v_jpeg : 8; 288 RK_U32 csc_ofst_u_jpeg : 8; 289 RK_U32 csc_ofst_y_jpeg : 5; 290 RK_U32 reserved : 11; 291 } src_udfo_jpeg; 292 293 /* 0x0000045c reg279 */ 294 struct { 295 RK_U32 cr_force_value_jpeg : 8; 296 RK_U32 cb_force_value_jpeg : 8; 297 RK_U32 chroma_force_en_jpeg : 1; 298 RK_U32 reserved : 9; 299 RK_U32 src_mirr_jpeg : 1; 300 RK_U32 src_rot_jpeg : 2; 301 RK_U32 reserved1 : 1; 302 RK_U32 rkfbcd_en_jpeg : 1; 303 RK_U32 reserved2 : 1; 304 } src_proc_jpeg; 305 306 /* 0x00000460 reg280 */ 307 struct { 308 RK_U32 pic_ofst_x_jpeg : 14; 309 RK_U32 reserved : 2; 310 RK_U32 pic_ofst_y_jpeg : 14; 311 RK_U32 reserved1 : 2; 312 } pic_ofst_jpeg; 313 314 /* 0x00000464 reg281 */ 315 struct { 316 RK_U32 src_strd0_jpeg : 21; 317 RK_U32 reserved : 11; 318 } src_strd0_jpeg; 319 320 /* 0x00000468 reg282 */ 321 struct { 322 RK_U32 src_strd1_jpeg : 16; 323 RK_U32 reserved : 16; 324 } src_strd1_jpeg; 325 326 /* 0x0000046c reg283 */ 327 struct { 328 RK_U32 pp_corner_filter_strength_jpeg : 2; 329 RK_U32 reserved : 2; 330 RK_U32 pp_edge_filter_strength_jpeg : 2; 331 RK_U32 reserved1 : 2; 332 RK_U32 pp_internal_filter_strength_jpeg : 2; 333 RK_U32 reserved2 : 22; 334 } src_flt_cfg_jpeg; 335 336 /* 0x00000470 reg284 */ 337 struct { 338 RK_U32 jpeg_bias_y : 15; 339 RK_U32 reserved : 17; 340 } jpeg_y_cfg; 341 342 /* 0x00000474 reg285 */ 343 struct { 344 RK_U32 jpeg_bias_u : 15; 345 RK_U32 reserved : 17; 346 } jpeg_u_cfg; 347 348 /* 0x00000478 reg286 */ 349 struct { 350 RK_U32 jpeg_bias_v : 15; 351 RK_U32 reserved : 17; 352 } jpeg_v_cfg; 353 354 /* 0x0000047c reg287 */ 355 struct { 356 RK_U32 jpeg_ri : 25; 357 RK_U32 jpeg_out_mode : 1; 358 RK_U32 jpeg_start_rst_m : 3; 359 RK_U32 jpeg_pic_last_ecs : 1; 360 RK_U32 reserved : 1; 361 RK_U32 jpeg_stnd : 1; 362 } jpeg_base_cfg; 363 364 /* 0x00000480 reg288 */ 365 struct { 366 RK_U32 uvc_partition0_len_jpeg : 12; 367 RK_U32 uvc_partition_len_jpeg : 12; 368 RK_U32 uvc_skip_len_jpeg : 6; 369 RK_U32 reserved : 2; 370 } uvc_cfg_jpeg; 371 372 /* 0x00000484 reg289 */ 373 struct { 374 RK_U32 reserved : 4; 375 RK_U32 eslf_badr_jpeg : 28; 376 } adr_eslf_jpeg; 377 378 /* 0x00000488 reg290 */ 379 struct { 380 RK_U32 eslf_rptr_jpeg : 10; 381 RK_U32 eslf_wptr_jpeg : 10; 382 RK_U32 eslf_blen_jpeg : 10; 383 RK_U32 eslf_updt_jpeg : 2; 384 } eslf_buf_jpeg; 385 386 /* 0x48c */ 387 RK_U32 reserved_291; 388 389 /* 0x00000490 reg292 */ 390 struct { 391 RK_U32 roi0_rdoq_start_x : 11; 392 RK_U32 roi0_rdoq_start_y : 11; 393 RK_U32 reserved : 3; 394 RK_U32 roi0_rdoq_level : 6; 395 RK_U32 roi0_rdoq_en : 1; 396 } jpeg_roi0_cfg0; 397 398 /* 0x00000494 reg293 */ 399 struct { 400 RK_U32 roi0_rdoq_width_m1 : 11; 401 RK_U32 roi0_rdoq_height_m1 : 11; 402 RK_U32 reserved : 3; 403 RK_U32 frm_rdoq_level : 6; 404 RK_U32 frm_rdoq_en : 1; 405 } jpeg_roi0_cfg1; 406 407 /* 0x00000498 reg294 */ 408 struct { 409 RK_U32 roi1_rdoq_start_x : 11; 410 RK_U32 roi1_rdoq_start_y : 11; 411 RK_U32 reserved : 3; 412 RK_U32 roi1_rdoq_level : 6; 413 RK_U32 roi1_rdoq_en : 1; 414 } jpeg_roi1_cfg0; 415 416 /* 0x0000049c reg295 */ 417 struct { 418 RK_U32 roi1_rdoq_width_m1 : 11; 419 RK_U32 roi1_rdoq_height_m1 : 11; 420 RK_U32 reserved : 10; 421 } jpeg_roi1_cfg1; 422 423 /* 0x000004a0 reg296 */ 424 struct { 425 RK_U32 roi2_rdoq_start_x : 11; 426 RK_U32 roi2_rdoq_start_y : 11; 427 RK_U32 reserved : 3; 428 RK_U32 roi2_rdoq_level : 6; 429 RK_U32 roi2_rdoq_en : 1; 430 } jpeg_roi2_cfg0; 431 432 /* 0x000004a4 reg297 */ 433 struct { 434 RK_U32 roi2_rdoq_width_m1 : 11; 435 RK_U32 roi2_rdoq_height_m1 : 11; 436 RK_U32 reserved : 10; 437 } jpeg_roi2_cfg1; 438 439 /* 0x000004a8 reg298 */ 440 struct { 441 RK_U32 roi3_rdoq_start_x : 11; 442 RK_U32 roi3_rdoq_start_y : 11; 443 RK_U32 reserved : 3; 444 RK_U32 roi3_rdoq_level : 6; 445 RK_U32 roi3_rdoq_en : 1; 446 } jpeg_roi3_cfg0; 447 448 /* 0x000004ac reg299 */ 449 struct { 450 RK_U32 roi3_rdoq_width_m1 : 11; 451 RK_U32 roi3_rdoq_height_m1 : 11; 452 RK_U32 reserved : 10; 453 } jpeg_roi3_cfg1; 454 455 /* 0x000004b0 reg300 */ 456 struct { 457 RK_U32 roi4_rdoq_start_x : 11; 458 RK_U32 roi4_rdoq_start_y : 11; 459 RK_U32 reserved : 3; 460 RK_U32 roi4_rdoq_level : 6; 461 RK_U32 roi4_rdoq_en : 1; 462 } jpeg_roi4_cfg0; 463 464 /* 0x000004b4 reg301 */ 465 struct { 466 RK_U32 roi4_rdoq_width_m1 : 11; 467 RK_U32 roi4_rdoq_height_m1 : 11; 468 RK_U32 reserved : 10; 469 } jpeg_roi4_cfg1; 470 471 /* 0x000004b8 reg302 */ 472 struct { 473 RK_U32 roi5_rdoq_start_x : 11; 474 RK_U32 roi5_rdoq_start_y : 11; 475 RK_U32 reserved : 3; 476 RK_U32 roi5_rdoq_level : 6; 477 RK_U32 roi5_rdoq_en : 1; 478 } jpeg_roi5_cfg0; 479 480 /* 0x000004bc reg303 */ 481 struct { 482 RK_U32 roi5_rdoq_width_m1 : 11; 483 RK_U32 roi5_rdoq_height_m1 : 11; 484 RK_U32 reserved : 10; 485 } jpeg_roi5_cfg1; 486 487 /* 0x000004c0 reg304 */ 488 struct { 489 RK_U32 roi6_rdoq_start_x : 11; 490 RK_U32 roi6_rdoq_start_y : 11; 491 RK_U32 reserved : 3; 492 RK_U32 roi6_rdoq_level : 6; 493 RK_U32 roi6_rdoq_en : 1; 494 } jpeg_roi6_cfg0; 495 496 /* 0x000004c4 reg305 */ 497 struct { 498 RK_U32 roi6_rdoq_width_m1 : 11; 499 RK_U32 roi6_rdoq_height_m1 : 11; 500 RK_U32 reserved : 10; 501 } jpeg_roi6_cfg1; 502 503 /* 0x000004c8 reg306 */ 504 struct { 505 RK_U32 roi7_rdoq_start_x : 11; 506 RK_U32 roi7_rdoq_start_y : 11; 507 RK_U32 reserved : 3; 508 RK_U32 roi7_rdoq_level : 6; 509 RK_U32 roi7_rdoq_en : 1; 510 } jpeg_roi7_cfg0; 511 512 /* 0x000004cc reg307 */ 513 struct { 514 RK_U32 roi7_rdoq_width_m1 : 11; 515 RK_U32 roi7_rdoq_height_m1 : 11; 516 RK_U32 reserved : 10; 517 } jpeg_roi7_cfg1; 518 519 /* 0x000004d0 reg308 */ 520 struct { 521 RK_U32 roi8_rdoq_start_x : 11; 522 RK_U32 roi8_rdoq_start_y : 11; 523 RK_U32 reserved : 3; 524 RK_U32 roi8_rdoq_level : 6; 525 RK_U32 roi8_rdoq_en : 1; 526 } jpeg_roi8_cfg0; 527 528 /* 0x000004d4 reg309 */ 529 struct { 530 RK_U32 roi8_rdoq_width_m1 : 11; 531 RK_U32 roi8_rdoq_height_m1 : 11; 532 RK_U32 reserved : 10; 533 } jpeg_roi8_cfg1; 534 535 /* 0x000004d8 reg310 */ 536 struct { 537 RK_U32 roi9_rdoq_start_x : 11; 538 RK_U32 roi9_rdoq_start_y : 11; 539 RK_U32 reserved : 3; 540 RK_U32 roi9_rdoq_level : 6; 541 RK_U32 roi9_rdoq_en : 1; 542 } jpeg_roi9_cfg0; 543 544 /* 0x000004dc reg311 */ 545 struct { 546 RK_U32 roi9_rdoq_width_m1 : 11; 547 RK_U32 roi9_rdoq_height_m1 : 11; 548 RK_U32 reserved : 10; 549 } jpeg_roi9_cfg1; 550 551 /* 0x000004e0 reg312 */ 552 struct { 553 RK_U32 roi10_rdoq_start_x : 11; 554 RK_U32 roi10_rdoq_start_y : 11; 555 RK_U32 reserved : 3; 556 RK_U32 roi10_rdoq_level : 6; 557 RK_U32 roi10_rdoq_en : 1; 558 } jpeg_roi10_cfg0; 559 560 /* 0x000004e4 reg313 */ 561 struct { 562 RK_U32 roi10_rdoq_width_m1 : 11; 563 RK_U32 roi10_rdoq_height_m1 : 11; 564 RK_U32 reserved : 10; 565 } jpeg_roi10_cfg1; 566 567 /* 0x000004e8 reg314 */ 568 struct { 569 RK_U32 roi11_rdoq_start_x : 11; 570 RK_U32 roi11_rdoq_start_y : 11; 571 RK_U32 reserved : 3; 572 RK_U32 roi11_rdoq_level : 6; 573 RK_U32 roi11_rdoq_en : 1; 574 } jpeg_roi11_cfg0; 575 576 /* 0x000004ec reg315 */ 577 struct { 578 RK_U32 roi11_rdoq_width_m1 : 11; 579 RK_U32 roi11_rdoq_height_m1 : 11; 580 RK_U32 reserved : 10; 581 } jpeg_roi11_cfg1; 582 583 /* 0x000004f0 reg316 */ 584 struct { 585 RK_U32 roi12_rdoq_start_x : 11; 586 RK_U32 roi12_rdoq_start_y : 11; 587 RK_U32 reserved : 3; 588 RK_U32 roi12_rdoq_level : 6; 589 RK_U32 roi12_rdoq_en : 1; 590 } jpeg_roi12_cfg0; 591 592 /* 0x000004f4 reg317 */ 593 struct { 594 RK_U32 roi12_rdoq_width_m1 : 11; 595 RK_U32 roi12_rdoq_height_m1 : 11; 596 RK_U32 reserved : 10; 597 } jpeg_roi12_cfg1; 598 599 /* 0x000004f8 reg318 */ 600 struct { 601 RK_U32 roi13_rdoq_start_x : 11; 602 RK_U32 roi13_rdoq_start_y : 11; 603 RK_U32 reserved : 3; 604 RK_U32 roi13_rdoq_level : 6; 605 RK_U32 roi13_rdoq_en : 1; 606 } jpeg_roi13_cfg0; 607 608 /* 0x000004fc reg319 */ 609 struct { 610 RK_U32 roi13_rdoq_width_m1 : 11; 611 RK_U32 roi13_rdoq_height_m1 : 11; 612 RK_U32 reserved : 10; 613 } jpeg_roi13_cfg1; 614 615 /* 0x00000500 reg320 */ 616 struct { 617 RK_U32 roi14_rdoq_start_x : 11; 618 RK_U32 roi14_rdoq_start_y : 11; 619 RK_U32 reserved : 3; 620 RK_U32 roi14_rdoq_level : 6; 621 RK_U32 roi14_rdoq_en : 1; 622 } jpeg_roi14_cfg0; 623 624 /* 0x00000504 reg321 */ 625 struct { 626 RK_U32 roi14_rdoq_width_m1 : 11; 627 RK_U32 roi14_rdoq_height_m1 : 11; 628 RK_U32 reserved : 10; 629 } jpeg_roi14_cfg1; 630 631 /* 0x00000508 reg322 */ 632 struct { 633 RK_U32 roi15_rdoq_start_x : 11; 634 RK_U32 roi15_rdoq_start_y : 11; 635 RK_U32 reserved : 3; 636 RK_U32 roi15_rdoq_level : 6; 637 RK_U32 roi15_rdoq_en : 1; 638 } jpeg_roi15_cfg0; 639 640 /* 0x0000050c reg323 */ 641 struct { 642 RK_U32 roi15_rdoq_width_m1 : 11; 643 RK_U32 roi15_rdoq_height_m1 : 11; 644 RK_U32 reserved : 10; 645 } jpeg_roi15_cfg1; 646 647 /* 0x510 - 0x51c */ 648 RK_U32 reserved324_327[4]; 649 650 /* 0x00000520 reg328 */ 651 struct { 652 RK_U32 reserved : 4; 653 RK_U32 base_addr_md : 28; 654 } adr_md_vpp; 655 656 /* 0x00000524 reg329 */ 657 struct { 658 RK_U32 reserved : 4; 659 RK_U32 base_addr_od : 28; 660 } adr_od_vpp; 661 662 /* 0x00000528 reg330 */ 663 struct { 664 RK_U32 reserved : 4; 665 RK_U32 base_addr_ref_mdw : 28; 666 } adr_ref_mdw; 667 668 /* 0x0000052c reg331 */ 669 struct { 670 RK_U32 reserved : 4; 671 RK_U32 base_addr_ref_mdr : 28; 672 } adr_ref_mdr; 673 674 /* 0x00000530 reg332 */ 675 struct { 676 RK_U32 sto_stride_md : 8; 677 RK_U32 sto_stride_od : 8; 678 RK_U32 cur_frm_en_md : 1; 679 RK_U32 ref_frm_en_md : 1; 680 RK_U32 switch_sad_md : 2; 681 RK_U32 night_mode_en_md : 1; 682 RK_U32 flycatkin_flt_en_md : 1; 683 RK_U32 en_od : 1; 684 RK_U32 background_en_od : 1; 685 RK_U32 sad_comp_en_od : 1; 686 RK_U32 reserved : 6; 687 RK_U32 vepu_pp_en : 1; 688 } vpp_base_cfg; 689 690 /* 0x00000534 reg333 */ 691 struct { 692 RK_U32 thres_sad_md : 12; 693 RK_U32 thres_move_md : 3; 694 RK_U32 reserved : 1; 695 RK_U32 thres_dust_move_md : 4; 696 RK_U32 thres_dust_blk_md : 3; 697 RK_U32 reserved1 : 1; 698 RK_U32 thres_dust_chng_md : 8; 699 } thd_md_vpp; 700 701 /* 0x00000538 reg334 */ 702 struct { 703 RK_U32 thres_complex_od : 12; 704 RK_U32 thres_complex_cnt_od : 3; 705 RK_U32 thres_sad_od : 14; 706 RK_U32 reserved : 3; 707 } thd_od_vpp; 708 } H264eVepu511Frame; 709 710 /* class: param */ 711 /* 0x00001700 reg1472 - 0x000019cc reg1651 */ 712 typedef struct H264eVepu511Param_t { 713 /* 0x00001700 reg1472 */ 714 struct { 715 RK_U32 iprd_tthdy4_0 : 12; 716 RK_U32 reserved : 4; 717 RK_U32 iprd_tthdy4_1 : 12; 718 RK_U32 reserved1 : 4; 719 } iprd_tthdy4_0; 720 721 /* 0x00001704 reg1473 */ 722 struct { 723 RK_U32 iprd_tthdy4_2 : 12; 724 RK_U32 reserved : 4; 725 RK_U32 iprd_tthdy4_3 : 12; 726 RK_U32 reserved1 : 4; 727 } iprd_tthdy4_1; 728 729 /* 0x00001708 reg1474 */ 730 struct { 731 RK_U32 iprd_tthdc8_0 : 12; 732 RK_U32 reserved : 4; 733 RK_U32 iprd_tthdc8_1 : 12; 734 RK_U32 reserved1 : 4; 735 } iprd_tthdc8_0; 736 737 /* 0x0000170c reg1475 */ 738 struct { 739 RK_U32 iprd_tthdc8_2 : 12; 740 RK_U32 reserved : 4; 741 RK_U32 iprd_tthdc8_3 : 12; 742 RK_U32 reserved1 : 4; 743 } iprd_tthdc8_1; 744 745 /* 0x00001710 reg1476 */ 746 struct { 747 RK_U32 iprd_tthdy8_0 : 12; 748 RK_U32 reserved : 4; 749 RK_U32 iprd_tthdy8_1 : 12; 750 RK_U32 reserved1 : 4; 751 } iprd_tthdy8_0; 752 753 /* 0x00001714 reg1477 */ 754 struct { 755 RK_U32 iprd_tthdy8_2 : 12; 756 RK_U32 reserved : 4; 757 RK_U32 iprd_tthdy8_3 : 12; 758 RK_U32 reserved1 : 4; 759 } iprd_tthdy8_1; 760 761 /* 0x00001718 reg1478 */ 762 struct { 763 RK_U32 iprd_tthd_ul : 12; 764 RK_U32 reserved : 20; 765 } iprd_tthd_ul; 766 767 /* 0x0000171c reg1479 */ 768 struct { 769 RK_U32 iprd_wgty8_0 : 8; 770 RK_U32 iprd_wgty8_1 : 8; 771 RK_U32 iprd_wgty8_2 : 8; 772 RK_U32 iprd_wgty8_3 : 8; 773 } iprd_wgty8; 774 775 /* 0x00001720 reg1480 */ 776 struct { 777 RK_U32 iprd_wgty4_0 : 8; 778 RK_U32 iprd_wgty4_1 : 8; 779 RK_U32 iprd_wgty4_2 : 8; 780 RK_U32 iprd_wgty4_3 : 8; 781 } iprd_wgty4; 782 783 /* 0x00001724 reg1481 */ 784 struct { 785 RK_U32 iprd_wgty16_0 : 8; 786 RK_U32 iprd_wgty16_1 : 8; 787 RK_U32 iprd_wgty16_2 : 8; 788 RK_U32 iprd_wgty16_3 : 8; 789 } iprd_wgty16; 790 791 /* 0x00001728 reg1482 */ 792 struct { 793 RK_U32 iprd_wgtc8_0 : 8; 794 RK_U32 iprd_wgtc8_1 : 8; 795 RK_U32 iprd_wgtc8_2 : 8; 796 RK_U32 iprd_wgtc8_3 : 8; 797 } iprd_wgtc8; 798 799 /* 0x172c */ 800 RK_U32 reserved_1483; 801 802 /* 0x00001730 reg1484 */ 803 struct { 804 RK_U32 bias_madi_th0 : 8; 805 RK_U32 bias_madi_th1 : 8; 806 RK_U32 bias_madi_th2 : 8; 807 RK_U32 reserved : 8; 808 } bias_madi_thd_comb; 809 810 /* 0x00001738 reg1486 */ 811 struct { 812 RK_U32 bias_i_val3 : 10; 813 RK_U32 reserved : 22; 814 } qnt1_i_bias_comb; 815 816 /* 0x0000173c reg1487 */ 817 struct { 818 RK_U32 bias_p_val0 : 10; 819 RK_U32 bias_p_val1 : 10; 820 RK_U32 bias_p_val2 : 10; 821 RK_U32 reserved : 2; 822 } qnt0_p_bias_comb; 823 824 /* 0x00001740 reg1488 */ 825 struct { 826 RK_U32 bias_p_val3 : 10; 827 RK_U32 reserved : 22; 828 } qnt1_p_bias_comb; 829 830 /* 0x1744 - 0x175c */ 831 RK_U32 reserved1489_1495[7]; 832 833 /* 0x00001760 reg1496 */ 834 struct { 835 RK_U32 cime_pmv_num : 1; 836 RK_U32 cime_fuse : 1; 837 RK_U32 reserved : 2; 838 RK_U32 move_lambda : 4; 839 RK_U32 rime_lvl_mrg : 2; 840 RK_U32 rime_prelvl_en : 2; 841 RK_U32 rime_prersu_en : 3; 842 RK_U32 fme_lvl_mrg : 1; 843 RK_U32 reserved1 : 16; 844 } me_sqi_comb; 845 846 /* 0x00001764 reg1497 */ 847 struct { 848 RK_U32 cime_mvd_th0 : 9; 849 RK_U32 reserved : 1; 850 RK_U32 cime_mvd_th1 : 9; 851 RK_U32 reserved1 : 1; 852 RK_U32 cime_mvd_th2 : 9; 853 RK_U32 reserved2 : 3; 854 } cime_mvd_th_comb; 855 856 /* 0x00001768 reg1498 */ 857 struct { 858 RK_U32 cime_madp_th : 12; 859 RK_U32 ratio_consi_cfg : 4; 860 RK_U32 ratio_bmv_dist : 4; 861 RK_U32 reserved : 12; 862 } cime_madp_th_comb; 863 864 /* 0x0000176c reg1499 */ 865 struct { 866 RK_U32 cime_multi0 : 8; 867 RK_U32 cime_multi1 : 8; 868 RK_U32 cime_multi2 : 8; 869 RK_U32 cime_multi3 : 8; 870 } cime_multi_comb; 871 872 /* 0x00001770 reg1500 */ 873 struct { 874 RK_U32 rime_mvd_th0 : 3; 875 RK_U32 reserved : 1; 876 RK_U32 rime_mvd_th1 : 3; 877 RK_U32 reserved1 : 9; 878 RK_U32 fme_madp_th : 12; 879 RK_U32 reserved2 : 4; 880 } rime_mvd_th_comb; 881 882 /* 0x00001774 reg1501 */ 883 struct { 884 RK_U32 rime_madp_th0 : 12; 885 RK_U32 reserved : 4; 886 RK_U32 rime_madp_th1 : 12; 887 RK_U32 reserved1 : 4; 888 } rime_madp_th_comb; 889 890 /* 0x00001778 reg1502 */ 891 struct { 892 RK_U32 rime_multi0 : 10; 893 RK_U32 rime_multi1 : 10; 894 RK_U32 rime_multi2 : 10; 895 RK_U32 reserved : 2; 896 } rime_multi_comb; 897 898 /* 0x0000177c reg1503 */ 899 struct { 900 RK_U32 cmv_th0 : 8; 901 RK_U32 cmv_th1 : 8; 902 RK_U32 cmv_th2 : 8; 903 RK_U32 reserved : 8; 904 } cmv_st_th_comb; 905 906 /* 0x1780 - 0x18fc */ 907 RK_U32 reserved1504_1599[96]; 908 909 /* 0x00001900 reg1600 - 0x000019cc reg1651*/ 910 RK_U32 rdo_wgta_qp_grpa_0_51[52]; 911 } H264eVepu511Param; 912 913 /* class: rdo/q_i */ 914 /* 0x00002000 reg2048 - 0x000020b8 reg2094 */ 915 typedef struct H264eVepu511SqiCfg_t { 916 /* 0x00002000 reg2048 - 0x00002010 reg2052*/ 917 RK_U32 reserved_2048_2052[5]; 918 919 /* 0x00002014 reg2053 */ 920 struct { 921 RK_U32 rdo_smear_lvl16_multi : 8; 922 RK_U32 rdo_smear_dlt_qp : 4; 923 RK_U32 reserved : 1; 924 RK_U32 stated_mode : 2; 925 RK_U32 rdo_smear_en : 1; 926 RK_U32 reserved1 : 16; 927 } smear_opt_cfg; 928 929 /* 0x00002018 reg2054 */ 930 struct { 931 RK_U32 madp_cur_thd0 : 12; 932 RK_U32 reserved : 4; 933 RK_U32 madp_cur_thd1 : 12; 934 RK_U32 reserved1 : 4; 935 } smear_madp_thd0; 936 937 /* 0x0000201c reg2055 */ 938 struct { 939 RK_U32 madp_cur_thd2 : 12; 940 RK_U32 reserved : 4; 941 RK_U32 madp_cur_thd3 : 12; 942 RK_U32 reserved1 : 4; 943 } smear_madp_thd1; 944 945 /* 0x00002020 reg2056 */ 946 struct { 947 RK_U32 madp_around_thd0 : 12; 948 RK_U32 reserved : 4; 949 RK_U32 madp_around_thd1 : 12; 950 RK_U32 reserved1 : 4; 951 } smear_madp_thd2; 952 953 /* 0x00002024 reg2057 */ 954 struct { 955 RK_U32 madp_around_thd2 : 12; 956 RK_U32 reserved : 4; 957 RK_U32 madp_around_thd3 : 12; 958 RK_U32 reserved1 : 4; 959 } smear_madp_thd3; 960 961 /* 0x00002028 reg2058 */ 962 struct { 963 RK_U32 madp_around_thd4 : 12; 964 RK_U32 reserved : 4; 965 RK_U32 madp_around_thd5 : 12; 966 RK_U32 reserved1 : 4; 967 } smear_madp_thd4; 968 969 /* 0x0000202c reg2059 */ 970 struct { 971 RK_U32 madp_ref_thd0 : 12; 972 RK_U32 reserved : 4; 973 RK_U32 madp_ref_thd1 : 12; 974 RK_U32 reserved1 : 4; 975 } smear_madp_thd5; 976 977 /* 0x00002030 reg2060 */ 978 struct { 979 RK_U32 cnt_cur_thd0 : 4; 980 RK_U32 reserved : 4; 981 RK_U32 cnt_cur_thd1 : 4; 982 RK_U32 reserved1 : 4; 983 RK_U32 cnt_cur_thd2 : 4; 984 RK_U32 reserved2 : 4; 985 RK_U32 cnt_cur_thd3 : 4; 986 RK_U32 reserved3 : 4; 987 } smear_cnt_thd0; 988 989 /* 0x00002034 reg2061 */ 990 struct { 991 RK_U32 cnt_around_thd0 : 4; 992 RK_U32 reserved : 4; 993 RK_U32 cnt_around_thd1 : 4; 994 RK_U32 reserved1 : 4; 995 RK_U32 cnt_around_thd2 : 4; 996 RK_U32 reserved2 : 4; 997 RK_U32 cnt_around_thd3 : 4; 998 RK_U32 reserved3 : 4; 999 } smear_cnt_thd1; 1000 1001 /* 0x00002038 reg2062 */ 1002 struct { 1003 RK_U32 cnt_around_thd4 : 4; 1004 RK_U32 reserved : 4; 1005 RK_U32 cnt_around_thd5 : 4; 1006 RK_U32 reserved1 : 4; 1007 RK_U32 cnt_around_thd6 : 4; 1008 RK_U32 reserved2 : 4; 1009 RK_U32 cnt_around_thd7 : 4; 1010 RK_U32 reserved3 : 4; 1011 } smear_cnt_thd2; 1012 1013 /* 0x0000203c reg2063 */ 1014 struct { 1015 RK_U32 cnt_ref_thd0 : 4; 1016 RK_U32 reserved : 4; 1017 RK_U32 cnt_ref_thd1 : 4; 1018 RK_U32 reserved1 : 20; 1019 } smear_cnt_thd3; 1020 1021 /* 0x00002040 reg2064 */ 1022 struct { 1023 RK_U32 resi_small_cur_th0 : 6; 1024 RK_U32 reserved : 2; 1025 RK_U32 resi_big_cur_th0 : 6; 1026 RK_U32 reserved1 : 2; 1027 RK_U32 resi_small_cur_th1 : 6; 1028 RK_U32 reserved2 : 2; 1029 RK_U32 resi_big_cur_th1 : 6; 1030 RK_U32 reserved3 : 2; 1031 } smear_resi_thd0; 1032 1033 /* 0x00002044 reg2065 */ 1034 struct { 1035 RK_U32 resi_small_around_th0 : 6; 1036 RK_U32 reserved : 2; 1037 RK_U32 resi_big_around_th0 : 6; 1038 RK_U32 reserved1 : 2; 1039 RK_U32 resi_small_around_th1 : 6; 1040 RK_U32 reserved2 : 2; 1041 RK_U32 resi_big_around_th1 : 6; 1042 RK_U32 reserved3 : 2; 1043 } smear_resi_thd1; 1044 1045 /* 0x00002048 reg2066 */ 1046 struct { 1047 RK_U32 resi_small_around_th2 : 6; 1048 RK_U32 reserved : 2; 1049 RK_U32 resi_big_around_th2 : 6; 1050 RK_U32 reserved1 : 2; 1051 RK_U32 resi_small_around_th3 : 6; 1052 RK_U32 reserved2 : 2; 1053 RK_U32 resi_big_around_th3 : 6; 1054 RK_U32 reserved3 : 2; 1055 } smear_resi_thd2; 1056 1057 /* 0x0000204c reg2067 */ 1058 struct { 1059 RK_U32 resi_small_ref_th0 : 6; 1060 RK_U32 reserved : 2; 1061 RK_U32 resi_big_ref_th0 : 6; 1062 RK_U32 reserved1 : 18; 1063 } smear_resi_thd3; 1064 1065 /* 0x00002050 reg2068 */ 1066 struct { 1067 RK_U32 resi_th0 : 8; 1068 RK_U32 reserved : 8; 1069 RK_U32 resi_th1 : 8; 1070 RK_U32 reserved1 : 8; 1071 } smear_resi_thd4; 1072 1073 /* 0x00002054 reg2069 */ 1074 struct { 1075 RK_U32 madp_cnt_th0 : 4; 1076 RK_U32 madp_cnt_th1 : 4; 1077 RK_U32 madp_cnt_th2 : 4; 1078 RK_U32 madp_cnt_th3 : 4; 1079 RK_U32 reserved : 16; 1080 } smear_st_thd; 1081 1082 /* 0x2058 - 0x206c */ 1083 RK_U32 reserved_2070; 1084 1085 /* 0x0000205c reg2071 */ 1086 struct { 1087 RK_U32 lid_grdn_blk_cu16_th : 8; 1088 RK_U32 lid_rmd_intra_jcoef_ang : 5; 1089 RK_U32 lid_rdo_intra_rcoef_ang : 5; 1090 RK_U32 lid_rmd_intra_jcoef_dp : 6; 1091 RK_U32 lid_rdo_intra_rcoef_dp : 6; 1092 RK_U32 lid_en : 1; 1093 RK_U32 reserved : 1; 1094 } line_intra_dir_cfg; 1095 1096 RK_U32 reserved2072_2075[4]; 1097 1098 /* 0x00002070 reg2076 - 0x0000207c reg2079*/ 1099 rdo_skip_par rdo_b16_skip; 1100 1101 /* 0x00002080 reg2080 - 0x00002088 reg2082 */ 1102 RK_U32 reserved2080_2082[3]; 1103 1104 /* 0x0000208c reg2083 - 0x00002094 reg2085 */ 1105 rdo_noskip_par rdo_b16_inter; 1106 1107 /* 0x00002098 reg2086 - 0x000020a4 reg2088 */ 1108 RK_U32 reserved2086_2088[3]; 1109 1110 /* 0x000020a8 reg2089 - 0x000020ac reg2091 */ 1111 rdo_noskip_par rdo_b16_intra; 1112 1113 /* 0x000020b0 reg2092 */ 1114 RK_U32 reserved2092; 1115 1116 /* 0x000020b4 reg2093 */ 1117 struct { 1118 RK_U32 thd0 : 4; 1119 RK_U32 reserved : 4; 1120 RK_U32 thd1 : 4; 1121 RK_U32 reserved1 : 4; 1122 RK_U32 thd2 : 4; 1123 RK_U32 reserved2 : 4; 1124 RK_U32 thd3 : 4; 1125 RK_U32 reserved3 : 4; 1126 } rdo_b16_intra_atf_cnt_thd; 1127 1128 /* 0x000020b8 reg2094 */ 1129 struct { 1130 RK_U32 big_th0 : 6; 1131 RK_U32 reserved : 2; 1132 RK_U32 big_th1 : 6; 1133 RK_U32 reserved1 : 2; 1134 RK_U32 small_th0 : 6; 1135 RK_U32 reserved2 : 2; 1136 RK_U32 small_th1 : 6; 1137 RK_U32 reserved3 : 2; 1138 } rdo_atf_resi_thd; 1139 1140 /* 0x000020bc reg2095 - 0x0000215c reg2135*/ 1141 RK_U32 reserved_2095_2135[40]; 1142 1143 /* 0x00002160 reg2136 */ 1144 struct { 1145 RK_U32 atr_thd0 : 8; 1146 RK_U32 atr_thd1 : 8; 1147 RK_U32 atr_thd2 : 8; 1148 RK_U32 atr_qp : 6; 1149 RK_U32 reserved : 2; 1150 } atr_thd; 1151 1152 /* 0x00002164 reg2137 */ 1153 struct { 1154 RK_U32 atr_lv16_wgt0 : 8; 1155 RK_U32 atr_lv16_wgt1 : 8; 1156 RK_U32 atr_lv16_wgt2 : 8; 1157 RK_U32 reserved : 8; 1158 } atr_wgt16; 1159 1160 /* 0x00002168 reg2138 */ 1161 struct { 1162 RK_U32 atr_lv8_wgt0 : 8; 1163 RK_U32 atr_lv8_wgt1 : 8; 1164 RK_U32 atr_lv8_wgt2 : 8; 1165 RK_U32 reserved : 8; 1166 } atr_wgt8; 1167 1168 /* 0x0000216c reg2139 */ 1169 struct { 1170 RK_U32 atr_lv4_wgt0 : 8; 1171 RK_U32 atr_lv4_wgt1 : 8; 1172 RK_U32 atr_lv4_wgt2 : 8; 1173 RK_U32 reserved : 8; 1174 } atr_wgt4; 1175 } H264eVepu511Sqi; 1176 1177 /* class: scaling list */ 1178 /* 0x00002200 reg2176- 0x0000268c reg2467*/ 1179 typedef struct H264eVepu511SclCfg_t { 1180 /* 0x2200 - 0x227c, valid for h.264 iq_scal_t8_intra0~15 iq_scal_t8_inter0~15*/ 1181 RK_U32 tu8_intra_y[16]; 1182 RK_U32 tu8_intra_u[16]; 1183 1184 /* 0x2280 - 0x258c*/ 1185 RK_U32 reserved_2208_2215[196]; 1186 1187 /* 0x2590 - 0x268c, valid for h.264 q_scal_t8_intra0~31 q_scal_t8_inter0~31*/ 1188 RK_U32 q_t8_intra[32]; 1189 RK_U32 q_t8_inter[32]; 1190 } H264eVepu511SclCfg; 1191 1192 typedef struct HalVepu511Reg_t { 1193 Vepu511ControlCfg reg_ctl; 1194 H264eVepu511Frame reg_frm; 1195 Vepu511RcRoi reg_rc_roi; 1196 H264eVepu511Param reg_param; 1197 H264eVepu511Sqi reg_sqi; 1198 H264eVepu511SclCfg reg_scl; 1199 Vepu511OsdRegs reg_osd; 1200 Vepu511Status reg_st; 1201 Vepu511Dbg reg_dbg; 1202 } HalVepu511RegSet; 1203 1204 #endif