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_JPEGE_VEPU540C_REG_H__ 18 #define __HAL_JPEGE_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 JpegVepu540cControlCfg_t { 26 /* 0x00000000 reg0 */ 27 struct { 28 RK_U32 sub_ver : 8; 29 RK_U32 h264_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 } reg0001_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 : 3; 48 RK_U32 reserved : 21; 49 } reg0004_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 } reg0005_enc_clr; 57 58 /* 0x18 */ 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 reserved1 : 6; 66 } reg0006_vs_ldly; 67 68 /* 0x1c */ 69 RK_U32 reserved007; 70 71 /* 0x00000020 reg8 */ 72 struct { 73 RK_U32 enc_done_en : 1; 74 RK_U32 lkt_node_done_en : 1; 75 RK_U32 sclr_done_en : 1; 76 RK_U32 slc_done_en : 1; 77 RK_U32 bsf_oflw_en : 1; 78 RK_U32 brsp_otsd_en : 1; 79 RK_U32 wbus_err_en : 1; 80 RK_U32 rbus_err_en : 1; 81 RK_U32 wdg_en : 1; 82 RK_U32 lkt_err_int_en : 1; 83 RK_U32 lkt_err_stop_en : 1; 84 RK_U32 lkt_force_stop_en : 1; 85 RK_U32 jslc_done_en : 1; 86 RK_U32 jbsf_oflw_en : 1; 87 RK_U32 reserved : 18; 88 } reg0008_int_en; 89 90 /* 0x00000024 reg9 */ 91 struct { 92 RK_U32 enc_done_msk : 1; 93 RK_U32 lkt_node_done_msk : 1; 94 RK_U32 sclr_done_msk : 1; 95 RK_U32 slc_done_msk : 1; 96 RK_U32 bsf_oflw_msk : 1; 97 RK_U32 brsp_otsd_msk : 1; 98 RK_U32 wbus_err_msk : 1; 99 RK_U32 rbus_err_msk : 1; 100 RK_U32 wdg_msk : 1; 101 RK_U32 lkt_err_msk : 1; 102 RK_U32 lkt_err_stop_msk : 1; 103 RK_U32 lkt_force_stop_msk : 1; 104 RK_U32 jslc_done_msk : 1; 105 RK_U32 jbsf_oflw_msk : 1; 106 RK_U32 reserved : 18; 107 } reg0009_int_msk; 108 109 /* 0x00000028 reg10 */ 110 struct { 111 RK_U32 enc_done_clr : 1; 112 RK_U32 lkt_node_done_clr : 1; 113 RK_U32 sclr_done_clr : 1; 114 RK_U32 slc_done_clr : 1; 115 RK_U32 bsf_oflw_clr : 1; 116 RK_U32 brsp_otsd_clr : 1; 117 RK_U32 wbus_err_clr : 1; 118 RK_U32 rbus_err_clr : 1; 119 RK_U32 wdg_clr : 1; 120 RK_U32 lkt_err_clr : 1; 121 RK_U32 lkt_err_stop_msk : 1; 122 RK_U32 lkt_force_stop_msk : 1; 123 RK_U32 jslc_done_clr : 1; 124 RK_U32 jbsf_oflw_clr : 1; 125 RK_U32 reserved : 18; 126 } reg0010_int_clr; 127 128 /* 0x0000002c reg11 */ 129 struct { 130 RK_U32 enc_done_sta : 1; 131 RK_U32 lkt_node_done_sta : 1; 132 RK_U32 sclr_done_sta : 1; 133 RK_U32 slc_done_sta : 1; 134 RK_U32 bsf_oflw_sta : 1; 135 RK_U32 brsp_otsd_sta : 1; 136 RK_U32 wbus_err_sta : 1; 137 RK_U32 rbus_err_sta : 1; 138 RK_U32 wdg_sta : 1; 139 RK_U32 lkt_err_sta : 1; 140 RK_U32 lkt_err_stop_sta : 1; 141 RK_U32 lkt_force_stop_sta : 1; 142 RK_U32 jslc_done_sta : 1; 143 RK_U32 jbsf_oflw_sta : 1; 144 RK_U32 reserved : 18; 145 } reg0011_int_sta; 146 147 /* 0x00000030 reg12 */ 148 struct { 149 RK_U32 jpeg_bus_edin : 4; 150 RK_U32 src_bus_edin : 4; 151 RK_U32 meiw_bus_edin : 4; 152 RK_U32 bsw_bus_edin : 4; 153 RK_U32 lktr_bus_edin : 4; 154 RK_U32 roir_bus_edin : 4; 155 RK_U32 lktw_bus_edin : 4; 156 RK_U32 rec_nfbc_bus_edin : 4; 157 } reg0012_dtrns_map; 158 159 /* 0x00000034 reg13 */ 160 struct { 161 RK_U32 reserved : 16; 162 RK_U32 axi_brsp_cke : 10; 163 RK_U32 reserved1 : 6; 164 } reg0013_dtrns_cfg; 165 166 /* 0x00000038 reg14 */ 167 struct { 168 RK_U32 vs_load_thd : 24; 169 RK_U32 rfp_load_thd : 8; 170 } reg0014_enc_wdg; 171 172 /* 0x0000003c reg15 */ 173 struct { 174 RK_U32 hurry_en : 1; 175 RK_U32 hurry_low : 3; 176 RK_U32 hurry_mid : 3; 177 RK_U32 hurry_high : 3; 178 RK_U32 reserved : 22; 179 } reg0015_qos_cfg; 180 181 /* 0x00000040 reg16 */ 182 struct { 183 RK_U32 qos_period : 16; 184 RK_U32 reserved : 16; 185 } reg0016_qos_perd; 186 187 /* 0x00000044 reg17 */ 188 RK_U32 reg0017_hurry_thd_low; 189 190 /* 0x00000048 reg18 */ 191 RK_U32 reg0018_hurry_thd_mid; 192 193 /* 0x0000004c reg19 */ 194 RK_U32 reg0019_hurry_thd_high; 195 196 /* 0x00000050 reg20 */ 197 struct { 198 RK_U32 idle_en_core : 1; 199 RK_U32 idle_en_axi : 1; 200 RK_U32 idle_en_ahb : 1; 201 RK_U32 reserved : 29; 202 } reg0020_enc_idle_en; 203 204 /* 0x00000054 reg21 */ 205 struct { 206 RK_U32 cke : 1; 207 RK_U32 resetn_hw_en : 1; 208 RK_U32 enc_done_tmvp_en : 1; 209 RK_U32 sram_ckg_en : 1; 210 RK_U32 link_err_stop : 1; 211 RK_U32 reserved : 27; 212 } reg0021_func_en; 213 214 /* 0x00000058 reg22 */ 215 struct { 216 RK_U32 recon32_ckg : 1; 217 RK_U32 iqit32_ckg : 1; 218 RK_U32 q32_ckg : 1; 219 RK_U32 t32_ckg : 1; 220 RK_U32 cabac32_ckg : 1; 221 RK_U32 recon16_ckg : 1; 222 RK_U32 iqit16_ckg : 1; 223 RK_U32 q16_ckg : 1; 224 RK_U32 t16_ckg : 1; 225 RK_U32 cabac16_ckg : 1; 226 RK_U32 recon8_ckg : 1; 227 RK_U32 iqit8_ckg : 1; 228 RK_U32 q8_ckg : 1; 229 RK_U32 t8_ckg : 1; 230 RK_U32 cabac8_ckg : 1; 231 RK_U32 recon4_ckg : 1; 232 RK_U32 iqit4_ckg : 1; 233 RK_U32 q4_ckg : 1; 234 RK_U32 t4_ckg : 1; 235 RK_U32 cabac4_ckg : 1; 236 RK_U32 intra32_ckg : 1; 237 RK_U32 intra16_ckg : 1; 238 RK_U32 intra8_ckg : 1; 239 RK_U32 intra4_ckg : 1; 240 RK_U32 inter_pred_ckg : 1; 241 RK_U32 reserved : 7; 242 } reg0022_rdo_ckg; 243 244 /* 0x0000005c reg23 */ 245 struct { 246 RK_U32 core_id : 2; 247 RK_U32 reserved : 30; 248 } reg0023_enc_id; 249 250 251 /* 0x00000060 reg24 */ 252 struct { 253 RK_U32 dvbm_en : 1; 254 RK_U32 reserved0 : 1; 255 RK_U32 vinf_frm_match : 1; 256 RK_U32 vrsp_rtn_en : 1; 257 RK_U32 vrsp_half_cycle : 4; 258 RK_U32 reserved : 24; 259 } reg0024_dvbm_cfg; 260 261 /* 0x00000064 - 0x6c*/ 262 RK_U32 reg025_027[3]; 263 264 /* 0x00000070*/ 265 struct { 266 RK_U32 reserved : 4; 267 RK_U32 lkt_addr : 28; 268 } reg0028_lkt_base_addr; 269 270 /* 0x74 - 0xfc */ 271 RK_U32 reserved29_63[35]; 272 273 struct { 274 RK_U32 node_core_id : 2; 275 RK_U32 node_int : 1; 276 RK_U32 reserved : 1; 277 RK_U32 task_id : 12; 278 RK_U32 reserved1 : 16; 279 } reg0064_lkt_node_cfg; 280 281 /* 0x00000104 reg65 */ 282 struct { 283 RK_U32 pcfg_rd_en : 1; 284 RK_U32 reserved : 3; 285 RK_U32 lkt_addr_pcfg : 28; 286 } reg0065_lkt_addr_pcfg; 287 288 /* 0x00000108 reg66 */ 289 struct { 290 RK_U32 rc_cfg_rd_en : 1; 291 RK_U32 reserved : 3; 292 RK_U32 lkt_addr_rc_cfg : 28; 293 } reg0066_lkt_addr_rc_cfg; 294 295 /* 0x0000010c reg67 */ 296 struct { 297 RK_U32 par_cfg_rd_en : 1; 298 RK_U32 reserved : 3; 299 RK_U32 lkt_addr_par_cfg : 28; 300 } reg0067_lkt_addr_par_cfg; 301 302 /* 0x00000110 reg68 */ 303 struct { 304 RK_U32 sqi_cfg_rd_en : 1; 305 RK_U32 reserved : 3; 306 RK_U32 lkt_addr_sqi_cfg : 28; 307 } reg0068_lkt_addr_sqi_cfg; 308 309 /* 0x00000114 reg69 */ 310 struct { 311 RK_U32 scal_cfg_rd_en : 1; 312 RK_U32 reserved : 3; 313 RK_U32 lkt_addr_scal_cfg : 28; 314 } reg0069_lkt_addr_scal_cfg; 315 316 /* 0x00000118 reg70 */ 317 struct { 318 RK_U32 pp_cfg_rd_en : 1; 319 RK_U32 reserved : 3; 320 RK_U32 lkt_addr_pp_cfg : 28; 321 } reg0070_lkt_addr_osd_cfg; 322 323 /* 0x0000011c reg71 */ 324 struct { 325 RK_U32 st_out_en : 1; 326 RK_U32 reserved : 3; 327 RK_U32 lkt_addr_st : 28; 328 } reg0071_lkt_addr_st; 329 330 /* 0x00000120 reg72 */ 331 struct { 332 RK_U32 nxt_node_vld : 1; 333 RK_U32 reserved : 3; 334 RK_U32 lkt_addr_nxt : 28; 335 } reg0072_lkt_addr_nxt; 336 337 338 } jpeg_vepu540c_control_cfg; 339 340 /* class: buffer/video syntax */ 341 /* 0x00000280 reg160 - 0x000003f4 reg253*/ 342 typedef struct JpegVepu540cBase_t { 343 vepu540c_online online_addr; 344 /* 0x00000280 reg160 */ 345 RK_U32 reg0160_adr_src0; 346 347 /* 0x00000284 reg161 */ 348 RK_U32 reg0161_adr_src1; 349 350 /* 0x00000288 reg162 */ 351 RK_U32 reg0162_adr_src2; 352 353 /* 0x0000028c reg163 */ 354 RK_U32 reg0163_rfpw_h_addr; 355 356 /* 0x00000290 reg164 */ 357 RK_U32 reg0164_rfpw_b_addr; 358 359 /* 0x00000294 reg165 */ 360 RK_U32 reg0165_rfpr_h_addr; 361 362 /* 0x00000298 reg166 */ 363 RK_U32 reg0166_rfpr_b_addr; 364 365 /* 0x0000029c reg167 */ 366 RK_U32 reg0167_cmvw_addr; 367 368 /* 0x000002a0 reg168 */ 369 RK_U32 reg0168_cmvr_addr; 370 371 /* 0x000002a4 reg169 */ 372 RK_U32 reg0169_dspw_addr; 373 374 /* 0x000002a8 reg170 */ 375 RK_U32 reg0170_dspr_addr; 376 377 /* 0x000002ac reg171 */ 378 RK_U32 reg0171_meiw_addr; 379 380 /* 0x000002b0 reg172 */ 381 RK_U32 reg0172_bsbt_addr; 382 383 /* 0x000002b4 reg173 */ 384 RK_U32 reg0173_bsbb_addr; 385 386 /* 0x000002b8 reg174 */ 387 RK_U32 reg0174_bsbr_addr; 388 389 /* 0x000002bc reg175 */ 390 RK_U32 reg0175_adr_bsbs; 391 392 /* 0x000002c0 reg176 */ 393 RK_U32 reg0176_lpfw_addr; 394 395 /* 0x000002c4 reg177 */ 396 RK_U32 reg0177_lpfr_addr; 397 398 /* 0x000002c8 reg178 */ 399 RK_U32 reg0178_adr_ebuft; 400 401 /* 0x000002cc reg179 */ 402 RK_U32 reg0179_adr_ebufb; 403 404 /* 0x000002d0 reg180 */ 405 RK_U32 reg0180_adr_rfpt_h; 406 407 /* 0x000002d4 reg181 */ 408 RK_U32 reg0181_adr_rfpb_h; 409 410 /* 0x000002d8 reg182 */ 411 RK_U32 reg0182_adr_rfpt_b; 412 413 /* 0x000002dc reg183 */ 414 RK_U32 reg0183_adr_rfpb_b; 415 416 /* 0x000002e0 reg184 */ 417 RK_U32 reg0184_adr_smr_rd; 418 419 /* 0x000002e4 reg185 */ 420 RK_U32 reg0185_adr_smr_wr; 421 422 /* 0x000002e8 reg186 */ 423 RK_U32 reg0186_adr_roir; 424 425 /* 0x2ec - 0x2fc */ 426 RK_U32 reserved187_191[5]; 427 428 /* 0x00000300 reg192 */ 429 struct { 430 RK_U32 enc_stnd : 2; 431 RK_U32 cur_frm_ref : 1; 432 RK_U32 mei_stor : 1; 433 RK_U32 bs_scp : 1; 434 RK_U32 reserved : 3; 435 RK_U32 pic_qp : 6; 436 RK_U32 num_pic_tot_cur : 5; 437 RK_U32 log2_ctu_num : 5; 438 RK_U32 reserved1 : 6; 439 RK_U32 slen_fifo : 1; 440 RK_U32 rec_fbc_dis : 1; 441 } reg0192_enc_pic; 442 443 444 /* 0x304 */ 445 RK_U32 reserved_193; 446 447 /* 0x00000308 reg194 */ 448 struct { 449 RK_U32 frame_id : 8; 450 RK_U32 reserved : 8; 451 RK_U32 ch_id : 2; 452 RK_U32 reserved1 : 14; 453 } reg0194_dvbm_id; 454 455 /* 0x0000030c reg195 */ 456 RK_U32 bsp_size; 457 458 /* 0x00000310 reg196 */ 459 struct { 460 RK_U32 pic_wd8_m1 : 11; 461 RK_U32 reserved : 5; 462 RK_U32 pic_hd8_m1 : 11; 463 RK_U32 reserved1 : 5; 464 } reg0196_enc_rsl; 465 466 /* 0x00000314 reg197 */ 467 struct { 468 RK_U32 pic_wfill : 6; 469 RK_U32 reserved : 10; 470 RK_U32 pic_hfill : 6; 471 RK_U32 reserved1 : 10; 472 } reg0197_src_fill; 473 474 /* 0x00000318 reg198 */ 475 struct { 476 RK_U32 alpha_swap : 1; 477 RK_U32 rbuv_swap : 1; 478 RK_U32 src_cfmt : 4; 479 RK_U32 src_rcne : 1; 480 RK_U32 out_fmt : 1; 481 RK_U32 src_range_trns_en : 1; 482 RK_U32 src_range_trns_sel : 1; 483 RK_U32 chroma_ds_mode : 1; 484 RK_U32 reserved : 21; 485 } reg0198_src_fmt; 486 487 /* 0x0000031c reg199 */ 488 struct { 489 RK_U32 csc_wgt_b2y : 9; 490 RK_U32 csc_wgt_g2y : 9; 491 RK_U32 csc_wgt_r2y : 9; 492 RK_U32 reserved : 5; 493 } reg0199_src_udfy; 494 495 /* 0x00000320 reg200 */ 496 struct { 497 RK_U32 csc_wgt_b2u : 9; 498 RK_U32 csc_wgt_g2u : 9; 499 RK_U32 csc_wgt_r2u : 9; 500 RK_U32 reserved : 5; 501 } reg0200_src_udfu; 502 503 /* 0x00000324 reg201 */ 504 struct { 505 RK_U32 csc_wgt_b2v : 9; 506 RK_U32 csc_wgt_g2v : 9; 507 RK_U32 csc_wgt_r2v : 9; 508 RK_U32 reserved : 5; 509 } reg0201_src_udfv; 510 511 /* 0x00000328 reg202 */ 512 struct { 513 RK_U32 csc_ofst_v : 8; 514 RK_U32 csc_ofst_u : 8; 515 RK_U32 csc_ofst_y : 5; 516 RK_U32 reserved : 11; 517 } reg0202_src_udfo; 518 519 /* 0x0000032c reg203 */ 520 struct { 521 RK_U32 reserved : 26; 522 RK_U32 src_mirr : 1; 523 RK_U32 src_rot : 2; 524 RK_U32 reserved1 : 3; 525 } reg0203_src_proc; 526 527 /* 0x00000330 reg204 */ 528 struct { 529 RK_U32 pic_ofst_x : 14; 530 RK_U32 reserved : 2; 531 RK_U32 pic_ofst_y : 14; 532 RK_U32 reserved1 : 2; 533 } reg0204_pic_ofst; 534 535 /* 0x00000334 reg205 */ 536 struct { 537 RK_U32 src_strd0 : 17; 538 RK_U32 reserved : 15; 539 } reg0205_src_strd0; 540 541 /* 0x00000338 reg206 */ 542 struct { 543 RK_U32 src_strd1 : 16; 544 RK_U32 reserved : 16; 545 } reg0206_src_strd1; 546 547 /* 0x0000033c reg207 */ 548 struct { 549 RK_U32 pp_corner_filter_strength : 2; 550 RK_U32 reserved : 2; 551 RK_U32 pp_edge_filter_strength : 2; 552 RK_U32 reserved1 : 2; 553 RK_U32 pp_internal_filter_strength : 2; 554 RK_U32 reserved2 : 22; 555 } reg0207_src_flt_cfg; 556 557 /* 0x340 - 0x34c */ 558 RK_U32 reserved208_211[4]; 559 560 /* 0x00000350 reg212 */ 561 struct { 562 RK_U32 rc_en : 1; 563 RK_U32 aq_en : 1; 564 RK_U32 aq_mode : 1; 565 RK_U32 reserved : 9; 566 RK_U32 rc_ctu_num : 20; 567 } reg212_rc_cfg; 568 569 /* 0x00000354 reg213 */ 570 struct { 571 RK_U32 reserved : 16; 572 RK_U32 rc_qp_range : 4; 573 RK_U32 rc_max_qp : 6; 574 RK_U32 rc_min_qp : 6; 575 } reg213_rc_qp; 576 577 /* 0x00000358 reg214 */ 578 struct { 579 RK_U32 ctu_ebit : 20; 580 RK_U32 reserved : 12; 581 } reg214_rc_tgt; 582 583 /* 0x35c */ 584 RK_U32 reserved_215; 585 586 /* 0x00000360 reg216 */ 587 struct { 588 RK_U32 sli_splt : 1; 589 RK_U32 sli_splt_mode : 1; 590 RK_U32 sli_splt_cpst : 1; 591 RK_U32 reserved : 12; 592 RK_U32 sli_flsh : 1; 593 RK_U32 sli_max_num_m1 : 15; 594 RK_U32 reserved1 : 1; 595 } reg0216_sli_splt; 596 597 /* 0x00000364 reg217 */ 598 struct { 599 RK_U32 sli_splt_byte : 20; 600 RK_U32 reserved : 12; 601 } reg0217_sli_byte; 602 603 /* 0x00000368 reg218 */ 604 struct { 605 RK_U32 sli_splt_cnum_m1 : 20; 606 RK_U32 reserved : 12; 607 } reg0218_sli_cnum; 608 609 /* 0x0000036c reg219 */ 610 struct { 611 RK_U32 uvc_partition0_len : 12; 612 RK_U32 uvc_partition_len : 12; 613 RK_U32 uvc_skip_len : 6; 614 RK_U32 reserved : 2; 615 } reg0218_uvc_cfg; 616 617 /* 0x00000370 reg220 */ 618 struct { 619 RK_U32 cime_srch_dwnh : 4; 620 RK_U32 cime_srch_uph : 4; 621 RK_U32 cime_srch_rgtw : 4; 622 RK_U32 cime_srch_lftw : 4; 623 RK_U32 dlt_frm_num : 16; 624 } reg0220_me_rnge; 625 626 /* 0x00000374 reg221 */ 627 struct { 628 RK_U32 srgn_max_num : 7; 629 RK_U32 cime_dist_thre : 10; 630 RK_U32 reserved : 3; 631 RK_U32 rme_srch_h : 2; 632 RK_U32 rme_srch_v : 2; 633 RK_U32 rme_dis : 3; 634 RK_U32 reserved1 : 1; 635 RK_U32 fme_dis : 3; 636 RK_U32 reserved2 : 1; 637 } reg0221_me_cfg; 638 639 /* 0x00000378 reg222 */ 640 struct { 641 RK_U32 cime_size_rama : 10; 642 RK_U32 reserved : 1; 643 RK_U32 cime_hgt_rama : 5; 644 RK_U32 reserved1 : 2; 645 RK_U32 cme_linebuf_w : 10; 646 RK_U32 fme_prefsu_en : 2; 647 RK_U32 colmv_stor : 1; 648 RK_U32 colmv_load : 1; 649 } reg0222_me_cach; 650 651 652 /* 0x37c - 0x39c */ 653 RK_U32 reserved223_231[9]; 654 655 /* 0x000003a0 reg232 */ 656 struct { 657 RK_U32 ltm_col : 1; 658 RK_U32 ltm_idx0l0 : 1; 659 RK_U32 chrm_spcl : 1; 660 RK_U32 cu_inter_e : 12; 661 RK_U32 reserved : 4; 662 RK_U32 cu_intra_e : 4; 663 RK_U32 ccwa_e : 1; 664 RK_U32 scl_lst_sel : 2; 665 RK_U32 lambda_qp_use_avg_cu16_flag : 1; 666 RK_U32 yuvskip_calc_en : 1; 667 RK_U32 atf_e : 1; 668 RK_U32 atr_e : 1; 669 RK_U32 reserved1 : 2; 670 } reg0232_rdo_cfg; 671 672 /* 0x000003a4 reg233 */ 673 struct { 674 RK_U32 rdo_mark_mode : 9; 675 RK_U32 reserved : 23; 676 } reg0233_iprd_csts; 677 678 /* 0x3a8 - 0x3ac */ 679 RK_U32 reserved234_235[2]; 680 681 /* 0x000003b0 reg236 */ 682 683 struct { 684 RK_U32 nal_unit_type : 6; 685 RK_U32 reserved : 26; 686 } reg0236_synt_nal; 687 688 /* 0x000003b4 reg237 */ 689 struct { 690 RK_U32 smpl_adpt_ofst_e : 1; 691 RK_U32 num_st_ref_pic : 7; 692 RK_U32 lt_ref_pic_prsnt : 1; 693 RK_U32 num_lt_ref_pic : 6; 694 RK_U32 tmpl_mvp_e : 1; 695 RK_U32 log2_max_poc_lsb : 4; 696 RK_U32 strg_intra_smth : 1; 697 RK_U32 reserved : 11; 698 } reg0237_synt_sps; 699 700 /* 0x000003b8 reg238 */ 701 struct { 702 RK_U32 dpdnt_sli_seg_en : 1; 703 RK_U32 out_flg_prsnt_flg : 1; 704 RK_U32 num_extr_sli_hdr : 3; 705 RK_U32 sgn_dat_hid_en : 1; 706 RK_U32 cbc_init_prsnt_flg : 1; 707 RK_U32 pic_init_qp : 6; 708 RK_U32 cu_qp_dlt_en : 1; 709 RK_U32 chrm_qp_ofst_prsn : 1; 710 RK_U32 lp_fltr_acrs_sli : 1; 711 RK_U32 dblk_fltr_ovrd_en : 1; 712 RK_U32 lst_mdfy_prsnt_flg : 1; 713 RK_U32 sli_seg_hdr_extn : 1; 714 RK_U32 cu_qp_dlt_depth : 2; 715 RK_U32 lpf_fltr_acrs_til : 1; 716 RK_U32 reserved : 10; 717 } reg0238_synt_pps; 718 719 /* 0x000003bc reg239 */ 720 struct { 721 RK_U32 cbc_init_flg : 1; 722 RK_U32 mvd_l1_zero_flg : 1; 723 RK_U32 mrg_up_flg : 1; 724 RK_U32 mrg_lft_flg : 1; 725 RK_U32 reserved : 1; 726 RK_U32 ref_pic_lst_mdf_l0 : 1; 727 RK_U32 num_refidx_l1_act : 2; 728 RK_U32 num_refidx_l0_act : 2; 729 RK_U32 num_refidx_act_ovrd : 1; 730 RK_U32 sli_sao_chrm_flg : 1; 731 RK_U32 sli_sao_luma_flg : 1; 732 RK_U32 sli_tmprl_mvp_e : 1; 733 RK_U32 pic_out_flg : 1; 734 RK_U32 sli_type : 2; 735 RK_U32 sli_rsrv_flg : 7; 736 RK_U32 dpdnt_sli_seg_flg : 1; 737 RK_U32 sli_pps_id : 6; 738 RK_U32 no_out_pri_pic : 1; 739 } reg0239_synt_sli0; 740 741 /* 0x000003c0 reg240 */ 742 struct { 743 RK_U32 sp_tc_ofst_div2 : 4; 744 RK_U32 sp_beta_ofst_div2 : 4; 745 RK_U32 sli_lp_fltr_acrs_sli : 1; 746 RK_U32 sp_dblk_fltr_dis : 1; 747 RK_U32 dblk_fltr_ovrd_flg : 1; 748 RK_U32 sli_cb_qp_ofst : 5; 749 RK_U32 sli_qp : 6; 750 RK_U32 max_mrg_cnd : 2; 751 RK_U32 reserved : 1; 752 RK_U32 col_ref_idx : 1; 753 RK_U32 col_frm_l0_flg : 1; 754 RK_U32 lst_entry_l0 : 4; 755 RK_U32 reserved1 : 1; 756 } reg0240_synt_sli1; 757 758 /* 0x000003c4 reg241 */ 759 struct { 760 RK_U32 sli_poc_lsb : 16; 761 RK_U32 sli_hdr_ext_len : 9; 762 RK_U32 reserved : 7; 763 } reg0241_synt_sli2; 764 765 /* 0x000003c8 reg242 */ 766 767 struct { 768 RK_U32 st_ref_pic_flg : 1; 769 RK_U32 poc_lsb_lt0 : 16; 770 RK_U32 lt_idx_sps : 5; 771 RK_U32 num_lt_pic : 2; 772 RK_U32 st_ref_pic_idx : 6; 773 RK_U32 num_lt_sps : 2; 774 } reg0242_synt_refm0; 775 776 /* 0x000003cc reg243 */ 777 struct { 778 RK_U32 used_by_s0_flg : 4; 779 RK_U32 num_pos_pic : 1; 780 RK_U32 num_negative_pics : 5; 781 RK_U32 dlt_poc_msb_cycl0 : 16; 782 RK_U32 dlt_poc_msb_prsnt0 : 1; 783 RK_U32 dlt_poc_msb_prsnt1 : 1; 784 RK_U32 dlt_poc_msb_prsnt2 : 1; 785 RK_U32 used_by_lt_flg0 : 1; 786 RK_U32 used_by_lt_flg1 : 1; 787 RK_U32 used_by_lt_flg2 : 1; 788 } reg0243_synt_refm1; 789 790 /* 0x000003d0 reg244 */ 791 struct { 792 RK_U32 dlt_poc_s0_m10 : 16; 793 RK_U32 dlt_poc_s0_m11 : 16; 794 } reg0244_synt_refm2; 795 /* 0x000003d4 reg245 */ 796 struct { 797 RK_U32 dlt_poc_s0_m12 : 16; 798 RK_U32 dlt_poc_s0_m13 : 16; 799 } reg0245_synt_refm3; 800 801 /* 0x000003d8 reg246 */ 802 struct { 803 RK_U32 poc_lsb_lt1 : 16; 804 RK_U32 poc_lsb_lt2 : 16; 805 } reg0246_synt_long_refm0; 806 807 /* 0x000003dc reg247 */ 808 struct { 809 RK_U32 dlt_poc_msb_cycl1 : 16; 810 RK_U32 dlt_poc_msb_cycl2 : 16; 811 } reg0247_synt_long_refm1; 812 813 struct { 814 RK_U32 sao_lambda_multi : 4; 815 RK_U32 reserved : 20; 816 RK_U32 reserved1 : 8; 817 } reg0248_sao_cfg; 818 819 /* 0x3e4 - 0x3ec */ 820 RK_U32 reserved249_251[3]; 821 822 /* 0x000003f0 reg252 */ 823 struct { 824 RK_U32 tile_w_m1 : 8; 825 RK_U32 reserved : 8; 826 RK_U32 tile_h_m1 : 8; 827 RK_U32 reserved1 : 7; 828 RK_U32 tile_en : 1; 829 } reg0252_tile_cfg; 830 /* 0x000003f4 reg253 */ 831 struct { 832 RK_U32 tile_x : 8; 833 RK_U32 reserved : 8; 834 RK_U32 tile_y : 8; 835 RK_U32 reserved1 : 8; 836 } reg0253_tile_pos; 837 838 /* 0x3f8 - 0x3fc */ 839 RK_U32 reserved254_255[2]; 840 841 /* 0x00000400 reg256 - 0x00000480 reg288 */ 842 Vepu540cJpegReg jpegReg; 843 844 } jpeg_vepu540c_base; 845 846 typedef struct JpegV540cRegSet_t { 847 jpeg_vepu540c_control_cfg reg_ctl; 848 jpeg_vepu540c_base reg_base; 849 vepu540c_jpeg_tab jpeg_table; 850 vepu540c_dbg reg_dbg; 851 } JpegV540cRegSet; 852 853 typedef struct JpegV540cStatus_t { 854 vepu540c_hw_status hw_status; 855 vepu540c_status st; 856 } JpegV540cStatus; 857 858 #endif 859