1 /* 2 * Copyright 2022 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_VEPU540C_REG_H__ 18 #define __HAL_H264E_VEPU540C_REG_H__ 19 20 #include "rk_type.h" 21 #include "vepu540c_common.h" 22 23 /* class: control/link */ 24 /* 0x00000000 reg0 - 0x00000120 reg72 */ 25 typedef struct Vepu540cControlCfg_t { 26 /* 0x00000000 reg0 */ 27 struct { 28 RK_U32 sub_ver : 8; 29 RK_U32 cap : 1; 30 RK_U32 hevc_cap : 1; 31 RK_U32 reserved : 2; 32 RK_U32 res_cap : 4; 33 RK_U32 osd_cap : 2; 34 RK_U32 filtr_cap : 2; 35 RK_U32 bfrm_cap : 1; 36 RK_U32 fbc_cap : 2; 37 RK_U32 reserved1 : 1; 38 RK_U32 ip_id : 8; 39 } version; 40 41 /* 0x4 - 0xc */ 42 RK_U32 reserved1_3[3]; 43 44 /* 0x00000010 reg4 */ 45 struct { 46 RK_U32 lkt_num : 8; 47 RK_U32 vepu_cmd : 2; 48 RK_U32 reserved : 22; 49 } enc_strt; 50 51 /* 0x00000014 reg5 */ 52 struct { 53 RK_U32 safe_clr : 1; 54 RK_U32 force_clr : 1; 55 RK_U32 reserved : 30; 56 } enc_clr; 57 58 /* 0x00000018 reg6 */ 59 struct { 60 RK_U32 vswm_lcnt_soft : 14; 61 RK_U32 vswm_fcnt_soft : 8; 62 RK_U32 reserved : 2; 63 RK_U32 dvbm_ack_soft : 1; 64 RK_U32 dvbm_ack_sel : 1; 65 RK_U32 dvbm_inf_sel : 1; 66 RK_U32 reserved1 : 5; 67 } vs_ldly; 68 69 /* 0x1c */ 70 RK_U32 reserved_7; 71 72 /* 0x00000020 reg8 */ 73 struct { 74 RK_U32 enc_done_en : 1; 75 RK_U32 lkt_node_done_en : 1; 76 RK_U32 sclr_done_en : 1; 77 RK_U32 vslc_done_en : 1; 78 RK_U32 vbsf_oflw_en : 1; 79 RK_U32 vbuf_lens_en : 1; 80 RK_U32 enc_err_en : 1; 81 RK_U32 dvbm_fcfg_en : 1; 82 RK_U32 wdg_en : 1; 83 RK_U32 lkt_err_int_en : 1; 84 RK_U32 lkt_err_stop_en : 1; 85 RK_U32 lkt_force_stop_en : 1; 86 RK_U32 jslc_done_en : 1; 87 RK_U32 jbsf_oflw_en : 1; 88 RK_U32 jbuf_lens_en : 1; 89 RK_U32 dvbm_dcnt_en : 1; 90 RK_U32 reserved : 16; 91 } int_en; 92 93 /* 0x00000024 reg9 */ 94 struct { 95 RK_U32 enc_done_msk : 1; 96 RK_U32 lkt_node_done_msk : 1; 97 RK_U32 sclr_done_msk : 1; 98 RK_U32 vslc_done_msk : 1; 99 RK_U32 vbsf_oflw_msk : 1; 100 RK_U32 vbuf_lens_msk : 1; 101 RK_U32 enc_err_msk : 1; 102 RK_U32 dvbm_fcfg_msk : 1; 103 RK_U32 wdg_msk : 1; 104 RK_U32 lkt_err_int_msk : 1; 105 RK_U32 lkt_err_stop_msk : 1; 106 RK_U32 lkt_force_stop_msk : 1; 107 RK_U32 jslc_done_msk : 1; 108 RK_U32 jbsf_oflw_msk : 1; 109 RK_U32 jbuf_lens_msk : 1; 110 RK_U32 dvbm_dcnt_msk : 1; 111 RK_U32 reserved : 16; 112 } int_msk; 113 114 /* 0x00000028 reg10 */ 115 struct { 116 RK_U32 enc_done_clr : 1; 117 RK_U32 lkt_node_done_clr : 1; 118 RK_U32 sclr_done_clr : 1; 119 RK_U32 vslc_done_clr : 1; 120 RK_U32 vbsf_oflw_clr : 1; 121 RK_U32 vbuf_lens_clr : 1; 122 RK_U32 enc_err_clr : 1; 123 RK_U32 dvbm_fcfg_clr : 1; 124 RK_U32 wdg_clr : 1; 125 RK_U32 lkt_err_int_clr : 1; 126 RK_U32 lkt_err_stop_clr : 1; 127 RK_U32 lkt_force_stop_clr : 1; 128 RK_U32 jslc_done_clr : 1; 129 RK_U32 jbsf_oflw_clr : 1; 130 RK_U32 jbuf_lens_clr : 1; 131 RK_U32 dvbm_dcnt_clr : 1; 132 RK_U32 reserved : 16; 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 vslc_done_sta : 1; 141 142 RK_U32 vbsf_oflw_sta : 1; 143 RK_U32 vbuf_lens_sta : 1; 144 RK_U32 enc_err_sta : 1; 145 RK_U32 dvbm_fcfg_sta : 1; 146 147 RK_U32 wdg_sta : 1; 148 RK_U32 lkt_err_int_sta : 1; 149 RK_U32 lkt_err_stop_sta : 1; 150 RK_U32 lkt_force_stop_sta : 1; 151 152 RK_U32 jslc_done_sta : 1; 153 RK_U32 jbsf_oflw_sta : 1; 154 RK_U32 jbuf_lens_sta : 1; 155 RK_U32 dvbm_dcnt_sta : 1; 156 157 RK_U32 reserved : 16; 158 } int_sta; 159 160 /* 0x00000030 reg12 */ 161 struct { 162 RK_U32 jpeg_bus_edin : 4; 163 RK_U32 src_bus_edin : 4; 164 RK_U32 meiw_bus_edin : 4; 165 RK_U32 bsw_bus_edin : 4; 166 RK_U32 lktr_bus_edin : 4; 167 RK_U32 roir_bus_edin : 4; 168 RK_U32 lktw_bus_edin : 4; 169 RK_U32 rec_nfbc_bus_edin : 4; 170 } dtrns_map; 171 172 /* 0x00000034 reg13 */ 173 struct { 174 RK_U32 reserved : 16; 175 RK_U32 axi_brsp_cke : 10; 176 RK_U32 reserved1 : 6; 177 } dtrns_cfg; 178 179 /* 0x00000038 reg14 */ 180 struct { 181 RK_U32 vs_load_thd : 24; 182 RK_U32 rfp_load_thd : 8; 183 } enc_wdg; 184 185 /* 0x0000003c reg15 */ 186 struct { 187 RK_U32 hurry_en : 1; 188 RK_U32 hurry_low : 3; 189 RK_U32 hurry_mid : 3; 190 RK_U32 hurry_high : 3; 191 RK_U32 reserved : 22; 192 } qos_cfg; 193 194 /* 0x00000040 reg16 */ 195 struct { 196 RK_U32 qos_period : 16; 197 RK_U32 reserved : 16; 198 } qos_perd; 199 200 /* 0x00000044 reg17 */ 201 RK_U32 hurry_thd_low; 202 203 /* 0x00000048 reg18 */ 204 RK_U32 hurry_thd_mid; 205 206 /* 0x0000004c reg19 */ 207 RK_U32 hurry_thd_high; 208 209 /* 0x00000050 reg20 */ 210 struct { 211 RK_U32 idle_en_core : 1; 212 RK_U32 idle_en_axi : 1; 213 RK_U32 idle_en_ahb : 1; 214 RK_U32 reserved : 29; 215 } enc_idle_en; 216 217 /* 0x00000054 reg21 */ 218 struct { 219 RK_U32 cke : 1; 220 RK_U32 resetn_hw_en : 1; 221 RK_U32 enc_done_tmvp_en : 1; 222 RK_U32 sram_ckg_en : 1; 223 RK_U32 link_err_stop : 1; 224 RK_U32 reserved : 27; 225 } func_en; 226 227 /* 0x00000058 reg22 */ 228 struct { 229 RK_U32 tq8_ckg : 1; 230 RK_U32 tq4_ckg : 1; 231 RK_U32 bits_ckg_8x8 : 1; 232 RK_U32 bits_ckg_4x4_1 : 1; 233 RK_U32 bits_ckg_4x4_0 : 1; 234 RK_U32 inter_mode_ckg : 1; 235 RK_U32 inter_ctrl_ckg : 1; 236 RK_U32 inter_pred_ckg : 1; 237 RK_U32 intra8_ckg : 1; 238 RK_U32 intra4_ckg : 1; 239 RK_U32 reserved : 22; 240 } rdo_ckg; 241 242 /* 0x0000005c reg23 */ 243 struct { 244 RK_U32 core_id : 2; 245 RK_U32 reserved : 30; 246 } enc_id; 247 /* 0x00000060 reg24 */ 248 struct { 249 RK_U32 dvbm_en : 1; 250 RK_U32 src_badr_sel : 1; 251 RK_U32 vinf_frm_match : 1; 252 RK_U32 reserved : 1; 253 RK_U32 vrsp_half_cycle : 4; 254 RK_U32 reserved1 : 24; 255 } dvbm_cfg; 256 } Vepu540cControlCfg; 257 258 /* class: buffer/video syntax */ 259 /* 0x00000280 reg160 - 0x000003f4 reg253*/ 260 typedef struct Vepu540cBaseCfg_t { 261 vepu540c_online online_addr; 262 /* 0x00000280 reg160 */ 263 RK_U32 adr_src0; 264 265 /* 0x00000284 reg161 */ 266 RK_U32 adr_src1; 267 268 /* 0x00000288 reg162 */ 269 RK_U32 adr_src2; 270 271 /* 0x0000028c reg163 */ 272 RK_U32 rfpw_h_addr; 273 274 /* 0x00000290 reg164 */ 275 RK_U32 rfpw_b_addr; 276 277 /* 0x00000294 reg165 */ 278 RK_U32 rfpr_h_addr; 279 280 /* 0x00000298 reg166 */ 281 RK_U32 rfpr_b_addr; 282 283 /* 0x0000029c reg167 */ 284 RK_U32 cmvw_addr; 285 286 /* 0x000002a0 reg168 */ 287 RK_U32 cmvr_addr; 288 289 /* 0x000002a4 reg169 */ 290 RK_U32 dspw_addr; 291 292 /* 0x000002a8 reg170 */ 293 RK_U32 dspr_addr; 294 295 /* 0x000002ac reg171 */ 296 RK_U32 meiw_addr; 297 298 /* 0x000002b0 reg172 */ 299 RK_U32 bsbt_addr; 300 301 /* 0x000002b4 reg173 */ 302 RK_U32 bsbb_addr; 303 304 /* 0x000002b8 reg174 */ 305 RK_U32 adr_bsbs; 306 307 /* 0x000002bc reg175 */ 308 RK_U32 bsbr_addr; 309 310 /* 0x000002c0 reg176 */ 311 RK_U32 lpfw_addr; 312 313 /* 0x000002c4 reg177 */ 314 RK_U32 lpfr_addr; 315 316 /* 0x000002c8 reg178 */ 317 RK_U32 ebuft_addr ; 318 319 /* 0x000002cc reg179 */ 320 RK_U32 ebufb_addr; 321 322 /* 0x000002d0 reg180 */ 323 RK_U32 rfpt_h_addr; 324 325 /* 0x000002d4 reg180 */ 326 RK_U32 rfpb_h_addr; 327 328 /* 0x000002d8 reg182 */ 329 RK_U32 rfpt_b_addr; 330 331 /* 0x000002dc reg183 */ 332 RK_U32 adr_rfpb_b; 333 334 /* 0x000002e0 reg184 */ 335 RK_U32 adr_smear_rd; 336 337 /* 0x000002e4 reg185 */ 338 RK_U32 adr_smear_wr; 339 340 /* 0x000002e8 reg186 */ 341 RK_U32 adr_roir ; 342 343 /* 0x2ec - 0x2fc */ 344 RK_U32 reserved187_191[5]; 345 346 /* 0x00000300 reg192 */ 347 struct { 348 RK_U32 enc_stnd : 2; 349 RK_U32 cur_frm_ref : 1; 350 RK_U32 mei_stor : 1; 351 352 RK_U32 bs_scp : 1; 353 RK_U32 reserved : 3; 354 355 RK_U32 pic_qp : 6; 356 RK_U32 num_pic_tot_cur : 5; 357 RK_U32 log2_ctu_num : 5; 358 RK_U32 reserved1 : 6; 359 RK_U32 slen_fifo : 1; 360 RK_U32 rec_fbc_dis : 1; 361 } enc_pic; 362 363 /* 0x304 */ 364 RK_U32 reserved_193; 365 366 /* 0x00000308 reg194 */ 367 struct { 368 RK_U32 frame_id : 8; 369 RK_U32 reserved : 8; 370 RK_U32 ch_id : 2; 371 RK_U32 vrsp_rtn_en : 1; 372 RK_U32 reserved1 : 13; 373 } dvbm_id; 374 375 /* 0x0000030c reg195 */ 376 RK_U32 bsp_size; 377 /* 0x00000310 reg196 */ 378 struct { 379 RK_U32 pic_wd8_m1 : 11; 380 RK_U32 reserved : 5; 381 RK_U32 pic_hd8_m1 : 11; 382 RK_U32 reserved1 : 5; 383 } enc_rsl; 384 385 /* 0x00000314 reg197 */ 386 struct { 387 RK_U32 pic_wfill : 6; 388 RK_U32 reserved : 10; 389 RK_U32 pic_hfill : 6; 390 RK_U32 reserved1 : 10; 391 } src_fill; 392 393 /* 0x00000318 reg198 */ 394 struct { 395 RK_U32 alpha_swap : 1; 396 RK_U32 rbuv_swap : 1; 397 RK_U32 src_cfmt : 4; 398 RK_U32 src_rcne : 1; 399 RK_U32 out_fmt : 1; 400 RK_U32 src_range_trns_en : 1; 401 RK_U32 src_range_trns_sel : 1; 402 RK_U32 chroma_ds_mode : 1; 403 RK_U32 reserved : 21; 404 } src_fmt; 405 406 /* 0x0000031c reg199 */ 407 struct { 408 RK_U32 csc_wgt_b2y : 9; 409 RK_U32 csc_wgt_g2y : 9; 410 RK_U32 csc_wgt_r2y : 9; 411 RK_U32 reserved : 5; 412 } src_udfy; 413 414 /* 0x00000320 reg200 */ 415 struct { 416 RK_U32 csc_wgt_b2u : 9; 417 RK_U32 csc_wgt_g2u : 9; 418 RK_U32 csc_wgt_r2u : 9; 419 RK_U32 reserved : 5; 420 } src_udfu; 421 422 /* 0x00000324 reg201 */ 423 struct { 424 RK_U32 csc_wgt_b2v : 9; 425 RK_U32 csc_wgt_g2v : 9; 426 RK_U32 csc_wgt_r2v : 9; 427 RK_U32 reserved : 5; 428 } src_udfv; 429 430 /* 0x00000328 reg202 */ 431 struct { 432 RK_U32 csc_ofst_v : 8; 433 RK_U32 csc_ofst_u : 8; 434 RK_U32 csc_ofst_y : 5; 435 RK_U32 reserved : 11; 436 } src_udfo; 437 438 /* 0x0000032c reg203 */ 439 struct { 440 RK_U32 reserved : 26; 441 RK_U32 src_mirr : 1; 442 RK_U32 src_rot : 2; 443 RK_U32 reserved1 : 3; 444 } src_proc; 445 446 /* 0x00000330 reg204 */ 447 struct { 448 RK_U32 pic_ofst_x : 14; 449 RK_U32 reserved : 2; 450 RK_U32 pic_ofst_y : 14; 451 RK_U32 reserved1 : 2; 452 } pic_ofst; 453 454 /* 0x00000334 reg205 */ 455 struct { 456 RK_U32 src_strd0 : 17; 457 RK_U32 reserved : 15; 458 } src_strd0; 459 460 /* 0x00000338 reg206 */ 461 struct { 462 RK_U32 src_strd1 : 16; 463 RK_U32 reserved : 16; 464 } src_strd1; 465 466 /* 0x0000033c reg207 */ 467 struct { 468 RK_U32 pp_corner_filter_strength : 2; 469 RK_U32 reserved : 2; 470 RK_U32 pp_edge_filter_strength : 2; 471 RK_U32 reserved1 : 2; 472 RK_U32 pp_internal_filter_strength : 2; 473 RK_U32 reserved2 : 22; 474 } src_flt_cfg; 475 476 /* 0x340 - 0x34c */ 477 RK_U32 reserved208_211[4]; 478 479 /* 0x00000350 reg212 */ 480 struct { 481 RK_U32 rc_en : 1; 482 RK_U32 aq_en : 1; 483 RK_U32 aq_mode : 1; 484 RK_U32 reserved : 9; 485 RK_U32 rc_ctu_num : 20; 486 } rc_cfg; 487 488 /* 0x00000354 reg213 */ 489 struct { 490 RK_U32 reserved : 16; 491 RK_U32 rc_qp_range : 4; 492 RK_U32 rc_max_qp : 6; 493 RK_U32 rc_min_qp : 6; 494 } rc_qp; 495 496 /* 0x00000358 reg214 */ 497 struct { 498 RK_U32 ctu_ebit : 20; 499 RK_U32 reserved : 12; 500 } rc_tgt; 501 502 /* 0x35c */ 503 RK_U32 reserved_215; 504 505 /* 0x00000360 reg216 */ 506 struct { 507 RK_U32 sli_splt : 1; 508 RK_U32 sli_splt_mode : 1; 509 RK_U32 sli_splt_cpst : 1; 510 RK_U32 reserved : 12; 511 RK_U32 sli_flsh : 1; 512 RK_U32 sli_max_num_m1 : 15; 513 RK_U32 reserved1 : 1; 514 } sli_splt; 515 516 /* 0x00000364 reg217 */ 517 struct { 518 RK_U32 sli_splt_byte : 20; 519 RK_U32 reserved : 12; 520 } sli_byte; 521 522 /* 0x00000368 reg218 */ 523 struct { 524 RK_U32 sli_splt_cnum_m1 : 20; 525 RK_U32 reserved : 12; 526 } sli_cnum; 527 528 /* 0x36c */ 529 /* 0x0000036c reg219 */ 530 struct { 531 RK_U32 uvc_partition0_len : 12; 532 RK_U32 uvc_partition_len : 12; 533 RK_U32 uvc_skip_len : 6; 534 RK_U32 reserved : 2; 535 } uvc_cfg; 536 537 /* 0x00000370 reg220 */ 538 struct { 539 RK_U32 cime_srch_dwnh : 4; 540 RK_U32 cime_srch_uph : 4; 541 RK_U32 cime_srch_rgtw : 4; 542 RK_U32 cime_srch_lftw : 4; 543 RK_U32 dlt_frm_num : 16; 544 } me_rnge; 545 546 /* 0x00000374 reg221 */ 547 struct { 548 RK_U32 srgn_max_num : 7; 549 RK_U32 cime_dist_thre : 13; 550 RK_U32 rme_srch_h : 2; 551 RK_U32 rme_srch_v : 2; 552 RK_U32 rme_dis : 3; 553 RK_U32 reserved1 : 1; 554 RK_U32 fme_dis : 3; 555 RK_U32 reserved2 : 1; 556 } me_cfg; 557 558 /* 0x00000378 reg222 */ 559 struct { 560 RK_U32 cime_size_rama : 10; 561 RK_U32 reserved : 1; 562 RK_U32 cime_hgt_rama : 5; 563 RK_U32 reserved1 : 2; 564 RK_U32 cme_linebuf_w : 10; 565 RK_U32 fme_prefsu_en : 2; 566 RK_U32 colmv_stor_hevc : 1; 567 RK_U32 colmv_load_hevc : 1; 568 } me_cach; 569 570 /* 0x37c - 0x39c */ 571 RK_U32 reserved223_231[9]; 572 /* 0x000003a0 reg232 */ 573 struct { 574 RK_U32 rect_size : 1; 575 RK_U32 reserved : 2; 576 RK_U32 vlc_lmt : 1; 577 RK_U32 chrm_spcl : 1; 578 RK_U32 reserved1 : 8; 579 RK_U32 ccwa_e : 1; 580 RK_U32 reserved2 : 1; 581 RK_U32 intra_cost_e : 1; 582 RK_U32 reserved3 : 4; 583 RK_U32 scl_lst_sel : 2; 584 RK_U32 reserved4 : 6; 585 RK_U32 atf_e : 1; 586 RK_U32 atr_e : 1; 587 RK_U32 reserved5 : 2; 588 } rdo_cfg; 589 590 /* 0x000003a4 reg233 */ 591 struct { 592 RK_U32 rdo_mark_mode : 9; 593 RK_U32 reserved : 23; 594 } iprd_csts; 595 596 /* 0x3a8 - 0x3ac */ 597 RK_U32 reserved234_235[2]; 598 599 /* 0x000003b0 reg236 */ 600 struct { 601 RK_U32 nal_ref_idc : 2; 602 RK_U32 nal_unit_type : 5; 603 RK_U32 reserved : 25; 604 } synt_nal; 605 606 /* 0x000003b4 reg237 */ 607 struct { 608 RK_U32 max_fnum : 4; 609 RK_U32 drct_8x8 : 1; 610 RK_U32 mpoc_lm4 : 4; 611 RK_U32 reserved : 23; 612 } synt_sps; 613 614 /* 0x000003b8 reg238 */ 615 struct { 616 RK_U32 etpy_mode : 1; 617 RK_U32 trns_8x8 : 1; 618 RK_U32 csip_flag : 1; 619 RK_U32 num_ref0_idx : 2; 620 RK_U32 num_ref1_idx : 2; 621 RK_U32 pic_init_qp : 6; 622 RK_U32 cb_ofst : 5; 623 RK_U32 cr_ofst : 5; 624 RK_U32 reserved : 1; 625 RK_U32 dbf_cp_flg : 1; 626 RK_U32 reserved1 : 7; 627 } synt_pps; 628 629 /* 0x000003bc reg239 */ 630 struct { 631 RK_U32 sli_type : 2; 632 RK_U32 pps_id : 8; 633 RK_U32 drct_smvp : 1; 634 RK_U32 num_ref_ovrd : 1; 635 RK_U32 cbc_init_idc : 2; 636 RK_U32 reserved : 2; 637 RK_U32 frm_num : 16; 638 } synt_sli0; 639 640 /* 0x000003c0 reg240 */ 641 struct { 642 RK_U32 idr_pid : 16; 643 RK_U32 poc_lsb : 16; 644 } synt_sli1; 645 646 /* 0x000003c4 reg241 */ 647 struct { 648 RK_U32 rodr_pic_idx : 2; 649 RK_U32 ref_list0_rodr : 1; 650 RK_U32 sli_beta_ofst : 4; 651 RK_U32 sli_alph_ofst : 4; 652 RK_U32 dis_dblk_idc : 2; 653 RK_U32 reserved : 3; 654 RK_U32 rodr_pic_num : 16; 655 } synt_sli2; 656 657 /* 0x000003c8 reg242 */ 658 struct { 659 RK_U32 nopp_flg : 1; 660 RK_U32 ltrf_flg : 1; 661 RK_U32 arpm_flg : 1; 662 RK_U32 mmco4_pre : 1; 663 RK_U32 mmco_type0 : 3; 664 RK_U32 mmco_parm0 : 16; 665 RK_U32 mmco_type1 : 3; 666 RK_U32 mmco_type2 : 3; 667 RK_U32 reserved : 3; 668 } synt_refm0; 669 670 /* 0x000003cc reg243 */ 671 struct { 672 RK_U32 mmco_parm1 : 16; 673 RK_U32 mmco_parm2 : 16; 674 } synt_refm1; 675 676 /* 0x000003d0 reg244 */ 677 struct { 678 RK_U32 long_term_frame_idx0 : 4; 679 RK_U32 long_term_frame_idx1 : 4; 680 RK_U32 long_term_frame_idx2 : 4; 681 RK_U32 reserved : 20; 682 } synt_refm2; 683 684 /* 0x3d4 - 0x3ec */ 685 RK_U32 reserved248_251[7]; 686 687 /* 0x000003f0 reg252 */ 688 struct { 689 RK_U32 mv_v_lmt_thd : 14; 690 RK_U32 reserved : 1; 691 RK_U32 mv_v_lmt_en : 1; 692 RK_U32 reserved1 : 16; 693 } sli_cfg; 694 695 /* 0x3f4 - 0x3fc */ 696 RK_U32 reserved253_255[3]; 697 698 /* 0x00000400 reg256 - 0x00000480 reg288 */ 699 Vepu540cJpegReg jpegReg; 700 701 } Vepu540cBaseCfg; 702 703 /* class: rc/roi/aq/klut */ 704 /* 0x00001000 reg1024 - 0x000010e0 reg1080 */ 705 typedef struct Vepu540cRcROiCfg_t { 706 /* 0x00001000 reg1024 */ 707 struct { 708 RK_U32 qp_adj0 : 5; 709 RK_U32 qp_adj1 : 5; 710 RK_U32 qp_adj2 : 5; 711 RK_U32 qp_adj3 : 5; 712 RK_U32 qp_adj4 : 5; 713 RK_U32 reserved : 7; 714 } rc_adj0; 715 716 /* 0x00001004 reg1025 */ 717 struct { 718 RK_U32 qp_adj5 : 5; 719 RK_U32 qp_adj6 : 5; 720 RK_U32 qp_adj7 : 5; 721 RK_U32 qp_adj8 : 5; 722 RK_U32 reserved : 12; 723 } rc_adj1; 724 725 /* 0x00001008 reg1026 - 0x00001028 reg1034 */ 726 RK_U32 rc_dthd_0_8[9]; 727 728 /* 0x102c */ 729 RK_U32 reserved_1035; 730 731 /* 0x00001030 reg1036 */ 732 struct { 733 RK_U32 qpmin_area0 : 6; 734 RK_U32 qpmax_area0 : 6; 735 RK_U32 qpmin_area1 : 6; 736 RK_U32 qpmax_area1 : 6; 737 RK_U32 qpmin_area2 : 6; 738 RK_U32 reserved : 2; 739 } roi_qthd0; 740 741 /* 0x00001034 reg1037 */ 742 struct { 743 RK_U32 qpmax_area2 : 6; 744 RK_U32 qpmin_area3 : 6; 745 RK_U32 qpmax_area3 : 6; 746 RK_U32 qpmin_area4 : 6; 747 RK_U32 qpmax_area4 : 6; 748 RK_U32 reserved : 2; 749 } roi_qthd1; 750 751 /* 0x00001038 reg1038 */ 752 struct { 753 RK_U32 qpmin_area5 : 6; 754 RK_U32 qpmax_area5 : 6; 755 RK_U32 qpmin_area6 : 6; 756 RK_U32 qpmax_area6 : 6; 757 RK_U32 qpmin_area7 : 6; 758 RK_U32 reserved : 2; 759 } roi_qthd2; 760 761 /* 0x0000103c reg1039 */ 762 struct { 763 RK_U32 qpmax_area7 : 6; 764 RK_U32 reserved : 24; 765 RK_U32 qpmap_mode : 2; 766 } roi_qthd3; 767 768 /* 0x1040 */ 769 RK_U32 reserved_1040; 770 771 /* 0x00001044 reg1041 - 0x00001050 reg1044 */ 772 RK_U8 aq_tthd[16]; 773 774 /* 775 * 0x00001054 reg1045 - 0x00001060 reg1048 776 * only low 6 bits is valid for per step. 777 */ 778 RK_U8 aq_step[16]; 779 780 /* 0x00001064 reg1049 */ 781 struct { 782 RK_U32 madi_th0 : 8; 783 RK_U32 madi_th1 : 8; 784 RK_U32 madi_th2 : 8; 785 RK_U32 reserved : 8; 786 } madi_st_thd; 787 788 /* 0x00001068 reg1050 */ 789 struct { 790 RK_U32 madp_th0 : 12; 791 RK_U32 reserved : 4; 792 RK_U32 madp_th1 : 12; 793 RK_U32 reserved1 : 4; 794 } madp_st_thd0; 795 796 /* 0x0000106c reg1051 */ 797 struct { 798 RK_U32 madp_th2 : 12; 799 RK_U32 reserved : 20; 800 } madp_st_thd1; 801 802 /* 0x1070 - 0x1078 */ 803 RK_U32 reserved1052_1054[3]; 804 805 /* 0x0000107c reg1055 */ 806 struct { 807 RK_U32 chrm_klut_ofst : 4; 808 RK_U32 reserved : 4; 809 RK_U32 inter_chrm_dist_multi_hevc : 6; 810 RK_U32 reserved1 : 18; 811 } klut_ofst; 812 /*0x00001080 reg1056 - 0x0000110c reg1091 */ 813 Vepu540cRoiCfg roi_cfg; 814 } Vepu540cRcRoiCfg; 815 816 /* class: iprd/iprd_wgt/rdo_wgta/prei_dif/sobel */ 817 /* 0x00001700 reg1472 - 0x00001cd4 reg1845 */ 818 typedef struct Vepu540cSection3_t { 819 /* 0x1700 */ 820 /* 0x00001700 reg1472 */ 821 struct { 822 RK_U32 iprd_tthdy4_0 : 12; 823 RK_U32 reserved : 4; 824 RK_U32 iprd_tthdy4_1 : 12; 825 RK_U32 reserved1 : 4; 826 } iprd_tthdy4_0; 827 828 /* 0x00001704 reg1473 */ 829 struct { 830 RK_U32 iprd_tthdy4_2 : 12; 831 RK_U32 reserved : 4; 832 RK_U32 iprd_tthdy4_3 : 12; 833 RK_U32 reserved1 : 4; 834 } iprd_tthdy4_1; 835 836 /* 0x00001708 reg1474 */ 837 struct { 838 RK_U32 iprd_tthdc8_0 : 12; 839 RK_U32 reserved : 4; 840 RK_U32 iprd_tthdc8_1 : 12; 841 RK_U32 reserved1 : 4; 842 } iprd_tthdc8_0; 843 844 /* 0x0000170c reg1475 */ 845 struct { 846 RK_U32 iprd_tthdc8_2 : 12; 847 RK_U32 reserved : 4; 848 RK_U32 iprd_tthdc8_3 : 12; 849 RK_U32 reserved1 : 4; 850 } iprd_tthdc8_1; 851 852 /* 0x00001710 reg1476 */ 853 struct { 854 RK_U32 iprd_tthdy8_0 : 12; 855 RK_U32 reserved : 4; 856 RK_U32 iprd_tthdy8_1 : 12; 857 RK_U32 reserved1 : 4; 858 } iprd_tthdy8_0; 859 860 /* 0x00001714 reg1477 */ 861 struct { 862 RK_U32 iprd_tthdy8_2 : 12; 863 RK_U32 reserved : 4; 864 RK_U32 iprd_tthdy8_3 : 12; 865 RK_U32 reserved1 : 4; 866 } iprd_tthdy8_1; 867 868 /* 0x00001718 reg1478 */ 869 struct { 870 RK_U32 iprd_tthd_ul : 12; 871 RK_U32 reserved : 20; 872 } iprd_tthd_ul; 873 874 /* 0x0000171c reg1479 */ 875 struct { 876 RK_U32 iprd_wgty8_0 : 8; 877 RK_U32 iprd_wgty8_1 : 8; 878 RK_U32 iprd_wgty8_2 : 8; 879 RK_U32 iprd_wgty8_3 : 8; 880 } iprd_wgty8; 881 882 /* 0x00001720 reg1480 */ 883 struct { 884 RK_U32 iprd_wgty4_0 : 8; 885 RK_U32 iprd_wgty4_1 : 8; 886 RK_U32 iprd_wgty4_2 : 8; 887 RK_U32 iprd_wgty4_3 : 8; 888 } iprd_wgty4; 889 890 /* 0x00001724 reg1481 */ 891 struct { 892 RK_U32 iprd_wgty16_0 : 8; 893 RK_U32 iprd_wgty16_1 : 8; 894 RK_U32 iprd_wgty16_2 : 8; 895 RK_U32 iprd_wgty16_3 : 8; 896 } iprd_wgty16; 897 898 /* 0x00001728 reg1482 */ 899 struct { 900 RK_U32 iprd_wgtc8_0 : 8; 901 RK_U32 iprd_wgtc8_1 : 8; 902 RK_U32 iprd_wgtc8_2 : 8; 903 RK_U32 iprd_wgtc8_3 : 8; 904 } iprd_wgtc8; 905 906 /* 0x172c */ 907 RK_U32 reserved_1483; 908 909 /* 0x00001730 reg1484 */ 910 struct { 911 RK_U32 quant_f_bias_I : 10; 912 RK_U32 quant_f_bias_P : 10; 913 RK_U32 reserve : 12; 914 } RDO_QUANT; 915 916 /* 0x1734 - 0x173c */ 917 RK_U32 reserved1485_1487[3]; 918 919 /* 0x00001740 reg1488 */ 920 // atr 921 struct { 922 RK_U32 atr_thd0 : 12; 923 RK_U32 reserve0 : 4; 924 RK_U32 atr_thd1 : 12; 925 RK_U32 reserve1 : 4; 926 } ATR_THD0; // only 264 927 928 /* 0x1744 */ 929 struct { 930 RK_U32 atr_thd2 : 12; 931 RK_U32 reserve0 : 4; 932 RK_U32 atr_thdqp : 6; 933 RK_U32 reserve1 : 10; 934 } ATR_THD1; // only 264 935 936 /* 0x1748 */ 937 struct { 938 RK_U32 atr1_thd0 : 12; 939 RK_U32 reserve0 : 4; 940 RK_U32 atr1_thd1 : 12; 941 RK_U32 reserve1 : 4; 942 } ATR_THD10; // only 264 943 944 /* 0x174c */ 945 struct { 946 RK_U32 atr1_thd2 : 12; 947 RK_U32 reserve1 : 20; 948 } ATR_THD11; // only 264 949 950 // /* 0x1748 - 0x174c */ 951 // RK_U32 reserved1490_1491[2]; 952 953 /* 0x00001750 reg1492 */ 954 struct { 955 RK_U32 lvl16_atr_wgt0 : 8; 956 RK_U32 lvl16_atr_wgt1 : 8; 957 RK_U32 lvl16_atr_wgt2 : 8; 958 RK_U32 reserved : 8; 959 } Lvl16_ATR_WGT; // only 264 960 961 /* 0x1754 */ 962 struct { 963 RK_U32 lvl8_atr_wgt0 : 8; 964 RK_U32 lvl8_atr_wgt1 : 8; 965 RK_U32 lvl8_atr_wgt2 : 8; 966 RK_U32 reserved : 8; 967 } Lvl8_ATR_WGT; // only 264 968 969 /* 0x1758 */ 970 struct { 971 RK_U32 lvl4_atr_wgt0 : 8; 972 RK_U32 lvl4_atr_wgt1 : 8; 973 RK_U32 lvl4_atr_wgt2 : 8; 974 RK_U32 reserved : 8; 975 } Lvl4_ATR_WGT; // only 264 976 977 /* 0x175c */ 978 RK_U32 reserved_1495; 979 980 /* 0x00001760 reg1496 */ 981 struct { 982 RK_U32 cime_pmv_num : 1; 983 RK_U32 cime_fuse : 1; 984 RK_U32 itp_mode : 1; 985 RK_U32 reserved : 1; 986 RK_U32 move_lambda : 4; 987 RK_U32 rime_lvl_mrg : 2; 988 RK_U32 rime_prelvl_en : 2; 989 RK_U32 rime_prersu_en : 3; 990 RK_U32 reserved1 : 17; 991 } cime_sqi_cfg; 992 993 /* 0x00001764 reg1497 */ 994 struct { 995 RK_U32 cime_mvd_th0 : 9; 996 RK_U32 reserved : 1; 997 RK_U32 cime_mvd_th1 : 9; 998 RK_U32 reserved1 : 1; 999 RK_U32 cime_mvd_th2 : 9; 1000 RK_U32 reserved2 : 3; 1001 } cime_mvd_th; 1002 1003 /* 0x00001768 reg1498 */ 1004 struct { 1005 RK_U32 cime_madp_th : 12; 1006 RK_U32 reserved : 20; 1007 } cime_madp_th; 1008 1009 /* 0x0000176c reg1499 */ 1010 struct { 1011 RK_U32 cime_multi0 : 8; 1012 RK_U32 cime_multi1 : 8; 1013 RK_U32 cime_multi2 : 8; 1014 RK_U32 cime_multi3 : 8; 1015 } cime_multi; 1016 1017 /* 0x00001770 reg1500 */ 1018 struct { 1019 RK_U32 rime_mvd_th0 : 3; 1020 RK_U32 reserved : 1; 1021 RK_U32 rime_mvd_th1 : 3; 1022 RK_U32 reserved1 : 9; 1023 RK_U32 fme_madp_th : 12; 1024 RK_U32 reserved2 : 4; 1025 } rime_mvd_th; 1026 1027 /* 0x00001774 reg1501 */ 1028 struct { 1029 RK_U32 rime_madp_th0 : 12; 1030 RK_U32 reserved : 4; 1031 RK_U32 rime_madp_th1 : 12; 1032 RK_U32 reserved1 : 4; 1033 } rime_madp_th; 1034 1035 /* 0x00001778 reg1502 */ 1036 struct { 1037 RK_U32 rime_multi0 : 10; 1038 RK_U32 rime_multi1 : 10; 1039 RK_U32 rime_multi2 : 10; 1040 RK_U32 reserved : 2; 1041 } rime_multi; 1042 1043 /* 0x0000177c reg1503 */ 1044 struct { 1045 RK_U32 cmv_th0 : 8; 1046 RK_U32 cmv_th1 : 8; 1047 RK_U32 cmv_th2 : 8; 1048 RK_U32 reserved : 8; 1049 } cmv_st_th; 1050 1051 /* 0x1780 - 0x17fc */ 1052 RK_U32 reserved1504_1535[32]; 1053 1054 /* 0x00001800 - 0x18fc */ 1055 RK_U32 reserved1537_1599[64]; 1056 1057 /* wgt_qp48_grpa */ 1058 /* 0x00001900 reg1600 - 0x19cc */ 1059 RK_U32 rdo_wgta_qp_grpa_0_51[52]; 1060 } Vepu540cSection3; 1061 1062 /* class: mmu */ 1063 /* 0x0000f000 reg15360 - 0x0000f064 reg15385 */ 1064 1065 typedef struct HalVepu540cReg_t { 1066 Vepu540cControlCfg reg_ctl; 1067 Vepu540cBaseCfg reg_base; 1068 Vepu540cRcRoiCfg reg_rc_roi; 1069 Vepu540cSection3 reg_s3; 1070 vepu540c_rdo_cfg reg_rdo; 1071 vepu540c_scl_cfg reg_scl; 1072 vepu540c_jpeg_tab jpeg_table; 1073 vepu540c_status reg_st; 1074 } HalVepu540cRegSet; 1075 1076 #endif 1077