1 /* SPDX-License-Identifier: Apache-2.0 */ 2 /* 3 * Copyright (c) 2024 Rockchip Electronics Co., Ltd. 4 */ 5 6 #ifndef __VEPU510_COMMON_H__ 7 #define __VEPU510_COMMON_H__ 8 9 #include "rk_venc_cmd.h" 10 11 #define VEPU510_CTL_OFFSET (0 * sizeof(RK_U32)) /* 0x00000000 reg0 - 0x00000120 reg72 */ 12 #define VEPU510_FRAME_OFFSET (156 * sizeof(RK_U32)) /* 0x00000270 reg156 - 0x000003f4 reg253 */ 13 #define VEPU510_RC_ROI_OFFSET (1024 * sizeof(RK_U32)) /* 0x00001000 reg1024 - 0x0000110c reg1091 */ 14 #define VEPU510_PARAM_OFFSET (1472 * sizeof(RK_U32)) /* 0x00001700 reg1472 - 0x000019cc reg1651 */ 15 #define VEPU510_SQI_OFFSET (2048 * sizeof(RK_U32)) /* 0x00002000 reg2048 - 0x0000212c reg2123 */ 16 #define VEPU510_SCL_OFFSET (2176 * sizeof(RK_U32)) /* 0x00002200 reg2176 - 0x00002584 reg2401 */ 17 #define VEPU510_STATUS_OFFSET (4096 * sizeof(RK_U32)) /* 0x00004000 reg4096 - 0x0000424c reg4243 */ 18 #define VEPU510_DBG_OFFSET (5120 * sizeof(RK_U32)) /* 0x00005000 reg5120 - 0x00005230 reg5260 */ 19 #define VEPU510_REG_BASE_HW_STATUS (0x2c) 20 #define VEPU510_MAX_ROI_NUM 8 21 #define VEPU510_SLICE_FIFO_LEN 8 22 23 typedef struct Vepu510Online_t { 24 /* 0x00000270 reg156 */ 25 struct { 26 RK_U32 reserved : 4; 27 RK_U32 adr_vsy_t : 28; 28 } adr_vsy_t; 29 30 /* 0x00000274 reg157 */ 31 struct { 32 RK_U32 reserved : 4; 33 RK_U32 adr_vsc_t : 28; 34 } adr_vsc_t; 35 36 /* 0x00000278 reg158 */ 37 struct { 38 RK_U32 reserved : 4; 39 RK_U32 adr_vsy_b : 28; 40 } adr_vsy_b; 41 42 /* 0x0000027c reg159 */ 43 struct { 44 RK_U32 reserved : 4; 45 RK_U32 adr_vsc_b : 28; 46 } adr_vsc_b; 47 } vepu510_online; 48 49 typedef struct RdoSkipPar_t { 50 struct { 51 RK_U32 madp_thd0 : 12; 52 RK_U32 reserved : 4; 53 RK_U32 madp_thd1 : 12; 54 RK_U32 reserved1 : 4; 55 } atf_thd0; 56 57 /* 0x00002064 reg2073 */ 58 struct { 59 RK_U32 madp_thd2 : 12; 60 RK_U32 reserved : 4; 61 RK_U32 madp_thd3 : 12; 62 RK_U32 reserved1 : 4; 63 } atf_thd1; 64 65 /* 0x00002068 reg2074 */ 66 struct { 67 RK_U32 wgt0 : 8; 68 RK_U32 wgt1 : 8; 69 RK_U32 wgt2 : 8; 70 RK_U32 wgt3 : 8; 71 } atf_wgt0; 72 73 /* 0x0000206c reg2075 */ 74 struct { 75 RK_U32 wgt4 : 8; 76 RK_U32 reserved : 24; 77 } atf_wgt1; 78 } rdo_skip_par; 79 80 typedef struct RdoNoSkipPar_t { 81 /* 0x00002080 reg2080 */ 82 struct { 83 RK_U32 madp_thd0 : 12; 84 RK_U32 reserved : 4; 85 RK_U32 madp_thd1 : 12; 86 RK_U32 reserved1 : 4; 87 } ratf_thd0; 88 89 /* 0x00002084 reg2081 */ 90 struct { 91 RK_U32 madp_thd2 : 12; 92 RK_U32 reserved : 4; 93 RK_U32 atf_bypass_pri_flag : 1; 94 RK_U32 reserved1 : 15; 95 } ratf_thd1; 96 97 /* 0x00002088 reg2082 */ 98 struct { 99 RK_U32 wgt0 : 8; 100 RK_U32 wgt1 : 8; 101 RK_U32 wgt2 : 8; 102 RK_U32 wgt3 : 8; 103 } atf_wgt; 104 } rdo_noskip_par; 105 106 typedef struct Vepu510RoiRegion_t { 107 struct { 108 RK_U32 roi_lt_x : 10; 109 RK_U32 reserved : 6; 110 RK_U32 roi_lt_y : 10; 111 RK_U32 reserved1 : 6; 112 } roi_pos_lt; 113 114 struct { 115 RK_U32 roi_rb_x : 10; 116 RK_U32 reserved : 6; 117 RK_U32 roi_rb_y : 10; 118 RK_U32 reserved1 : 6; 119 } roi_pos_rb; 120 121 struct { 122 RK_U32 roi_qp_value : 7; 123 RK_U32 roi_qp_adj_mode : 1; 124 RK_U32 roi_pri : 5; 125 RK_U32 roi_en : 1; 126 RK_U32 reserved : 18; 127 } roi_base; 128 129 struct { 130 RK_U32 roi_mdc_inter16 : 4; 131 RK_U32 roi_mdc_skip16 : 4; 132 RK_U32 roi_mdc_intra16 : 4; 133 RK_U32 roi0_mdc_inter32_hevc : 4; 134 RK_U32 roi0_mdc_skip32_hevc : 4; 135 RK_U32 roi0_mdc_intra32_hevc : 4; 136 RK_U32 roi0_mdc_dpth_hevc : 1; 137 RK_U32 reserved : 7; 138 } roi_mdc; 139 } Vepu510RoiRegion; 140 141 typedef struct Vepu510RoiCfg_t { 142 /* 0x00001080 reg1056 */ 143 struct { 144 RK_U32 fmdc_adju_inter16 : 4; 145 RK_U32 fmdc_adju_skip16 : 4; 146 RK_U32 fmdc_adju_intra16 : 4; 147 RK_U32 fmdc_adju_inter32 : 4; 148 RK_U32 fmdc_adju_skip32 : 4; 149 RK_U32 fmdc_adju_intra32 : 4; 150 RK_U32 fmdc_adj_pri : 5; 151 RK_U32 reserved : 3; 152 } fmdc_adj0; 153 154 /* 0x00001084 reg1057 */ 155 struct { 156 RK_U32 fmdc_adju_inter8 : 4; 157 RK_U32 fmdc_adju_skip8 : 4; 158 RK_U32 fmdc_adju_intra8 : 4; 159 RK_U32 reserved : 20; 160 } fmdc_adj1; 161 162 RK_U32 reserved_1058; 163 164 /* 0x0000108c reg1059 */ 165 struct { 166 RK_U32 bmap_en : 1; 167 RK_U32 bmap_pri : 5; 168 RK_U32 bmap_qpmin : 6; 169 RK_U32 bmap_qpmax : 6; 170 RK_U32 bmap_mdc_dpth : 1; 171 RK_U32 reserved : 13; 172 } bmap_cfg; 173 174 /* 0x00001090 reg1060 - 0x0000110c reg1091 */ 175 Vepu510RoiRegion regions[8]; 176 } Vepu510RoiCfg; 177 178 /* class: control/link */ 179 /* 0x00000000 reg0 - 0x00000120 reg72 */ 180 typedef struct Vepu510ControlCfg_t { 181 /* 0x00000000 reg0 */ 182 struct { 183 RK_U32 sub_ver : 8; 184 RK_U32 h264_cap : 1; 185 RK_U32 hevc_cap : 1; 186 RK_U32 reserved : 2; 187 RK_U32 res_cap : 4; 188 RK_U32 osd_cap : 2; 189 RK_U32 filtr_cap : 2; 190 RK_U32 bfrm_cap : 1; 191 RK_U32 fbc_cap : 2; 192 RK_U32 reserved1 : 1; 193 RK_U32 ip_id : 8; 194 } version; 195 196 /* 0x00000004 - 0x0000000c */ 197 RK_U32 reserved1_3[3]; 198 199 /* 0x00000010 reg4 */ 200 struct { 201 RK_U32 lkt_num : 8; 202 RK_U32 vepu_cmd : 3; 203 RK_U32 reserved : 21; 204 } enc_strt; 205 206 /* 0x00000014 reg5 */ 207 struct { 208 RK_U32 safe_clr : 1; 209 RK_U32 force_clr : 1; 210 RK_U32 reserved : 30; 211 } enc_clr; 212 213 /* 0x00000018 reg6 */ 214 struct { 215 RK_U32 vswm_lcnt_soft : 14; 216 RK_U32 vswm_fcnt_soft : 8; 217 RK_U32 reserved : 2; 218 RK_U32 dvbm_ack_soft : 1; 219 RK_U32 dvbm_ack_sel : 1; 220 RK_U32 dvbm_inf_sel : 1; 221 RK_U32 reserved1 : 5; 222 } vs_ldly; 223 224 /* 0x0000001c */ 225 RK_U32 reserved_7; 226 227 /* 0x00000020 reg8 */ 228 struct { 229 RK_U32 enc_done_en : 1; 230 RK_U32 lkt_node_done_en : 1; 231 RK_U32 sclr_done_en : 1; 232 RK_U32 vslc_done_en : 1; 233 RK_U32 vbsf_oflw_en : 1; 234 RK_U32 vbuf_lens_en : 1; 235 RK_U32 enc_err_en : 1; 236 RK_U32 vsrc_err_en : 1; 237 RK_U32 wdg_en : 1; 238 RK_U32 lkt_err_int_en : 1; 239 RK_U32 lkt_err_stop_en : 1; 240 RK_U32 lkt_force_stop_en : 1; 241 RK_U32 jslc_done_en : 1; 242 RK_U32 jbsf_oflw_en : 1; 243 RK_U32 jbuf_lens_en : 1; 244 RK_U32 dvbm_err_en : 1; 245 RK_U32 reserved : 16; 246 } int_en; 247 248 /* 0x00000024 reg9 */ 249 struct { 250 RK_U32 enc_done_msk : 1; 251 RK_U32 lkt_node_done_msk : 1; 252 RK_U32 sclr_done_msk : 1; 253 RK_U32 vslc_done_msk : 1; 254 RK_U32 vbsf_oflw_msk : 1; 255 RK_U32 vbuf_lens_msk : 1; 256 RK_U32 enc_err_msk : 1; 257 RK_U32 vsrc_err_msk : 1; 258 RK_U32 wdg_msk : 1; 259 RK_U32 lkt_err_int_msk : 1; 260 RK_U32 lkt_err_stop_msk : 1; 261 RK_U32 lkt_force_stop_msk : 1; 262 RK_U32 jslc_done_msk : 1; 263 RK_U32 jbsf_oflw_msk : 1; 264 RK_U32 jbuf_lens_msk : 1; 265 RK_U32 dvbm_err_msk : 1; 266 RK_U32 reserved : 16; 267 } int_msk; 268 269 /* 0x00000028 reg10 */ 270 struct { 271 RK_U32 enc_done_clr : 1; 272 RK_U32 lkt_node_done_clr : 1; 273 RK_U32 sclr_done_clr : 1; 274 RK_U32 vslc_done_clr : 1; 275 RK_U32 vbsf_oflw_clr : 1; 276 RK_U32 vbuf_lens_clr : 1; 277 RK_U32 enc_err_clr : 1; 278 RK_U32 vsrc_err_clr : 1; 279 RK_U32 wdg_clr : 1; 280 RK_U32 lkt_err_int_clr : 1; 281 RK_U32 lkt_err_stop_clr : 1; 282 RK_U32 lkt_force_stop_clr : 1; 283 RK_U32 jslc_done_clr : 1; 284 RK_U32 jbsf_oflw_clr : 1; 285 RK_U32 jbuf_lens_clr : 1; 286 RK_U32 dvbm_err_clr : 1; 287 RK_U32 reserved : 16; 288 } int_clr; 289 290 /* 0x0000002c reg11 */ 291 struct { 292 RK_U32 enc_done_sta : 1; 293 RK_U32 lkt_node_done_sta : 1; 294 RK_U32 sclr_done_sta : 1; 295 RK_U32 vslc_done_sta : 1; 296 RK_U32 vbsf_oflw_sta : 1; 297 RK_U32 vbuf_lens_sta : 1; 298 RK_U32 enc_err_sta : 1; 299 RK_U32 vsrc_err_sta : 1; 300 RK_U32 wdg_sta : 1; 301 RK_U32 lkt_err_int_sta : 1; 302 RK_U32 lkt_err_stop_sta : 1; 303 RK_U32 lkt_force_stop_sta : 1; 304 RK_U32 jslc_done_sta : 1; 305 RK_U32 jbsf_oflw_sta : 1; 306 RK_U32 jbuf_lens_sta : 1; 307 RK_U32 dvbm_err_sta : 1; 308 RK_U32 reserved : 16; 309 } int_sta; 310 311 /* 0x00000030 reg12 */ 312 struct { 313 RK_U32 jpeg_bus_edin : 4; 314 RK_U32 src_bus_edin : 4; 315 RK_U32 meiw_bus_edin : 4; 316 RK_U32 bsw_bus_edin : 4; 317 RK_U32 reserved : 8; 318 RK_U32 lktw_bus_edin : 4; 319 RK_U32 rec_nfbc_bus_edin : 4; 320 } dtrns_map; 321 322 /* 0x00000034 reg13 */ 323 struct { 324 RK_U32 reserved : 16; 325 RK_U32 axi_brsp_cke : 10; 326 RK_U32 reserved1 : 6; 327 } dtrns_cfg; 328 329 /* 0x00000038 reg14 */ 330 struct { 331 RK_U32 vs_load_thd : 24; 332 RK_U32 reserved : 8; 333 } enc_wdg; 334 335 /* 0x0000003c - 0x0000004c */ 336 RK_U32 reserved15_19[5]; 337 338 /* 0x00000050 reg20 */ 339 struct { 340 RK_U32 idle_en_core : 1; 341 RK_U32 idle_en_axi : 1; 342 RK_U32 idle_en_ahb : 1; 343 RK_U32 reserved : 29; 344 } enc_idle_en; 345 346 /* 0x00000054 reg21 */ 347 struct { 348 RK_U32 cke : 1; 349 RK_U32 resetn_hw_en : 1; 350 RK_U32 rfpr_err_e : 1; 351 RK_U32 sram_ckg_en : 1; 352 RK_U32 link_err_stop : 1; 353 RK_U32 reserved : 27; 354 } opt_strg; 355 356 /* 0x00000058 reg22 */ 357 union { 358 struct { 359 RK_U32 tq8_ckg : 1; 360 RK_U32 tq4_ckg : 1; 361 RK_U32 bits_ckg_8x8 : 1; 362 RK_U32 bits_ckg_4x4_1 : 1; 363 RK_U32 bits_ckg_4x4_0 : 1; 364 RK_U32 inter_mode_ckg : 1; 365 RK_U32 inter_ctrl_ckg : 1; 366 RK_U32 inter_pred_ckg : 1; 367 RK_U32 intra8_ckg : 1; 368 RK_U32 intra4_ckg : 1; 369 RK_U32 reserved : 22; 370 } h264; 371 struct { 372 RK_U32 recon32_ckg : 1; 373 RK_U32 iqit32_ckg : 1; 374 RK_U32 q32_ckg : 1; 375 RK_U32 t32_ckg : 1; 376 RK_U32 cabac32_ckg : 1; 377 RK_U32 recon16_ckg : 1; 378 RK_U32 iqit16_ckg : 1; 379 RK_U32 q16_ckg : 1; 380 RK_U32 t16_ckg : 1; 381 RK_U32 cabac16_ckg : 1; 382 RK_U32 recon8_ckg : 1; 383 RK_U32 iqit8_ckg : 1; 384 RK_U32 q8_ckg : 1; 385 RK_U32 t8_ckg : 1; 386 RK_U32 cabac8_ckg : 1; 387 RK_U32 recon4_ckg : 1; 388 RK_U32 iqit4_ckg : 1; 389 RK_U32 q4_ckg : 1; 390 RK_U32 t4_ckg : 1; 391 RK_U32 cabac4_ckg : 1; 392 RK_U32 intra32_ckg : 1; 393 RK_U32 intra16_ckg : 1; 394 RK_U32 intra8_ckg : 1; 395 RK_U32 intra4_ckg : 1; 396 RK_U32 inter_pred_ckg : 1; 397 RK_U32 reserved : 7; 398 } hevc; 399 } rdo_ckg; 400 401 /* 0x0000005c reg23 */ 402 struct { 403 RK_U32 core_id : 2; 404 RK_U32 reserved : 30; 405 } core_id; 406 } Vepu510ControlCfg; 407 408 /* 0x00000270 reg156 - 0x0000039c reg231 */ 409 typedef struct Vepu510FrmCommon_t { 410 /* 0x00000270 reg156 - 0x0000027c reg159 */ 411 vepu510_online online_addr; 412 413 /* 0x00000280 reg160 */ 414 RK_U32 adr_src0; 415 416 /* 0x00000284 reg161 */ 417 RK_U32 adr_src1; 418 419 /* 0x00000288 reg162 */ 420 RK_U32 adr_src2; 421 422 /* 0x0000028c reg163 */ 423 RK_U32 rfpw_h_addr; 424 425 /* 0x00000290 reg164 */ 426 RK_U32 rfpw_b_addr; 427 428 /* 0x00000294 reg165 */ 429 RK_U32 rfpr_h_addr; 430 431 /* 0x00000298 reg166 */ 432 RK_U32 rfpr_b_addr; 433 434 /* 0x0000029c reg167 */ 435 RK_U32 colmvw_addr; 436 437 /* 0x000002a0 reg168 */ 438 RK_U32 colmvr_addr; 439 440 /* 0x000002a4 reg169 */ 441 RK_U32 dspw_addr; 442 443 /* 0x000002a8 reg170 */ 444 RK_U32 dspr_addr; 445 446 /* 0x000002ac reg171 */ 447 RK_U32 meiw_addr; 448 449 /* 0x000002b0 reg172 */ 450 RK_U32 bsbt_addr; 451 452 /* 0x000002b4 reg173 */ 453 RK_U32 bsbb_addr; 454 455 /* 0x000002b8 reg174 */ 456 RK_U32 adr_bsbs; 457 458 /* 0x000002bc reg175 */ 459 RK_U32 bsbr_addr; 460 461 /* 0x000002c0 reg176 */ 462 RK_U32 lpfw_addr; 463 464 /* 0x000002c4 reg177 */ 465 RK_U32 lpfr_addr; 466 467 /* 0x000002c8 reg178 */ 468 RK_U32 ebuft_addr; 469 470 /* 0x000002cc reg179 */ 471 RK_U32 ebufb_addr; 472 473 /* 0x000002d0 reg180 */ 474 RK_U32 rfpt_h_addr; 475 476 /* 0x000002d4 reg181 */ 477 RK_U32 rfpb_h_addr; 478 479 /* 0x000002d8 reg182 */ 480 RK_U32 rfpt_b_addr; 481 482 /* 0x000002dc reg183 */ 483 RK_U32 adr_rfpb_b; 484 485 /* 0x000002e0 reg184 */ 486 RK_U32 adr_smear_rd; 487 488 /* 0x000002e4 reg185 */ 489 RK_U32 adr_smear_wr; 490 491 /* 0x000002e8 reg186 */ 492 RK_U32 adr_roir; 493 494 /* 0x2ec - 0x2fc */ 495 RK_U32 reserved187_191[5]; 496 497 /* 0x00000300 reg192 */ 498 struct { 499 RK_U32 enc_stnd : 2; 500 RK_U32 cur_frm_ref : 1; 501 RK_U32 mei_stor : 1; 502 RK_U32 bs_scp : 1; 503 RK_U32 reserved : 3; 504 RK_U32 pic_qp : 6; 505 RK_U32 num_pic_tot_cur_hevc : 5; 506 RK_U32 log2_ctu_num_hevc : 5; 507 RK_U32 reserved1 : 6; 508 RK_U32 slen_fifo : 1; 509 RK_U32 rec_fbc_dis : 1; 510 } enc_pic; 511 512 /* 0x00000304 reg193 */ 513 struct { 514 RK_U32 dchs_txid : 2; 515 RK_U32 dchs_rxid : 2; 516 RK_U32 dchs_txe : 1; 517 RK_U32 dchs_rxe : 1; 518 RK_U32 reserved : 2; 519 RK_U32 dchs_dly : 8; 520 RK_U32 dchs_ofst : 10; 521 RK_U32 reserved1 : 6; 522 } dual_core; 523 524 /* 0x00000308 reg194 */ 525 struct { 526 RK_U32 frame_id : 8; 527 RK_U32 frm_id_match : 1; 528 RK_U32 reserved : 7; 529 RK_U32 ch_id : 2; 530 RK_U32 vrsp_rtn_en : 1; 531 RK_U32 vinf_req_en : 1; 532 RK_U32 reserved1 : 12; 533 } enc_id; 534 535 /* 0x0000030c reg195 */ 536 RK_U32 bsp_size; 537 538 /* 0x00000310 reg196 */ 539 struct { 540 RK_U32 pic_wd8_m1 : 11; 541 RK_U32 reserved : 5; 542 RK_U32 pic_hd8_m1 : 11; 543 RK_U32 reserved1 : 5; 544 } enc_rsl; 545 546 /* 0x00000314 reg197 */ 547 struct { 548 RK_U32 pic_wfill : 6; 549 RK_U32 reserved : 10; 550 RK_U32 pic_hfill : 6; 551 RK_U32 reserved1 : 10; 552 } src_fill; 553 554 /* 0x00000318 reg198 */ 555 struct { 556 RK_U32 alpha_swap : 1; 557 RK_U32 rbuv_swap : 1; 558 RK_U32 src_cfmt : 4; 559 RK_U32 src_rcne : 1; 560 RK_U32 out_fmt : 1; 561 RK_U32 src_range_trns_en : 1; 562 RK_U32 src_range_trns_sel : 1; 563 RK_U32 chroma_ds_mode : 1; 564 RK_U32 reserved : 21; 565 } src_fmt; 566 567 /* 0x0000031c reg199 */ 568 struct { 569 RK_U32 csc_wgt_b2y : 9; 570 RK_U32 csc_wgt_g2y : 9; 571 RK_U32 csc_wgt_r2y : 9; 572 RK_U32 reserved : 5; 573 } src_udfy; 574 575 /* 0x00000320 reg200 */ 576 struct { 577 RK_U32 csc_wgt_b2u : 9; 578 RK_U32 csc_wgt_g2u : 9; 579 RK_U32 csc_wgt_r2u : 9; 580 RK_U32 reserved : 5; 581 } src_udfu; 582 583 /* 0x00000324 reg201 */ 584 struct { 585 RK_U32 csc_wgt_b2v : 9; 586 RK_U32 csc_wgt_g2v : 9; 587 RK_U32 csc_wgt_r2v : 9; 588 RK_U32 reserved : 5; 589 } src_udfv; 590 591 /* 0x00000328 reg202 */ 592 struct { 593 RK_U32 csc_ofst_v : 8; 594 RK_U32 csc_ofst_u : 8; 595 RK_U32 csc_ofst_y : 5; 596 RK_U32 reserved : 11; 597 } src_udfo; 598 599 /* 0x0000032c reg203 */ 600 struct { 601 RK_U32 cr_force_value : 8; 602 RK_U32 cb_force_value : 8; 603 RK_U32 chroma_force_en : 1; 604 RK_U32 reserved : 9; 605 RK_U32 src_mirr : 1; 606 RK_U32 src_rot : 2; 607 RK_U32 tile4x4_en : 1; 608 RK_U32 reserved1 : 2; 609 } src_proc; 610 611 /* 0x00000330 reg204 */ 612 struct { 613 RK_U32 pic_ofst_x : 14; 614 RK_U32 reserved : 2; 615 RK_U32 pic_ofst_y : 14; 616 RK_U32 reserved1 : 2; 617 } pic_ofst; 618 619 /* 0x00000334 reg205 */ 620 struct { 621 RK_U32 src_strd0 : 21; 622 RK_U32 reserved : 11; 623 } src_strd0; 624 625 /* 0x00000338 reg206 */ 626 struct { 627 RK_U32 src_strd1 : 16; 628 RK_U32 reserved : 16; 629 } src_strd1; 630 631 /* 0x33c - 0x34c */ 632 RK_U32 reserved207_211[5]; 633 634 /* 0x00000350 reg212 */ 635 struct { 636 RK_U32 rc_en : 1; 637 RK_U32 aq_en : 1; 638 RK_U32 reserved : 10; 639 RK_U32 rc_ctu_num : 20; 640 } rc_cfg; 641 642 /* 0x00000354 reg213 */ 643 struct { 644 RK_U32 reserved : 16; 645 RK_U32 rc_qp_range : 4; 646 RK_U32 rc_max_qp : 6; 647 RK_U32 rc_min_qp : 6; 648 } rc_qp; 649 650 /* 0x00000358 reg214 */ 651 struct { 652 RK_U32 ctu_ebit : 20; 653 RK_U32 reserved : 12; 654 } rc_tgt; 655 656 /* 0x35c */ 657 RK_U32 reserved_215; 658 659 /* 0x00000360 reg216 */ 660 struct { 661 RK_U32 sli_splt : 1; 662 RK_U32 sli_splt_mode : 1; 663 RK_U32 sli_splt_cpst : 1; 664 RK_U32 reserved : 12; 665 RK_U32 sli_flsh : 1; 666 RK_U32 sli_max_num_m1 : 15; 667 RK_U32 reserved1 : 1; 668 } sli_splt; 669 670 /* 0x00000364 reg217 */ 671 struct { 672 RK_U32 sli_splt_byte : 20; 673 RK_U32 reserved : 12; 674 } sli_byte; 675 676 /* 0x00000368 reg218 */ 677 struct { 678 RK_U32 sli_splt_cnum_m1 : 20; 679 RK_U32 reserved : 12; 680 } sli_cnum; 681 682 /* 0x0000036c reg219 */ 683 struct { 684 RK_U32 uvc_partition0_len : 12; 685 RK_U32 uvc_partition_len : 12; 686 RK_U32 uvc_skip_len : 6; 687 RK_U32 reserved : 2; 688 } vbs_pad; 689 690 /* 0x00000370 reg220 */ 691 struct { 692 RK_U32 cime_srch_dwnh : 4; 693 RK_U32 cime_srch_uph : 4; 694 RK_U32 cime_srch_rgtw : 4; 695 RK_U32 cime_srch_lftw : 4; 696 RK_U32 dlt_frm_num : 16; 697 } me_rnge; 698 699 /* 0x00000374 reg221 */ 700 struct { 701 RK_U32 srgn_max_num : 7; 702 RK_U32 cime_dist_thre : 13; 703 RK_U32 rme_srch_h : 2; 704 RK_U32 rme_srch_v : 2; 705 RK_U32 rme_dis : 3; 706 RK_U32 reserved : 1; 707 RK_U32 fme_dis : 3; 708 RK_U32 reserved1 : 1; 709 } me_cfg; 710 711 /* 0x00000378 reg222 */ 712 struct { 713 RK_U32 cime_zero_thre : 13; 714 RK_U32 reserved : 15; 715 RK_U32 fme_prefsu_en : 2; 716 RK_U32 colmv_stor_hevc : 1; 717 RK_U32 colmv_load_hevc : 1; 718 } me_cach; 719 720 /* 0x37c - 0x39c */ 721 RK_U32 reserved223_231[9]; 722 } Vepu510FrmCommon; 723 724 /* class: rc/roi/aq/klut */ 725 /* 0x00001000 reg1024 - 0x0000110c reg1091 */ 726 typedef struct Vepu510RcRoi_t { 727 /* 0x00001000 reg1024 */ 728 struct { 729 RK_U32 qp_adj0 : 5; 730 RK_U32 qp_adj1 : 5; 731 RK_U32 qp_adj2 : 5; 732 RK_U32 qp_adj3 : 5; 733 RK_U32 qp_adj4 : 5; 734 RK_U32 reserved : 7; 735 } rc_adj0; 736 737 /* 0x00001004 reg1025 */ 738 struct { 739 RK_U32 qp_adj5 : 5; 740 RK_U32 qp_adj6 : 5; 741 RK_U32 qp_adj7 : 5; 742 RK_U32 qp_adj8 : 5; 743 RK_U32 reserved : 12; 744 } rc_adj1; 745 746 /* 0x00001008 reg1026 - 0x00001028 reg1034 */ 747 RK_U32 rc_dthd_0_8[9]; 748 749 /* 0x102c */ 750 RK_U32 reserved_1035; 751 752 /* 0x00001030 reg1036 */ 753 struct { 754 RK_U32 qpmin_area0 : 6; 755 RK_U32 qpmax_area0 : 6; 756 RK_U32 qpmin_area1 : 6; 757 RK_U32 qpmax_area1 : 6; 758 RK_U32 qpmin_area2 : 6; 759 RK_U32 reserved : 2; 760 } roi_qthd0; 761 762 /* 0x00001034 reg1037 */ 763 struct { 764 RK_U32 qpmax_area2 : 6; 765 RK_U32 qpmin_area3 : 6; 766 RK_U32 qpmax_area3 : 6; 767 RK_U32 qpmin_area4 : 6; 768 RK_U32 qpmax_area4 : 6; 769 RK_U32 reserved : 2; 770 } roi_qthd1; 771 772 /* 0x00001038 reg1038 */ 773 struct { 774 RK_U32 qpmin_area5 : 6; 775 RK_U32 qpmax_area5 : 6; 776 RK_U32 qpmin_area6 : 6; 777 RK_U32 qpmax_area6 : 6; 778 RK_U32 qpmin_area7 : 6; 779 RK_U32 reserved : 2; 780 } roi_qthd2; 781 782 /* 0x0000103c reg1039 */ 783 struct { 784 RK_U32 qpmax_area7 : 6; 785 RK_U32 reserved : 24; 786 RK_U32 qpmap_mode : 2; 787 } roi_qthd3; 788 789 /* 0x00001040 reg1040 */ 790 RK_U32 reserved_1040; 791 792 /* 0x00001044 reg1041 - 0x00001050 reg1044 */ 793 RK_U8 aq_tthd[16]; 794 795 /* 0x00001054 reg1045 */ 796 struct { 797 RK_S32 aq_stp_s0 : 5; 798 RK_S32 aq_stp_0t1 : 5; 799 RK_S32 aq_stp_1t2 : 5; 800 RK_S32 aq_stp_2t3 : 5; 801 RK_S32 aq_stp_3t4 : 5; 802 RK_S32 aq_stp_4t5 : 5; 803 RK_S32 reserved : 2; 804 } aq_stp0; 805 806 /* 0x00001058 reg1046 */ 807 struct { 808 RK_S32 aq_stp_5t6 : 5; 809 RK_S32 aq_stp_6t7 : 5; 810 RK_S32 aq_stp_7t8 : 5; 811 RK_S32 aq_stp_8t9 : 5; 812 RK_S32 aq_stp_9t10 : 5; 813 RK_S32 aq_stp_10t11 : 5; 814 RK_S32 reserved : 2; 815 } aq_stp1; 816 817 /* 0x0000105c reg1047 */ 818 struct { 819 RK_S32 aq_stp_11t12 : 5; 820 RK_S32 aq_stp_12t13 : 5; 821 RK_S32 aq_stp_13t14 : 5; 822 RK_S32 aq_stp_14t15 : 5; 823 RK_S32 aq_stp_b15 : 5; 824 RK_U32 reserved : 7; 825 } aq_stp2; 826 827 /* 0x00001060 reg1048 */ 828 struct { 829 RK_U32 aq16_rnge : 4; 830 RK_U32 aq32_rnge : 4; 831 RK_U32 aq8_rnge : 5; 832 RK_U32 aq16_dif0 : 5; 833 RK_U32 aq16_dif1 : 5; 834 RK_U32 reserved : 1; 835 RK_U32 aq_cme_en : 1; 836 RK_U32 aq_subj_cme_en : 1; 837 RK_U32 aq_rme_en : 1; 838 RK_U32 aq_subj_rme_en : 1; 839 RK_U32 reserved1 : 4; 840 } aq_clip; 841 842 /* 0x00001064 reg1049 */ 843 struct { 844 RK_U32 madi_th0 : 8; 845 RK_U32 madi_th1 : 8; 846 RK_U32 madi_th2 : 8; 847 RK_U32 reserved : 8; 848 } madi_st_thd; 849 850 /* 0x00001068 reg1050 */ 851 struct { 852 RK_U32 madp_th0 : 12; 853 RK_U32 reserved : 4; 854 RK_U32 madp_th1 : 12; 855 RK_U32 reserved1 : 4; 856 } madp_st_thd0; 857 858 /* 0x0000106c reg1051 */ 859 struct { 860 RK_U32 madp_th2 : 12; 861 RK_U32 reserved : 20; 862 } madp_st_thd1; 863 864 /* 0x1070 - 0x1078 */ 865 RK_U32 reserved1052_1054[3]; 866 867 /* 0x0000107c reg1055 */ 868 struct { 869 RK_U32 chrm_klut_ofst : 4; 870 RK_U32 reserved : 4; 871 RK_U32 inter_chrm_dist_multi : 6; 872 RK_U32 reserved1 : 18; 873 } klut_ofst; 874 875 /*0x00001080 reg1056 - 0x0000110c reg1091 */ 876 Vepu510RoiCfg roi_cfg; 877 } Vepu510RcRoi; 878 879 /* class: scaling list */ 880 /* 0x00002200 reg2176- 0x00002584 reg2401*/ 881 typedef struct Vepu510SclCfg_t { 882 /* 0x2200 - 0x221F, valid for h.264/h.h265, jpeg no use */ 883 RK_U32 tu8_intra_y[16]; 884 RK_U32 tu8_intra_u[16]; /* tu8_inter_y[16] for h.264 */ 885 886 /* 0x2220 - 0x2584, valid for h.265 only */ 887 RK_U32 tu8_intra_v[16]; 888 RK_U32 tu8_inter_y[16]; 889 RK_U32 tu8_inter_u[16]; 890 RK_U32 tu8_inter_v[16]; 891 RK_U32 tu16_intra_y_ac[16]; 892 RK_U32 tu16_intra_u_ac[16]; 893 RK_U32 tu16_intra_v_ac[16]; 894 RK_U32 tu16_inter_y_ac[16]; 895 RK_U32 tu16_inter_u_ac[16]; 896 RK_U32 tu16_inter_v_ac[16]; 897 RK_U32 tu32_intra_y_ac[16]; 898 RK_U32 tu32_inter_y_ac[16]; 899 900 /* 0x2580 */ 901 struct { 902 RK_U32 tu16_intra_y_dc : 8; 903 RK_U32 tu16_intra_u_dc : 8; 904 RK_U32 tu16_intra_v_dc : 8; 905 RK_U32 tu16_inter_y_dc : 8; 906 } tu_dc0; 907 908 /* 0x2584 */ 909 struct { 910 RK_U32 tu16_inter_u_dc : 8; 911 RK_U32 tu16_inter_v_dc : 8; 912 RK_U32 tu32_intra_y_dc : 8; 913 RK_U32 tu32_inter_y_dc : 8; 914 } tu_dc1; 915 } Vepu510SclCfg; 916 917 /* class: st */ 918 /* 0x00004000 reg4096 - 0x0000424c reg4243*/ 919 typedef struct Vepu510Status_t { 920 /* 0x00004000 reg4096 */ 921 RK_U32 bs_lgth_l32; 922 923 /* 0x00004004 reg4097 */ 924 struct { 925 RK_U32 bs_lgth_h8 : 8; 926 RK_U32 reserved : 8; 927 RK_U32 sse_l16 : 16; 928 } st_sse_bsl; 929 930 /* 0x00004008 reg4098 */ 931 RK_U32 sse_h32; 932 933 /* 0x0000400c reg4099 */ 934 RK_U32 qp_sum; 935 936 /* 0x00004010 reg4100 */ 937 struct { 938 RK_U32 sao_cnum : 16; 939 RK_U32 sao_ynum : 16; 940 } st_sao; 941 942 /* 0x00004014 reg4101 */ 943 RK_U32 rdo_head_bits; 944 945 /* 0x00004018 reg4102 */ 946 struct { 947 RK_U32 rdo_head_bits_h8 : 8; 948 RK_U32 reserved : 8; 949 RK_U32 rdo_res_bits_l16 : 16; 950 } st_head_res_bl; 951 952 /* 0x0000401c reg4103 */ 953 RK_U32 rdo_res_bits_h24; 954 955 /* 0x00004020 reg4104 */ 956 struct { 957 RK_U32 st_enc : 2; 958 RK_U32 st_sclr : 1; 959 RK_U32 isp_src_oflw : 1; 960 RK_U32 vepu_src_oflw : 1; 961 RK_U32 vepu_fcnt_nmch : 1; 962 RK_U32 vepu_fbd_err : 5; 963 RK_U32 reserved : 5; 964 RK_U32 dvbm_finf_wful : 1; 965 RK_U32 dvbm_linf_wful : 1; 966 RK_U32 dvbm_fcnt_late : 1; 967 RK_U32 dvbm_fcnt_early : 1; 968 RK_U32 dvbm_isp_oflw : 1; 969 RK_U32 dvbm_vepu_oflw : 1; 970 RK_U32 isp_time_out : 1; 971 RK_U32 dvbm_vsrc_fcnt : 1; 972 RK_U32 reserved1 : 8; 973 } st_enc; 974 975 /* 0x00004024 reg4105 */ 976 struct { 977 RK_U32 fnum_cfg_done : 8; 978 RK_U32 fnum_cfg : 8; 979 RK_U32 fnum_int : 8; 980 RK_U32 fnum_enc_done : 8; 981 } st_lkt; 982 983 /* 0x00004028 reg4106 */ 984 struct { 985 RK_U32 reserved : 4; 986 RK_U32 node_addr : 28; 987 } st_nadr; 988 989 /* 0x0000402c reg4107 */ 990 struct { 991 RK_U32 bsbw_ovfl : 1; 992 RK_U32 reserved : 2; 993 RK_U32 bsbw_addr : 28; 994 RK_U32 reserved1 : 1; 995 } st_bsb; 996 997 /* 0x00004030 reg4108 */ 998 struct { 999 RK_U32 axib_idl : 8; 1000 RK_U32 axib_ovfl : 8; 1001 RK_U32 axib_err : 8; 1002 RK_U32 axir_err : 8; 1003 } st_bus; 1004 1005 /* 0x00004034 reg4109 */ 1006 struct { 1007 RK_U32 sli_num_video : 6; 1008 RK_U32 sli_num_jpeg : 6; 1009 RK_U32 reserved : 4; 1010 RK_U32 bpkt_num_video : 7; 1011 RK_U32 bpkt_lst_video : 1; 1012 RK_U32 bpkt_num_jpeg : 7; 1013 RK_U32 bpkt_lst_jpeg : 1; 1014 } st_snum; 1015 1016 /* 0x00004038 reg4110 */ 1017 struct { 1018 RK_U32 sli_len : 31; 1019 RK_U32 sli_lst : 1; 1020 } st_slen; 1021 1022 /* 0x403c - reg4111 */ 1023 struct { 1024 RK_U32 task_id_proc : 12; 1025 RK_U32 task_id_done : 12; 1026 RK_U32 task_done : 1; 1027 RK_U32 task_lkt_err : 3; 1028 RK_U32 reserved : 4; 1029 } st_link_task; 1030 1031 /* 0x4040 - 0x405c */ 1032 RK_U32 reserved4111_4119[8]; 1033 1034 /* 0x00004060 reg4120 */ 1035 struct { 1036 RK_U32 sli_len_jpeg : 31; 1037 RK_U32 sli_lst_jpeg : 1; 1038 } st_slen_jpeg; 1039 1040 /* 0x00004064 reg4121 */ 1041 RK_U32 jpeg_head_bits_l32; 1042 1043 /* 0x00004068 reg4122 */ 1044 struct { 1045 RK_U32 jpeg_head_bits_h8 : 1; 1046 RK_U32 reserved : 31; 1047 } st_bsl_h8_jpeg; 1048 1049 /* 0x0000406c reg4123 */ 1050 struct { 1051 RK_U32 jbsbw_ovfl : 1; 1052 RK_U32 reserved : 2; 1053 RK_U32 jbsbw_addr : 28; 1054 RK_U32 reserved1 : 1; 1055 } st_jbsb; 1056 1057 /* 0x4070 - 0x407c */ 1058 RK_U32 reserved4124_4127[4]; 1059 1060 /* 0x00004080 reg4128 */ 1061 struct { 1062 RK_U32 pnum_p64 : 17; 1063 RK_U32 reserved : 15; 1064 } st_pnum_p64; 1065 1066 /* 0x00004084 reg4129 */ 1067 struct { 1068 RK_U32 pnum_p32 : 19; 1069 RK_U32 reserved : 13; 1070 } st_pnum_p32; 1071 1072 /* 0x00004088 reg4130 */ 1073 struct { 1074 RK_U32 pnum_p16 : 21; 1075 RK_U32 reserved : 11; 1076 } st_pnum_p16; 1077 1078 /* 0x0000408c reg4131 */ 1079 struct { 1080 RK_U32 pnum_p8 : 23; 1081 RK_U32 reserved : 9; 1082 } st_pnum_p8; 1083 1084 /* 0x00004090 reg4132 */ 1085 struct { 1086 RK_U32 pnum_i32 : 19; 1087 RK_U32 reserved : 13; 1088 } st_pnum_i32; 1089 1090 /* 0x00004094 reg4133 */ 1091 struct { 1092 RK_U32 pnum_i16 : 21; 1093 RK_U32 reserved : 11; 1094 } st_pnum_i16; 1095 1096 /* 0x00004098 reg4134 */ 1097 struct { 1098 RK_U32 pnum_i8 : 23; 1099 RK_U32 reserved : 9; 1100 } st_pnum_i8; 1101 1102 /* 0x0000409c reg4135 */ 1103 struct { 1104 RK_U32 pnum_i4 : 23; 1105 RK_U32 reserved : 9; 1106 } st_pnum_i4; 1107 1108 /* 0x000040a0 reg4136 */ 1109 struct { 1110 RK_U32 num_b16 : 23; 1111 RK_U32 reserved : 9; 1112 } st_bnum_b16; 1113 1114 /* 0x000040a4 reg4137 */ 1115 struct { 1116 RK_U32 rdo_smear_cnt0 : 8; 1117 RK_U32 rdo_smear_cnt1 : 8; 1118 RK_U32 rdo_smear_cnt2 : 8; 1119 RK_U32 rdo_smear_cnt3 : 8; 1120 } st_smear_cnt; 1121 1122 /* 0x000040a8 reg4138 */ 1123 RK_U32 madi16_sum; 1124 1125 /* 0x000040ac reg4139 */ 1126 RK_U32 madi32_sum; 1127 1128 /* 0x000040b0 reg4140 */ 1129 RK_U32 madp16_sum; 1130 1131 /* 0x40b4 - 0x40bc */ 1132 RK_U32 reserved4141_4143[3]; 1133 1134 /* 0x000040c0 reg4144 */ 1135 struct { 1136 RK_U32 madi_th_lt_cnt0 : 16; 1137 RK_U32 madi_th_lt_cnt1 : 16; 1138 } st_madi_lt_num0; 1139 1140 /* 0x000040c4 reg4145 */ 1141 struct { 1142 RK_U32 madi_th_lt_cnt2 : 16; 1143 RK_U32 madi_th_lt_cnt3 : 16; 1144 } st_madi_lt_num1; 1145 1146 /* 0x000040c8 reg4146 */ 1147 struct { 1148 RK_U32 madi_th_rt_cnt0 : 16; 1149 RK_U32 madi_th_rt_cnt1 : 16; 1150 } st_madi_rt_num0; 1151 1152 /* 0x000040cc reg4147 */ 1153 struct { 1154 RK_U32 madi_th_rt_cnt2 : 16; 1155 RK_U32 madi_th_rt_cnt3 : 16; 1156 } st_madi_rt_num1; 1157 1158 /* 0x000040d0 reg4148 */ 1159 struct { 1160 RK_U32 madi_th_lb_cnt0 : 16; 1161 RK_U32 madi_th_lb_cnt1 : 16; 1162 } st_madi_lb_num0; 1163 1164 /* 0x000040d4 reg4149 */ 1165 struct { 1166 RK_U32 madi_th_lb_cnt2 : 16; 1167 RK_U32 madi_th_lb_cnt3 : 16; 1168 } st_madi_lb_num1; 1169 1170 /* 0x000040d8 reg4150 */ 1171 struct { 1172 RK_U32 madi_th_rb_cnt0 : 16; 1173 RK_U32 madi_th_rb_cnt1 : 16; 1174 } st_madi_rb_num0; 1175 1176 /* 0x000040dc reg4151 */ 1177 struct { 1178 RK_U32 madi_th_rb_cnt2 : 16; 1179 RK_U32 madi_th_rb_cnt3 : 16; 1180 } st_madi_rb_num1; 1181 1182 /* 0x000040e0 reg4152 */ 1183 struct { 1184 RK_U32 madp_th_lt_cnt0 : 16; 1185 RK_U32 madp_th_lt_cnt1 : 16; 1186 } st_madp_lt_num0; 1187 1188 /* 0x000040e4 reg4153 */ 1189 struct { 1190 RK_U32 madp_th_lt_cnt2 : 16; 1191 RK_U32 madp_th_lt_cnt3 : 16; 1192 } st_madp_lt_num1; 1193 1194 /* 0x000040e8 reg4154 */ 1195 struct { 1196 RK_U32 madp_th_rt_cnt0 : 16; 1197 RK_U32 madp_th_rt_cnt1 : 16; 1198 } st_madp_rt_num0; 1199 1200 /* 0x000040ec reg4155 */ 1201 struct { 1202 RK_U32 madp_th_rt_cnt2 : 16; 1203 RK_U32 madp_th_rt_cnt3 : 16; 1204 } st_madp_rt_num1; 1205 1206 /* 0x000040f0 reg4156 */ 1207 struct { 1208 RK_U32 madp_th_lb_cnt0 : 16; 1209 RK_U32 madp_th_lb_cnt1 : 16; 1210 } st_madp_lb_num0; 1211 1212 /* 0x000040f4 reg4157 */ 1213 struct { 1214 RK_U32 madp_th_lb_cnt2 : 16; 1215 RK_U32 madp_th_lb_cnt3 : 16; 1216 } st_madp_lb_num1; 1217 1218 /* 0x000040f8 reg4158 */ 1219 struct { 1220 RK_U32 madp_th_rb_cnt0 : 16; 1221 RK_U32 madp_th_rb_cnt1 : 16; 1222 } st_madp_rb_num0; 1223 1224 /* 0x000040fc reg4159 */ 1225 struct { 1226 RK_U32 madp_th_rb_cnt2 : 16; 1227 RK_U32 madp_th_rb_cnt3 : 16; 1228 } st_madp_rb_num1; 1229 1230 /* 0x00004100 reg4160 */ 1231 struct { 1232 RK_U32 cmv_th_lt_cnt0 : 16; 1233 RK_U32 cmv_th_lt_cnt1 : 16; 1234 } st_cmv_lt_num0; 1235 1236 /* 0x00004104 reg4161 */ 1237 struct { 1238 RK_U32 cmv_th_lt_cnt2 : 16; 1239 RK_U32 cmv_th_lt_cnt3 : 16; 1240 } st_cmv_lt_num1; 1241 1242 /* 0x00004108 reg4162 */ 1243 struct { 1244 RK_U32 cmv_th_rt_cnt0 : 16; 1245 RK_U32 cmv_th_rt_cnt1 : 16; 1246 } st_cmv_rt_num0; 1247 1248 /* 0x0000410c reg4163 */ 1249 struct { 1250 RK_U32 cmv_th_rt_cnt2 : 16; 1251 RK_U32 cmv_th_rt_cnt3 : 16; 1252 } st_cmv_rt_num1; 1253 1254 /* 0x00004110 reg4164 */ 1255 struct { 1256 RK_U32 cmv_th_lb_cnt0 : 16; 1257 RK_U32 cmv_th_lb_cnt1 : 16; 1258 } st_cmv_lb_num0; 1259 1260 /* 0x00004114 reg4165 */ 1261 struct { 1262 RK_U32 cmv_th_lb_cnt2 : 16; 1263 RK_U32 cmv_th_lb_cnt3 : 16; 1264 } st_cmv_lb_num1; 1265 1266 /* 0x00004118 reg4166 */ 1267 struct { 1268 RK_U32 cmv_th_rb_cnt0 : 16; 1269 RK_U32 cmv_th_rb_cnt1 : 16; 1270 } st_cmv_rb_num0; 1271 1272 /* 0x0000411c reg4167 */ 1273 struct { 1274 RK_U32 cmv_th_rb_cnt2 : 16; 1275 RK_U32 cmv_th_rb_cnt3 : 16; 1276 } st_cmv_rb_num1; 1277 1278 /* 0x00004120 reg4168 */ 1279 struct { 1280 RK_U32 org_y_r_max_value : 8; 1281 RK_U32 org_y_r_min_value : 8; 1282 RK_U32 org_u_g_max_value : 8; 1283 RK_U32 org_u_g_min_value : 8; 1284 } st_vsp_org_value0; 1285 1286 /* 0x00004124 reg4169 */ 1287 struct { 1288 RK_U32 org_v_b_max_value : 8; 1289 RK_U32 org_v_b_min_value : 8; 1290 RK_U32 reserved : 16; 1291 } st_vsp_org_value1; 1292 1293 /* 0x4128 - 0x412c */ 1294 RK_U32 reserved4170_4171[2]; 1295 1296 /* 0x00004130 reg4172 */ 1297 RK_U32 dsp_y_sum; 1298 1299 /* 0x00004134 reg4173 */ 1300 RK_U32 acc_zero_mv; 1301 1302 /* 0x00004138 reg4174 */ 1303 RK_U32 acc_dist0; 1304 1305 /* 0x0000413c reg4175 */ 1306 RK_U32 acc_block_num; 1307 1308 /* 0x00004140 reg4176 */ 1309 struct { 1310 RK_U32 num0_point_skin : 15; 1311 RK_U32 acc_cmplx_num : 17; 1312 } st_skin_sum0; 1313 1314 /* 0x00004144 reg4177 */ 1315 struct { 1316 RK_U32 num1_point_skin : 15; 1317 RK_U32 acc_cover16_num : 17; 1318 } st_skin_sum1; 1319 1320 /* 0x00004148 reg4178 */ 1321 struct { 1322 RK_U32 num2_point_skin : 15; 1323 RK_U32 acc_bndry16_num : 17; 1324 } st_skin_sum2; 1325 1326 /* 0x0000414c reg4179 */ 1327 RK_U32 num0_grdnt_point_dep0; 1328 1329 /* 0x00004150 reg4180 */ 1330 RK_U32 num1_grdnt_point_dep0; 1331 1332 /* 0x00004154 reg4181 */ 1333 RK_U32 num2_grdnt_point_dep0; 1334 1335 /* 0x4158 - 0x417c */ 1336 RK_U32 reserved4182_4191[10]; 1337 1338 /* 0x00004180 reg4192 - 0x0000424c reg4243*/ 1339 RK_U32 st_b8_qp[52]; 1340 } Vepu510Status; 1341 1342 /* class: dbg/st/axipn */ 1343 /* 0x00005000 reg5120 - 0x0000230 reg5260*/ 1344 //TODO: 1345 typedef struct Vepu510Dbg_t { 1346 /* 0x00005000 reg5120 */ 1347 struct { 1348 RK_U32 vsp0_pos_x : 16; 1349 RK_U32 vsp0_pos_y : 16; 1350 } st_ppl_pos_vsp0; 1351 1352 /* 0x00005004 reg5121 */ 1353 struct { 1354 RK_U32 vsp1_pos_x : 16; 1355 RK_U32 vsp1_pos_y : 16; 1356 } st_ppl_pos_vsp1; 1357 1358 /* 0x00005008 reg5122 */ 1359 struct { 1360 RK_U32 cme_pos_x : 16; 1361 RK_U32 cme_pos_y : 16; 1362 } st_ppl_pos_cme; 1363 1364 /* 0x0000500c reg5123 */ 1365 struct { 1366 RK_U32 swin_cmd_x : 16; 1367 RK_U32 swin_cmd_y : 16; 1368 } st_ppl_cmd_swin; 1369 1370 /* 0x00005010 reg5124 */ 1371 struct { 1372 RK_U32 swin_pos_x : 16; 1373 RK_U32 swin_pos_y : 16; 1374 } st_ppl_pos_swin; 1375 1376 /* 0x00005014 reg5125 */ 1377 struct { 1378 RK_U32 pren_pos_x : 16; 1379 RK_U32 pren_pos_y : 16; 1380 } st_ppl_pos_pren; 1381 1382 /* 0x00005018 reg5126 */ 1383 struct { 1384 RK_U32 rfme_pos_x : 16; 1385 RK_U32 rfme_pos_y : 16; 1386 } st_ppl_pos_rfme; 1387 1388 /* 0x0000501c reg5127 */ 1389 struct { 1390 RK_U32 rdo_pos_x : 16; 1391 RK_U32 rdo_pos_y : 16; 1392 } st_ppl_pos_rdo; 1393 1394 /* 0x00005020 reg5128 */ 1395 struct { 1396 RK_U32 lpf_pos_x : 16; 1397 RK_U32 lpf_pos_y : 16; 1398 } st_ppl_pos_lpf; 1399 1400 /* 0x00005024 reg5129 */ 1401 struct { 1402 RK_U32 etpy_pos_x : 16; 1403 RK_U32 etpy_pos_y : 16; 1404 } st_ppl_pos_etpy; 1405 1406 /* 0x00005028 reg5130 */ 1407 struct { 1408 RK_U32 vsp0_pos_x : 16; 1409 RK_U32 vsp0_pos_y : 16; 1410 } st_ppl_pos_jsp0; 1411 1412 /* 0x0000502c reg5131 */ 1413 struct { 1414 RK_U32 vsp1_pos_x : 16; 1415 RK_U32 vsp1_pos_y : 16; 1416 } st_ppl_pos_jsp1; 1417 1418 /* 0x00005030 reg5132 */ 1419 struct { 1420 RK_U32 jpeg_pos_x : 16; 1421 RK_U32 jpeg_pos_y : 16; 1422 } st_ppl_pos_jpeg; 1423 1424 /* 0x5034 - 0x503c */ 1425 RK_U32 reserved5133_5135[3]; 1426 /* 0x00005040 reg5136 */ 1427 struct { 1428 RK_U32 vsp0_org_err : 1; 1429 RK_U32 vsp0_vsld_err : 1; 1430 RK_U32 pp0_pp1_err : 1; 1431 RK_U32 vsp0_cmd_err : 1; 1432 RK_U32 reserved : 24; 1433 RK_U32 vsp0_wrk : 1; 1434 RK_U32 vsp0_tout : 1; 1435 RK_U32 reserved1 : 2; 1436 } dbg_ctrl_vsp0; 1437 1438 /* 0x00005044 reg5137 */ 1439 struct { 1440 RK_U32 vsp1_org_err : 1; 1441 RK_U32 vsp1_rdo_err : 1; 1442 RK_U32 reserved : 26; 1443 RK_U32 vsp1_wrk : 1; 1444 RK_U32 vsp1_tout : 1; 1445 RK_U32 reserved1 : 2; 1446 } dbg_ctrl_vsp1; 1447 1448 /* 0x00005048 reg5138 */ 1449 struct { 1450 RK_U32 cme_org_err : 1; 1451 RK_U32 cme_roi_err : 1; 1452 RK_U32 cme_win_err : 1; 1453 RK_U32 cme_cmmv_err : 1; 1454 RK_U32 cme_smvp_err : 1; 1455 RK_U32 cme_meiw_err : 1; 1456 RK_U32 cme_dist_err : 1; 1457 RK_U32 cme_rdo_err : 1; 1458 RK_U32 cme_madp_err : 1; 1459 RK_U32 cme_mv_err : 1; 1460 RK_U32 reserved : 18; 1461 RK_U32 cme_wrk : 1; 1462 RK_U32 cme_tout : 1; 1463 RK_U32 reserved1 : 2; 1464 } dbg_ctrl_cme; 1465 1466 /* 0x0000504c reg5139 */ 1467 struct { 1468 RK_U32 swin_org_err : 1; 1469 RK_U32 swin_ref_err : 1; 1470 RK_U32 swin_cmd_err : 1; 1471 RK_U32 reserved : 25; 1472 RK_U32 swin_wrk : 1; 1473 RK_U32 swin_tout : 1; 1474 RK_U32 reserved1 : 2; 1475 } dbg_ctrl_swin; 1476 1477 /* 0x00005050 reg5140 */ 1478 struct { 1479 RK_U32 swin_buff_ptr : 2; 1480 RK_U32 swin_buff_num0 : 2; 1481 RK_U32 swin_buff_num1 : 2; 1482 RK_U32 swin_buff_num2 : 2; 1483 RK_U32 reserved : 24; 1484 } dbg_ppl_swin; 1485 1486 /* 0x00005054 reg5141 */ 1487 struct { 1488 RK_U32 pnra_org_err : 1; 1489 RK_U32 pnra_dist_err : 1; 1490 RK_U32 pnra_olm_err : 1; 1491 RK_U32 reserved : 25; 1492 RK_U32 pnra_wrk : 1; 1493 RK_U32 pnra_tout : 1; 1494 RK_U32 reserved1 : 2; 1495 } dbg_ctrl_pren; 1496 1497 /* 0x00005058 reg5142 */ 1498 struct { 1499 RK_U32 rfme_org_err : 1; 1500 RK_U32 rfme_ref_err : 1; 1501 RK_U32 rfme_cmmv_err : 1; 1502 RK_U32 rfme_rfmv_err : 1; 1503 RK_U32 rfme_tmvp_err : 1; 1504 RK_U32 reserved : 23; 1505 RK_U32 rfme_wrk : 1; 1506 RK_U32 rfme_tout : 1; 1507 RK_U32 reserved1 : 2; 1508 } dbg_ctrl_rfme; 1509 1510 /* 0x0000505c reg5143 */ 1511 struct { 1512 RK_U32 rdo_org_err : 1; 1513 RK_U32 rdo_ref_err : 1; 1514 RK_U32 rdo_inf_err : 1; 1515 RK_U32 rdo_roi_err : 1; 1516 RK_U32 rdo_rfmv_err : 1; 1517 RK_U32 rdo_lbfr_err : 1; 1518 RK_U32 rdo_lbfw_err : 1; 1519 RK_U32 rdo_tmvp_rd_err : 1; 1520 RK_U32 rdo_tmvp_wr_err : 1; 1521 RK_U32 rdo_st_err : 1; 1522 RK_U32 rdo_pnra_err : 1; 1523 RK_U32 rdo_lpf_err : 1; 1524 RK_U32 rdo_ent_err : 1; 1525 RK_U32 reserved : 15; 1526 RK_U32 rdo_wrk : 1; 1527 RK_U32 rdo_tout : 1; 1528 RK_U32 reserved1 : 2; 1529 } dbg_ctrl_rdo; 1530 1531 /* 0x00005060 reg5144 */ 1532 struct { 1533 RK_U32 lpf_org_err : 1; 1534 RK_U32 lpf_lbfr_err : 1; 1535 RK_U32 lpf_lbfw_err : 1; 1536 RK_U32 lpf_rcol_err : 1; 1537 RK_U32 reserved : 24; 1538 RK_U32 lpf_wrk : 1; 1539 RK_U32 lpf_tout : 1; 1540 RK_U32 reserved1 : 2; 1541 } dbg_ctrl_lpf; 1542 1543 /* 0x00005064 reg5145 */ 1544 struct { 1545 RK_U32 etpy_bsw_err : 1; 1546 RK_U32 reserved : 27; 1547 RK_U32 etpy_wrk : 1; 1548 RK_U32 etpy_tout : 1; 1549 RK_U32 reserved1 : 2; 1550 } dbg_ctrl_etpy; 1551 1552 /* 0x00005068 reg5146 */ 1553 struct { 1554 RK_U32 jsp0_org_err : 1; 1555 RK_U32 jsp0_vsld_err : 1; 1556 RK_U32 pp0_pp1_err : 1; 1557 RK_U32 jsp0_cmd_err : 1; 1558 RK_U32 reserved : 24; 1559 RK_U32 jsp0_wrk : 1; 1560 RK_U32 jsp0_tout : 1; 1561 RK_U32 reserved1 : 2; 1562 } dbg_ctrl_jsp0; 1563 1564 /* 0x0000506c reg5147 */ 1565 struct { 1566 RK_U32 jsp1_org_err : 1; 1567 RK_U32 jsp1_madi_err : 1; 1568 RK_U32 reserved : 26; 1569 RK_U32 jsp1_wrk : 1; 1570 RK_U32 jsp1_tout : 1; 1571 RK_U32 reserved1 : 2; 1572 } dbg_ctrl_jsp1; 1573 1574 /* 0x00005070 reg5148 */ 1575 struct { 1576 RK_U32 jpeg_org_err : 1; 1577 RK_U32 reserved : 27; 1578 RK_U32 jpeg_wrk : 1; 1579 RK_U32 jpeg_tout : 1; 1580 RK_U32 reserved1 : 2; 1581 } dbg_ctrl_jpeg; 1582 1583 /* 0x00005074 reg5149 */ 1584 struct { 1585 RK_U32 dma_brsp_idle : 1; 1586 RK_U32 jpeg_frm_done : 1; 1587 RK_U32 rdo_frm_done : 1; 1588 RK_U32 lpf_frm_done : 1; 1589 RK_U32 ent_frm_done : 1; 1590 RK_U32 ppl_ctrl_done : 1; 1591 RK_U32 criw_frm_done : 1; 1592 RK_U32 meiw_frm_done : 1; 1593 RK_U32 smiw_frm_done : 1; 1594 RK_U32 strg_rsrc_done : 1; 1595 RK_U32 reserved : 18; 1596 RK_U32 frm_wrk : 1; 1597 RK_U32 frm_tout : 1; 1598 RK_U32 reserved1 : 2; 1599 } dbg_tctrl0; 1600 1601 /* 0x00005078 reg5150 */ 1602 struct { 1603 RK_U32 pp0_cmd_vld : 1; 1604 RK_U32 pp0_cmd_rdy : 1; 1605 RK_U32 pp0_cmd_eid : 1; 1606 RK_U32 cme_madp_vld : 1; 1607 RK_U32 cme_madp_rdy0 : 1; 1608 RK_U32 cmd_madp_rdy1 : 1; 1609 RK_U32 cme_mv16_vld : 1; 1610 RK_U32 cmd_mv16_rdy : 1; 1611 RK_U32 swin_cmd_vld : 1; 1612 RK_U32 swin_cmd_rdy : 1; 1613 RK_U32 pnra_olm_vld : 1; 1614 RK_U32 pnra_olm_rdy : 1; 1615 RK_U32 lpf_rcol_vld : 1; 1616 RK_U32 lpf_rcol_rdy : 1; 1617 RK_U32 bsw_dat_vld : 1; 1618 RK_U32 bsw_dat_rdy : 1; 1619 RK_U32 slc_fifo_full : 1; 1620 RK_U32 reserved : 15; 1621 } dbg_tctrl1; 1622 1623 /* 0x507c */ 1624 RK_U32 reserved_5151; 1625 1626 /* 0x00005080 reg5152 */ 1627 struct { 1628 RK_U32 sli_num : 15; 1629 RK_U32 reserved : 17; 1630 } st_sli_num; 1631 1632 /* 0x5084 - 0x50fc */ 1633 RK_U32 reserved5153_5183[31]; 1634 1635 /* 0x00005100 reg5184 */ 1636 struct { 1637 RK_U32 empty_oafifo : 1; 1638 RK_U32 full_cmd_oafifo : 1; 1639 RK_U32 full_data_oafifo : 1; 1640 RK_U32 empty_iafifo : 1; 1641 1642 RK_U32 full_cmd_iafifo : 1; 1643 RK_U32 full_info_iafifo : 1; 1644 RK_U32 fbd_brq_st : 4; 1645 RK_U32 fbd_hdr_vld : 1; 1646 RK_U32 fbd_bmng_end : 1; 1647 1648 RK_U32 nfbd_req_st : 4; 1649 RK_U32 acc_axi_cmd : 8; 1650 RK_U32 reserved : 8; 1651 } dbg_pp_st; 1652 1653 /* 0x00005104 reg5185 */ 1654 struct { 1655 RK_U32 r_ena_lambd : 1; 1656 RK_U32 r_fst_swinw_end : 1; 1657 RK_U32 r_swinw_end : 1; 1658 RK_U32 r_cnt_swinw : 1; 1659 1660 RK_U32 r_dspw_end : 1; 1661 RK_U32 r_dspw_cnt : 1; 1662 RK_U32 i_sjgen_work : 1; 1663 RK_U32 r_end_rspgen : 1; 1664 1665 RK_U32 r_cost_gate : 1; 1666 RK_U32 r_ds_gate : 1; 1667 RK_U32 r_mvp_gate : 1; 1668 RK_U32 i_smvp_arrdy : 1; 1669 1670 RK_U32 i_smvp_arvld : 1; 1671 RK_U32 i_stptr_wrdy : 1; 1672 RK_U32 i_stptr_wvld : 1; 1673 RK_U32 i_rdy_atf : 1; 1674 1675 RK_U32 i_vld_atf : 1; 1676 RK_U32 i_rdy_bmv16 : 1; 1677 RK_U32 i_vld_bmv16 : 1; 1678 RK_U32 i_wr_dsp : 1; 1679 1680 RK_U32 i_rdy_dsp : 1; 1681 RK_U32 i_vld_dsp : 1; 1682 RK_U32 r_rdy_org : 1; 1683 RK_U32 i_vld_org : 1; 1684 1685 RK_U32 i_rdy_state : 1; 1686 RK_U32 i_vld_state : 1; 1687 RK_U32 i_rdy_madp : 1; 1688 RK_U32 i_vld_madp : 1; 1689 1690 RK_U32 i_rdy_diff : 1; 1691 RK_U32 i_vld_diff : 1; 1692 RK_U32 reserved : 2; 1693 } dbg_cime_st; 1694 1695 /* 0x00005108 reg5186 */ 1696 RK_U32 swin_dbg_inf; 1697 1698 /* 0x0000510c reg5187 */ 1699 struct { 1700 RK_U32 bbrq_cmps_left_len2 : 1; 1701 RK_U32 bbrq_cmps_left_len1 : 1; 1702 RK_U32 cmps_left_len0 : 1; 1703 RK_U32 bbrq_rdy2 : 1; 1704 RK_U32 dcps_vld2 : 1; 1705 RK_U32 bbrq_rdy1 : 1; 1706 RK_U32 dcps_vld1 : 1; 1707 RK_U32 bbrq_rdy0 : 1; 1708 RK_U32 dcps_vld0 : 1; 1709 RK_U32 hb_rdy2 : 1; 1710 RK_U32 bbrq_vld2 : 1; 1711 RK_U32 hb_rdy1 : 1; 1712 RK_U32 bbrq_vld1 : 1; 1713 RK_U32 hb_rdy0 : 1; 1714 RK_U32 bbrq_vld0 : 1; 1715 RK_U32 idle_msb2 : 1; 1716 RK_U32 idle_msb1 : 1; 1717 RK_U32 idle_msb0 : 1; 1718 RK_U32 cur_state_dcps : 1; 1719 RK_U32 cur_state_bbrq : 1; 1720 RK_U32 cur_state_hb : 1; 1721 RK_U32 cke_bbrq_dcps : 1; 1722 RK_U32 cke_dcps : 1; 1723 RK_U32 cke_bbrq : 1; 1724 RK_U32 rdy_lwcd_rsp : 1; 1725 RK_U32 vld_lwcd_rsp : 1; 1726 RK_U32 rdy_lwcd_req : 1; 1727 RK_U32 vld_lwcd_req : 1; 1728 RK_U32 rdy_lwrsp : 1; 1729 RK_U32 vld_lwrsp : 1; 1730 RK_U32 rdy_lwreq : 1; 1731 RK_U32 vld_lwreq : 1; 1732 } dbg_fbd_hhit0; 1733 1734 /* 0x00005110 reg5188 */ 1735 RK_U32 rfme_dbg_inf; 1736 1737 /* 0x00005114 reg5189 */ 1738 struct { 1739 RK_U32 mscnt_clr : 1; 1740 RK_U32 reserved : 31; 1741 } dbg_cach_clr; 1742 1743 /* 0x00005118 reg5190 */ 1744 RK_U32 l1_mis; 1745 1746 /* 0x0000511c reg5191 */ 1747 RK_U32 l2_mis; 1748 1749 /* 0x00005120 reg5192 */ 1750 RK_U32 rdo_dbg0; 1751 1752 /* 0x00005124 reg5193 */ 1753 RK_U32 rdo_dbg1; 1754 1755 /* 0x00005128 reg5194 */ 1756 struct { 1757 RK_U32 h264_sh_st_cs : 4; 1758 RK_U32 rsd_st_cs : 4; 1759 RK_U32 h264_sd_st_cs : 5; 1760 RK_U32 etpy_rdy : 1; 1761 RK_U32 reserved : 18; 1762 } dbg_etpy; 1763 1764 /* 0x0000512c reg5195 */ 1765 struct { 1766 RK_U32 chl_aw_vld : 10; 1767 RK_U32 chl_aw_rdy : 10; 1768 RK_U32 aw_vld_arb : 1; 1769 RK_U32 aw_rdy_arb : 1; 1770 RK_U32 aw_vld_crosclk : 1; 1771 RK_U32 aw_rdy_crosclk : 1; 1772 RK_U32 aw_rdy_mmu : 1; 1773 RK_U32 aw_vld_mmu : 1; 1774 RK_U32 aw_rdy_axi : 1; 1775 RK_U32 aw_vld_axi : 1; 1776 RK_U32 reserved : 4; 1777 } dbg_dma_aw; 1778 1779 /* 0x00005130 reg5196 */ 1780 struct { 1781 RK_U32 chl_w_vld : 10; 1782 RK_U32 chl_w_rdy : 10; 1783 RK_U32 w_vld_arb : 1; 1784 RK_U32 w_rdy_arb : 1; 1785 RK_U32 w_vld_crosclk : 1; 1786 RK_U32 w_rdy_crosclk : 1; 1787 RK_U32 w_rdy_mmu : 1; 1788 RK_U32 w_vld_mmu : 1; 1789 RK_U32 w_rdy_axi : 1; 1790 RK_U32 w_vld_axi : 1; 1791 RK_U32 reserved : 4; 1792 } dbg_dma_w; 1793 1794 /* 0x00005134 reg5197 */ 1795 struct { 1796 RK_U32 chl_ar_vld : 9; 1797 RK_U32 chl_ar_rdy : 9; 1798 RK_U32 reserved : 2; 1799 RK_U32 ar_vld_arb : 1; 1800 RK_U32 ar_rdy_arb : 1; 1801 RK_U32 ar_vld_crosclk : 1; 1802 RK_U32 ar_rdy_crosclk : 1; 1803 RK_U32 ar_rdy_mmu : 1; 1804 RK_U32 ar_vld_mmu : 1; 1805 RK_U32 ar_rdy_axi : 1; 1806 RK_U32 ar_vld_axi : 1; 1807 RK_U32 reserved1 : 4; 1808 } dbg_dma_ar; 1809 1810 /* 0x00005138 reg5198 */ 1811 struct { 1812 RK_U32 chl_r_vld : 9; 1813 RK_U32 chl_r_rdy : 9; 1814 RK_U32 reserved : 2; 1815 RK_U32 r_vld_arb : 1; 1816 RK_U32 r_rdy_arb : 1; 1817 RK_U32 r_vld_crosclk : 1; 1818 RK_U32 r_rdy_crosclk : 1; 1819 RK_U32 r_rdy_mmu : 1; 1820 RK_U32 r_vld_mmu : 1; 1821 RK_U32 r_rdy_axi : 1; 1822 RK_U32 r_vld_axi : 1; 1823 RK_U32 b_rdy_mmu : 1; 1824 RK_U32 b_vld_mmu : 1; 1825 RK_U32 b_rdy_axi : 1; 1826 RK_U32 b_vld_axi : 1; 1827 } dbg_dma_r; 1828 1829 /* 0x513c */ 1830 RK_U32 reserved_5199; 1831 1832 /* 0x00005140 reg5200 */ 1833 struct { 1834 RK_U32 bsw_fsm_stus : 4; 1835 RK_U32 bsw_aw_full : 1; 1836 RK_U32 bsw_rdy_ent : 1; 1837 RK_U32 bsw_vld_ent : 1; 1838 RK_U32 jpg_bsw_stus : 4; 1839 RK_U32 jpg_aw_full : 1; 1840 RK_U32 jpg_bsw_rdy : 1; 1841 RK_U32 jpg_bsw_vld : 1; 1842 RK_U32 crpw_fsm_stus : 3; 1843 RK_U32 hdwr_rdy : 1; 1844 RK_U32 hdwr_vld : 1; 1845 RK_U32 bdwr_rdy : 1; 1846 RK_U32 bdwr_vld : 1; 1847 RK_U32 nfbc_rdy : 1; 1848 RK_U32 nfbc_vld : 1; 1849 RK_U32 dsp_fsm_stus : 2; 1850 RK_U32 dsp_wr_flg : 1; 1851 RK_U32 dsp_rsy : 1; 1852 RK_U32 dsp_vld : 1; 1853 RK_U32 lpfw_fsm_stus : 3; 1854 RK_U32 reserved : 1; 1855 } dbg_dma_dbg1; 1856 1857 /* 0x5144 */ 1858 RK_U32 reserved_5201; 1859 1860 /* 0x00005148 reg5202 */ 1861 struct { 1862 RK_U32 rdo_st : 20; 1863 RK_U32 reserved : 12; 1864 } dbg_rdo_st; 1865 1866 /* 0x0000514c reg5203 */ 1867 struct { 1868 RK_U32 lpf_work : 1; 1869 RK_U32 rdo_par_nrdy : 1; 1870 RK_U32 rdo_rcn_nrdy : 1; 1871 RK_U32 lpf_rcn_rdy : 1; 1872 RK_U32 dblk_work : 1; 1873 RK_U32 sao_work : 1; 1874 RK_U32 reserved : 18; 1875 RK_U32 tile_bdry_read : 1; 1876 RK_U32 tile_bdry_write : 1; 1877 RK_U32 tile_bdry_rrdy : 1; 1878 RK_U32 rdo_read_tile_bdry : 1; 1879 RK_U32 rdo_write_tile_bdry : 1; 1880 RK_U32 reserved1 : 3; 1881 } dbg_lpf; 1882 1883 /* 0x5150 */ 1884 RK_U32 reserved_5204; 1885 1886 /* 0x00005154 reg5205 */ 1887 RK_U32 dbg0_cache; 1888 1889 /* 0x00005158 reg5206 */ 1890 RK_U32 dbg1_cache; 1891 1892 /* 0x0000515c reg5207 */ 1893 RK_U32 dbg2_cache; 1894 1895 /* 0x00005160 reg5208 */ 1896 struct { 1897 RK_U32 ebuf_diff_cmd : 8; 1898 RK_U32 lbuf_lpf_ncnt : 7; 1899 RK_U32 lbuf_lpf_cien : 1; 1900 RK_U32 lbuf_rdo_ncnt : 7; 1901 RK_U32 lbuf_rdo_cien : 1; 1902 RK_U32 reserved : 8; 1903 } dbg_lbuf0; 1904 1905 /* 0x00005164 reg5209 */ 1906 struct { 1907 RK_U32 rvld_ebfr : 1; 1908 RK_U32 rrdy_ebfr : 1; 1909 RK_U32 arvld_ebfr : 1; 1910 RK_U32 arrdy_ebfr : 1; 1911 RK_U32 wvld_ebfw : 1; 1912 RK_U32 wrdy_ebfw : 1; 1913 RK_U32 awvld_ebfw : 1; 1914 RK_U32 awrdy_ebfw : 1; 1915 RK_U32 lpf_lbuf_rvld : 1; 1916 RK_U32 lpf_lbuf_rrdy : 1; 1917 RK_U32 lpf_lbuf_wvld : 1; 1918 RK_U32 lpf_lbuf_wrdy : 1; 1919 RK_U32 rdo_lbuf_rvld : 1; 1920 RK_U32 rdo_lbuf_rrdy : 1; 1921 RK_U32 rdo_lbuf_wvld : 1; 1922 RK_U32 rdo_lbuf_wrdy : 1; 1923 RK_U32 fme_lbuf_rvld : 1; 1924 RK_U32 fme_lbuf_rrdy : 1; 1925 RK_U32 cme_lbuf_rvld : 1; 1926 RK_U32 cme_lbuf_rrdy : 1; 1927 RK_U32 smear_lbuf_rvld : 1; 1928 RK_U32 smear_lbuf_rrdy : 1; 1929 RK_U32 smear_lbuf_wvld : 1; 1930 RK_U32 smear_lbuf_wrdy : 1; 1931 RK_U32 rdo_lbufw_flag : 1; 1932 RK_U32 rdo_lbufr_flag : 1; 1933 RK_U32 cme_lbufr_flag : 1; 1934 RK_U32 reserved : 5; 1935 } dbg_lbuf1; 1936 1937 /* 0x00005168 reg5210 */ 1938 struct { 1939 RK_U32 dbg_isp_fcnt : 8; 1940 RK_U32 dbg_isp_fcyc : 24; 1941 } dbg_dvbm_isp0; 1942 1943 /* 0x0000516c reg5211 */ 1944 struct { 1945 RK_U32 dbg_isp_lcnt : 14; 1946 RK_U32 reserved : 1; 1947 RK_U32 dbg_isp_ltgl : 1; 1948 RK_U32 dbg_isp_fcnt : 8; 1949 RK_U32 dbg_isp_oflw : 1; 1950 RK_U32 dbg_isp_ftgl : 1; 1951 RK_U32 dbg_isp_full : 1; 1952 RK_U32 dbg_isp_work : 1; 1953 RK_U32 dbg_isp_lvld : 1; 1954 RK_U32 dbg_isp_lrdy : 1; 1955 RK_U32 dbg_isp_fvld : 1; 1956 RK_U32 dbg_isp_frdy : 1; 1957 } dbg_dvbm_isp1; 1958 1959 /* 0x00005170 reg5212 */ 1960 struct { 1961 RK_U32 dbg_bf0_isp_lcnt : 14; 1962 RK_U32 dbg_bf0_isp_llst : 1; 1963 RK_U32 dbg_bf0_isp_sofw : 1; 1964 RK_U32 dbg_bf0_isp_fcnt : 8; 1965 RK_U32 dbg_bf0_isp_pnt : 1; 1966 RK_U32 reserved : 3; 1967 RK_U32 dbg_bf0_vpu_pnt : 1; 1968 RK_U32 reserved1 : 3; 1969 } dbg_dvbm_buf0_inf0; 1970 1971 /* 0x00005174 reg5213 */ 1972 struct { 1973 RK_U32 dbg_bf0_src_lcnt : 14; 1974 RK_U32 dbg_bf0_src_llst : 1; 1975 RK_U32 reserved : 1; 1976 RK_U32 dbg_bf0_vpu_lcnt : 14; 1977 RK_U32 dbg_bf0_vpu_llst : 1; 1978 RK_U32 dbg_bf0_vpu_vofw : 1; 1979 } dbg_dvbm_buf0_inf1; 1980 1981 /* 0x00005178 reg5214 */ 1982 struct { 1983 RK_U32 dbg_bf1_isp_lcnt : 14; 1984 RK_U32 dbg_bf1_isp_llst : 1; 1985 RK_U32 dbg_bf1_isp_sofw : 1; 1986 RK_U32 dbg_bf1_isp_fcnt : 1; 1987 RK_U32 reserved : 7; 1988 RK_U32 dbg_bf1_isp_pnt : 1; 1989 RK_U32 reserved1 : 3; 1990 RK_U32 dbg_bf1_vpu_pnt : 1; 1991 RK_U32 reserved2 : 3; 1992 } dbg_dvbm_buf1_inf0; 1993 1994 /* 0x0000517c reg5215 */ 1995 struct { 1996 RK_U32 dbg_bf1_src_lcnt : 14; 1997 RK_U32 dbg_bf1_src_llst : 1; 1998 RK_U32 reserved : 1; 1999 RK_U32 dbg_bf1_vpu_lcnt : 14; 2000 RK_U32 dbg_bf1_vpu_llst : 1; 2001 RK_U32 dbg_bf1_vpu_vofw : 1; 2002 } dbg_dvbm_buf1_inf1; 2003 2004 /* 0x00005180 reg5216 */ 2005 struct { 2006 RK_U32 dbg_bf2_isp_lcnt : 14; 2007 RK_U32 dbg_bf2_isp_llst : 1; 2008 RK_U32 dbg_bf2_isp_sofw : 1; 2009 RK_U32 dbg_bf2_isp_fcnt : 1; 2010 RK_U32 reserved : 7; 2011 RK_U32 dbg_bf2_isp_pnt : 1; 2012 RK_U32 reserved1 : 3; 2013 RK_U32 dbg_bf2_vpu_pnt : 1; 2014 RK_U32 reserved2 : 3; 2015 } dbg_dvbm_buf2_inf0; 2016 2017 /* 0x00005184 reg5217 */ 2018 struct { 2019 RK_U32 dbg_bf2_src_lcnt : 14; 2020 RK_U32 dbg_bf2_src_llst : 1; 2021 RK_U32 reserved : 1; 2022 RK_U32 dbg_bf2_vpu_lcnt : 14; 2023 RK_U32 dbg_bf2_vpu_llst : 1; 2024 RK_U32 dbg_bf2_vpu_vofw : 1; 2025 } dbg_dvbm_buf2_inf1; 2026 2027 /* 0x00005188 reg5218 */ 2028 struct { 2029 RK_U32 dbg_bf3_isp_lcnt : 14; 2030 RK_U32 dbg_bf3_isp_llst : 1; 2031 RK_U32 dbg_bf3_isp_sofw : 1; 2032 RK_U32 dbg_bf3_isp_fcnt : 1; 2033 RK_U32 reserved : 7; 2034 RK_U32 dbg_bf3_isp_pnt : 1; 2035 RK_U32 reserved1 : 3; 2036 RK_U32 dbg_bf3_vpu_pnt : 1; 2037 RK_U32 reserved2 : 3; 2038 } dbg_dvbm_buf3_inf0; 2039 2040 /* 0x0000518c reg5219 */ 2041 struct { 2042 RK_U32 dbg_bf3_src_lcnt : 14; 2043 RK_U32 dbg_bf3_src_llst : 1; 2044 RK_U32 reserved : 1; 2045 RK_U32 dbg_bf3_vpu_lcnt : 14; 2046 RK_U32 dbg_bf3_vpu_llst : 1; 2047 RK_U32 dbg_bf3_vpu_vofw : 1; 2048 } dbg_dvbm_buf3_inf1; 2049 2050 /* 0x00005190 reg5220 */ 2051 struct { 2052 RK_U32 dbg_isp_fptr : 3; 2053 RK_U32 dbg_isp_full : 1; 2054 RK_U32 dbg_src_fptr : 3; 2055 RK_U32 reserved : 1; 2056 RK_U32 dbg_vpu_fptr : 3; 2057 RK_U32 dbg_vpu_empt : 1; 2058 RK_U32 dbg_vpu_lvld : 1; 2059 RK_U32 dbg_vpu_lrdy : 1; 2060 RK_U32 dbg_vpu_fvld : 1; 2061 RK_U32 dbg_vpu_frdy : 1; 2062 RK_U32 dbg_fcnt_misp : 4; 2063 RK_U32 dbg_fcnt_mvpu : 4; 2064 RK_U32 dbg_fcnt_sofw : 4; 2065 RK_U32 dbg_fcnt_vofw : 4; 2066 } dbg_dvbm_ctrl; 2067 2068 /* 0x5194 - 0x519c */ 2069 RK_U32 reserved5221_5223[3]; 2070 2071 /* 0x000051a0 reg5224 */ 2072 RK_U32 dbg_dvbm_buf0_yadr; 2073 2074 /* 0x000051a4 reg5225 */ 2075 RK_U32 dbg_dvbm_buf0_cadr; 2076 2077 /* 0x000051a8 reg5226 */ 2078 RK_U32 dbg_dvbm_buf1_yadr; 2079 2080 /* 0x000051ac reg5227 */ 2081 RK_U32 dbg_dvbm_buf1_cadr; 2082 2083 /* 0x000051b0 reg5228 */ 2084 RK_U32 dbg_dvbm_buf2_yadr; 2085 2086 /* 0x000051b4 reg5229 */ 2087 RK_U32 dbg_dvbm_buf2_cadr; 2088 2089 /* 0x000051b8 reg5230 */ 2090 RK_U32 dbg_dvbm_buf3_yadr; 2091 2092 /* 0x000051bc reg5231 */ 2093 RK_U32 dbg_dvbm_buf3_cadr; 2094 2095 /* 0x000051c0 reg5232 */ 2096 struct { 2097 RK_U32 dchs_rx_cnt : 11; 2098 RK_U32 dchs_rx_id : 2; 2099 RK_U32 dchs_rx_en : 1; 2100 RK_U32 dchs_rx_ack : 1; 2101 RK_U32 dchs_rx_req : 1; 2102 RK_U32 dchs_tx_cnt : 11; 2103 RK_U32 dchs_tx_id : 2; 2104 RK_U32 dchs_tx_en : 1; 2105 RK_U32 dchs_tx_ack : 1; 2106 RK_U32 dchs_tx_req : 1; 2107 } dbg_dchs_intfc; 2108 2109 /* 0x000051c4 reg5233 */ 2110 struct { 2111 RK_U32 lpfw_tx_cnt : 11; 2112 RK_U32 lpfw_tx_en : 1; 2113 RK_U32 crpw_tx_cnt : 11; 2114 RK_U32 crpw_tx_en : 1; 2115 RK_U32 dual_err_updt : 1; 2116 RK_U32 dlyc_fifo_oflw : 1; 2117 RK_U32 dlyc_tx_vld : 1; 2118 RK_U32 dlyc_tx_rdy : 1; 2119 RK_U32 dlyc_tx_empty : 1; 2120 RK_U32 dchs_tx_idle : 1; 2121 RK_U32 dchs_tx_asy : 1; 2122 RK_U32 dchs_tx_syn : 1; 2123 } dbg_dchs_tx_inf0; 2124 2125 /* 0x000051c8 reg5234 */ 2126 struct { 2127 RK_U32 criw_tx_cnt : 11; 2128 RK_U32 criw_tx_en : 1; 2129 RK_U32 smrw_tx_cnt : 11; 2130 RK_U32 smrw_tx_en : 1; 2131 RK_U32 reserved : 8; 2132 } dbg_dchs_tx_inf1; 2133 2134 /* 0x000051cc reg5235 */ 2135 struct { 2136 RK_U32 dual_rx_cnt : 11; 2137 RK_U32 dual_rx_id : 2; 2138 RK_U32 dual_rx_en : 1; 2139 RK_U32 dual_rx_syn : 1; 2140 RK_U32 dual_rx_lock : 1; 2141 RK_U32 dual_lpfr_dule : 1; 2142 RK_U32 dual_cime_dule : 1; 2143 RK_U32 dual_clomv_dule : 1; 2144 RK_U32 dual_smear_dule : 1; 2145 RK_U32 reserved : 12; 2146 } dbg_dchs_rx_inf0; 2147 2148 /* 0x51d0 - 0x51fc */ 2149 RK_U32 reserved5236_5247[12]; 2150 2151 /* 0x00005200 reg5248 */ 2152 RK_U32 frame_cyc; 2153 2154 /* 0x00005204 reg5249 */ 2155 RK_U32 vsp0_fcyc; 2156 2157 /* 0x00005208 reg5250 */ 2158 RK_U32 vsp1_fcyc; 2159 2160 /* 0x0000520c reg5251 */ 2161 RK_U32 cme_fcyc; 2162 2163 /* 0x00005210 reg5252 */ 2164 RK_U32 ldr_fcyc; 2165 2166 /* 0x00005214 reg5253 */ 2167 RK_U32 rfme_fcyc; 2168 2169 /* 0x00005218 reg5254 */ 2170 RK_U32 fme_fcyc; 2171 2172 /* 0x0000521c reg5255 */ 2173 RK_U32 rdo_fcyc; 2174 2175 /* 0x00005220 reg5256 */ 2176 RK_U32 lpf_fcyc; 2177 2178 /* 0x00005224 reg5257 */ 2179 RK_U32 etpy_fcyc; 2180 2181 /* 0x00005228 reg5258 */ 2182 RK_U32 jsp0_fcyc; 2183 2184 /* 0x0000522c reg5259 */ 2185 RK_U32 jsp1_fcyc; 2186 2187 /* 0x00005230 reg5260 */ 2188 RK_U32 jpeg_fcyc; 2189 } Vepu510Dbg; 2190 2191 /* ROI block configuration */ 2192 typedef struct Vepu510H264RoiBlkCfg { 2193 RK_U32 qp_adju : 8; 2194 RK_U32 mdc_adju_inter : 4; 2195 RK_U32 mdc_adju_skip : 4; 2196 RK_U32 mdc_adju_intra : 4; 2197 RK_U32 reserved : 12; 2198 } Vepu510H264RoiBlkCfg; 2199 2200 typedef struct Vepu510H265RoiBlkCfg { 2201 RK_U32 qp_adju : 8; 2202 RK_U32 reserved : 12; 2203 RK_U32 mdc_adju_inter : 4; 2204 RK_U32 mdc_adju_skip : 4; 2205 RK_U32 mdc_adju_intra : 4; 2206 } Vepu510H265RoiBlkCfg; 2207 2208 typedef struct Vepu510NpuOut_t { 2209 RK_S32 found_objects; 2210 /* npu object flag: one byte for each block16x16 */ 2211 RK_U8 *object_seg_map; 2212 } Vepu510NpuOut; 2213 2214 #ifdef __cplusplus 2215 extern "C" { 2216 #endif 2217 2218 MPP_RET vepu510_set_roi(void *roi_reg_base, MppEncROICfg * roi, RK_S32 w, 2219 RK_S32 h); 2220 2221 #ifdef __cplusplus 2222 } 2223 #endif 2224 2225 #endif /* __VEPU510_COMMON_H__ */ 2226