1 /* 2 * Copyright 2021 Rockchip Electronics Co. LTD 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef __HAL_H264E_VEPU580_REG_H__ 18 #define __HAL_H264E_VEPU580_REG_H__ 19 20 #include "rk_type.h" 21 22 #define VEPU580_CONTROL_CFG_OFFSET (0 * sizeof(RK_U32)) 23 #define VEPU580_BASE_CFG_OFFSET (160 * sizeof(RK_U32)) 24 #define VEPU580_RC_KLUT_CFG_OFFSET (1024 * sizeof(RK_U32)) 25 #define VEPU580_SECTION_3_OFFSET (1472 * sizeof(RK_U32)) 26 #define VEPU580_RDO_CFG_OFFSET (2048 * sizeof(RK_U32)) 27 #define VEPU580_SCL_CFG_OFFSET (2176 * sizeof(RK_U32)) 28 #define VEPU580_OSD_OFFSET (3072 * sizeof(RK_U32)) 29 #define VEPU580_STATUS_OFFSET (4096 * sizeof(RK_U32)) 30 #define VEPU580_DBG_OFFSET (5120 * sizeof(RK_U32)) 31 #define VEPU580_REG_BASE_HW_STATUS 0x2c 32 33 typedef struct { 34 RK_U32 lt_pos_x : 10; 35 RK_U32 reserved0 : 6; 36 RK_U32 lt_pos_y : 10; 37 RK_U32 reserved1 : 6; 38 } OsdLtPos; 39 40 typedef struct { 41 RK_U32 rb_pos_x : 10; 42 RK_U32 reserved0 : 6; 43 RK_U32 rb_pos_y : 10; 44 RK_U32 reserved1 : 6; 45 } OsdRbPos; 46 47 typedef struct OSD_POS_NEW { 48 OsdLtPos lt; /* left-top */ 49 OsdRbPos rb; /* right-bottom */ 50 } OSD_POS_NEW; 51 52 /* class: control/link */ 53 /* 0x00000000 reg0 - 0x00000120 reg72 */ 54 typedef struct Vepu580ControlCfg_t { 55 /* 0x00000000 reg0 */ 56 struct { 57 RK_U32 sub_ver : 8; 58 RK_U32 cap : 1; 59 RK_U32 hevc_cap : 1; 60 RK_U32 reserved : 2; 61 RK_U32 res_cap : 4; 62 RK_U32 osd_cap : 2; 63 RK_U32 filtr_cap : 2; 64 RK_U32 bfrm_cap : 1; 65 RK_U32 fbc_cap : 2; 66 RK_U32 reserved1 : 1; 67 RK_U32 ip_id : 8; 68 } version; 69 70 /* 0x4 - 0xc */ 71 RK_U32 reserved1_3[3]; 72 73 /* 0x00000010 reg4 */ 74 struct { 75 RK_U32 lkt_num : 8; 76 RK_U32 vepu_cmd : 2; 77 RK_U32 reserved : 22; 78 } enc_strt; 79 80 /* 0x00000014 reg5 */ 81 struct { 82 RK_U32 safe_clr : 1; 83 RK_U32 force_clr : 1; 84 RK_U32 reserved : 30; 85 } enc_clr; 86 87 /* 0x18 - 0x1c */ 88 RK_U32 reserved6_7[2]; 89 90 /* 0x00000020 reg8 */ 91 struct { 92 RK_U32 enc_done_en : 1; 93 RK_U32 lkt_node_done_en : 1; 94 RK_U32 sclr_done_en : 1; 95 RK_U32 slc_done_en : 1; 96 RK_U32 bsf_oflw_en : 1; 97 RK_U32 brsp_otsd_en : 1; 98 RK_U32 wbus_err_en : 1; 99 RK_U32 rbus_err_en : 1; 100 RK_U32 wdg_en : 1; 101 RK_U32 lkt_err_int_en : 1; 102 RK_U32 reserved : 22; 103 } int_en; 104 105 /* 0x00000024 reg9 */ 106 struct { 107 RK_U32 enc_done_msk : 1; 108 RK_U32 lkt_node_done_msk : 1; 109 RK_U32 sclr_done_msk : 1; 110 RK_U32 slc_done_msk : 1; 111 RK_U32 bsf_oflw_msk : 1; 112 RK_U32 brsp_otsd_msk : 1; 113 RK_U32 wbus_err_msk : 1; 114 RK_U32 rbus_err_msk : 1; 115 RK_U32 wdg_msk : 1; 116 RK_U32 lkt_err_msk : 1; 117 RK_U32 reserved : 22; 118 } int_msk; 119 120 /* 0x00000028 reg10 */ 121 struct { 122 RK_U32 enc_done_clr : 1; 123 RK_U32 lkt_node_done_clr : 1; 124 RK_U32 sclr_done_clr : 1; 125 RK_U32 slc_done_clr : 1; 126 RK_U32 bsf_oflw_clr : 1; 127 RK_U32 brsp_otsd_clr : 1; 128 RK_U32 wbus_err_clr : 1; 129 RK_U32 rbus_err_clr : 1; 130 RK_U32 wdg_clr : 1; 131 RK_U32 lkt_err_clr : 1; 132 RK_U32 reserved : 22; 133 } int_clr; 134 135 /* 0x0000002c reg11 */ 136 struct { 137 RK_U32 enc_done_sta : 1; 138 RK_U32 lkt_node_done_sta : 1; 139 RK_U32 sclr_done_sta : 1; 140 RK_U32 slc_done_sta : 1; 141 142 RK_U32 bsf_oflw_sta : 1; 143 RK_U32 brsp_otsd_sta : 1; 144 RK_U32 wbus_err_sta : 1; 145 RK_U32 rbus_err_sta : 1; 146 147 RK_U32 wdg_sta : 1; 148 RK_U32 lkt_err_sta : 1; 149 RK_U32 reserved : 22; 150 } int_sta; 151 152 /* 0x00000030 reg12 */ 153 struct { 154 RK_U32 lpfw_bus_ordr : 1; 155 RK_U32 cmvw_bus_ordr : 1; 156 RK_U32 dspw_bus_ordr : 1; 157 RK_U32 rfpw_bus_ordr : 1; 158 RK_U32 src_bus_edin : 4; 159 RK_U32 meiw_bus_edin : 4; 160 RK_U32 bsw_bus_edin : 3; 161 RK_U32 lktr_bus_edin : 4; 162 RK_U32 roir_bus_edin : 4; 163 RK_U32 lktw_bus_edin : 4; 164 RK_U32 afbc_bsize : 1; 165 RK_U32 ebufw_bus_ordr : 1; 166 RK_U32 rec_nfbc_bus_edin : 3; 167 } dtrns_map; 168 169 /* 0x00000034 reg13 */ 170 struct { 171 RK_U32 reserved : 7; 172 RK_U32 dspr_otsd : 1; 173 RK_U32 reserved1 : 8; 174 RK_U32 axi_brsp_cke : 8; 175 RK_U32 reserved2 : 8; 176 } dtrns_cfg; 177 178 /* 0x00000038 reg14 */ 179 struct { 180 RK_U32 vs_load_thd : 24; 181 RK_U32 rfp_load_thd : 8; 182 } enc_wdg; 183 184 /* 0x0000003c reg15 */ 185 struct { 186 RK_U32 hurry_en : 1; 187 RK_U32 hurry_low : 3; 188 RK_U32 hurry_mid : 3; 189 RK_U32 hurry_high : 3; 190 RK_U32 reserved : 22; 191 } qos_cfg; 192 193 /* 0x00000040 reg16 */ 194 struct { 195 RK_U32 qos_period : 16; 196 RK_U32 reserved : 16; 197 } qos_perd; 198 199 /* 0x00000044 reg17 */ 200 RK_U32 hurry_thd_low; 201 202 /* 0x00000048 reg18 */ 203 RK_U32 hurry_thd_mid; 204 205 /* 0x0000004c reg19 */ 206 RK_U32 hurry_thd_high; 207 208 /* 0x00000050 reg20 */ 209 struct { 210 RK_U32 idle_en_core : 1; 211 RK_U32 idle_en_axi : 1; 212 RK_U32 idle_en_ahb : 1; 213 RK_U32 reserved : 29; 214 } enc_idle_en; 215 216 /* 0x00000054 reg21 */ 217 struct { 218 RK_U32 cke : 1; 219 RK_U32 resetn_hw_en : 1; 220 RK_U32 enc_done_tmvp_en : 1; 221 RK_U32 sram_ckg_en : 1; 222 RK_U32 reserved : 28; 223 } func_en; 224 225 /* 0x00000058 reg22 */ 226 struct { 227 RK_U32 tq8_ckg : 1; 228 RK_U32 tq4_ckg : 1; 229 RK_U32 bits_ckg_8x8 : 1; 230 RK_U32 bits_ckg_4x4_1 : 1; 231 RK_U32 bits_ckg_4x4_0 : 1; 232 RK_U32 inter_mode_ckg : 1; 233 RK_U32 inter_ctrl_ckg : 1; 234 RK_U32 inter_pred_ckg : 1; 235 RK_U32 intra8_ckg : 1; 236 RK_U32 intra4_ckg : 1; 237 RK_U32 reserved : 22; 238 } rdo_ckg; 239 240 /* 0x0000005c reg23 */ 241 struct { 242 RK_U32 core_id : 2; 243 RK_U32 reserved : 30; 244 } enc_id; 245 } Vepu580ControlCfg; 246 247 /* class: buffer/video syntax */ 248 /* 0x00000280 reg160 - 0x000003f4 reg253*/ 249 typedef struct Vepu580BaseCfg_t { 250 /* 0x00000280 reg160 */ 251 RK_U32 adr_src0; 252 253 /* 0x00000284 reg161 */ 254 RK_U32 adr_src1; 255 256 /* 0x00000288 reg162 */ 257 RK_U32 adr_src2; 258 259 /* 0x0000028c reg163 */ 260 RK_U32 rfpw_h_addr; 261 262 /* 0x00000290 reg164 */ 263 RK_U32 rfpw_b_addr; 264 265 /* 0x00000294 reg165 */ 266 RK_U32 rfpr_h_addr; 267 268 /* 0x00000298 reg166 */ 269 RK_U32 rfpr_b_addr; 270 271 /* 0x0000029c reg167 */ 272 RK_U32 cmvw_addr; 273 274 /* 0x000002a0 reg168 */ 275 RK_U32 cmvr_addr; 276 277 /* 0x000002a4 reg169 */ 278 RK_U32 dspw_addr; 279 280 /* 0x000002a8 reg170 */ 281 RK_U32 dspr_addr; 282 283 /* 0x000002ac reg171 */ 284 RK_U32 meiw_addr; 285 286 /* 0x000002b0 reg172 */ 287 RK_U32 bsbt_addr; 288 289 /* 0x000002b4 reg173 */ 290 RK_U32 bsbb_addr; 291 292 /* 0x000002b8 reg174 */ 293 RK_U32 bsbr_addr; 294 295 /* 0x000002bc reg175 */ 296 RK_U32 adr_bsbs; 297 298 /* 0x000002c0 reg176 */ 299 RK_U32 lpfw_addr; 300 301 /* 0x000002c4 reg177 */ 302 RK_U32 lpfr_addr; 303 304 /* 0x000002c8 reg178 */ 305 RK_U32 roi_addr; 306 307 /* 0x000002cc reg179 */ 308 RK_U32 roi_qp_addr; 309 310 /* 0x000002d0 reg180 */ 311 RK_U32 qoi_amv_addr; 312 313 /* 0x000002d4 reg181 */ 314 RK_U32 qoi_mv_addr; 315 316 /* 0x000002d8 reg182 */ 317 RK_U32 ebuft_addr; 318 319 /* 0x000002dc reg183 */ 320 RK_U32 ebufb_addr; 321 322 /* 0x2e0 - 0x2fc */ 323 RK_U32 reserved184_191[8]; 324 325 /* 0x00000300 reg192 */ 326 struct { 327 RK_U32 enc_stnd : 1; 328 RK_U32 roi_en : 1; 329 RK_U32 cur_frm_ref : 1; 330 RK_U32 mei_stor : 1; 331 RK_U32 bs_scp : 1; 332 RK_U32 reserved : 3; 333 RK_U32 pic_qp : 6; 334 RK_U32 num_pic_tot_cur : 5; 335 RK_U32 log2_ctu_num : 5; 336 RK_U32 reserved1 : 6; 337 RK_U32 slen_fifo : 1; 338 RK_U32 rec_fbc_dis : 1; 339 } enc_pic; 340 341 /* 0x00000304 reg193 */ 342 struct { 343 RK_U32 dchs_txid : 2; 344 RK_U32 dchs_rxid : 2; 345 RK_U32 dchs_txe : 1; 346 RK_U32 dchs_rxe : 1; 347 RK_U32 reserved : 10; 348 RK_U32 dchs_ofst : 11; 349 RK_U32 reserved1 : 5; 350 } dual_core; 351 352 /* 0x308 - 0x30c */ 353 RK_U32 reserved194_195[2]; 354 355 /* 0x00000310 reg196 */ 356 struct { 357 RK_U32 pic_wd8_m1 : 11; 358 RK_U32 reserved : 5; 359 RK_U32 pic_hd8_m1 : 11; 360 RK_U32 reserved1 : 5; 361 } enc_rsl; 362 363 /* 0x00000314 reg197 */ 364 struct { 365 RK_U32 pic_wfill : 6; 366 RK_U32 reserved : 10; 367 RK_U32 pic_hfill : 6; 368 RK_U32 reserved1 : 10; 369 } src_fill; 370 371 /* 0x00000318 reg198 */ 372 struct { 373 RK_U32 alpha_swap : 1; 374 RK_U32 rbuv_swap : 1; 375 RK_U32 src_cfmt : 4; 376 RK_U32 src_range : 1; 377 RK_U32 out_fmt : 1; 378 RK_U32 reserved : 24; 379 } src_fmt; 380 381 /* 0x0000031c reg199 */ 382 struct { 383 RK_U32 csc_wgt_b2y : 9; 384 RK_U32 csc_wgt_g2y : 9; 385 RK_U32 csc_wgt_r2y : 9; 386 RK_U32 reserved : 5; 387 } src_udfy; 388 389 /* 0x00000320 reg200 */ 390 struct { 391 RK_U32 csc_wgt_b2u : 9; 392 RK_U32 csc_wgt_g2u : 9; 393 RK_U32 csc_wgt_r2u : 9; 394 RK_U32 reserved : 5; 395 } src_udfu; 396 397 /* 0x00000324 reg201 */ 398 struct { 399 RK_U32 csc_wgt_b2v : 9; 400 RK_U32 csc_wgt_g2v : 9; 401 RK_U32 csc_wgt_r2v : 9; 402 RK_U32 reserved : 5; 403 } src_udfv; 404 405 /* 0x00000328 reg202 */ 406 struct { 407 RK_U32 csc_ofst_v : 8; 408 RK_U32 csc_ofst_u : 8; 409 RK_U32 csc_ofst_y : 5; 410 RK_U32 reserved : 11; 411 } src_udfo; 412 413 /* 0x0000032c reg203 */ 414 struct { 415 RK_U32 reserved0 : 26; 416 RK_U32 src_mirr : 1; 417 RK_U32 src_rot : 2; 418 RK_U32 txa_en : 1; 419 RK_U32 afbcd_en : 1; 420 RK_U32 reserved1 : 1; 421 } src_proc; 422 423 /* 0x00000330 reg204 */ 424 struct { 425 RK_U32 pic_ofst_x : 14; 426 RK_U32 reserved : 2; 427 RK_U32 pic_ofst_y : 14; 428 RK_U32 reserved1 : 2; 429 } pic_ofst; 430 431 /* 0x00000334 reg205 */ 432 struct { 433 RK_U32 src_strd0 : 17; 434 RK_U32 reserved : 15; 435 } src_strd0; 436 437 /* 0x00000338 reg206 */ 438 struct { 439 RK_U32 src_strd1 : 16; 440 RK_U32 reserved : 16; 441 } src_strd1; 442 443 /* 0x33c - 0x34c */ 444 RK_U32 reserved207_211[5]; 445 446 /* 0x00000350 reg212 */ 447 struct { 448 RK_U32 rc_en : 1; 449 RK_U32 aq_en : 1; 450 RK_U32 aq_mode : 1; 451 RK_U32 reserved : 9; 452 RK_U32 rc_ctu_num : 20; 453 } rc_cfg; 454 455 /* 0x00000354 reg213 */ 456 struct { 457 RK_U32 reserved : 16; 458 RK_U32 rc_qp_range : 4; 459 RK_U32 rc_max_qp : 6; 460 RK_U32 rc_min_qp : 6; 461 } rc_qp; 462 463 /* 0x00000358 reg214 */ 464 struct { 465 RK_U32 ctu_ebit : 20; 466 RK_U32 reserved : 12; 467 } rc_tgt; 468 469 /* 0x35c */ 470 RK_U32 reserved_215; 471 472 /* 0x00000360 reg216 */ 473 struct { 474 RK_U32 sli_splt : 1; 475 RK_U32 sli_splt_mode : 1; 476 RK_U32 sli_splt_cpst : 1; 477 RK_U32 reserved : 12; 478 RK_U32 sli_flsh : 1; 479 RK_U32 sli_max_num_m1 : 15; 480 RK_U32 reserved1 : 1; 481 } sli_splt; 482 483 /* 0x00000364 reg217 */ 484 struct { 485 RK_U32 sli_splt_byte : 20; 486 RK_U32 reserved : 12; 487 } sli_byte; 488 489 /* 0x00000368 reg218 */ 490 struct { 491 RK_U32 sli_splt_cnum_m1 : 20; 492 RK_U32 reserved : 12; 493 } sli_cnum; 494 495 /* 0x36c */ 496 RK_U32 reserved_219; 497 498 /* 0x00000370 reg220 */ 499 struct { 500 RK_U32 cme_srch_h : 4; 501 RK_U32 cme_srch_v : 4; 502 RK_U32 rme_srch_h : 3; 503 RK_U32 rme_srch_v : 3; 504 RK_U32 reserved : 2; 505 RK_U32 dlt_frm_num : 16; 506 } me_rnge; 507 508 /* 0x00000374 reg221 */ 509 struct { 510 RK_U32 pmv_mdst_h : 8; 511 RK_U32 pmv_mdst_v : 8; 512 RK_U32 mv_limit : 2; 513 RK_U32 pmv_num : 2; 514 RK_U32 colmv_stor : 1; 515 RK_U32 colmv_load : 1; 516 RK_U32 rme_dis : 3; 517 RK_U32 reserved : 2; 518 RK_U32 fme_dis : 3; 519 RK_U32 reserved1 : 1; 520 RK_U32 lvl4_ovrd_en : 1; 521 } me_cfg; 522 523 /* 0x00000378 reg222 */ 524 struct { 525 RK_U32 cme_rama_max : 11; 526 RK_U32 cme_rama_h : 5; 527 RK_U32 cach_l2_tag : 2; 528 RK_U32 cme_linebuf_w : 9; 529 RK_U32 reserved : 5; 530 } me_cach; 531 532 /* 0x37c */ 533 RK_U32 reserved_223; 534 535 /* 0x00000380 reg224 */ 536 struct { 537 RK_U32 gmv_x : 13; 538 RK_U32 reserved : 3; 539 RK_U32 gmv_y : 13; 540 RK_U32 reserved1 : 3; 541 } gmv; 542 543 /* 0x384 - 0x38c */ 544 RK_U32 reserved225_227[3]; 545 546 /* 0x00000390 reg228 */ 547 struct { 548 RK_U32 roi_qp_en : 1; 549 RK_U32 roi_amv_en : 1; 550 RK_U32 roi_mv_en : 1; 551 RK_U32 reserved : 29; 552 } roi_en; 553 554 /* 0x394 - 0x39c */ 555 RK_U32 reserved229_231[3]; 556 557 /* 0x000003a0 reg232 */ 558 struct { 559 RK_U32 rect_size : 1; 560 RK_U32 inter_4x4 : 1; 561 RK_U32 arb_sel : 1; 562 RK_U32 vlc_lmt : 1; 563 RK_U32 chrm_spcl : 1; 564 RK_U32 rdo_mask : 8; 565 RK_U32 ccwa_e : 1; 566 RK_U32 reserved : 1; 567 RK_U32 atr_e : 1; 568 RK_U32 reserved1 : 3; 569 RK_U32 atf_intra_e : 1; 570 RK_U32 scl_lst_sel : 2; 571 RK_U32 reserved2 : 10; 572 } rdo_cfg; 573 574 /* 0x000003a4 reg233 */ 575 struct { 576 RK_U32 vthd_y : 12; 577 RK_U32 reserved : 4; 578 RK_U32 vthd_c : 12; 579 RK_U32 reserved1 : 4; 580 } iprd_csts; 581 582 /* 0x3a8 - 0x3ac */ 583 RK_U32 reserved234_235[2]; 584 585 /* 0x000003b0 reg236 */ 586 struct { 587 RK_U32 nal_ref_idc : 2; 588 RK_U32 nal_unit_type : 5; 589 RK_U32 reserved : 25; 590 } synt_nal; 591 592 /* 0x000003b4 reg237 */ 593 struct { 594 RK_U32 max_fnum : 4; 595 RK_U32 drct_8x8 : 1; 596 RK_U32 mpoc_lm4 : 4; 597 RK_U32 reserved : 23; 598 } synt_sps; 599 600 /* 0x000003b8 reg238 */ 601 struct { 602 RK_U32 etpy_mode : 1; 603 RK_U32 trns_8x8 : 1; 604 RK_U32 csip_flag : 1; 605 RK_U32 num_ref0_idx : 2; 606 RK_U32 num_ref1_idx : 2; 607 RK_U32 pic_init_qp : 6; 608 RK_U32 cb_ofst : 5; 609 RK_U32 cr_ofst : 5; 610 RK_U32 wght_pred : 1; 611 RK_U32 dbf_cp_flg : 1; 612 RK_U32 reserved : 7; 613 } synt_pps; 614 615 /* 0x000003bc reg239 */ 616 struct { 617 RK_U32 sli_type : 2; 618 RK_U32 pps_id : 8; 619 RK_U32 drct_smvp : 1; 620 RK_U32 num_ref_ovrd : 1; 621 RK_U32 cbc_init_idc : 2; 622 RK_U32 reserved : 2; 623 RK_U32 frm_num : 16; 624 } synt_sli0; 625 626 /* 0x000003c0 reg240 */ 627 struct { 628 RK_U32 idr_pid : 16; 629 RK_U32 poc_lsb : 16; 630 } synt_sli1; 631 632 /* 0x000003c4 reg241 */ 633 struct { 634 RK_U32 rodr_pic_idx : 2; 635 RK_U32 ref_list0_rodr : 1; 636 RK_U32 sli_beta_ofst : 4; 637 RK_U32 sli_alph_ofst : 4; 638 RK_U32 dis_dblk_idc : 2; 639 RK_U32 reserved : 3; 640 RK_U32 rodr_pic_num : 16; 641 } synt_sli2; 642 643 /* 0x000003c8 reg242 */ 644 struct { 645 RK_U32 nopp_flg : 1; 646 RK_U32 ltrf_flg : 1; 647 RK_U32 arpm_flg : 1; 648 RK_U32 mmco4_pre : 1; 649 RK_U32 mmco_type0 : 3; 650 RK_U32 mmco_parm0 : 16; 651 RK_U32 mmco_type1 : 3; 652 RK_U32 mmco_type2 : 3; 653 RK_U32 reserved : 3; 654 } synt_refm0; 655 656 /* 0x000003cc reg243 */ 657 struct { 658 RK_U32 mmco_parm1 : 16; 659 RK_U32 mmco_parm2 : 16; 660 } synt_refm1; 661 662 /* 0x000003d0 reg244 */ 663 struct { 664 RK_U32 long_term_frame_idx0 : 4; 665 RK_U32 long_term_frame_idx1 : 4; 666 RK_U32 long_term_frame_idx2 : 4; 667 RK_U32 reserved : 20; 668 } synt_refm2; 669 670 /* 0x000003d4 reg245 */ 671 struct { 672 RK_U32 dlt_poc_s0_m12 : 16; 673 RK_U32 dlt_poc_s0_m13 : 16; 674 } synt_refm3_hevc; 675 676 /* 0x000003d8 reg246 */ 677 struct { 678 RK_U32 poc_lsb_lt1 : 16; 679 RK_U32 poc_lsb_lt2 : 16; 680 } synt_long_refm0; 681 682 /* 0x000003dc reg247 */ 683 struct { 684 RK_U32 dlt_poc_msb_cycl1 : 16; 685 RK_U32 dlt_poc_msb_cycl2 : 16; 686 } synt_long_refm1; 687 688 /* 0x3e0 - 0x3ec */ 689 RK_U32 reserved248_251[4]; 690 691 /* 0x000003f0 reg252 */ 692 struct { 693 RK_U32 mv_v_lmt_thd : 14; 694 RK_U32 reserved : 1; 695 RK_U32 mv_v_lmt_en : 1; 696 RK_U32 reserved1 : 15; 697 RK_U32 sli_crs_en : 1; 698 } sli_cfg; 699 700 /* 0x000003f4 reg253 */ 701 struct { 702 RK_U32 tile_x : 8; 703 RK_U32 reserved : 8; 704 RK_U32 tile_y : 8; 705 RK_U32 reserved1 : 8; 706 } tile_pos; 707 } Vepu580BaseCfg; 708 709 /* class: rc/roi/aq/klut */ 710 /* 0x00001000 reg1024 - 0x000010e0 reg1080 */ 711 typedef struct Vepu580RcKlutCfg_t { 712 /* 0x00001000 reg1024 */ 713 struct { 714 RK_U32 qp_adj0 : 5; 715 RK_U32 qp_adj1 : 5; 716 RK_U32 qp_adj2 : 5; 717 RK_U32 qp_adj3 : 5; 718 RK_U32 qp_adj4 : 5; 719 RK_U32 reserved : 7; 720 } rc_adj0; 721 722 /* 0x00001004 reg1025 */ 723 struct { 724 RK_U32 qp_adj5 : 5; 725 RK_U32 qp_adj6 : 5; 726 RK_U32 qp_adj7 : 5; 727 RK_U32 qp_adj8 : 5; 728 RK_U32 reserved : 12; 729 } rc_adj1; 730 731 /* 0x00001008 reg1026 - 0x00001028 reg1034 */ 732 RK_U32 rc_dthd_0_8[9]; 733 734 /* 0x102c */ 735 RK_U32 reserved_1035; 736 737 /* 0x00001030 reg1036 */ 738 struct { 739 RK_U32 qpmin_area0 : 6; 740 RK_U32 qpmax_area0 : 6; 741 RK_U32 qpmin_area1 : 6; 742 RK_U32 qpmax_area1 : 6; 743 RK_U32 qpmin_area2 : 6; 744 RK_U32 reserved : 2; 745 } roi_qthd0; 746 747 /* 0x00001034 reg1037 */ 748 struct { 749 RK_U32 qpmax_area2 : 6; 750 RK_U32 qpmin_area3 : 6; 751 RK_U32 qpmax_area3 : 6; 752 RK_U32 qpmin_area4 : 6; 753 RK_U32 qpmax_area4 : 6; 754 RK_U32 reserved : 2; 755 } roi_qthd1; 756 757 /* 0x00001038 reg1038 */ 758 struct { 759 RK_U32 qpmin_area5 : 6; 760 RK_U32 qpmax_area5 : 6; 761 RK_U32 qpmin_area6 : 6; 762 RK_U32 qpmax_area6 : 6; 763 RK_U32 qpmin_area7 : 6; 764 RK_U32 reserved : 2; 765 } roi_qthd2; 766 767 /* 0x0000103c reg1039 */ 768 struct { 769 RK_U32 qpmax_area7 : 6; 770 RK_U32 reserved : 24; 771 RK_U32 qpmap_mode : 2; 772 } roi_qthd3; 773 774 /* 0x00001040 reg1040 */ 775 struct { 776 RK_U32 madi_mode : 1; 777 RK_U32 reserved : 15; 778 RK_U32 madi_thd : 8; 779 RK_U32 reserved1 : 8; 780 } madi_cfg; 781 782 /* 0x00001044 reg1041 */ 783 struct { 784 RK_U32 aq_tthd0 : 8; 785 RK_U32 aq_tthd1 : 8; 786 RK_U32 aq_tthd2 : 8; 787 RK_U32 aq_tthd3 : 8; 788 } aq_tthd0; 789 790 /* 0x00001048 reg1042 */ 791 struct { 792 RK_U32 aq_tthd4 : 8; 793 RK_U32 aq_tthd5 : 8; 794 RK_U32 aq_tthd6 : 8; 795 RK_U32 aq_tthd7 : 8; 796 } aq_tthd1; 797 798 /* 0x0000104c reg1043 */ 799 struct { 800 RK_U32 aq_tthd8 : 8; 801 RK_U32 aq_tthd9 : 8; 802 RK_U32 aq_tthd10 : 8; 803 RK_U32 aq_tthd11 : 8; 804 } aq_tthd2; 805 806 /* 0x00001050 reg1044 */ 807 struct { 808 RK_U32 aq_tthd12 : 8; 809 RK_U32 aq_tthd13 : 8; 810 RK_U32 aq_tthd14 : 8; 811 RK_U32 aq_tthd15 : 8; 812 } aq_tthd3; 813 814 /* 0x00001054 reg1045 */ 815 struct { 816 RK_U32 aq_stp_s0 : 6; 817 RK_U32 reserved : 2; 818 RK_U32 aq_stp_0t1 : 6; 819 RK_U32 reserved1 : 2; 820 RK_U32 aq_stp_1t2 : 6; 821 RK_U32 reserved2 : 2; 822 RK_U32 aq_stp_2t3 : 6; 823 RK_U32 reserved3 : 2; 824 } aq_stp0; 825 826 /* 0x00001058 reg1046 */ 827 struct { 828 RK_U32 aq_stp_3t4 : 6; 829 RK_U32 reserved : 2; 830 RK_U32 aq_stp_4t5 : 6; 831 RK_U32 reserved1 : 2; 832 RK_U32 aq_stp_5t6 : 6; 833 RK_U32 reserved2 : 2; 834 RK_U32 aq_stp_6t7 : 6; 835 RK_U32 reserved3 : 2; 836 } aq_stp1; 837 838 /* 0x0000105c reg1047 */ 839 struct { 840 RK_U32 aq_stp_8t9 : 6; 841 RK_U32 reserved : 2; 842 RK_U32 aq_stp_9t10 : 6; 843 RK_U32 reserved1 : 2; 844 RK_U32 aq_stp_10t11 : 6; 845 RK_U32 reserved2 : 2; 846 RK_U32 aq_stp_11t12 : 6; 847 RK_U32 reserved3 : 2; 848 } aq_stp2; 849 850 /* 0x00001060 reg1048 */ 851 struct { 852 RK_U32 aq_stp_12t13 : 6; 853 RK_U32 reserved : 2; 854 RK_U32 aq_stp_13t14 : 6; 855 RK_U32 reserved1 : 2; 856 RK_U32 aq_stp_14t15 : 6; 857 RK_U32 reserved2 : 2; 858 RK_U32 aq_stp_b15 : 6; 859 RK_U32 reserved3 : 2; 860 } aq_stp3; 861 862 /* 0x1064 - 0x106c */ 863 RK_U32 reserved1049_1051[3]; 864 865 /* 0x00001070 reg1052 */ 866 struct { 867 RK_U32 md_sad_thd0 : 8; 868 RK_U32 md_sad_thd1 : 8; 869 RK_U32 md_sad_thd2 : 8; 870 RK_U32 reserved : 8; 871 } md_sad_thd; 872 873 /* 0x00001074 reg1053 */ 874 struct { 875 RK_U32 madi_thd0 : 8; 876 RK_U32 madi_thd1 : 8; 877 RK_U32 madi_thd2 : 8; 878 RK_U32 reserved : 8; 879 } madi_thd; 880 881 /* 0x1078 - 0x107c */ 882 RK_U32 reserved1054_1055[2]; 883 884 /* 0x00001080 reg1056 */ 885 struct { 886 RK_U32 chrm_klut_ofst : 3; 887 RK_U32 reserved : 29; 888 } klut_ofst; 889 890 /* 0x00001084 reg1057 */ 891 struct { 892 RK_U32 chrm_klut_wgt0 : 18; 893 RK_U32 reserved : 5; 894 RK_U32 chrm_klut_wgt1_l9 : 9; 895 } klut_wgt0; 896 897 /* 0x00001088 reg1058 */ 898 struct { 899 RK_U32 chrm_klut_wgt1_h9 : 9; 900 RK_U32 reserved : 5; 901 RK_U32 chrm_klut_wgt2 : 18; 902 } klut_wgt1; 903 904 /* 0x0000108c reg1059 */ 905 struct { 906 RK_U32 chrm_klut_wgt3 : 18; 907 RK_U32 reserved : 5; 908 RK_U32 chrm_klut_wgt4_l9 : 9; 909 } klut_wgt2; 910 911 /* 0x00001090 reg1060 */ 912 struct { 913 RK_U32 chrm_klut_wgt4_h9 : 9; 914 RK_U32 reserved : 5; 915 RK_U32 chrm_klut_wgt5 : 18; 916 } klut_wgt3; 917 918 /* 0x00001094 reg1061 */ 919 struct { 920 RK_U32 chrm_klut_wgt6 : 18; 921 RK_U32 reserved : 5; 922 RK_U32 chrm_klut_wgt7_l9 : 9; 923 } klut_wgt4; 924 925 /* 0x00001098 reg1062 */ 926 struct { 927 RK_U32 chrm_klut_wgt7_h9 : 9; 928 RK_U32 reserved : 5; 929 RK_U32 chrm_klut_wgt8 : 18; 930 } klut_wgt5; 931 932 /* 0x0000109c reg1063 */ 933 struct { 934 RK_U32 chrm_klut_wgt9 : 18; 935 RK_U32 reserved : 5; 936 RK_U32 chrm_klut_wgt10_l9 : 9; 937 } klut_wgt6; 938 939 /* 0x000010a0 reg1064 */ 940 struct { 941 RK_U32 chrm_klut_wgt10_h9 : 9; 942 RK_U32 reserved : 5; 943 RK_U32 chrm_klut_wgt11 : 18; 944 } klut_wgt7; 945 946 /* 0x000010a4 reg1065 */ 947 struct { 948 RK_U32 chrm_klut_wgt12 : 18; 949 RK_U32 reserved : 5; 950 RK_U32 chrm_klut_wgt13_l9 : 9; 951 } klut_wgt8; 952 953 /* 0x000010a8 reg1066 */ 954 struct { 955 RK_U32 chrm_klut_wgt13_h9 : 9; 956 RK_U32 reserved : 5; 957 RK_U32 chrm_klut_wgt14 : 18; 958 } klut_wgt9; 959 960 /* 0x000010ac reg1067 */ 961 struct { 962 RK_U32 chrm_klut_wgt15 : 18; 963 RK_U32 reserved : 5; 964 RK_U32 chrm_klut_wgt16_l9 : 9; 965 } klut_wgt10; 966 967 /* 0x000010b0 reg1068 */ 968 struct { 969 RK_U32 chrm_klut_wgt16_h9 : 9; 970 RK_U32 reserved : 5; 971 RK_U32 chrm_klut_wgt17 : 18; 972 } klut_wgt11; 973 974 /* 0x000010b4 reg1069 */ 975 struct { 976 RK_U32 chrm_klut_wgt18 : 18; 977 RK_U32 reserved : 5; 978 RK_U32 chrm_klut_wgt19_l9 : 9; 979 } klut_wgt12; 980 981 /* 0x000010b8 reg1070 */ 982 struct { 983 RK_U32 chrm_klut_wgt19_h9 : 9; 984 RK_U32 reserved : 5; 985 RK_U32 chrm_klut_wgt20 : 18; 986 } klut_wgt13; 987 988 /* 0x000010bc reg1071 */ 989 struct { 990 RK_U32 chrm_klut_wgt21 : 18; 991 RK_U32 reserved : 5; 992 RK_U32 chrm_klut_wgt22_l9 : 9; 993 } klut_wgt14; 994 995 /* 0x000010c0 reg1072 */ 996 struct { 997 RK_U32 chrm_klut_wgt22_h9 : 9; 998 RK_U32 reserved : 5; 999 RK_U32 chrm_klut_wgt23 : 18; 1000 } klut_wgt15; 1001 1002 /* 0x000010c4 reg1073 */ 1003 struct { 1004 RK_U32 chrm_klut_wgt24 : 18; 1005 RK_U32 reserved : 5; 1006 RK_U32 chrm_klut_wgt25_l9 : 9; 1007 } klut_wgt16; 1008 1009 /* 0x000010c8 reg1074 */ 1010 struct { 1011 RK_U32 chrm_klut_wgt25_h9 : 9; 1012 RK_U32 reserved : 5; 1013 RK_U32 chrm_klut_wgt26 : 18; 1014 } klut_wgt17; 1015 1016 /* 0x000010cc reg1075 */ 1017 struct { 1018 RK_U32 chrm_klut_wgt27 : 18; 1019 RK_U32 reserved : 5; 1020 RK_U32 chrm_klut_wgt28_l9 : 9; 1021 } klut_wgt18; 1022 1023 /* 0x000010d0 reg1076 */ 1024 struct { 1025 RK_U32 chrm_klut_wgt28_h9 : 9; 1026 RK_U32 reserved : 5; 1027 RK_U32 chrm_klut_wgt29 : 18; 1028 } klut_wgt19; 1029 1030 /* 0x000010d4 reg1077 */ 1031 struct { 1032 RK_U32 chrm_klut_wgt30 : 18; 1033 RK_U32 reserved : 5; 1034 RK_U32 chrm_klut_wgt31_l9 : 9; 1035 } klut_wgt20; 1036 1037 /* 0x000010d8 reg1078 */ 1038 struct { 1039 RK_U32 chrm_klut_wgt31_h9 : 9; 1040 RK_U32 reserved : 5; 1041 RK_U32 chrm_klut_wgt32 : 18; 1042 } klut_wgt21; 1043 1044 /* 0x000010dc reg1079 */ 1045 struct { 1046 RK_U32 chrm_klut_wgt33 : 18; 1047 RK_U32 reserved : 5; 1048 RK_U32 chrm_klut_wgt34_l9 : 9; 1049 } klut_wgt22; 1050 1051 /* 0x000010e0 reg1080 */ 1052 struct { 1053 RK_U32 chrm_klut_wgt34_h9 : 9; 1054 RK_U32 reserved : 23; 1055 } klut_wgt23; 1056 } Vepu580RcKlutCfg; 1057 1058 /* class: iprd/iprd_wgt/rdo_wgta/prei_dif/sobel */ 1059 /* 0x00001700 reg1472 - 0x00001cd4 reg1845 */ 1060 typedef struct Vepu580Section3_t { 1061 /* 0x1700 */ 1062 struct { 1063 RK_U32 lvl4_intra_cst_thd0 : 12; 1064 RK_U32 reserve0 : 4; 1065 RK_U32 lvl4_intra_cst_thd1 : 12; 1066 RK_U32 reserve1 : 4; 1067 } lvl32_intra_CST_THD0; 1068 1069 /* 0x1704 */ 1070 struct { 1071 RK_U32 lvl4_intra_cst_thd2 : 12; 1072 RK_U32 reserve0 : 4; 1073 RK_U32 lvl4_intra_cst_thd3 : 12; 1074 RK_U32 reserve1 : 4; 1075 } lvl32_intra_CST_THD1; 1076 1077 /* 0x1708 */ 1078 struct { 1079 RK_U32 lvl8_intra_chrm_cst_thd0 : 12; 1080 RK_U32 reserve0 : 4; 1081 RK_U32 lvl8_intra_chrm_cst_thd1 : 12; 1082 RK_U32 reserve1 : 4; 1083 } lvl16_intra_CST_THD0; 1084 1085 /* 0x170c */ 1086 struct { 1087 RK_U32 lvl8_intra_chrm_cst_thd2 : 12; 1088 RK_U32 reserve0 : 4; 1089 RK_U32 lvl8_intra_chrm_cst_thd3 : 12; 1090 RK_U32 reserve1 : 4; 1091 } lvl16_intra_CST_THD1; 1092 1093 /* 0x1710 */ 1094 struct { 1095 RK_U32 lvl8_intra_cst_thd0 : 12; 1096 RK_U32 reserve0 : 4; 1097 RK_U32 lvl8_intra_cst_thd1 : 12; 1098 RK_U32 reserve1 : 4; 1099 } lvl8_intra_CST_THD0; // only 264 1100 1101 /* 0x1714 */ 1102 struct { 1103 RK_U32 lvl8_intra_cst_thd2 : 12; 1104 RK_U32 reserve0 : 4; 1105 RK_U32 lvl8_intra_cst_thd3 : 12; 1106 RK_U32 reserve1 : 4; 1107 } lvl8_intra_CST_THD1; // only 264 1108 1109 /* 0x1718 */ 1110 struct { 1111 RK_U32 lvl16_intra_ul_cst_thld : 12; 1112 RK_U32 reserve0 : 20; 1113 } lvl16_intra_UL_CST_THD; // only 264 1114 1115 /* 0x171c */ 1116 struct { 1117 RK_U32 lvl8_intra_cst_wgt0 : 8; 1118 1119 RK_U32 lvl8_intra_cst_wgt1 : 8; 1120 1121 RK_U32 lvl8_intra_cst_wgt2 : 8; 1122 1123 RK_U32 lvl8_intra_cst_wgt3 : 8; 1124 1125 } lvl32_intra_CST_WGT0; 1126 1127 /* 0x1720 */ 1128 struct { 1129 RK_U32 lvl4_intra_cst_wgt0 : 8; 1130 1131 RK_U32 lvl4_intra_cst_wgt1 : 8; 1132 1133 RK_U32 lvl4_intra_cst_wgt2 : 8; 1134 1135 RK_U32 lvl4_intra_cst_wgt3 : 8; 1136 1137 } lvl32_intra_CST_WGT1; // 1138 1139 /* 0x1724 */ 1140 struct { 1141 RK_U32 lvl16_intra_cst_wgt0 : 8; 1142 1143 RK_U32 lvl16_intra_cst_wgt1 : 8; 1144 1145 RK_U32 lvl16_intra_cst_wgt2 : 8; 1146 1147 RK_U32 lvl16_intra_cst_wgt3 : 8; 1148 1149 } lvl16_intra_CST_WGT0; // 7.10 1150 1151 /* 0x1728 */ 1152 struct { 1153 RK_U32 lvl8_intra_chrm_cst_wgt0 : 8; 1154 1155 RK_U32 lvl8_intra_chrm_cst_wgt1 : 8; 1156 1157 RK_U32 lvl8_intra_chrm_cst_wgt2 : 8; 1158 1159 RK_U32 lvl8_intra_chrm_cst_wgt3 : 8; 1160 1161 } lvl16_intra_CST_WGT1; // 1162 1163 /* 0x172c */ 1164 RK_U32 reserved_1483; 1165 1166 /* 0x00001730 reg1484 */ 1167 struct { 1168 RK_U32 quant_f_bias_I : 10; 1169 RK_U32 quant_f_bias_P : 10; 1170 RK_U32 reserve : 12; 1171 } RDO_QUANT; 1172 1173 /* 0x1734 - 0x173c */ 1174 RK_U32 reserved1485_1487[3]; 1175 1176 /* 0x00001740 reg1488 */ 1177 // atr 1178 struct { 1179 RK_U32 atr_thd0 : 12; 1180 RK_U32 reserve0 : 4; 1181 RK_U32 atr_thd1 : 12; 1182 RK_U32 reserve1 : 4; 1183 } ATR_THD0; // only 264 1184 1185 /* 0x1744 */ 1186 struct { 1187 RK_U32 atr_thd2 : 12; 1188 RK_U32 reserve0 : 4; 1189 RK_U32 atr_thdqp : 6; 1190 RK_U32 reserve1 : 10; 1191 } ATR_THD1; // only 264 1192 1193 /* 0x1748 */ 1194 struct { 1195 RK_U32 atr1_thd0 : 12; 1196 RK_U32 reserve0 : 4; 1197 RK_U32 atr1_thd1 : 12; 1198 RK_U32 reserve1 : 4; 1199 } ATR_THD10; // only 264 1200 1201 /* 0x174c */ 1202 struct { 1203 RK_U32 atr1_thd2 : 12; 1204 RK_U32 reserve1 : 20; 1205 } ATR_THD11; // only 264 1206 1207 // /* 0x1748 - 0x174c */ 1208 // RK_U32 reserved1490_1491[2]; 1209 1210 /* 0x00001750 reg1492 */ 1211 struct { 1212 RK_U32 lvl16_atr_wgt0 : 8; 1213 RK_U32 lvl16_atr_wgt1 : 8; 1214 RK_U32 lvl16_atr_wgt2 : 8; 1215 RK_U32 reserved : 8; 1216 } Lvl16_ATR_WGT; // only 264 1217 1218 /* 0x1754 */ 1219 struct { 1220 RK_U32 lvl8_atr_wgt0 : 8; 1221 RK_U32 lvl8_atr_wgt1 : 8; 1222 RK_U32 lvl8_atr_wgt2 : 8; 1223 RK_U32 reserved : 8; 1224 } Lvl8_ATR_WGT; // only 264 1225 1226 /* 0x1758 */ 1227 struct { 1228 RK_U32 lvl4_atr_wgt0 : 8; 1229 RK_U32 lvl4_atr_wgt1 : 8; 1230 RK_U32 lvl4_atr_wgt2 : 8; 1231 RK_U32 reserved : 8; 1232 } Lvl4_ATR_WGT; // only 264 1233 1234 /* 0x175c */ 1235 RK_U32 reserved_1495; 1236 1237 /* 0x00001760 reg1496 */ 1238 struct { 1239 RK_U32 cime_sad_mod_sel : 1; 1240 RK_U32 cime_sad_use_big_block : 1; 1241 RK_U32 cime_pmv_set_zero : 1; 1242 RK_U32 reserved : 5; 1243 RK_U32 cime_pmv_num : 2; 1244 RK_U32 reserved1 : 22; 1245 } cime_sqi_cfg; 1246 1247 /* 0x00001764 reg1497 */ 1248 struct { 1249 RK_U32 cime_mvd_th0 : 9; 1250 RK_U32 reserved : 1; 1251 RK_U32 cime_mvd_th1 : 9; 1252 RK_U32 reserved1 : 1; 1253 RK_U32 cime_mvd_th2 : 9; 1254 RK_U32 reserved2 : 3; 1255 } cime_sqi_thd; 1256 1257 /* 0x00001768 reg1498 */ 1258 struct { 1259 RK_U32 cime_multi0 : 10; 1260 RK_U32 reserved : 6; 1261 RK_U32 cime_multi1 : 10; 1262 RK_U32 reserved1 : 6; 1263 } cime_sqi_multi0; 1264 1265 /* 0x0000176c reg1499 */ 1266 struct { 1267 RK_U32 cime_multi2 : 10; 1268 RK_U32 reserved : 6; 1269 RK_U32 cime_multi3 : 10; 1270 RK_U32 reserved1 : 6; 1271 } cime_sqi_multi1; 1272 1273 /* 0x00001770 reg1500 */ 1274 struct { 1275 RK_U32 cime_sad_th0 : 12; 1276 RK_U32 reserved : 4; 1277 RK_U32 rime_mvd_th0 : 4; 1278 RK_U32 reserved1 : 4; 1279 RK_U32 rime_mvd_th1 : 4; 1280 RK_U32 reserved2 : 4; 1281 } rime_sqi_thd; 1282 1283 /* 0x00001774 reg1501 */ 1284 struct { 1285 RK_U32 rime_multi0 : 10; 1286 RK_U32 rime_multi1 : 10; 1287 RK_U32 rime_multi2 : 10; 1288 RK_U32 reserved : 2; 1289 } rime_sqi_multi; 1290 1291 /* 0x00001778 reg1502 */ 1292 struct { 1293 RK_U32 cime_sad_pu16_th : 12; 1294 RK_U32 reserved : 4; 1295 RK_U32 cime_sad_pu32_th : 12; 1296 RK_U32 reserved1 : 4; 1297 } fme_sqi_thd0; 1298 1299 /* 0x0000177c reg1503 */ 1300 struct { 1301 RK_U32 cime_sad_pu64_th : 12; 1302 RK_U32 reserved : 4; 1303 RK_U32 move_lambda : 4; 1304 RK_U32 reserved1 : 12; 1305 } fme_sqi_thd1; 1306 1307 /* 0x1780 - 0x17fc */ 1308 RK_U32 reserved1504_1535[32]; 1309 1310 /* 0x00001800 reg1536 - 0x000018cc reg1587 */ 1311 // struct { 1312 // RK_U32 wgt_qp0 : 20; 1313 // RK_U32 reserved : 12; 1314 // } iprd_wgt_qp_hevc_0_51[52]; 1315 RK_U32 iprd_wgt_qp_hevc_0_51[52]; 1316 1317 /* 0x18d0 - 0x18fc */ 1318 RK_U32 reserved1588_1599[12]; 1319 1320 /* wgt_qp48_grpa */ 1321 /* 0x00001900 reg1600 - 0x19cc */ 1322 RK_U32 rdo_wgta_qp_grpa_0_51[52]; 1323 } Vepu580Section3; 1324 1325 /* class: rdo/q_i */ 1326 /* 0x00002000 reg2048 - 0x00002c98 reg2854 */ 1327 typedef struct Vepu580RdoCfg_t { 1328 /* 0x00002000 reg2048 */ 1329 struct { 1330 RK_U32 atf_pskip_en : 1; 1331 RK_U32 reserved : 31; 1332 } rdo_sqi_cfg; 1333 1334 /* 0x00002004 reg2049 */ 1335 struct { 1336 RK_U32 cu64_rdo_inter_cime_thd0 : 12; 1337 RK_U32 reserved : 4; 1338 RK_U32 cu64_rdo_inter_cime_thd1 : 12; 1339 RK_U32 reserved1 : 4; 1340 } rdo_b64_inter_cime_thd0; 1341 1342 /* 0x00002008 reg2050 */ 1343 struct { 1344 RK_U32 cu64_rdo_inter_cime_thd2 : 12; 1345 RK_U32 reserved : 20; 1346 } rdo_b64_inter_cime_thd1; 1347 1348 /* 0x0000200c reg2051 */ 1349 struct { 1350 RK_U32 cu64_rdo_inter_var_thd00 : 12; 1351 RK_U32 reserved : 4; 1352 RK_U32 cu64_rdo_inter_var_thd01 : 12; 1353 RK_U32 reserved1 : 4; 1354 } rdo_b64_inter_var_thd0; 1355 1356 /* 0x00002010 reg2052 */ 1357 struct { 1358 RK_U32 cu64_rdo_inter_var_thd10 : 12; 1359 RK_U32 reserved : 4; 1360 RK_U32 cu64_rdo_inter_var_thd11 : 12; 1361 RK_U32 reserved1 : 4; 1362 } rdo_b64_inter_var_thd1; 1363 1364 /* 0x00002014 reg2053 */ 1365 struct { 1366 RK_U32 cu64_rdo_inter_var_thd20 : 12; 1367 RK_U32 reserved : 4; 1368 RK_U32 cu64_rdo_inter_var_thd21 : 12; 1369 RK_U32 reserved1 : 4; 1370 } rdo_b64_inter_var_thd2; 1371 1372 /* 0x00002018 reg2054 */ 1373 struct { 1374 RK_U32 cu64_rdo_inter_var_thd30 : 12; 1375 RK_U32 reserved : 4; 1376 RK_U32 cu64_rdo_inter_var_thd31 : 12; 1377 RK_U32 reserved1 : 4; 1378 } rdo_b64_inter_var_thd3; 1379 1380 /* 0x0000201c reg2055 */ 1381 struct { 1382 RK_U32 cu64_rdo_inter_atf_wgt00 : 8; 1383 RK_U32 cu64_rdo_inter_atf_wgt01 : 8; 1384 RK_U32 cu64_rdo_inter_atf_wgt02 : 8; 1385 RK_U32 reserved : 8; 1386 } rdo_b64_inter_atf_wgt0; 1387 1388 /* 0x00002020 reg2056 */ 1389 struct { 1390 RK_U32 cu64_rdo_inter_atf_wgt10 : 8; 1391 RK_U32 cu64_rdo_inter_atf_wgt11 : 8; 1392 RK_U32 cu64_rdo_inter_atf_wgt12 : 8; 1393 RK_U32 reserved : 8; 1394 } rdo_b64_inter_atf_wgt1; 1395 1396 /* 0x00002024 reg2057 */ 1397 struct { 1398 RK_U32 cu64_rdo_inter_atf_wgt20 : 8; 1399 RK_U32 cu64_rdo_inter_atf_wgt21 : 8; 1400 RK_U32 cu64_rdo_inter_atf_wgt22 : 8; 1401 RK_U32 reserved : 8; 1402 } rdo_b64_inter_atf_wgt2; 1403 1404 /* 0x00002028 reg2058 */ 1405 struct { 1406 RK_U32 cu64_rdo_inter_atf_wgt30 : 8; 1407 RK_U32 cu64_rdo_inter_atf_wgt31 : 8; 1408 RK_U32 cu64_rdo_inter_atf_wgt32 : 8; 1409 RK_U32 reserved : 8; 1410 } rdo_b64_inter_atf_wgt3; 1411 1412 /* 0x0000202c reg2059 */ 1413 struct { 1414 RK_U32 cu64_rdo_skip_cime_thd0 : 12; 1415 RK_U32 reserved : 4; 1416 RK_U32 cu64_rdo_skip_cime_thd1 : 12; 1417 RK_U32 reserved1 : 4; 1418 } rdo_b64_skip_cime_thd0; 1419 1420 /* 0x00002030 reg2060 */ 1421 struct { 1422 RK_U32 cu64_rdo_skip_cime_thd2 : 12; 1423 RK_U32 reserved : 4; 1424 RK_U32 cu64_rdo_skip_cime_thd3 : 12; 1425 RK_U32 reserved1 : 4; 1426 } rdo_b64_skip_cime_thd1; 1427 1428 /* 0x00002034 reg2061 */ 1429 struct { 1430 RK_U32 cu64_rdo_skip_var_thd10 : 12; 1431 RK_U32 reserved : 4; 1432 RK_U32 cu64_rdo_skip_var_thd11 : 12; 1433 RK_U32 reserved1 : 4; 1434 } rdo_b64_skip_var_thd0; 1435 1436 /* 0x00002038 reg2062 */ 1437 struct { 1438 RK_U32 cu64_rdo_skip_var_thd20 : 12; 1439 RK_U32 reserved : 4; 1440 RK_U32 cu64_rdo_skip_var_thd21 : 12; 1441 RK_U32 reserved1 : 4; 1442 } rdo_b64_skip_var_thd1; 1443 1444 /* 0x0000203c reg2063 */ 1445 struct { 1446 RK_U32 cu64_rdo_skip_var_thd30 : 12; 1447 RK_U32 reserved : 4; 1448 RK_U32 cu64_rdo_skip_var_thd31 : 12; 1449 RK_U32 reserved1 : 4; 1450 } rdo_b64_skip_var_thd2; 1451 1452 /* 0x00002040 reg2064 */ 1453 struct { 1454 RK_U32 cu64_rdo_skip_var_thd40 : 12; 1455 RK_U32 reserved : 4; 1456 RK_U32 cu64_rdo_skip_var_thd41 : 12; 1457 RK_U32 reserved1 : 4; 1458 } rdo_b64_skip_var_thd3; 1459 1460 /* 0x00002044 reg2065 */ 1461 struct { 1462 RK_U32 cu64_rdo_skip_atf_wgt00 : 8; 1463 RK_U32 cu64_rdo_skip_atf_wgt10 : 8; 1464 RK_U32 cu64_rdo_skip_atf_wgt11 : 8; 1465 RK_U32 cu64_rdo_skip_atf_wgt12 : 8; 1466 } rdo_b64_skip_atf_wgt0; 1467 1468 /* 0x00002048 reg2066 */ 1469 struct { 1470 RK_U32 cu64_rdo_skip_atf_wgt20 : 8; 1471 RK_U32 cu64_rdo_skip_atf_wgt21 : 8; 1472 RK_U32 cu64_rdo_skip_atf_wgt22 : 8; 1473 RK_U32 reserved : 8; 1474 } rdo_b64_skip_atf_wgt1; 1475 1476 /* 0x0000204c reg2067 */ 1477 struct { 1478 RK_U32 cu64_rdo_skip_atf_wgt30 : 8; 1479 RK_U32 cu64_rdo_skip_atf_wgt31 : 8; 1480 RK_U32 cu64_rdo_skip_atf_wgt32 : 8; 1481 RK_U32 reserved : 8; 1482 } rdo_b64_skip_atf_wgt2; 1483 1484 /* 0x00002050 reg2068 */ 1485 struct { 1486 RK_U32 cu64_rdo_skip_atf_wgt40 : 8; 1487 RK_U32 cu64_rdo_skip_atf_wgt41 : 8; 1488 RK_U32 cu64_rdo_skip_atf_wgt42 : 8; 1489 RK_U32 reserved : 8; 1490 } rdo_b64_skip_atf_wgt3; 1491 1492 /* 0x00002054 reg2069 */ 1493 struct { 1494 RK_U32 cu32_rdo_intra_cime_thd0 : 12; 1495 RK_U32 reserved : 4; 1496 RK_U32 cu32_rdo_intra_cime_thd1 : 12; 1497 RK_U32 reserved1 : 4; 1498 } rdo_b32_intra_cime_thd0; 1499 1500 /* 0x00002058 reg2070 */ 1501 struct { 1502 RK_U32 cu32_rdo_intra_cime_thd2 : 12; 1503 RK_U32 reserved : 20; 1504 } rdo_b32_intra_cime_thd1; 1505 1506 /* 0x0000205c reg2071 */ 1507 struct { 1508 RK_U32 cu32_rdo_intra_var_thd00 : 12; 1509 RK_U32 reserved : 4; 1510 RK_U32 cu32_rdo_intra_var_thd01 : 12; 1511 RK_U32 reserved1 : 4; 1512 } rdo_b32_intra_var_thd0; 1513 1514 /* 0x00002060 reg2072 */ 1515 struct { 1516 RK_U32 cu32_rdo_intra_var_thd10 : 12; 1517 RK_U32 reserved : 4; 1518 RK_U32 cu32_rdo_intra_var_thd11 : 12; 1519 RK_U32 reserved1 : 4; 1520 } rdo_b32_intra_var_thd1; 1521 1522 /* 0x00002064 reg2073 */ 1523 struct { 1524 RK_U32 cu32_rdo_intra_var_thd20 : 12; 1525 RK_U32 reserved : 4; 1526 RK_U32 cu32_rdo_intra_var_thd21 : 12; 1527 RK_U32 reserved1 : 4; 1528 } rdo_b32_intra_var_thd2; 1529 1530 /* 0x00002068 reg2074 */ 1531 struct { 1532 RK_U32 cu32_rdo_intra_var_thd30 : 12; 1533 RK_U32 reserved : 4; 1534 RK_U32 cu32_rdo_intra_var_thd31 : 12; 1535 RK_U32 reserved1 : 4; 1536 } rdo_b32_intra_var_thd3; 1537 1538 /* 0x0000206c reg2075 */ 1539 struct { 1540 RK_U32 cu32_rdo_intra_atf_wgt00 : 8; 1541 RK_U32 cu32_rdo_intra_atf_wgt01 : 8; 1542 RK_U32 cu32_rdo_intra_atf_wgt02 : 8; 1543 RK_U32 reserved : 8; 1544 } rdo_b32_intra_atf_wgt0; 1545 1546 /* 0x00002070 reg2076 */ 1547 struct { 1548 RK_U32 cu32_rdo_intra_atf_wgt10 : 8; 1549 RK_U32 cu32_rdo_intra_atf_wgt11 : 8; 1550 RK_U32 cu32_rdo_intra_atf_wgt12 : 8; 1551 RK_U32 reserved : 8; 1552 } rdo_b32_intra_atf_wgt1; 1553 1554 /* 0x00002074 reg2077 */ 1555 struct { 1556 RK_U32 cu32_rdo_intra_atf_wgt20 : 8; 1557 RK_U32 cu32_rdo_intra_atf_wgt21 : 8; 1558 RK_U32 cu32_rdo_intra_atf_wgt22 : 8; 1559 RK_U32 reserved : 8; 1560 } rdo_b32_intra_atf_wgt2; 1561 1562 /* 0x00002078 reg2078 */ 1563 struct { 1564 RK_U32 cu32_rdo_intra_atf_wgt30 : 8; 1565 RK_U32 cu32_rdo_intra_atf_wgt31 : 8; 1566 RK_U32 cu32_rdo_intra_atf_wgt32 : 8; 1567 RK_U32 reserved : 8; 1568 } rdo_b32_intra_atf_wgt3; 1569 1570 /* 0x0000207c reg2079 */ 1571 struct { 1572 RK_U32 cu32_rdo_inter_cime_thd0 : 12; 1573 RK_U32 reserved : 4; 1574 RK_U32 cu32_rdo_inter_cime_thd1 : 12; 1575 RK_U32 reserved1 : 4; 1576 } rdo_b32_inter_cime_thd0; 1577 1578 /* 0x00002080 reg2080 */ 1579 struct { 1580 RK_U32 cu32_rdo_inter_cime_thd2 : 12; 1581 RK_U32 reserved : 20; 1582 } rdo_b32_inter_cime_thd1; 1583 1584 /* 0x00002084 reg2081 */ 1585 struct { 1586 RK_U32 cu32_rdo_inter_var_thd00 : 12; 1587 RK_U32 reserved : 4; 1588 RK_U32 cu32_rdo_inter_var_thd01 : 12; 1589 RK_U32 reserved1 : 4; 1590 } rdo_b32_inter_var_thd0; 1591 1592 /* 0x00002088 reg2082 */ 1593 struct { 1594 RK_U32 cu32_rdo_inter_var_thd10 : 12; 1595 RK_U32 reserved : 4; 1596 RK_U32 cu32_rdo_inter_var_thd11 : 12; 1597 RK_U32 reserved1 : 4; 1598 } rdo_b32_inter_var_thd1; 1599 1600 /* 0x0000208c reg2083 */ 1601 struct { 1602 RK_U32 cu32_rdo_inter_var_thd20 : 12; 1603 RK_U32 reserved : 4; 1604 RK_U32 cu32_rdo_inter_var_thd21 : 12; 1605 RK_U32 reserved1 : 4; 1606 } rdo_b32_inter_var_thd2; 1607 1608 /* 0x00002090 reg2084 */ 1609 struct { 1610 RK_U32 cu32_rdo_inter_var_thd30 : 12; 1611 RK_U32 reserved : 4; 1612 RK_U32 cu32_rdo_inter_var_thd31 : 12; 1613 RK_U32 reserved1 : 4; 1614 } rdo_b32_inter_var_thd3; 1615 1616 /* 0x00002094 reg2085 */ 1617 struct { 1618 RK_U32 cu32_rdo_inter_atf_wgt00 : 8; 1619 RK_U32 cu32_rdo_inter_atf_wgt01 : 8; 1620 RK_U32 cu32_rdo_inter_atf_wgt02 : 8; 1621 RK_U32 reserved : 8; 1622 } rdo_b32_inter_atf_wgt0; 1623 1624 /* 0x00002098 reg2086 */ 1625 struct { 1626 RK_U32 cu32_rdo_inter_atf_wgt10 : 8; 1627 RK_U32 cu32_rdo_inter_atf_wgt11 : 8; 1628 RK_U32 cu32_rdo_inter_atf_wgt12 : 8; 1629 RK_U32 reserved : 8; 1630 } rdo_b32_inter_atf_wgt1; 1631 1632 /* 0x0000209c reg2087 */ 1633 struct { 1634 RK_U32 cu32_rdo_inter_atf_wgt20 : 8; 1635 RK_U32 cu32_rdo_inter_atf_wgt21 : 8; 1636 RK_U32 cu32_rdo_inter_atf_wgt22 : 8; 1637 RK_U32 reserved : 8; 1638 } rdo_b32_inter_atf_wgt2; 1639 1640 /* 0x000020a0 reg2088 */ 1641 struct { 1642 RK_U32 cu32_rdo_inter_atf_wgt30 : 8; 1643 RK_U32 cu32_rdo_inter_atf_wgt31 : 8; 1644 RK_U32 cu32_rdo_inter_atf_wgt32 : 8; 1645 RK_U32 reserved : 8; 1646 } rdo_b32_inter_atf_wgt3; 1647 1648 /* 0x000020a4 reg2089 */ 1649 struct { 1650 RK_U32 cu32_rdo_skip_cime_thd0 : 12; 1651 RK_U32 reserved : 4; 1652 RK_U32 cu32_rdo_skip_cime_thd1 : 12; 1653 RK_U32 reserved1 : 4; 1654 } rdo_b32_skip_cime_thd0; 1655 1656 /* 0x000020a8 reg2090 */ 1657 struct { 1658 RK_U32 cu32_rdo_skip_cime_thd2 : 12; 1659 RK_U32 reserved : 4; 1660 RK_U32 cu32_rdo_skip_cime_thd3 : 12; 1661 RK_U32 reserved1 : 4; 1662 } rdo_b32_skip_cime_thd1; 1663 1664 /* 0x000020ac reg2091 */ 1665 struct { 1666 RK_U32 cu32_rdo_skip_var_thd10 : 12; 1667 RK_U32 reserved : 4; 1668 RK_U32 cu32_rdo_skip_var_thd11 : 12; 1669 RK_U32 reserved1 : 4; 1670 } rdo_b32_sskip_var_thd0; 1671 1672 /* 0x000020b0 reg2092 */ 1673 struct { 1674 RK_U32 cu32_rdo_skip_var_thd20 : 12; 1675 RK_U32 reserved : 4; 1676 RK_U32 cu32_rdo_skip_var_thd21 : 12; 1677 RK_U32 reserved1 : 4; 1678 } rdo_b32_sskip_var_thd1; 1679 1680 /* 0x000020b4 reg2093 */ 1681 struct { 1682 RK_U32 cu32_rdo_skip_var_thd30 : 12; 1683 RK_U32 reserved : 4; 1684 RK_U32 cu32_rdo_skip_var_thd31 : 12; 1685 RK_U32 reserved1 : 4; 1686 } rdo_b32_sskip_var_thd2; 1687 1688 /* 0x000020b8 reg2094 */ 1689 struct { 1690 RK_U32 cu32_rdo_skip_var_thd40 : 12; 1691 RK_U32 reserved : 4; 1692 RK_U32 cu32_rdo_skip_var_thd41 : 12; 1693 RK_U32 reserved1 : 4; 1694 } rdo_b32_sskip_var_thd3; 1695 1696 /* 0x000020bc reg2095 */ 1697 struct { 1698 RK_U32 cu32_rdo_skip_atf_wgt00 : 8; 1699 RK_U32 cu32_rdo_skip_atf_wgt10 : 8; 1700 RK_U32 cu32_rdo_skip_atf_wgt11 : 8; 1701 RK_U32 cu32_rdo_skip_atf_wgt12 : 8; 1702 } rdo_b32_skip_atf_wgt0; 1703 1704 /* 0x000020c0 reg2096 */ 1705 struct { 1706 RK_U32 cu32_rdo_skip_atf_wgt20 : 8; 1707 RK_U32 cu32_rdo_skip_atf_wgt21 : 8; 1708 RK_U32 cu32_rdo_skip_atf_wgt22 : 8; 1709 RK_U32 reserved : 8; 1710 } rdo_b32_skip_atf_wgt1; 1711 1712 /* 0x000020c4 reg2097 */ 1713 struct { 1714 RK_U32 cu32_rdo_skip_atf_wgt30 : 8; 1715 RK_U32 cu32_rdo_skip_atf_wgt31 : 8; 1716 RK_U32 cu32_rdo_skip_atf_wgt32 : 8; 1717 RK_U32 reserved : 8; 1718 } rdo_b32_skip_atf_wgt2; 1719 1720 /* 0x000020c8 reg2098 */ 1721 struct { 1722 RK_U32 cu32_rdo_skip_atf_wgt40 : 8; 1723 RK_U32 cu32_rdo_skip_atf_wgt41 : 8; 1724 RK_U32 cu32_rdo_skip_atf_wgt42 : 8; 1725 RK_U32 reserved : 8; 1726 } rdo_b32_skip_atf_wgt3; 1727 1728 /* 0x000020cc reg2099 */ 1729 struct { 1730 RK_U32 atf_rdo_intra_cime_thd0 : 12; 1731 RK_U32 reserved : 4; 1732 RK_U32 atf_rdo_intra_cime_thd1 : 12; 1733 RK_U32 reserved1 : 4; 1734 } rdo_intra_cime_thd0; 1735 1736 /* 0x000020d0 reg2100 */ 1737 struct { 1738 RK_U32 atf_rdo_intra_cime_thd2 : 12; 1739 RK_U32 reserved : 20; 1740 } rdo_intra_cime_thd1; 1741 1742 /* 0x000020d4 reg2101 */ 1743 struct { 1744 RK_U32 atf_rdo_intra_var_thd00 : 12; 1745 RK_U32 reserved : 4; 1746 RK_U32 atf_rdo_intra_var_thd01 : 12; 1747 RK_U32 reserved1 : 4; 1748 } rdo_intra_var_thd0; 1749 1750 /* 0x000020d8 reg2102 */ 1751 struct { 1752 RK_U32 atf_rdo_intra_var_thd10 : 12; 1753 RK_U32 reserved : 4; 1754 RK_U32 atf_rdo_intra_var_thd11 : 12; 1755 RK_U32 reserved1 : 4; 1756 } rdo_intra_var_thd1; 1757 1758 /* 0x000020dc reg2103 */ 1759 struct { 1760 RK_U32 atf_rdo_intra_var_thd20 : 12; 1761 RK_U32 reserved : 4; 1762 RK_U32 atf_rdo_intra_var_thd21 : 12; 1763 RK_U32 reserved1 : 4; 1764 } rdo_intra_var_thd2; 1765 1766 /* 0x000020e0 reg2104 */ 1767 struct { 1768 RK_U32 atf_rdo_intra_var_thd30 : 12; 1769 RK_U32 reserved : 4; 1770 RK_U32 atf_rdo_intra_var_thd31 : 12; 1771 RK_U32 reserved1 : 4; 1772 } rdo_intra_var_thd3; 1773 1774 /* 0x000020e4 reg2105 */ 1775 struct { 1776 RK_U32 atf_rdo_intra_wgt00 : 8; 1777 RK_U32 atf_rdo_intra_wgt01 : 8; 1778 RK_U32 atf_rdo_intra_wgt02 : 8; 1779 RK_U32 reserved : 8; 1780 } rdo_intra_atf_wgt0; 1781 1782 /* 0x000020e8 reg2106 */ 1783 struct { 1784 RK_U32 atf_rdo_intra_wgt10 : 8; 1785 RK_U32 atf_rdo_intra_wgt11 : 8; 1786 RK_U32 atf_rdo_intra_wgt12 : 8; 1787 RK_U32 reserved : 8; 1788 } rdo_intra_atf_wgt1; 1789 1790 /* 0x000020ec reg2107 */ 1791 struct { 1792 RK_U32 atf_rdo_intra_wgt20 : 8; 1793 RK_U32 atf_rdo_intra_wgt21 : 8; 1794 RK_U32 atf_rdo_intra_wgt22 : 8; 1795 RK_U32 reserved : 8; 1796 } rdo_intra_atf_wgt2; 1797 1798 /* 0x000020f0 reg2108 */ 1799 struct { 1800 RK_U32 atf_rdo_intra_wgt30 : 8; 1801 RK_U32 atf_rdo_intra_wgt31 : 8; 1802 RK_U32 atf_rdo_intra_wgt32 : 8; 1803 RK_U32 reserved : 8; 1804 } rdo_intra_atf_wgt3; 1805 1806 /* 0x000020f4 reg2109 */ 1807 struct { 1808 RK_U32 cu16_rdo_inter_cime_thd0 : 12; 1809 RK_U32 reserved : 4; 1810 RK_U32 cu16_rdo_inter_cime_thd1 : 12; 1811 RK_U32 reserved1 : 4; 1812 } rdo_b16_inter_cime_thd0; 1813 1814 /* 0x000020f8 reg2110 */ 1815 struct { 1816 RK_U32 cu16_rdo_inter_cime_thd2 : 12; 1817 RK_U32 reserved : 20; 1818 } rdo_b16_inter_cime_thd1; 1819 1820 /* 0x000020fc reg2111 */ 1821 struct { 1822 RK_U32 cu16_rdo_inter_var_thd00 : 12; 1823 RK_U32 reserved : 4; 1824 RK_U32 cu16_rdo_inter_var_thd01 : 12; 1825 RK_U32 reserved1 : 4; 1826 } rdo_b16_inter_var_thd0; 1827 1828 /* 0x00002100 reg2112 */ 1829 struct { 1830 RK_U32 cu16_rdo_inter_var_thd10 : 12; 1831 RK_U32 reserved : 4; 1832 RK_U32 cu16_rdo_inter_var_thd11 : 12; 1833 RK_U32 reserved1 : 4; 1834 } rdo_b16_inter_var_thd1; 1835 1836 /* 0x00002104 reg2113 */ 1837 struct { 1838 RK_U32 cu16_rdo_inter_var_thd20 : 12; 1839 RK_U32 reserved : 4; 1840 RK_U32 cu16_rdo_inter_var_thd21 : 12; 1841 RK_U32 reserved1 : 4; 1842 } rdo_b16_inter_var_thd2; 1843 1844 /* 0x00002108 reg2114 */ 1845 struct { 1846 RK_U32 cu16_rdo_inter_var_thd30 : 12; 1847 RK_U32 reserved : 4; 1848 RK_U32 cu16_rdo_inter_var_thd31 : 12; 1849 RK_U32 reserved1 : 4; 1850 } rdo_b16_inter_var_thd3; 1851 1852 /* 0x0000210c reg2115 */ 1853 struct { 1854 RK_U32 cu16_rdo_inter_atf_wgt00 : 8; 1855 RK_U32 cu16_rdo_inter_atf_wgt01 : 8; 1856 RK_U32 cu16_rdo_inter_atf_wgt02 : 8; 1857 RK_U32 reserved : 8; 1858 } rdo_b16_inter_atf_wgt0; 1859 1860 /* 0x00002110 reg2116 */ 1861 struct { 1862 RK_U32 cu16_rdo_inter_atf_wgt10 : 8; 1863 RK_U32 cu16_rdo_inter_atf_wgt11 : 8; 1864 RK_U32 cu16_rdo_inter_atf_wgt12 : 8; 1865 RK_U32 reserved : 8; 1866 } rdo_b16_inter_atf_wgt1; 1867 1868 /* 0x00002114 reg2117 */ 1869 struct { 1870 RK_U32 cu16_rdo_inter_atf_wgt20 : 8; 1871 RK_U32 cu16_rdo_inter_atf_wgt21 : 8; 1872 RK_U32 cu16_rdo_inter_atf_wgt22 : 8; 1873 RK_U32 reserved : 8; 1874 } rdo_b16_inter_atf_wgt2; 1875 1876 /* 0x00002118 reg2118 */ 1877 struct { 1878 RK_U32 cu16_rdo_inter_atf_wgt30 : 8; 1879 RK_U32 cu16_rdo_inter_atf_wgt31 : 8; 1880 RK_U32 cu16_rdo_inter_atf_wgt32 : 8; 1881 RK_U32 reserved : 8; 1882 } rdo_b16_inter_atf_wgt3; 1883 1884 /* 0x0000211c reg2119 */ 1885 struct { 1886 RK_U32 atf_rdo_skip_cime_thd0 : 12; 1887 RK_U32 reserved : 4; 1888 RK_U32 atf_rdo_skip_cime_thd1 : 12; 1889 RK_U32 reserved1 : 4; 1890 } rdo_skip_cime_thd0; 1891 1892 /* 0x00002120 reg2120 */ 1893 struct { 1894 RK_U32 atf_rdo_skip_cime_thd2 : 12; 1895 RK_U32 reserved : 4; 1896 RK_U32 atf_rdo_skip_cime_thd3 : 12; 1897 RK_U32 reserved1 : 4; 1898 } rdo_skip_cime_thd1; 1899 1900 /* 0x00002124 reg2121 */ 1901 struct { 1902 RK_U32 atf_rdo_skip_var_thd10 : 12; 1903 RK_U32 reserved : 4; 1904 RK_U32 atf_rdo_skip_var_thd11 : 12; 1905 RK_U32 reserved1 : 4; 1906 } rdo_skip_var_thd0; 1907 1908 /* 0x00002128 reg2122 */ 1909 struct { 1910 RK_U32 atf_rdo_skip_var_thd20 : 12; 1911 RK_U32 reserved : 4; 1912 RK_U32 atf_rdo_skip_var_thd21 : 12; 1913 RK_U32 reserved1 : 4; 1914 } rdo_skip_var_thd1; 1915 1916 /* 0x0000212c reg2123 */ 1917 struct { 1918 RK_U32 atf_rdo_skip_var_thd30 : 12; 1919 RK_U32 reserved : 4; 1920 RK_U32 atf_rdo_skip_var_thd31 : 12; 1921 RK_U32 reserved1 : 4; 1922 } rdo_skip_var_thd2; 1923 1924 /* 0x00002130 reg2124 */ 1925 struct { 1926 RK_U32 atf_rdo_skip_var_thd40 : 12; 1927 RK_U32 reserved : 4; 1928 RK_U32 atf_rdo_skip_var_thd41 : 12; 1929 RK_U32 reserved1 : 4; 1930 } rdo_skip_var_thd3; 1931 1932 /* 0x00002134 reg2125 */ 1933 struct { 1934 RK_U32 atf_rdo_skip_atf_wgt00 : 8; 1935 RK_U32 atf_rdo_skip_atf_wgt10 : 8; 1936 RK_U32 atf_rdo_skip_atf_wgt11 : 8; 1937 RK_U32 atf_rdo_skip_atf_wgt12 : 8; 1938 } rdo_skip_atf_wgt0; 1939 1940 /* 0x00002138 reg2126 */ 1941 struct { 1942 RK_U32 atf_rdo_skip_atf_wgt20 : 8; 1943 RK_U32 atf_rdo_skip_atf_wgt21 : 8; 1944 RK_U32 atf_rdo_skip_atf_wgt22 : 8; 1945 RK_U32 reserved : 8; 1946 } rdo_skip_atf_wgt1; 1947 1948 /* 0x0000213c reg2127 */ 1949 struct { 1950 RK_U32 atf_rdo_skip_atf_wgt30 : 8; 1951 RK_U32 atf_rdo_skip_atf_wgt31 : 8; 1952 RK_U32 atf_rdo_skip_atf_wgt32 : 8; 1953 RK_U32 reserved : 8; 1954 } rdo_skip_atf_wgt2; 1955 1956 /* 0x00002140 reg2128 */ 1957 struct { 1958 RK_U32 atf_rdo_skip_atf_wgt40 : 8; 1959 RK_U32 atf_rdo_skip_atf_wgt41 : 8; 1960 RK_U32 atf_rdo_skip_atf_wgt42 : 8; 1961 RK_U32 reserved : 8; 1962 } rdo_skip_atf_wgt3; 1963 1964 /* 0x00002144 reg2129 */ 1965 struct { 1966 RK_U32 cu8_rdo_intra_cime_thd0 : 12; 1967 RK_U32 reserved : 4; 1968 RK_U32 cu8_rdo_intra_cime_thd1 : 12; 1969 RK_U32 reserved1 : 4; 1970 } rdo_b8_intra_cime_thd0; 1971 1972 /* 0x00002148 reg2130 */ 1973 struct { 1974 RK_U32 cu8_rdo_intra_cime_thd2 : 12; 1975 RK_U32 reserved : 20; 1976 } rdo_b8_intra_cime_thd1; 1977 1978 /* 0x0000214c reg2131 */ 1979 struct { 1980 RK_U32 cu8_rdo_intra_var_thd00 : 12; 1981 RK_U32 reserved : 4; 1982 RK_U32 cu8_rdo_intra_var_thd01 : 12; 1983 RK_U32 reserved1 : 4; 1984 } rdo_b8_intra_var_thd0; 1985 1986 /* 0x00002150 reg2132 */ 1987 struct { 1988 RK_U32 cu8_rdo_intra_var_thd10 : 12; 1989 RK_U32 reserved : 4; 1990 RK_U32 cu8_rdo_intra_var_thd11 : 12; 1991 RK_U32 reserved1 : 4; 1992 } rdo_b8_intra_var_thd1; 1993 1994 /* 0x00002154 reg2133 */ 1995 struct { 1996 RK_U32 cu8_rdo_intra_var_thd20 : 12; 1997 RK_U32 reserved : 4; 1998 RK_U32 cu8_rdo_intra_var_thd21 : 12; 1999 RK_U32 reserved1 : 4; 2000 } rdo_b8_intra_var_thd2; 2001 2002 /* 0x00002158 reg2134 */ 2003 struct { 2004 RK_U32 cu8_rdo_intra_var_thd30 : 12; 2005 RK_U32 reserved : 4; 2006 RK_U32 cu8_rdo_intra_var_thd31 : 12; 2007 RK_U32 reserved1 : 4; 2008 } rdo_b8_intra_var_thd3; 2009 2010 /* 0x0000215c reg2135 */ 2011 struct { 2012 RK_U32 cu8_rdo_intra_atf_wgt00 : 8; 2013 RK_U32 cu8_rdo_intra_atf_wgt01 : 8; 2014 RK_U32 cu8_rdo_intra_atf_wgt02 : 8; 2015 RK_U32 reserved : 8; 2016 } rdo_b8_intra_atf_wgt0; 2017 2018 /* 0x00002160 reg2136 */ 2019 struct { 2020 RK_U32 cu8_rdo_intra_atf_wgt10 : 8; 2021 RK_U32 cu8_rdo_intra_atf_wgt11 : 8; 2022 RK_U32 cu8_rdo_intra_atf_wgt12 : 8; 2023 RK_U32 reserved : 8; 2024 } rdo_b8_intra_atf_wgt1; 2025 2026 /* 0x00002164 reg2137 */ 2027 struct { 2028 RK_U32 cu8_rdo_intra_atf_wgt20 : 8; 2029 RK_U32 cu8_rdo_intra_atf_wgt21 : 8; 2030 RK_U32 cu8_rdo_intra_atf_wgt22 : 8; 2031 RK_U32 reserved : 8; 2032 } rdo_b8_intra_atf_wgt2; 2033 2034 /* 0x00002168 reg2138 */ 2035 struct { 2036 RK_U32 cu8_rdo_intra_atf_wgt30 : 8; 2037 RK_U32 cu8_rdo_intra_atf_wgt31 : 8; 2038 RK_U32 cu8_rdo_intra_atf_wgt32 : 8; 2039 RK_U32 reserved : 8; 2040 } rdo_b8_intra_atf_wgt3; 2041 2042 /* 0x0000216c reg2139 */ 2043 struct { 2044 RK_U32 cu8_rdo_inter_cime_thd0 : 12; 2045 RK_U32 reserved : 4; 2046 RK_U32 cu8_rdo_inter_cime_thd1 : 12; 2047 RK_U32 reserved1 : 4; 2048 } rdo_b8_inter_cime_thd0; 2049 2050 /* 0x00002170 reg2140 */ 2051 struct { 2052 RK_U32 cu8_rdo_inter_cime_thd2 : 12; 2053 RK_U32 reserved : 20; 2054 } rdo_b8_inter_cime_thd1; 2055 2056 /* 0x00002174 reg2141 */ 2057 struct { 2058 RK_U32 cu8_rdo_inter_var_thd00 : 12; 2059 RK_U32 reserved : 4; 2060 RK_U32 cu8_rdo_inter_var_thd01 : 12; 2061 RK_U32 reserved1 : 4; 2062 } rdo_b8_inter_var_thd0; 2063 2064 /* 0x00002178 reg2142 */ 2065 struct { 2066 RK_U32 cu8_rdo_inter_var_thd10 : 12; 2067 RK_U32 reserved : 4; 2068 RK_U32 cu8_rdo_inter_var_thd11 : 12; 2069 RK_U32 reserved1 : 4; 2070 } rdo_b8_inter_var_thd1; 2071 2072 /* 0x0000217c reg2143 */ 2073 struct { 2074 RK_U32 cu8_rdo_inter_var_thd20 : 12; 2075 RK_U32 reserved : 4; 2076 RK_U32 cu8_rdo_inter_var_thd21 : 12; 2077 RK_U32 reserved1 : 4; 2078 } rdo_b8_inter_var_thd2; 2079 2080 /* 0x00002180 reg2144 */ 2081 struct { 2082 RK_U32 cu8_rdo_inter_var_thd30 : 12; 2083 RK_U32 reserved : 4; 2084 RK_U32 cu8_rdo_inter_var_thd31 : 12; 2085 RK_U32 reserved1 : 4; 2086 } rdo_b8_inter_var_thd3; 2087 2088 /* 0x00002184 reg2145 */ 2089 struct { 2090 RK_U32 cu8_rdo_inter_atf_wgt00 : 8; 2091 RK_U32 cu8_rdo_inter_atf_wgt01 : 8; 2092 RK_U32 cu8_rdo_inter_atf_wgt02 : 8; 2093 RK_U32 reserved : 8; 2094 } rdo_b8_inter_atf_wgt0; 2095 2096 /* 0x00002188 reg2146 */ 2097 struct { 2098 RK_U32 cu8_rdo_inter_atf_wgt10 : 8; 2099 RK_U32 cu8_rdo_inter_atf_wgt11 : 8; 2100 RK_U32 cu8_rdo_inter_atf_wgt12 : 8; 2101 RK_U32 reserved : 8; 2102 } rdo_b8_inter_atf_wgt1; 2103 2104 /* 0x0000218c reg2147 */ 2105 struct { 2106 RK_U32 cu8_rdo_inter_atf_wgt20 : 8; 2107 RK_U32 cu8_rdo_inter_atf_wgt21 : 8; 2108 RK_U32 cu8_rdo_inter_atf_wgt22 : 8; 2109 RK_U32 reserved : 8; 2110 } rdo_b8_inter_atf_wgt2; 2111 2112 /* 0x00002190 reg2148 */ 2113 struct { 2114 RK_U32 cu8_rdo_inter_atf_wgt30 : 8; 2115 RK_U32 cu8_rdo_inter_atf_wgt31 : 8; 2116 RK_U32 cu8_rdo_inter_atf_wgt32 : 8; 2117 RK_U32 reserved : 8; 2118 } rdo_b8_inter_atf_wgt3; 2119 2120 /* 0x00002194 reg2149 */ 2121 struct { 2122 RK_U32 cu8_rdo_skip_cime_thd0 : 12; 2123 RK_U32 reserved : 4; 2124 RK_U32 cu8_rdo_skip_cime_thd1 : 12; 2125 RK_U32 reserved1 : 4; 2126 } rdo_b8_skip_cime_thd0; 2127 2128 /* 0x00002198 reg2150 */ 2129 struct { 2130 RK_U32 cu8_rdo_skip_cime_thd2 : 12; 2131 RK_U32 reserved : 4; 2132 RK_U32 cu8_rdo_skip_cime_thd3 : 12; 2133 RK_U32 reserved1 : 4; 2134 } rdo_b8_skip_cime_thd1; 2135 2136 /* 0x0000219c reg2151 */ 2137 struct { 2138 RK_U32 cu8_rdo_skip_var_thd10 : 12; 2139 RK_U32 reserved : 4; 2140 RK_U32 cu8_rdo_skip_var_thd11 : 12; 2141 RK_U32 reserved1 : 4; 2142 } rdo_b8_skip_var_thd0; 2143 2144 /* 0x000021a0 reg2152 */ 2145 struct { 2146 RK_U32 cu8_rdo_skip_var_thd20 : 12; 2147 RK_U32 reserved : 4; 2148 RK_U32 cu8_rdo_skip_var_thd21 : 12; 2149 RK_U32 reserved1 : 4; 2150 } rdo_b8_skip_var_thd1; 2151 2152 /* 0x000021a4 reg2153 */ 2153 struct { 2154 RK_U32 cu8_rdo_skip_var_thd30 : 12; 2155 RK_U32 reserved : 4; 2156 RK_U32 cu8_rdo_skip_var_thd31 : 12; 2157 RK_U32 reserved1 : 4; 2158 } rdo_b8_skip_var_thd2; 2159 2160 /* 0x000021a8 reg2154 */ 2161 struct { 2162 RK_U32 cu8_rdo_skip_var_thd40 : 12; 2163 RK_U32 reserved : 4; 2164 RK_U32 cu8_rdo_skip_var_thd41 : 12; 2165 RK_U32 reserved1 : 4; 2166 } rdo_b8_skip_var_thd3; 2167 2168 /* 0x000021ac reg2155 */ 2169 struct { 2170 RK_U32 cu8_rdo_skip_atf_wgt00 : 8; 2171 RK_U32 cu8_rdo_skip_atf_wgt10 : 8; 2172 RK_U32 cu8_rdo_skip_atf_wgt11 : 8; 2173 RK_U32 cu8_rdo_skip_atf_wgt12 : 8; 2174 } rdo_b8_skip_atf_wgt0; 2175 2176 /* 0x000021b0 reg2156 */ 2177 struct { 2178 RK_U32 cu8_rdo_skip_atf_wgt20 : 8; 2179 RK_U32 cu8_rdo_skip_atf_wgt21 : 8; 2180 RK_U32 cu8_rdo_skip_atf_wgt22 : 8; 2181 RK_U32 reserved : 8; 2182 } rdo_b8_skip_atf_wgt1; 2183 2184 /* 0x000021b4 reg2157 */ 2185 struct { 2186 RK_U32 cu8_rdo_skip_atf_wgt30 : 8; 2187 RK_U32 cu8_rdo_skip_atf_wgt31 : 8; 2188 RK_U32 cu8_rdo_skip_atf_wgt32 : 8; 2189 RK_U32 reserved : 8; 2190 } rdo_b8_skip_atf_wgt2; 2191 2192 /* 0x000021b8 reg2158 */ 2193 struct { 2194 RK_U32 cu8_rdo_skip_atf_wgt40 : 8; 2195 RK_U32 cu8_rdo_skip_atf_wgt41 : 8; 2196 RK_U32 cu8_rdo_skip_atf_wgt42 : 8; 2197 RK_U32 reserved : 8; 2198 } rdo_b8_skip_atf_wgt3; 2199 2200 /* 0x000021bc reg2159 */ 2201 struct { 2202 RK_U32 rdo_segment_cu64_th0 : 12; 2203 RK_U32 reserved : 4; 2204 RK_U32 rdo_segment_cu64_th1 : 12; 2205 RK_U32 reserved1 : 4; 2206 } rdo_segment_b64_thd0; 2207 2208 /* 0x000021c0 reg2160 */ 2209 struct { 2210 RK_U32 rdo_segment_cu64_th2 : 12; 2211 RK_U32 reserved : 4; 2212 RK_U32 rdo_segment_cu64_th3 : 4; 2213 RK_U32 rdo_segment_cu64_th4 : 4; 2214 RK_U32 rdo_segment_cu64_th5_minus1 : 4; 2215 RK_U32 rdo_segment_cu64_th6_minus1 : 4; 2216 } rdo_segment_b64_thd1; 2217 2218 /* 0x000021c4 reg2161 */ 2219 struct { 2220 RK_U32 rdo_segment_cu32_th0 : 12; 2221 RK_U32 reserved : 4; 2222 RK_U32 rdo_segment_cu32_th1 : 12; 2223 RK_U32 reserved1 : 4; 2224 } rdo_segment_b32_thd0; 2225 2226 /* 0x000021c8 reg2162 */ 2227 struct { 2228 RK_U32 rdo_segment_cu32_th2 : 12; 2229 RK_U32 reserved : 4; 2230 RK_U32 rdo_segment_cu32_th3 : 2; 2231 RK_U32 reserved1 : 2; 2232 RK_U32 rdo_segment_cu32_th4 : 2; 2233 RK_U32 reserved2 : 2; 2234 RK_U32 rdo_segment_cu32_th5_minus1 : 2; 2235 RK_U32 reserved3 : 2; 2236 RK_U32 rdo_segment_cu32_th6_minus1 : 2; 2237 RK_U32 reserved4 : 2; 2238 } rdo_segment_b32_thd1; 2239 2240 /* 0x000021cc reg2163 */ 2241 struct { 2242 RK_U32 rdo_segment_cu64_multi : 8; 2243 RK_U32 rdo_segment_cu32_multi : 8; 2244 RK_U32 rdo_smear_cu16_multi : 8; 2245 RK_U32 reserved : 8; 2246 } rdo_segment_multi; 2247 2248 /* 0x000021d0 reg2164 */ 2249 struct { 2250 RK_U32 rdo_smear_cu16_cime_sad_th0 : 12; 2251 RK_U32 reserved : 4; 2252 RK_U32 rdo_smear_cu16_cime_sad_th1 : 12; 2253 RK_U32 reserved1 : 4; 2254 } rdo_b16_smear_thd0; 2255 2256 /* 0x000021d4 reg2165 */ 2257 struct { 2258 RK_U32 rdo_smear_cu16_cime_sad_th2 : 12; 2259 RK_U32 reserved : 4; 2260 RK_U32 rdo_smear_cu16_cime_sad_th3 : 12; 2261 RK_U32 reserved1 : 4; 2262 } rdo_b16_smear_thd1; 2263 2264 /* 0x000021d8 reg2166 */ 2265 struct { 2266 RK_U32 pre_intra32_cst_var_th00 : 12; 2267 RK_U32 reserved : 4; 2268 RK_U32 pre_intra32_cst_var_th01 : 12; 2269 RK_U32 reserved1 : 1; 2270 RK_U32 pre_intra32_mode_th : 3; 2271 } preintra_b32_cst_var_thd; 2272 2273 /* 0x000021dc reg2167 */ 2274 struct { 2275 RK_U32 pre_intra32_cst_wgt00 : 8; 2276 RK_U32 reserved : 8; 2277 RK_U32 pre_intra32_cst_wgt01 : 8; 2278 RK_U32 reserved1 : 8; 2279 } preintra_b32_cst_wgt; 2280 2281 /* 0x000021e0 reg2168 */ 2282 struct { 2283 RK_U32 pre_intra16_cst_var_th00 : 12; 2284 RK_U32 reserved : 4; 2285 RK_U32 pre_intra16_cst_var_th01 : 12; 2286 RK_U32 reserved1 : 1; 2287 RK_U32 pre_intra16_mode_th : 3; 2288 } preintra_b16_cst_var_thd; 2289 2290 /* 0x000021e4 reg2169 */ 2291 struct { 2292 RK_U32 pre_intra16_cst_wgt00 : 8; 2293 RK_U32 reserved : 8; 2294 RK_U32 pre_intra16_cst_wgt01 : 8; 2295 RK_U32 reserved1 : 8; 2296 } preintra_b16_cst_wgt; 2297 } Vepu580RdoCfg; 2298 2299 /* class: scaling list */ 2300 /* 0x00002200 reg2200 - 0x00003084 reg3105*/ 2301 typedef struct Vepu580SclCfg_t { 2302 /* 0x00002200 */ 2303 RK_U16 intra8_y[64]; 2304 RK_U16 intra8_u[64]; 2305 RK_U16 intra8_v[64]; 2306 RK_U16 inter8_y[64]; 2307 RK_U16 inter8_u[64]; 2308 RK_U16 inter8_v[64]; 2309 /* 0x00002500 */ 2310 RK_U32 q_iq_16_32[480]; 2311 /* 0x00002c80 */ 2312 RK_U32 q_dc_y16; 2313 RK_U32 q_dc_u16; 2314 RK_U32 q_dc_v16; 2315 RK_U32 q_dc_v32; 2316 /* 0x00002c90 */ 2317 RK_U32 iq_dc_0; 2318 RK_U32 iq_dc_1; 2319 /* 0x00002c98 */ 2320 RK_U32 scal_clk_sel; 2321 } Vepu580SclCfg; 2322 2323 /* class: osd */ 2324 /* 0x00003000 reg3072 - 0x00003084 reg3105*/ 2325 typedef struct Vepu580Osd_t { 2326 /* 0x00003000 reg3072 */ 2327 struct { 2328 RK_U32 osd_lu_inv_en : 8; 2329 RK_U32 osd_ch_inv_en : 8; 2330 RK_U32 osd_lu_inv_msk : 8; 2331 RK_U32 osd_ch_inv_msk : 8; 2332 } osd_inv_en; 2333 2334 /* 0x00003004 reg3073 */ 2335 struct { 2336 RK_U32 osd_ithd_r0 : 4; 2337 RK_U32 osd_ithd_r1 : 4; 2338 RK_U32 osd_ithd_r2 : 4; 2339 RK_U32 osd_ithd_r3 : 4; 2340 RK_U32 osd_ithd_r4 : 4; 2341 RK_U32 osd_ithd_r5 : 4; 2342 RK_U32 osd_ithd_r6 : 4; 2343 RK_U32 osd_ithd_r7 : 4; 2344 } osd_inv_thd; 2345 2346 /* 0x00003008 reg3074 */ 2347 struct { 2348 RK_U32 osd_en : 8; 2349 RK_U32 osd_itype : 8; 2350 RK_U32 osd_plt_cks : 1; 2351 RK_U32 osd_plt_typ : 1; 2352 RK_U32 reserved : 14; 2353 } osd_cfg; 2354 2355 /* 0x300c */ 2356 RK_U32 reserved_3075; 2357 2358 /* 0x00003010 reg3076 - 0x0000304c reg3091*/ 2359 OSD_POS_NEW osd_pos[8]; 2360 2361 /* 0x00003050 reg3092 - 0x0000306c reg3099 */ 2362 RK_U32 osd_addr[8]; 2363 2364 /* 0x3070 - 0x307c */ 2365 RK_U32 reserved3100_3103[4]; 2366 2367 /* 0x03080-0x347c reg3104-reg3360 */ 2368 RK_U32 plt[256]; 2369 } Vepu580Osd; 2370 2371 // /* class: osd_plt 255 */ 2372 // /* 0x0000347c reg3359 */ 2373 // typedef struct Vepu580Section6_t { 2374 // /* 0x0000347c reg3359 */ 2375 // struct { 2376 // RK_U32 y : 8; 2377 // RK_U32 u : 8; 2378 // RK_U32 v : 8; 2379 // RK_U32 alpha : 8; 2380 // } osd_plt255; 2381 // } vepu580section6; 2382 2383 /* class: st */ 2384 /* 0x00004000 reg4096 - 0x000042cc reg4275 */ 2385 typedef struct Vepu580Status_t { 2386 /* 0x00004000 reg4096 */ 2387 RK_U32 bs_lgth_l32; 2388 2389 /* 0x00004004 reg4097 */ 2390 struct { 2391 RK_U32 bs_lgth_h8 : 8; 2392 RK_U32 reserved : 8; 2393 RK_U32 sse_l16 : 16; 2394 } st_sse_bsl; 2395 2396 /* 0x00004008 reg4098 */ 2397 RK_U32 sse_h32; 2398 2399 /* 0x0000400c reg4099 */ 2400 RK_U32 qp_sum; 2401 2402 /* 0x00004010 reg4100 */ 2403 struct { 2404 RK_U32 sao_cnum : 16; 2405 RK_U32 sao_ynum : 16; 2406 } st_sao; 2407 2408 /* 0x00004014 reg4101 */ 2409 RK_U32 rdo_head_bits; 2410 2411 /* 0x00004018 reg4102 */ 2412 struct { 2413 RK_U32 rdo_head_bits_h8 : 8; 2414 RK_U32 reserved : 8; 2415 RK_U32 rdo_res_bits_l16 : 16; 2416 } st_head_res_bl; 2417 2418 /* 0x0000401c reg4103 */ 2419 RK_U32 rdo_res_bits_h24; 2420 2421 /* 0x00004020 reg4104 */ 2422 struct { 2423 RK_U32 st_enc : 2; 2424 RK_U32 st_sclr : 1; 2425 RK_U32 reserved : 29; 2426 } st_enc; 2427 2428 /* 0x00004024 reg4105 */ 2429 struct { 2430 RK_U32 fnum_cfg_done : 8; 2431 RK_U32 fnum_cfg : 8; 2432 RK_U32 fnum_int : 8; 2433 RK_U32 fnum_enc_done : 8; 2434 } st_lkt; 2435 2436 /* 0x00004028 reg4106 */ 2437 RK_U32 node_addr; 2438 2439 /* 0x0000402c reg4107 */ 2440 struct { 2441 RK_U32 bsbw_ovfl : 1; 2442 RK_U32 reserved : 2; 2443 RK_U32 bsbw_addr : 28; 2444 RK_U32 reserved1 : 1; 2445 } st_bsb; 2446 2447 /* 0x00004030 reg4108 */ 2448 struct { 2449 RK_U32 axib_idl : 8; 2450 RK_U32 axib_ovfl : 8; 2451 RK_U32 axib_err : 8; 2452 RK_U32 axir_err : 7; 2453 RK_U32 reserved : 1; 2454 } st_bus; 2455 2456 /* 0x00004034 reg4109 */ 2457 struct { 2458 RK_U32 sli_num : 6; 2459 RK_U32 reserved : 26; 2460 } st_snum; 2461 2462 /* 0x00004038 reg4110 */ 2463 struct { 2464 RK_U32 sli_len : 25; 2465 RK_U32 reserved : 7; 2466 } st_slen; 2467 2468 /* 0x403c - 0x40fc */ 2469 RK_U32 reserved4111_4159[49]; 2470 2471 /* 0x00004100 reg4160 */ 2472 struct { 2473 RK_U32 pnum_p64 : 17; 2474 RK_U32 reserved : 15; 2475 } st_pnum_p64; 2476 2477 /* 0x00004104 reg4161 */ 2478 struct { 2479 RK_U32 pnum_p32 : 19; 2480 RK_U32 reserved : 13; 2481 } st_pnum_p32; 2482 2483 /* 0x00004108 reg4162 */ 2484 struct { 2485 RK_U32 pnum_p16 : 21; 2486 RK_U32 reserved : 11; 2487 } st_pnum_p16; 2488 2489 /* 0x0000410c reg4163 */ 2490 struct { 2491 RK_U32 pnum_p8 : 23; 2492 RK_U32 reserved : 9; 2493 } st_pnum_p8; 2494 2495 /* 0x00004110 reg4164 */ 2496 struct { 2497 RK_U32 pnum_i32 : 19; 2498 RK_U32 reserved : 13; 2499 } st_pnum_i32; 2500 2501 /* 0x00004114 reg4165 */ 2502 struct { 2503 RK_U32 pnum_i16 : 21; 2504 RK_U32 reserved : 11; 2505 } st_pnum_i16; 2506 2507 /* 0x00004118 reg4166 */ 2508 struct { 2509 RK_U32 pnum_i8 : 23; 2510 RK_U32 reserved : 9; 2511 } st_pnum_i8; 2512 2513 /* 0x0000411c reg4167 */ 2514 struct { 2515 RK_U32 pnum_i4 : 23; 2516 RK_U32 reserved : 9; 2517 } st_pnum_i4; 2518 2519 /* 0x00004120 reg4168 */ 2520 RK_U32 madp; 2521 2522 /* 0x00004124 reg4169 */ 2523 struct { 2524 RK_U32 num_ctu : 21; 2525 RK_U32 reserved : 11; 2526 } st_bnum_cme; 2527 2528 /* 0x00004128 reg4170 */ 2529 RK_U32 madi; 2530 2531 /* 0x0000412c reg4171 */ 2532 struct { 2533 RK_U32 num_b16 : 23; 2534 RK_U32 reserved : 9; 2535 } st_bnum_b16; 2536 2537 /* 0x00004130 reg4172 */ 2538 RK_U32 num_madi_max_b16; 2539 2540 /* 0x00004134 reg4173 */ 2541 RK_U32 md_sad_b16num0; 2542 2543 /* 0x00004138 reg4174 */ 2544 RK_U32 md_sad_b16num1; 2545 2546 /* 0x0000413c reg4175 */ 2547 RK_U32 md_sad_b16num2; 2548 2549 /* 0x00004140 reg4176 */ 2550 RK_U32 md_sad_b16num3; 2551 2552 /* 0x00004144 reg4177 */ 2553 RK_U32 madi_b16num0; 2554 2555 /* 0x00004148 reg4178 */ 2556 RK_U32 madi_b16num1; 2557 2558 /* 0x0000414c reg4179 */ 2559 RK_U32 madi_b16num2; 2560 2561 /* 0x00004150 reg4180 */ 2562 RK_U32 madi_b16num3; 2563 2564 /* 0x4154 - 0x41fc */ 2565 RK_U32 reserved4181_4223[43]; 2566 2567 /* 0x00004200 reg4224 - 0x000042cc reg4275 */ 2568 // b8num_qp0-51 2569 /* 2570 * RK_U32 b8num_qp0 : 22; 2571 * RK_U32 reserved : 10; 2572 */ 2573 RK_U32 st_b8_qp[52]; 2574 } Vepu580Status; 2575 2576 /* class: dbg/st/axipn */ 2577 /* 0x00005000 reg5120 - 0x00005354 reg5333*/ 2578 typedef struct Vepu580Dbg_t { 2579 /* 0x00005000 reg5120 */ 2580 struct { 2581 RK_U32 pp_tout : 1; 2582 RK_U32 cme_tout : 1; 2583 RK_U32 swn_tout : 1; 2584 RK_U32 rme_tout : 1; 2585 RK_U32 fme_tout : 1; 2586 RK_U32 rdo_tout : 1; 2587 RK_U32 lpf_tout : 1; 2588 RK_U32 etpy_tout : 1; 2589 RK_U32 frm_tout : 1; 2590 RK_U32 reserved : 23; 2591 } st_wdg; 2592 2593 /* 0x00005004 reg5121 */ 2594 struct { 2595 RK_U32 pp_wrk : 1; 2596 RK_U32 cme_wrk : 1; 2597 RK_U32 swn_wrk : 1; 2598 RK_U32 rme_wrk : 1; 2599 RK_U32 fme_wrk : 1; 2600 RK_U32 rdo_wrk : 1; 2601 RK_U32 lpf_wrk : 1; 2602 RK_U32 etpy_wrk : 1; 2603 RK_U32 frm_wrk : 1; 2604 RK_U32 reserved : 23; 2605 } st_ppl; 2606 2607 /* 0x00005008 reg5122 */ 2608 struct { 2609 RK_U32 pp_pos_x : 16; 2610 RK_U32 pp_pos_y : 16; 2611 } st_ppl_pos_pp; 2612 2613 /* 0x0000500c reg5123 */ 2614 struct { 2615 RK_U32 cme_pos_x : 16; 2616 RK_U32 cme_pos_y : 16; 2617 } st_ppl_pos_cme; 2618 2619 /* 0x00005010 reg5124 */ 2620 struct { 2621 RK_U32 swin_pos_x : 16; 2622 RK_U32 swin_pos_y : 16; 2623 } st_ppl_pos_swin; 2624 2625 /* 0x00005014 reg5125 */ 2626 struct { 2627 RK_U32 rme_pos_x : 16; 2628 RK_U32 rme_pos_y : 16; 2629 } st_ppl_pos_rme; 2630 2631 /* 0x00005018 reg5126 */ 2632 struct { 2633 RK_U32 fme_pos_x : 16; 2634 RK_U32 fme_pos_y : 16; 2635 } st_ppl_pos_fme; 2636 2637 /* 0x0000501c reg5127 */ 2638 struct { 2639 RK_U32 rdo_pos_x : 16; 2640 RK_U32 rdo_pos_y : 16; 2641 } st_ppl_pos_rdo; 2642 2643 /* 0x00005020 reg5128 */ 2644 struct { 2645 RK_U32 lpf_pos_x : 16; 2646 RK_U32 lpf_pos_y : 16; 2647 } st_ppl_pos_lpf; 2648 2649 /* 0x00005024 reg5129 */ 2650 struct { 2651 RK_U32 etpy_pos_x : 16; 2652 RK_U32 etpy_pos_y : 16; 2653 } st_ppl_pos_etpy; 2654 2655 /* 0x00005028 reg5130 */ 2656 struct { 2657 RK_U32 sli_num : 15; 2658 RK_U32 reserved : 17; 2659 } st_sli_num; 2660 2661 /* 0x0000502c reg5131 */ 2662 struct { 2663 RK_U32 lkt_err : 3; 2664 RK_U32 reserved : 29; 2665 } st_lkt_err; 2666 2667 /* 0x5030 - 0x50fc */ 2668 RK_U32 reserved5132_5183[52]; 2669 2670 /* 0x00005100 reg5184 */ 2671 struct { 2672 RK_U32 empty_oafifo : 1; 2673 RK_U32 full_cmd_oafifo : 1; 2674 RK_U32 full_data_oafifo : 1; 2675 RK_U32 empty_iafifo : 1; 2676 RK_U32 full_cmd_iafifo : 1; 2677 RK_U32 full_info_iafifo : 1; 2678 RK_U32 fbd_brq_st : 4; 2679 RK_U32 fbd_hdr_vld : 1; 2680 RK_U32 fbd_bmng_end : 1; 2681 RK_U32 nfbd_req_st : 4; 2682 RK_U32 acc_axi_cmd : 8; 2683 RK_U32 reserved : 8; 2684 } dbg_pp_st; 2685 2686 /* 0x00005104 reg5185 */ 2687 struct { 2688 RK_U32 cur_state_cime : 2; 2689 RK_U32 cur_state_ds : 3; 2690 RK_U32 cur_state_ref : 2; 2691 RK_U32 cur_state_cst : 2; 2692 RK_U32 reserved : 23; 2693 } dbg_cime_st; 2694 2695 /* 0x00005108 reg5186 */ 2696 RK_U32 swin_dbg_inf; 2697 2698 /* 0x0000510c reg5187 */ 2699 struct { 2700 RK_U32 bbrq_cmps_left_len2 : 1; 2701 RK_U32 bbrq_cmps_left_len1 : 1; 2702 RK_U32 cmps_left_len0 : 1; 2703 RK_U32 bbrq_rdy2 : 1; 2704 RK_U32 dcps_vld2 : 1; 2705 RK_U32 bbrq_rdy1 : 1; 2706 RK_U32 dcps_vld1 : 1; 2707 RK_U32 bbrq_rdy0 : 1; 2708 RK_U32 dcps_vld0 : 1; 2709 RK_U32 hb_rdy2 : 1; 2710 RK_U32 bbrq_vld2 : 1; 2711 RK_U32 hb_rdy1 : 1; 2712 RK_U32 bbrq_vld1 : 1; 2713 RK_U32 hb_rdy0 : 1; 2714 RK_U32 bbrq_vld0 : 1; 2715 RK_U32 idle_msb2 : 1; 2716 RK_U32 idle_msb1 : 1; 2717 RK_U32 idle_msb0 : 1; 2718 RK_U32 cur_state_dcps : 1; 2719 RK_U32 cur_state_bbrq : 1; 2720 RK_U32 cur_state_hb : 1; 2721 RK_U32 cke_bbrq_dcps : 1; 2722 RK_U32 cke_dcps : 1; 2723 RK_U32 cke_bbrq : 1; 2724 RK_U32 rdy_lwcd_rsp : 1; 2725 RK_U32 vld_lwcd_rsp : 1; 2726 RK_U32 rdy_lwcd_req : 1; 2727 RK_U32 vld_lwcd_req : 1; 2728 RK_U32 rdy_lwrsp : 1; 2729 RK_U32 vld_lwrsp : 1; 2730 RK_U32 rdy_lwreq : 1; 2731 RK_U32 vld_lwreq : 1; 2732 } dbg_fbd_hhit0; 2733 2734 /* 0x5110 */ 2735 RK_U32 reserved_5188; 2736 2737 /* 0x00005114 reg5189 */ 2738 struct { 2739 RK_U32 mscnt_clr : 1; 2740 RK_U32 reserved : 31; 2741 } dbg_cach_clr; 2742 2743 /* 0x00005118 reg5190 */ 2744 RK_U32 l1_mis; 2745 2746 /* 0x0000511c reg5191 */ 2747 RK_U32 l2_mis; 2748 2749 /* 0x00005120 reg5192 */ 2750 RK_U32 rdo_st; 2751 2752 /* 0x00005124 reg5193 */ 2753 RK_U32 rdo_if; 2754 2755 /* 0x00005128 reg5194 */ 2756 struct { 2757 RK_U32 sh_st_cs : 4; 2758 RK_U32 rsd_st_cs : 4; 2759 RK_U32 sd_st_cs : 5; 2760 RK_U32 etpy_rdy : 1; 2761 RK_U32 reserved : 18; 2762 } dbg_etpy; 2763 2764 /* 0x0000512c reg5195 */ 2765 struct { 2766 RK_U32 crdy_ppr : 1; 2767 RK_U32 cvld_ppr : 1; 2768 RK_U32 drdy_ppw : 1; 2769 RK_U32 dvld_ppw : 1; 2770 RK_U32 crdy_ppw : 1; 2771 RK_U32 cvld_ppw : 1; 2772 RK_U32 reserved : 26; 2773 } dbg_dma_pp; 2774 2775 /* 0x00005130 reg5196 */ 2776 struct { 2777 RK_U32 axi_wrdy : 8; 2778 RK_U32 axi_wvld : 8; 2779 RK_U32 axi_awrdy : 8; 2780 RK_U32 axi_awvld : 8; 2781 } dbg_dma_w; 2782 2783 /* 0x00005134 reg5197 */ 2784 struct { 2785 RK_U32 axi_otsd_read : 16; 2786 RK_U32 axi_arrdy : 7; 2787 RK_U32 reserved : 1; 2788 RK_U32 axi_arvld : 7; 2789 RK_U32 reserved1 : 1; 2790 } dbg_dma_r; 2791 2792 /* 0x00005138 reg5198 */ 2793 struct { 2794 RK_U32 dfifo0_lvl : 4; 2795 RK_U32 dfifo1_lvl : 4; 2796 RK_U32 dfifo2_lvl : 4; 2797 RK_U32 dfifo3_lvl : 4; 2798 RK_U32 dfifo4_lvl : 4; 2799 RK_U32 dfifo5_lvl : 4; 2800 RK_U32 reserved : 6; 2801 RK_U32 cmd_vld : 1; 2802 RK_U32 reserved1 : 1; 2803 } dbg_dma_rfpr; 2804 2805 /* 0x0000513c reg5199 */ 2806 struct { 2807 RK_U32 meiw_busy : 1; 2808 RK_U32 dspw_busy : 1; 2809 RK_U32 bsw_rdy : 1; 2810 RK_U32 bsw_flsh : 1; 2811 RK_U32 bsw_busy : 1; 2812 RK_U32 crpw_busy : 1; 2813 RK_U32 lktw_busy : 1; 2814 RK_U32 lpfw_busy : 1; 2815 RK_U32 roir_busy : 1; 2816 RK_U32 dspr_crdy : 1; 2817 RK_U32 dspr_cvld : 1; 2818 RK_U32 lktr_busy : 1; 2819 RK_U32 lpfr_otsd : 4; 2820 RK_U32 rfpr_otsd : 12; 2821 RK_U32 dspr_otsd : 4; 2822 } dbg_dma_ch_st; 2823 2824 /* 0x00005140 reg5200 */ 2825 struct { 2826 RK_U32 cpip_st : 2; 2827 RK_U32 mvp_st : 3; 2828 RK_U32 qpd6_st : 2; 2829 RK_U32 cmd_st : 2; 2830 RK_U32 reserved : 23; 2831 } dbg_tctrl_cime_st; 2832 2833 /* 0x00005144 reg5201 */ 2834 struct { 2835 RK_U32 cme_byps : 1; 2836 RK_U32 swin_byps : 1; 2837 RK_U32 rme_byps : 1; 2838 RK_U32 intra_byps : 1; 2839 RK_U32 fme_byps : 1; 2840 RK_U32 rdo_byps : 1; 2841 RK_U32 lpf_byps : 1; 2842 RK_U32 etpy_byps : 1; 2843 RK_U32 reserved : 24; 2844 } dbg_tctrl; 2845 2846 /* 0x5148 */ 2847 RK_U32 reserved_5202; 2848 2849 /* 0x0000514c reg5203 */ 2850 RK_U32 dbg_lpf_st; 2851 2852 /* 0x00005150 reg5204 */ 2853 RK_U32 dbg_topc_lpfr; 2854 2855 /* 0x00005154 reg5205 */ 2856 RK_U32 dbg0_cache; 2857 2858 /* 0x00005158 reg5206 */ 2859 RK_U32 dbg1_cache; 2860 2861 /* 0x0000515c reg5207 */ 2862 RK_U32 dbg2_cache; 2863 2864 /* 0x5160 - 0x51fc */ 2865 RK_U32 reserved5208_5247[40]; 2866 2867 /* 0x00005200 reg5248 */ 2868 RK_U32 frame_cyc; 2869 2870 /* 0x00005204 reg5249 */ 2871 RK_U32 pp_fcyc; 2872 2873 /* 0x00005208 reg5250 */ 2874 RK_U32 cme_fcyc; 2875 2876 /* 0x0000520c reg5251 */ 2877 RK_U32 cme_dspr_fcyc; 2878 2879 /* 0x00005210 reg5252 */ 2880 RK_U32 ldr_fcyc; 2881 2882 /* 0x00005214 reg5253 */ 2883 RK_U32 rme_fcyc; 2884 2885 /* 0x00005218 reg5254 */ 2886 RK_U32 fme_fcyc; 2887 2888 /* 0x0000521c reg5255 */ 2889 RK_U32 rdo_fcyc; 2890 2891 /* 0x00005220 reg5256 */ 2892 RK_U32 lpf_fcyc; 2893 2894 /* 0x00005224 reg5257 */ 2895 RK_U32 etpy_fcyc; 2896 2897 /* 0x5228 - 0x52fc */ 2898 RK_U32 reserved5258_5311[54]; 2899 2900 /* 0x00005300 reg5312 */ 2901 struct { 2902 RK_U32 axip_e : 1; 2903 RK_U32 axip_clr : 1; 2904 RK_U32 axip_mod : 1; 2905 RK_U32 reserved : 29; 2906 } axip0_cmd; 2907 2908 /* 0x00005304 reg5313 */ 2909 struct { 2910 RK_U32 axip_ltcy_id : 4; 2911 RK_U32 axip_ltcy_thd : 12; 2912 RK_U32 reserved : 16; 2913 } axip0_ltcy; 2914 2915 /* 0x00005308 reg5314 */ 2916 struct { 2917 RK_U32 axip_cnt_typ : 1; 2918 RK_U32 axip_cnt_ddr : 2; 2919 RK_U32 axip_cnt_rid : 5; 2920 RK_U32 axip_cnt_wid : 5; 2921 RK_U32 reserved : 19; 2922 } axip0_cnt; 2923 2924 /* 0x530c */ 2925 RK_U32 reserved_5315; 2926 2927 /* 0x00005310 reg5316 */ 2928 struct { 2929 RK_U32 axip_e : 1; 2930 RK_U32 axip_clr : 1; 2931 RK_U32 axip_mod : 1; 2932 RK_U32 reserved : 29; 2933 } axip1_cmd; 2934 2935 /* 0x00005314 reg5317 */ 2936 struct { 2937 RK_U32 axip_ltcy_id : 4; 2938 RK_U32 axip_ltcy_thd : 12; 2939 RK_U32 reserved : 16; 2940 } axip1_ltcy; 2941 2942 /* 0x00005318 reg5318 */ 2943 struct { 2944 RK_U32 axip_cnt_typ : 1; 2945 RK_U32 axip_cnt_ddr : 2; 2946 RK_U32 axip_cnt_rid : 5; 2947 RK_U32 axip_cnt_wid : 5; 2948 RK_U32 reserved : 19; 2949 } axip1_cnt; 2950 2951 /* 0x531c */ 2952 RK_U32 reserved_5319; 2953 2954 /* 0x00005320 reg5320 */ 2955 struct { 2956 RK_U32 axip_max_ltcy : 16; 2957 RK_U32 reserved : 16; 2958 } st_axip0_maxl; 2959 2960 /* 0x00005324 reg5321 */ 2961 RK_U32 axip0_num_ltcy; 2962 2963 /* 0x00005328 reg5322 */ 2964 RK_U32 axip0_sum_ltcy; 2965 2966 /* 0x0000532c reg5323 */ 2967 RK_U32 axip0_rbyt; 2968 2969 /* 0x00005330 reg5324 */ 2970 RK_U32 axip0_wbyt; 2971 2972 /* 0x00005334 reg5325 */ 2973 RK_U32 axip0_wrk_cyc; 2974 2975 /* 0x5338 - 0x533c */ 2976 RK_U32 reserved5326_5327[2]; 2977 2978 /* 0x00005340 reg5328 */ 2979 struct { 2980 RK_U32 axip_max_ltcy : 16; 2981 RK_U32 reserved : 16; 2982 } st_axip1_maxl; 2983 2984 /* 0x00005344 reg5329 */ 2985 RK_U32 axip1_num_ltcy; 2986 2987 /* 0x00005348 reg5330 */ 2988 RK_U32 axip1_sum_ltcy; 2989 2990 /* 0x0000534c reg5331 */ 2991 RK_U32 axip1_rbyt; 2992 2993 /* 0x00005350 reg5332 */ 2994 RK_U32 axip1_wbyt; 2995 2996 /* 0x00005354 reg5333 */ 2997 RK_U32 axip1_wrk_cyc; 2998 } Vepu580Dbg; 2999 3000 /* class: mmu */ 3001 /* 0x0000f000 reg15360 - 0x0000f064 reg15385 */ 3002 3003 typedef struct HalVepu580Reg_t { 3004 Vepu580ControlCfg reg_ctl; 3005 Vepu580BaseCfg reg_base; 3006 Vepu580RcKlutCfg reg_rc_klut; 3007 Vepu580Section3 reg_s3; 3008 Vepu580RdoCfg reg_rdo; 3009 Vepu580SclCfg reg_scl; 3010 Vepu580Osd reg_osd; 3011 Vepu580Status reg_st; 3012 Vepu580Dbg reg_dbg; 3013 } HalVepu580RegSet; 3014 3015 #endif 3016