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 __VEPU540C_COMMON_H__ 18 #define __VEPU540C_COMMON_H__ 19 20 #include "rk_venc_cmd.h" 21 #include "mpp_device.h" 22 23 #define VEPU540C_CTL_OFFSET (0 * sizeof(RK_U32)) 24 #define VEPU540C_BASE_OFFSET (156 * sizeof(RK_U32)) 25 #define VEPU540C_RCROI_OFFSET (1024 * sizeof(RK_U32)) 26 #define VEPU540C_WEG_OFFSET (1472 * sizeof(RK_U32)) 27 #define VEPU540C_RDOCFG_OFFSET (2048 * sizeof(RK_U32)) 28 #define VEPU540C_SCLCFG_OFFSET (2168 * sizeof(RK_U32)) 29 #define VEPU540C_JPEGTAB_OFFSET (2848 * sizeof(RK_U32)) 30 31 #define VEPU540C_OSD_OFFSET (3072 * sizeof(RK_U32)) 32 #define VEPU540C_STATUS_OFFSET (4096 * sizeof(RK_U32)) 33 #define VEPU540C_DEBUG_OFFSET (5120 * sizeof(RK_U32)) 34 #define VEPU540C_REG_BASE_HW_STATUS 0x2c 35 36 #define VEPU540C_MAX_ROI_NUM 8 37 #define VEPU540C_SLICE_FIFO_LEN 8 38 39 typedef union { 40 struct { 41 RK_U32 enc_done_sta : 1; 42 RK_U32 lkt_node_done_sta : 1; 43 RK_U32 sclr_done_sta : 1; 44 RK_U32 vslc_done_sta : 1; 45 RK_U32 vbsf_oflw_sta : 1; 46 RK_U32 vbuf_lens_sta : 1; 47 RK_U32 enc_err_sta : 1; 48 RK_U32 dvbm_fcfg_sta : 1; 49 RK_U32 wdg_sta : 1; 50 RK_U32 lkt_err_int_sta : 1; 51 RK_U32 lkt_err_stop_sta : 1; 52 RK_U32 lkt_force_stop_sta : 1; 53 RK_U32 jslc_done_sta : 1; 54 RK_U32 jbsf_oflw_sta : 1; 55 RK_U32 jbuf_lens_sta : 1; 56 RK_U32 dvbm_dcnt_sta : 1; 57 RK_U32 reserved : 16; 58 } int_sta; 59 60 RK_U32 val; 61 } vepu540c_hw_status; 62 63 typedef struct Vepu540cOnline_t { 64 /* 0x00000270 reg156 */ 65 RK_U32 reg0156_adr_vsy_t; 66 /* 0x00000274 reg157 */ 67 RK_U32 reg0157_adr_vsc_t; 68 /* 0x00000278 reg158 */ 69 RK_U32 reg0158_adr_vsy_b; 70 /* 0x0000027c reg159 */ 71 RK_U32 reg0159_adr_vsc_b; 72 } vepu540c_online; 73 74 typedef struct IpRaw8_t { 75 RK_U8 intra_val[8]; 76 RK_U8 inter_val[8]; 77 } ip_raw8; 78 79 typedef struct IpRaw32_16_t { 80 RK_U16 q_intra16[4]; 81 RK_U16 q_intra32[2]; 82 RK_U8 iq_intra16[4]; 83 } ip_raw32_16; 84 85 /* 0x000021e0 reg2168 - 0x00002c7c reg2847*/ 86 typedef struct Vepu540cSclCfg_t { 87 /* 0x000021e0 reg2168 */ 88 RK_U32 q_dc_y16; 89 RK_U32 q_dc_u16; 90 RK_U32 q_dc_v16; 91 RK_U32 q_dc_y32; 92 RK_U32 iq_dc_0; 93 RK_U32 iq_dc_1; 94 95 /* 0x000021f8 reg2174 */ 96 struct { 97 RK_U32 scal_clk_sel : 1; 98 RK_U32 reserved : 31; 99 } scal_cfg; 100 /* 0x21fc */ 101 RK_U32 reserved_2175; 102 /* 0x00002200 reg2176 - 0x0000227c reg2207*/ 103 RK_U16 q_intra_y8[64]; 104 /* 0x00002280 reg2208 - 0x000022fc reg2239*/ 105 RK_U16 q_intra_u8[64]; 106 /* 0x00002300 reg2240 - 0x0000237c reg2271*/ 107 RK_U16 q_intra_v8[64]; 108 109 /* 0x00002380 reg2272 - 0x000023fc reg2303*/ 110 RK_U16 q_inter_y8[64]; 111 /* 0x00002400 reg2304 - 0x0000247c reg2335*/ 112 RK_U16 q_inter_u8[64]; 113 /* 0x00002480 reg2336 - 0x000024fc reg2367*/ 114 RK_U16 q_inter_v8[64]; 115 116 /* 0x00002500 reg2368 - 0x000025fc reg2431*/ 117 ip_raw32_16 q_intra_y[16]; 118 /* 0x00002600 reg2432 - 0x000026fc reg2495*/ 119 ip_raw32_16 q_intra_u[16]; 120 /* 0x00002700 reg2496 - 0x000027fc reg2559 */ 121 ip_raw32_16 q_intra_v[16]; 122 123 /*0x00002800 reg2560 - 0x000028fc reg2623*/ 124 ip_raw32_16 q_inter_y[16]; 125 /*0x00002900 reg2624 - 0x000029fc reg2687*/ 126 ip_raw32_16 q_inter_u[16]; 127 /*0x00002a00 reg2688 - 0x00002afc reg2751 */ 128 ip_raw32_16 q_inter_v[16]; 129 130 /* 0x00002b00 reg2752 - 0x00002b7c reg2783 */ 131 ip_raw8 ip_y8[8]; 132 /* 0x00002b80 reg2784 - 0x00002bfc reg2815 */ 133 ip_raw8 ip_u8[8]; 134 /* 0x00002c00 reg2816 - 0x00002c7c reg2847 */ 135 ip_raw8 ip_v8[8]; 136 } vepu540c_scl_cfg; 137 138 typedef struct PreCstPar_t { 139 struct { 140 RK_U32 madi_thd0 : 8; 141 RK_U32 madi_thd1 : 8; 142 RK_U32 madi_thd2 : 8; 143 RK_U32 madi_thd3 : 8; 144 } cst_madi_thd0; 145 146 /* 0x000020c4 reg2097 */ 147 struct { 148 RK_U32 madi_thd4 : 8; 149 RK_U32 madi_thd5 : 8; 150 RK_U32 reserved : 16; 151 } cst_madi_thd1; 152 153 /* 0x000020c8 reg2098 */ 154 struct { 155 RK_U32 wgt0 : 8; 156 RK_U32 wgt1 : 8; 157 RK_U32 wgt2 : 8; 158 RK_U32 wgt3 : 8; 159 } cst_wgt0; 160 161 /* 0x000020cc reg2099 */ 162 struct { 163 RK_U32 wgt4 : 8; 164 RK_U32 wgt5 : 8; 165 RK_U32 wgt6 : 8; 166 RK_U32 wgt7 : 8; 167 } cst_wgt1; 168 169 /* 0x000020d0 reg2100 */ 170 struct { 171 RK_U32 wgt8 : 8; 172 RK_U32 wgt9 : 8; 173 RK_U32 mode_th : 3; 174 RK_U32 reserved : 13; 175 } cst_wgt2; 176 } pre_cst_par; 177 178 typedef struct RdoSkipPar_t { 179 struct { 180 RK_U32 madp_thd0 : 12; 181 RK_U32 reserved : 4; 182 RK_U32 madp_thd1 : 12; 183 RK_U32 reserved1 : 4; 184 } atf_thd0; 185 186 /* 0x00002064 reg2073 */ 187 struct { 188 RK_U32 madp_thd2 : 12; 189 RK_U32 reserved : 4; 190 RK_U32 madp_thd3 : 12; 191 RK_U32 reserved1 : 4; 192 } atf_thd1; 193 194 /* 0x00002068 reg2074 */ 195 struct { 196 RK_U32 wgt0 : 8; 197 RK_U32 wgt1 : 8; 198 RK_U32 wgt2 : 8; 199 RK_U32 wgt3 : 8; 200 } atf_wgt0; 201 202 /* 0x0000206c reg2075 */ 203 struct { 204 RK_U32 wgt4 : 8; 205 RK_U32 reserved : 24; 206 } atf_wgt1; 207 } rdo_skip_par; 208 209 typedef struct RdoNoSkipPar_t { 210 /* 0x00002080 reg2080 */ 211 struct { 212 RK_U32 madp_thd0 : 12; 213 RK_U32 reserved : 4; 214 RK_U32 madp_thd1 : 12; 215 RK_U32 reserved1 : 4; 216 } ratf_thd0; 217 218 /* 0x00002084 reg2081 */ 219 struct { 220 RK_U32 madp_thd2 : 12; 221 RK_U32 reserved : 20; 222 } ratf_thd1; 223 224 /* 0x00002088 reg2082 */ 225 struct { 226 RK_U32 wgt0 : 8; 227 RK_U32 wgt1 : 8; 228 RK_U32 wgt2 : 8; 229 RK_U32 wgt3 : 8; 230 } atf_wgt; 231 } rdo_noskip_par; 232 233 /* class: rdo/q_i */ 234 /* 0x00002000 reg2048 - 0x00002c7c reg2847*/ 235 typedef struct Vepu540cRdoCfg_t { 236 237 /* 0x2000 - 0x200c */ 238 RK_U32 reserved2048_2051[4]; 239 240 /* 0x00002010 reg2052 */ 241 struct { 242 RK_U32 rdo_segment_multi : 8; 243 RK_U32 rdo_segment_en : 1; 244 RK_U32 reserved : 7; 245 RK_U32 rdo_smear_lvl4_multi : 8; 246 RK_U32 rdo_smear_lvl8_multi : 8; 247 } rdo_segment_cfg; 248 249 /* 0x00002014 reg2053 */ 250 struct { 251 RK_U32 rdo_smear_lvl16_multi : 8; 252 RK_U32 rdo_smear_dlt_qp : 4; 253 RK_U32 rdo_smear_order_state : 1; 254 RK_U32 stated_mode : 2; 255 RK_U32 rdo_smear_en : 1; 256 RK_U32 online_en : 1; 257 RK_U32 reserved : 3; 258 RK_U32 smear_stride : 12; 259 } rdo_smear_cfg_comb; 260 261 /* 0x00002018 reg2054 */ 262 struct { 263 RK_U32 rdo_smear_madp_cur_thd0 : 12; 264 RK_U32 reserved : 4; 265 RK_U32 rdo_smear_madp_cur_thd1 : 12; 266 RK_U32 reserved1 : 4; 267 } rdo_smear_madp_thd0_comb; 268 269 /* 0x0000201c reg2055 */ 270 struct { 271 RK_U32 rdo_smear_madp_cur_thd2 : 12; 272 RK_U32 reserved : 4; 273 RK_U32 rdo_smear_madp_cur_thd3 : 12; 274 RK_U32 reserved1 : 4; 275 } rdo_smear_madp_thd1_comb; 276 277 /* 0x00002020 reg2056 */ 278 struct { 279 RK_U32 rdo_smear_madp_around_thd0 : 12; 280 RK_U32 reserved : 4; 281 RK_U32 rdo_smear_madp_around_thd1 : 12; 282 RK_U32 reserved1 : 4; 283 } rdo_smear_madp_thd2_comb; 284 285 /* 0x00002024 reg2057 */ 286 struct { 287 RK_U32 rdo_smear_madp_around_thd2 : 12; 288 RK_U32 reserved : 4; 289 RK_U32 rdo_smear_madp_around_thd3 : 12; 290 RK_U32 reserved1 : 4; 291 } rdo_smear_madp_thd3_comb; 292 293 /* 0x00002028 reg2058 */ 294 struct { 295 RK_U32 rdo_smear_madp_around_thd4 : 12; 296 RK_U32 reserved : 4; 297 RK_U32 rdo_smear_madp_around_thd5 : 12; 298 RK_U32 reserved1 : 4; 299 } rdo_smear_madp_thd4_comb; 300 301 /* 0x0000202c reg2059 */ 302 struct { 303 RK_U32 rdo_smear_madp_ref_thd0 : 12; 304 RK_U32 reserved : 4; 305 RK_U32 rdo_smear_madp_ref_thd1 : 12; 306 RK_U32 reserved1 : 4; 307 } rdo_smear_madp_thd5_comb; 308 309 /* 0x00002030 reg2060 */ 310 struct { 311 RK_U32 rdo_smear_cnt_cur_thd0 : 4; 312 RK_U32 reserved : 4; 313 RK_U32 rdo_smear_cnt_cur_thd1 : 4; 314 RK_U32 reserved1 : 4; 315 RK_U32 rdo_smear_cnt_cur_thd2 : 4; 316 RK_U32 reserved2 : 4; 317 RK_U32 rdo_smear_cnt_cur_thd3 : 4; 318 RK_U32 reserved3 : 4; 319 } rdo_smear_cnt_thd0_comb; 320 321 /* 0x00002034 reg2061 */ 322 struct { 323 RK_U32 rdo_smear_cnt_around_thd0 : 4; 324 RK_U32 reserved : 4; 325 RK_U32 rdo_smear_cnt_around_thd1 : 4; 326 RK_U32 reserved1 : 4; 327 RK_U32 rdo_smear_cnt_around_thd2 : 4; 328 RK_U32 reserved2 : 4; 329 RK_U32 rdo_smear_cnt_around_thd3 : 4; 330 RK_U32 reserved3 : 4; 331 } rdo_smear_cnt_thd1_comb; 332 333 /* 0x00002038 reg2062 */ 334 struct { 335 RK_U32 rdo_smear_cnt_around_thd4 : 4; 336 RK_U32 reserved : 4; 337 RK_U32 rdo_smear_cnt_around_thd5 : 4; 338 RK_U32 reserved1 : 4; 339 RK_U32 rdo_smear_cnt_around_thd6 : 4; 340 RK_U32 reserved2 : 4; 341 RK_U32 rdo_smear_cnt_around_thd7 : 4; 342 RK_U32 reserved3 : 4; 343 } rdo_smear_cnt_thd2_comb; 344 345 /* 0x0000203c reg2063 */ 346 struct { 347 RK_U32 rdo_smear_cnt_ref_thd0 : 4; 348 RK_U32 reserved : 4; 349 RK_U32 rdo_smear_cnt_ref_thd1 : 4; 350 RK_U32 reserved1 : 20; 351 } rdo_smear_cnt_thd3_comb; 352 353 /* 0x00002040 reg2064 */ 354 struct { 355 RK_U32 rdo_smear_resi_small_cur_th0 : 6; 356 RK_U32 reserved : 2; 357 RK_U32 rdo_smear_resi_big_cur_th0 : 6; 358 RK_U32 reserved1 : 2; 359 RK_U32 rdo_smear_resi_small_cur_th1 : 6; 360 RK_U32 reserved2 : 2; 361 RK_U32 rdo_smear_resi_big_cur_th1 : 6; 362 RK_U32 reserved3 : 2; 363 } rdo_smear_resi_thd0_comb; 364 365 /* 0x00002044 reg2065 */ 366 struct { 367 RK_U32 rdo_smear_resi_small_around_th0 : 6; 368 RK_U32 reserved : 2; 369 RK_U32 rdo_smear_resi_big_around_th0 : 6; 370 RK_U32 reserved1 : 2; 371 RK_U32 rdo_smear_resi_small_around_th1 : 6; 372 RK_U32 reserved2 : 2; 373 RK_U32 rdo_smear_resi_big_around_th1 : 6; 374 RK_U32 reserved3 : 2; 375 } rdo_smear_resi_thd1_comb; 376 377 /* 0x00002048 reg2066 */ 378 struct { 379 RK_U32 rdo_smear_resi_small_around_th2 : 6; 380 RK_U32 reserved : 2; 381 RK_U32 rdo_smear_resi_big_around_th2 : 6; 382 RK_U32 reserved1 : 2; 383 RK_U32 rdo_smear_resi_small_around_th3 : 6; 384 RK_U32 reserved2 : 2; 385 RK_U32 rdo_smear_resi_big_around_th3 : 6; 386 RK_U32 reserved3 : 2; 387 } rdo_smear_resi_thd2_comb; 388 389 /* 0x0000204c reg2067 */ 390 struct { 391 RK_U32 rdo_smear_resi_small_ref_th0 : 6; 392 RK_U32 reserved : 2; 393 RK_U32 rdo_smear_resi_big_ref_th0 : 6; 394 RK_U32 reserved1 : 18; 395 } rdo_smear_resi_thd3_comb; 396 397 /* 0x00002050 reg2068 */ 398 struct { 399 RK_U32 rdo_smear_resi_th0 : 8; 400 RK_U32 reserved : 8; 401 RK_U32 rdo_smear_resi_th1 : 8; 402 RK_U32 reserved1 : 8; 403 } rdo_smear_st_thd0_comb; 404 405 /* 0x00002054 reg2069 */ 406 struct { 407 RK_U32 rdo_smear_madp_cnt_th0 : 4; 408 RK_U32 rdo_smear_madp_cnt_th1 : 4; 409 RK_U32 rdo_smear_madp_cnt_th2 : 4; 410 RK_U32 rdo_smear_madp_cnt_th3 : 4; 411 RK_U32 rdo_smear_madp_cnt_th4 : 4; 412 RK_U32 rdo_smear_madp_cnt_th5 : 4; 413 RK_U32 reserved : 8; 414 } rdo_smear_st_thd1_comb; 415 416 /* 0x2058 - 0x205c */ 417 RK_U32 reserved2070_2071[2]; 418 /* 0x00002060 reg2072 - 0x0000206c reg2075 */ 419 rdo_skip_par rdo_b32_skip; 420 /* 0x00002070 reg2076 - 0x0000207c reg2079*/ 421 rdo_skip_par rdo_b16_skip; 422 423 /* 0x00002080 reg2080 - 0x00002088 reg2082 */ 424 rdo_noskip_par rdo_b32_inter; 425 426 /* 0x0000208c reg2083 - 0x00002094 reg2085 */ 427 rdo_noskip_par rdo_b16_inter; 428 429 /* 0x00002098 reg2086 - 0x000020a4 reg2089 */ 430 rdo_noskip_par rdo_b32_intra; 431 432 /* 0x000020a8 reg2090 - 0x000020ac reg2091 */ 433 rdo_noskip_par rdo_b16_intra; 434 435 /* 0x000020b0 reg2092 */ 436 struct { 437 RK_U32 thd0 : 6; 438 RK_U32 reserved : 2; 439 RK_U32 thd1 : 6; 440 RK_U32 reserved1 : 2; 441 RK_U32 thd2 : 6; 442 RK_U32 reserved2 : 2; 443 RK_U32 thd3 : 6; 444 RK_U32 reserved3 : 2; 445 } rdo_b32_intra_atf_cnt_thd; 446 447 /* 0x000020b4 reg2093 */ 448 struct { 449 RK_U32 thd0 : 4; 450 RK_U32 reserved : 4; 451 RK_U32 thd1 : 4; 452 RK_U32 reserved1 : 4; 453 RK_U32 thd2 : 4; 454 RK_U32 reserved2 : 4; 455 RK_U32 thd3 : 4; 456 RK_U32 reserved3 : 4; 457 } rdo_b16_intra_atf_cnt_thd_comb; 458 459 /* 0x000020b8 reg2094 */ 460 struct { 461 RK_U32 big_th0 : 6; 462 RK_U32 reserved : 2; 463 RK_U32 big_th1 : 6; 464 RK_U32 reserved1 : 2; 465 RK_U32 small_th0 : 6; 466 RK_U32 reserved2 : 2; 467 RK_U32 small_th1 : 6; 468 RK_U32 reserved3 : 2; 469 } rdo_atf_resi_thd_comb; 470 471 /* 0x20bc */ 472 RK_U32 reserved_2095; 473 474 /* 0x000020c0 reg2096 - 0x000020d0 reg2100 */ 475 pre_cst_par preintra32_cst; 476 /* 0x000020d4 reg2101 - 0x000020e4 reg2105 */ 477 pre_cst_par preintra16_cst; 478 479 /* 0x20e8 - 0x20ec */ 480 RK_U32 reserved2106_2107[2]; 481 482 /* 0x000020f0 reg2108 */ 483 struct { 484 RK_U32 pre_intra_qp_thd : 6; 485 RK_U32 reserved : 2; 486 RK_U32 pre_intra4_lambda_mv_bit : 3; 487 RK_U32 reserved1 : 1; 488 RK_U32 pre_intra8_lambda_mv_bit : 3; 489 RK_U32 reserved2 : 1; 490 RK_U32 pre_intra16_lambda_mv_bit : 3; 491 RK_U32 reserved3 : 1; 492 RK_U32 pre_intra32_lambda_mv_bit : 3; 493 RK_U32 reserved4 : 9; 494 } preintra_sqi_cfg; 495 496 /* 0x000020f4 reg2109 */ 497 struct { 498 RK_U32 i_cu32_madi_thd0 : 8; 499 RK_U32 i_cu32_madi_thd1 : 8; 500 RK_U32 i_cu32_madi_thd2 : 8; 501 RK_U32 reserved : 8; 502 } rdo_atr_i_cu32_madi_cfg0; 503 504 /* 0x000020f8 reg2110 */ 505 struct { 506 RK_U32 i_cu32_madi_cnt_thd3 : 5; 507 RK_U32 reserved : 3; 508 RK_U32 i_cu32_madi_thd4 : 8; 509 RK_U32 i_cu32_madi_cost_multi : 8; 510 RK_U32 reserved1 : 8; 511 } rdo_atr_i_cu32_madi_cfg1; 512 513 /* 0x000020fc reg2111 */ 514 struct { 515 RK_U32 i_cu16_madi_thd0 : 8; 516 RK_U32 i_cu16_madi_thd1 : 8; 517 RK_U32 i_cu16_madi_cost_multi : 8; 518 RK_U32 reserved : 8; 519 } rdo_atr_i_cu16_madi_cfg0; 520 } vepu540c_rdo_cfg; 521 522 typedef struct Vepu540cJpegReg_t { 523 524 RK_U32 reg0256_adr_bsbt; 525 526 /* 0x00000404 reg257 */ 527 RK_U32 reg0257_adr_bsbb; 528 529 /* 0x00000408 reg258 */ 530 RK_U32 reg0258_adr_bsbs; 531 532 /* 0x0000040c reg259 */ 533 RK_U32 reg0259_adr_bsbr; 534 535 /* 0x00000410 reg260 */ 536 RK_U32 reg0260_adr_vsy_b; 537 538 /* 0x00000414 reg261 */ 539 RK_U32 reg0261_adr_vsc_b; 540 541 /* 0x00000418 reg262 */ 542 RK_U32 reg0262_adr_vsy_t; 543 544 /* 0x0000041c reg263 */ 545 RK_U32 reg0263_adr_vsc_t; 546 547 /* 0x00000420 reg264 */ 548 RK_U32 reg0264_adr_src0; 549 550 /* 0x00000424 reg265 */ 551 RK_U32 reg0265_adr_src1; 552 553 /* 0x00000428 reg266 */ 554 RK_U32 reg0266_adr_src2; 555 556 /* 0x0000042c reg267 */ 557 struct { 558 RK_U32 bsp_size_jpeg : 1; 559 RK_U32 reserved : 31; 560 } bsp_size_jpeg; 561 562 /* 0x430 - 0x43c */ 563 RK_U32 reserved268_271[4]; 564 565 /* 0x00000440 reg272 */ 566 struct { 567 RK_U32 pic_wd8_m1 : 11; 568 RK_U32 reserved : 5; 569 RK_U32 pic_hd8_m1 : 11; 570 RK_U32 reserved1 : 5; 571 } reg0272_enc_rsl; 572 573 /* 0x00000444 reg273 */ 574 struct { 575 RK_U32 pic_wfill : 6; 576 RK_U32 reserved : 10; 577 RK_U32 pic_hfill : 6; 578 RK_U32 reserved1 : 10; 579 } reg0273_src_fill; 580 581 /* 0x00000448 reg274 */ 582 struct { 583 RK_U32 alpha_swap : 1; 584 RK_U32 rbuv_swap : 1; 585 RK_U32 src_cfmt : 4; 586 RK_U32 reserved : 1; 587 RK_U32 out_fmt : 1; 588 RK_U32 src_range_trns_en : 1; 589 RK_U32 src_range_trns_sel : 1; 590 RK_U32 chroma_ds_mode : 1; 591 RK_U32 reserved1 : 21; 592 } reg0274_src_fmt; 593 594 /* 0x0000044c reg275 */ 595 struct { 596 RK_U32 csc_wgt_b2y : 9; 597 RK_U32 csc_wgt_g2y : 9; 598 RK_U32 csc_wgt_r2y : 9; 599 RK_U32 reserved : 5; 600 } reg0275_src_udfy; 601 602 /* 0x00000450 reg276 */ 603 struct { 604 RK_U32 csc_wgt_b2u : 9; 605 RK_U32 csc_wgt_g2u : 9; 606 RK_U32 csc_wgt_r2u : 9; 607 RK_U32 reserved : 5; 608 } reg0276_src_udfu; 609 610 /* 0x00000454 reg277 */ 611 struct { 612 RK_U32 csc_wgt_b2v : 9; 613 RK_U32 csc_wgt_g2v : 9; 614 RK_U32 csc_wgt_r2v : 9; 615 RK_U32 reserved : 5; 616 } reg0277_src_udfv; 617 618 /* 0x00000458 reg278 */ 619 struct { 620 RK_U32 csc_ofst_v : 8; 621 RK_U32 csc_ofst_u : 8; 622 RK_U32 csc_ofst_y : 5; 623 RK_U32 reserved : 11; 624 } reg0278_src_udfo; 625 626 /* 0x0000045c reg279 */ 627 struct { 628 RK_U32 reserved : 26; 629 RK_U32 src_mirr : 1; 630 RK_U32 src_rot : 2; 631 RK_U32 reserved1 : 3; 632 } reg0279_src_proc; 633 634 /* 0x00000460 reg280 */ 635 struct { 636 RK_U32 pic_ofst_x : 14; 637 RK_U32 reserved : 2; 638 RK_U32 pic_ofst_y : 14; 639 RK_U32 reserved1 : 2; 640 } reg0280_pic_ofst; 641 642 /* 0x00000464 reg281 */ 643 struct { 644 RK_U32 src_strd0 : 17; 645 RK_U32 reserved : 15; 646 } reg0281_src_strd0; 647 648 /* 0x00000468 reg282 */ 649 struct { 650 RK_U32 src_strd1 : 16; 651 RK_U32 reserved : 16; 652 } reg0282_src_strd1; 653 654 /* 0x0000046c reg283 */ 655 struct { 656 RK_U32 pp_corner_filter_strength : 2; 657 RK_U32 reserved : 2; 658 RK_U32 pp_edge_filter_strength : 2; 659 RK_U32 reserved1 : 2; 660 RK_U32 pp_internal_filter_strength : 2; 661 RK_U32 reserved2 : 22; 662 } reg0283_src_flt; 663 664 /* 0x00000470 reg284 */ 665 struct { 666 RK_U32 bias_y : 15; 667 RK_U32 reserved : 17; 668 } reg0284_y_cfg; 669 670 /* 0x00000474 reg285 */ 671 struct { 672 RK_U32 bias_u : 15; 673 RK_U32 reserved : 17; 674 } reg0285_u_cfg; 675 676 /* 0x00000478 reg286 */ 677 struct { 678 RK_U32 bias_v : 15; 679 RK_U32 reserved : 17; 680 } reg0286_v_cfg; 681 682 /* 0x0000047c reg287 */ 683 struct { 684 RK_U32 jpeg_ri : 25; 685 RK_U32 jpeg_out_mode : 1; 686 RK_U32 jpeg_start_rst_m : 3; 687 RK_U32 jpeg_pic_last_ecs : 1; 688 RK_U32 jpeg_slen_fifo : 1; 689 RK_U32 jpeg_stnd : 1; 690 } reg0287_base_cfg; 691 692 /* 0x00000480 reg288 */ 693 struct { 694 RK_U32 uvc_partition0_len : 12; 695 RK_U32 uvc_partition_len : 12; 696 RK_U32 uvc_skip_len : 6; 697 RK_U32 reserved : 2; 698 } reg0288_uvc_cfg; 699 } Vepu540cJpegReg; 700 701 /* 0x00002c80 reg2848 - - 0x00002dfc reg2943*/ 702 typedef struct Vepu540cJpegTab_t { 703 /* 0x00002c80 reg2848 - 0x00002cfc reg2879 */ 704 RK_U16 qua_tab0[64]; 705 /* 0x00002d00 reg2880 - 0x00002d7c reg2911 */ 706 RK_U16 qua_tab1[64]; 707 /* 0x00002d80 reg2912 - 0x00002dfc reg2943 */ 708 RK_U16 qua_tab2[64]; 709 } vepu540c_jpeg_tab; 710 711 typedef struct Vepu540cRoiRegion_t { 712 713 struct { 714 RK_U32 roi_lt_x : 10; 715 RK_U32 reserved : 6; 716 RK_U32 roi_lt_y : 10; 717 RK_U32 reserved1 : 6; 718 } roi_pos_lt; 719 720 struct { 721 RK_U32 roi_rb_x : 10; 722 RK_U32 reserved : 6; 723 RK_U32 roi_rb_y : 10; 724 RK_U32 reserved1 : 6; 725 } roi_pos_rb; 726 727 struct { 728 RK_U32 roi_qp_value : 7; 729 RK_U32 roi_qp_adj_mode : 1; 730 RK_U32 roi_pri : 5; 731 RK_U32 roi_en : 1; 732 RK_U32 reserved : 18; 733 } roi_base; 734 struct { 735 RK_U32 roi_mdc_inter16 : 4; 736 RK_U32 roi_mdc_skip16 : 4; 737 RK_U32 roi_mdc_intra16 : 4; 738 RK_U32 roi0_mdc_inter32_hevc : 4; 739 RK_U32 roi0_mdc_skip32_hevc : 4; 740 RK_U32 roi0_mdc_intra32_hevc : 4; 741 RK_U32 roi0_mdc_dpth_hevc : 1; 742 RK_U32 reserved : 7; 743 } roi_mdc; 744 } Vepu540cRoiRegion; 745 746 /* 747 * Vepu540cRoiCfg 748 * 749 */ 750 typedef struct Vepu540cRoiCfg_t { 751 struct { 752 RK_U32 fmdc_adju_inter16 : 4; 753 RK_U32 fmdc_adju_skip16 : 4; 754 RK_U32 fmdc_adju_intra16 : 4; 755 RK_U32 fmdc_adju_inter32 : 4; 756 RK_U32 fmdc_adju_skip32 : 4; 757 RK_U32 fmdc_adju_intra32 : 4; 758 RK_U32 fmdc_adj_pri : 5; 759 RK_U32 reserved : 3; 760 } fmdc_adj0; 761 762 /* 0x00001084 reg1057 */ 763 struct { 764 RK_U32 fmdc_adju_inter8 : 4; 765 RK_U32 fmdc_adju_skip8 : 4; 766 RK_U32 fmdc_adju_intra8 : 4; 767 RK_U32 reserved : 20; 768 } fmdc_adj1; 769 770 RK_U32 reserved_1058; 771 772 /* 0x0000108c reg1059 */ 773 struct { 774 RK_U32 bmap_en : 1; 775 RK_U32 bmap_pri : 5; 776 RK_U32 bmap_qpmin : 6; 777 RK_U32 bmap_qpmax : 6; 778 RK_U32 bmap_mdc_dpth : 1; 779 RK_U32 reserved : 13; 780 } bmap_cfg; 781 782 Vepu540cRoiRegion regions[8]; 783 } Vepu540cRoiCfg; 784 785 /* class: st */ 786 /* 0x00004000 reg4096 - 0x000042cc reg4275 */ 787 typedef struct Vepu540cStatus_t { 788 /* 0x00004000 reg4096 */ 789 RK_U32 bs_lgth_l32; 790 791 /* 0x00004004 reg4097 */ 792 struct { 793 RK_U32 bs_lgth_h8 : 8; 794 RK_U32 reserved : 8; 795 RK_U32 sse_l16 : 16; 796 } st_sse_bsl; 797 798 /* 0x00004008 reg4098 */ 799 RK_U32 sse_h32; 800 801 /* 0x0000400c reg4099 */ 802 RK_U32 qp_sum; 803 804 /* 0x00004010 reg4100 */ 805 struct { 806 RK_U32 sao_cnum : 16; 807 RK_U32 sao_ynum : 16; 808 } st_sao; 809 810 /* 0x00004014 reg4101 */ 811 RK_U32 rdo_head_bits; 812 813 /* 0x00004018 reg4102 */ 814 struct { 815 RK_U32 rdo_head_bits_h8 : 8; 816 RK_U32 reserved : 8; 817 RK_U32 rdo_res_bits_l16 : 16; 818 } st_head_res_bl; 819 820 /* 0x0000401c reg4103 */ 821 RK_U32 rdo_res_bits_h24; 822 823 /* 0x00004020 reg4104 */ 824 struct { 825 RK_U32 st_enc : 2; 826 RK_U32 st_sclr : 1; 827 RK_U32 reserved : 29; 828 } st_enc; 829 830 /* 0x00004024 reg4105 */ 831 struct { 832 RK_U32 fnum_cfg_done : 8; 833 RK_U32 fnum_cfg : 8; 834 RK_U32 fnum_int : 8; 835 RK_U32 fnum_enc_done : 8; 836 } st_lkt; 837 838 /* 0x00004028 reg4106 */ 839 RK_U32 node_addr; 840 841 /* 0x0000402c reg4107 */ 842 struct { 843 RK_U32 bsbw_ovfl : 1; 844 RK_U32 reserved : 2; 845 RK_U32 bsbw_addr : 28; 846 RK_U32 reserved1 : 1; 847 } st_bsb; 848 849 /* 0x00004030 reg4108 */ 850 struct { 851 RK_U32 axib_idl : 8; 852 RK_U32 axib_ovfl : 8; 853 RK_U32 axib_err : 8; 854 RK_U32 axir_err : 7; 855 RK_U32 reserved : 1; 856 } st_bus; 857 858 /* 0x00004034 reg4109 */ 859 struct { 860 RK_U32 sli_num_video : 6; 861 RK_U32 sli_num_jpeg : 6; 862 RK_U32 reserved : 4; 863 RK_U32 bpkt_num_video : 7; 864 RK_U32 bpkt_lst_video : 1; 865 RK_U32 bpkt_num_jpeg : 7; 866 RK_U32 bpkt_lst_jpeg : 1; 867 } st_snum; 868 869 /* 0x00004038 reg4110 */ 870 RK_U32 sli_len; 871 872 /* 0x403c - 0x40fc */ 873 struct { 874 RK_U32 task_id_proc : 12; 875 RK_U32 task_id_done : 12; 876 RK_U32 task_done : 1; 877 RK_U32 task_lkt_err : 3; 878 RK_U32 dvbm_enc_err : 1; 879 RK_U32 dvbm_fmch_err : 1; 880 RK_U32 reserved : 1; 881 RK_U32 rfpr_ovrb_err : 1; 882 } st_link_task; 883 884 /* 0x4040 - 0x405c */ 885 RK_U32 reserved4111_4119[8]; 886 887 RK_U32 sli_len_jpeg; 888 889 /* 0x00004064 reg4121 */ 890 RK_U32 jpeg_head_bits_l32; 891 892 /* 0x00004068 reg4122 */ 893 struct { 894 RK_U32 jpeg_head_bits_h8 : 1; 895 RK_U32 reserved : 31; 896 } st_bsl_h8_jpeg; 897 898 /* 0x0000406c reg4123 */ 899 struct { 900 RK_U32 jbsbw_ovfl : 1; 901 RK_U32 reserved : 2; 902 RK_U32 jbsbw_addr : 28; 903 RK_U32 reserved1 : 1; 904 } st_jbsb; 905 906 /* 0x4070 - 0x407c */ 907 RK_U32 reserved4124_4127[4]; 908 909 /* 0x00004080 reg4128 */ 910 struct { 911 RK_U32 pnum_p64 : 17; 912 RK_U32 reserved : 15; 913 } st_pnum_p64; 914 915 /* 0x00004084 reg4129 */ 916 struct { 917 RK_U32 pnum_p32 : 19; 918 RK_U32 reserved : 13; 919 } st_pnum_p32; 920 921 /* 0x00004088 reg4130 */ 922 struct { 923 RK_U32 pnum_p16 : 21; 924 RK_U32 reserved : 11; 925 } st_pnum_p16; 926 927 /* 0x0000408c reg4131 */ 928 struct { 929 RK_U32 pnum_p8 : 23; 930 RK_U32 reserved : 9; 931 } st_pnum_p8; 932 933 /* 0x00004090 reg4132 */ 934 struct { 935 RK_U32 pnum_i32 : 19; 936 RK_U32 reserved : 13; 937 } st_pnum_i32; 938 939 /* 0x00004094 reg4133 */ 940 struct { 941 RK_U32 pnum_i16 : 21; 942 RK_U32 reserved : 11; 943 } st_pnum_i16; 944 945 /* 0x00004098 reg4134 */ 946 struct { 947 RK_U32 pnum_i8 : 23; 948 RK_U32 reserved : 9; 949 } st_pnum_i8; 950 951 /* 0x0000409c reg4135 */ 952 struct { 953 RK_U32 pnum_i4 : 23; 954 RK_U32 reserved : 9; 955 } st_pnum_i4; 956 957 /* 0x000040a0 reg4136 */ 958 struct { 959 RK_U32 num_b16 : 23; 960 RK_U32 reserved : 9; 961 } st_bnum_b16; 962 963 /* 0x000040a4 reg4137 */ 964 struct { 965 RK_U32 rdo_smear_cnt0 : 8; 966 RK_U32 rdo_smear_cnt1 : 8; 967 RK_U32 rdo_smear_cnt2 : 8; 968 RK_U32 rdo_smear_cnt3 : 8; 969 } st_smear_cnt; 970 971 /* 0x000040a8 reg4138 */ 972 RK_U32 madi_sum; 973 974 /* 0x40ac - 0x40bc */ 975 RK_U32 reserved4139_4143[5]; 976 977 /* 0x000040c0 reg4144 */ 978 struct { 979 RK_U32 madi_th_lt_cnt0 : 16; 980 RK_U32 madi_th_lt_cnt1 : 16; 981 } st_madi_lt_num0; 982 983 /* 0x000040c4 reg4145 */ 984 struct { 985 RK_U32 madi_th_lt_cnt2 : 16; 986 RK_U32 madi_th_lt_cnt3 : 16; 987 } st_madi_lt_num1; 988 989 /* 0x000040c8 reg4146 */ 990 struct { 991 RK_U32 madi_th_rt_cnt0 : 16; 992 RK_U32 madi_th_rt_cnt1 : 16; 993 } st_madi_rt_num0; 994 995 /* 0x000040cc reg4147 */ 996 struct { 997 RK_U32 madi_th_rt_cnt2 : 16; 998 RK_U32 madi_th_rt_cnt3 : 16; 999 } st_madi_rt_num1; 1000 1001 /* 0x000040d0 reg4148 */ 1002 struct { 1003 RK_U32 madi_th_lb_cnt0 : 16; 1004 RK_U32 madi_th_lb_cnt1 : 16; 1005 } st_madi_lb_num0; 1006 1007 /* 0x000040d4 reg4149 */ 1008 struct { 1009 RK_U32 madi_th_lb_cnt2 : 16; 1010 RK_U32 madi_th_lb_cnt3 : 16; 1011 } st_madi_lb_num1; 1012 1013 /* 0x000040d8 reg4150 */ 1014 struct { 1015 RK_U32 madi_th_rb_cnt0 : 16; 1016 RK_U32 madi_th_rb_cnt1 : 16; 1017 } st_madi_rb_num0; 1018 1019 /* 0x000040dc reg4151 */ 1020 struct { 1021 RK_U32 madi_th_rb_cnt2 : 16; 1022 RK_U32 madi_th_rb_cnt3 : 16; 1023 } st_madi_rb_num1; 1024 1025 /* 0x000040e0 reg4152 */ 1026 struct { 1027 RK_U32 madp_th_lt_cnt0 : 16; 1028 RK_U32 madp_th_lt_cnt1 : 16; 1029 } st_madp_lt_num0; 1030 1031 /* 0x000040e4 reg4153 */ 1032 struct { 1033 RK_U32 madp_th_lt_cnt2 : 16; 1034 RK_U32 madp_th_lt_cnt3 : 16; 1035 } st_madp_lt_num1; 1036 1037 /* 0x000040e8 reg4154 */ 1038 struct { 1039 RK_U32 madp_th_rt_cnt0 : 16; 1040 RK_U32 madp_th_rt_cnt1 : 16; 1041 } st_madp_rt_num0; 1042 1043 /* 0x000040ec reg4155 */ 1044 struct { 1045 RK_U32 madp_th_rt_cnt2 : 16; 1046 RK_U32 madp_th_rt_cnt3 : 16; 1047 } st_madp_rt_num1; 1048 1049 /* 0x000040f0 reg4156 */ 1050 struct { 1051 RK_U32 madp_th_lb_cnt0 : 16; 1052 RK_U32 madp_th_lb_cnt1 : 16; 1053 } st_madp_lb_num0; 1054 1055 /* 0x000040f4 reg4157 */ 1056 struct { 1057 RK_U32 madp_th_lb_cnt2 : 16; 1058 RK_U32 madp_th_lb_cnt3 : 16; 1059 } st_madp_lb_num1; 1060 1061 /* 0x000040f8 reg4158 */ 1062 struct { 1063 RK_U32 madp_th_rb_cnt0 : 16; 1064 RK_U32 madp_th_rb_cnt1 : 16; 1065 } st_madp_rb_num0; 1066 1067 /* 0x000040fc reg4159 */ 1068 struct { 1069 RK_U32 madp_th_rb_cnt2 : 16; 1070 RK_U32 madp_th_rb_cnt3 : 16; 1071 } st_madp_rb_num1; 1072 1073 /* 0x00004100 reg4160 */ 1074 struct { 1075 RK_U32 cmv_th_lt_cnt0 : 16; 1076 RK_U32 cmv_th_lt_cnt1 : 16; 1077 } st_cmv_lt_num0; 1078 1079 /* 0x00004104 reg4161 */ 1080 struct { 1081 RK_U32 cmv_th_lt_cnt2 : 16; 1082 RK_U32 cmv_th_lt_cnt3 : 16; 1083 } st_cmv_lt_num1; 1084 1085 /* 0x00004108 reg4162 */ 1086 struct { 1087 RK_U32 cmv_th_rt_cnt0 : 16; 1088 RK_U32 cmv_th_rt_cnt1 : 16; 1089 } st_cmv_rt_num0; 1090 1091 /* 0x0000410c reg4163 */ 1092 struct { 1093 RK_U32 cmv_th_rt_cnt2 : 16; 1094 RK_U32 cmv_th_rt_cnt3 : 16; 1095 } st_cmv_rt_num1; 1096 1097 /* 0x00004110 reg4164 */ 1098 struct { 1099 RK_U32 cmv_th_lb_cnt0 : 16; 1100 RK_U32 cmv_th_lb_cnt1 : 16; 1101 } st_cmv_lb_num0; 1102 1103 /* 0x00004114 reg4165 */ 1104 struct { 1105 RK_U32 cmv_th_lb_cnt2 : 16; 1106 RK_U32 cmv_th_lb_cnt3 : 16; 1107 } st_cmv_lb_num1; 1108 1109 /* 0x00004118 reg4166 */ 1110 struct { 1111 RK_U32 cmv_th_rb_cnt0 : 16; 1112 RK_U32 cmv_th_rb_cnt1 : 16; 1113 } st_cmv_rb_num0; 1114 1115 /* 0x0000411c reg4167 */ 1116 struct { 1117 RK_U32 cmv_th_rb_cnt2 : 16; 1118 RK_U32 cmv_th_rb_cnt3 : 16; 1119 } st_cmv_rb_num1; 1120 1121 /* 0x00004120 reg4168 */ 1122 struct { 1123 RK_U32 org_y_r_max_value : 8; 1124 RK_U32 org_y_r_min_value : 8; 1125 RK_U32 org_u_g_max_value : 8; 1126 RK_U32 org_u_g_min_value : 8; 1127 } st_vsp_org_value0; 1128 1129 /* 0x00004124 reg4169 */ 1130 struct { 1131 RK_U32 org_v_b_max_value : 8; 1132 RK_U32 org_v_b_min_value : 8; 1133 RK_U32 reserved : 16; 1134 } st_vsp_org_value1; 1135 1136 /* 0x00004128 reg4170 */ 1137 struct { 1138 RK_U32 jpeg_y_r_max_value : 8; 1139 RK_U32 jpeg_y_r_min_value : 8; 1140 RK_U32 jpeg_u_g_max_value : 8; 1141 RK_U32 jpeg_u_g_min_value : 8; 1142 } st_vsp_jpeg_value0; 1143 1144 /* 0x0000412c reg4171 */ 1145 struct { 1146 RK_U32 jpeg_v_b_max_value : 8; 1147 RK_U32 jpeg_v_b_min_value : 8; 1148 RK_U32 reserved : 16; 1149 } st_vsp_jpeg_value1; 1150 1151 /* 0x4130 - 0x417c */ 1152 RK_U32 reserved4172_4191[20]; 1153 1154 /* 0x00004180 reg4192 - 0x0000424c reg4243*/ 1155 RK_U32 st_b8_qp[52]; 1156 1157 } vepu540c_status; 1158 1159 /* class: dbg/st/axipn */ 1160 /* 0x00005000 reg5120 - 0x00005354 reg5333*/ 1161 typedef struct Vepu540cDbg_t { 1162 struct { 1163 RK_U32 pp0_tout : 1; 1164 RK_U32 pp1_out : 1; 1165 RK_U32 cme_tout : 1; 1166 RK_U32 swn_tout : 1; 1167 RK_U32 rfme_tout : 1; 1168 RK_U32 pren_tout : 1; 1169 RK_U32 rdo_tout : 1; 1170 RK_U32 lpf_tout : 1; 1171 RK_U32 etpy_tout : 1; 1172 RK_U32 jpeg_tout : 1; 1173 RK_U32 frm_tout : 1; 1174 RK_U32 reserved : 21; 1175 } st_wdg; 1176 1177 /* 0x00005004 reg5121 */ 1178 struct { 1179 RK_U32 pp0_wrk : 1; 1180 RK_U32 pp1_wrk : 1; 1181 RK_U32 cme_wrk : 1; 1182 RK_U32 swn_wrk : 1; 1183 RK_U32 rfme_wrk : 1; 1184 RK_U32 pren_wrk : 1; 1185 RK_U32 rdo_wrk : 1; 1186 RK_U32 lpf_wrk : 1; 1187 RK_U32 etpy_wrk : 1; 1188 RK_U32 jpeg_wrk : 1; 1189 RK_U32 frm_wrk : 1; 1190 RK_U32 reserved : 21; 1191 } st_ppl; 1192 1193 /* 0x00005008 reg5122 */ 1194 struct { 1195 RK_U32 vsp0_pos_x : 16; 1196 RK_U32 vsp0_pos_y : 16; 1197 } st_ppl_pos_vsp0; 1198 1199 /* 0x0000500c reg5123 */ 1200 struct { 1201 RK_U32 vsp1_pos_x : 16; 1202 RK_U32 vsp1_pos_y : 16; 1203 } st_ppl_pos_vsp1; 1204 1205 /* 0x00005010 reg5124 */ 1206 struct { 1207 RK_U32 cme_pos_x : 16; 1208 RK_U32 cme_pos_y : 16; 1209 } st_ppl_pos_cme; 1210 1211 /* 0x00005014 reg5125 */ 1212 struct { 1213 RK_U32 swin_pos_x : 16; 1214 RK_U32 swin_pos_y : 16; 1215 } st_ppl_pos_swin; 1216 1217 /* 0x00005018 reg5126 */ 1218 struct { 1219 RK_U32 rfme_pos_x : 16; 1220 RK_U32 rfme_pos_y : 16; 1221 } st_ppl_pos_rfme; 1222 1223 /* 0x0000501c reg5127 */ 1224 struct { 1225 RK_U32 pren_pos_x : 16; 1226 RK_U32 pren_pos_y : 16; 1227 } st_ppl_pos_pren; 1228 1229 /* 0x00005020 reg5128 */ 1230 struct { 1231 RK_U32 rdo_pos_x : 16; 1232 RK_U32 rdo_pos_y : 16; 1233 } st_ppl_pos_rdo; 1234 1235 /* 0x00005024 reg5129 */ 1236 struct { 1237 RK_U32 lpf_pos_x : 16; 1238 RK_U32 lpf_pos_y : 16; 1239 } st_ppl_pos_lpf; 1240 1241 /* 0x00005028 reg5130 */ 1242 struct { 1243 RK_U32 etpy_pos_x : 16; 1244 RK_U32 etpy_pos_y : 16; 1245 } st_ppl_pos_etpy; 1246 1247 /* 0x0000502c reg5131 */ 1248 struct { 1249 RK_U32 vsp0_pos_x : 16; 1250 RK_U32 vsp0_pos_y : 16; 1251 } st_ppl_pos_jsp0; 1252 1253 /* 0x00005030 reg5132 */ 1254 struct { 1255 RK_U32 vsp1_pos_x : 16; 1256 RK_U32 vsp1_pos_y : 16; 1257 } st_ppl_pos_jsp1; 1258 1259 /* 0x00005034 reg5133 */ 1260 struct { 1261 RK_U32 jpeg_pos_x : 16; 1262 RK_U32 jpeg_pos_y : 16; 1263 } st_ppl_pos_jpeg; 1264 1265 /* 0x5038 - 0x503c */ 1266 RK_U32 reserved5134_5135[2]; 1267 1268 /* 0x00005040 reg5136 */ 1269 struct { 1270 RK_U32 sli_num : 15; 1271 RK_U32 reserved : 17; 1272 } st_sli_num; 1273 1274 /* 0x5044 - 0x50fc */ 1275 RK_U32 reserved5137_5183[47]; 1276 1277 /* 0x00005100 reg5184 */ 1278 struct { 1279 RK_U32 empty_oafifo : 1; 1280 RK_U32 full_cmd_oafifo : 1; 1281 RK_U32 full_data_oafifo : 1; 1282 RK_U32 empty_iafifo : 1; 1283 1284 RK_U32 full_cmd_iafifo : 1; 1285 RK_U32 full_info_iafifo : 1; 1286 RK_U32 fbd_brq_st : 4; 1287 RK_U32 fbd_hdr_vld : 1; 1288 RK_U32 fbd_bmng_end : 1; 1289 1290 RK_U32 nfbd_req_st : 4; 1291 RK_U32 acc_axi_cmd : 8; 1292 RK_U32 reserved : 8; 1293 } dbg_pp_st; 1294 1295 /* 0x00005104 reg5185 */ 1296 struct { 1297 RK_U32 r_ena_lambd : 1; 1298 RK_U32 r_fst_swinw_end : 1; 1299 RK_U32 r_swinw_end : 1; 1300 RK_U32 r_cnt_swinw : 1; 1301 1302 RK_U32 r_dspw_end : 1; 1303 RK_U32 r_dspw_cnt : 1; 1304 RK_U32 i_sjgen_work : 1; 1305 RK_U32 r_end_rspgen : 1; 1306 1307 RK_U32 r_cost_gate : 1; 1308 RK_U32 r_ds_gate : 1; 1309 RK_U32 r_mvp_gate : 1; 1310 RK_U32 i_smvp_arrdy : 1; 1311 1312 RK_U32 i_smvp_arvld : 1; 1313 RK_U32 i_stptr_wrdy : 1; 1314 RK_U32 i_stptr_wvld : 1; 1315 RK_U32 i_rdy_atf : 1; 1316 1317 RK_U32 i_vld_atf : 1; 1318 RK_U32 i_rdy_bmv16 : 1; 1319 RK_U32 i_vld_bmv16 : 1; 1320 RK_U32 i_wr_dsp : 1; 1321 1322 RK_U32 i_rdy_dsp : 1; 1323 RK_U32 i_vld_dsp : 1; 1324 RK_U32 r_rdy_org : 1; 1325 RK_U32 i_vld_org : 1; 1326 1327 RK_U32 i_rdy_state : 1; 1328 RK_U32 i_vld_state : 1; 1329 RK_U32 i_rdy_madp : 1; 1330 RK_U32 i_vld_madp : 1; 1331 1332 RK_U32 i_rdy_diff : 1; 1333 RK_U32 i_vld_diff : 1; 1334 RK_U32 reserved : 2; 1335 } dbg_cime_st; 1336 1337 /* 0x00005108 reg5186 */ 1338 RK_U32 swin_dbg_inf; 1339 1340 /* 0x0000510c reg5187 */ 1341 struct { 1342 RK_U32 bbrq_cmps_left_len2 : 1; 1343 RK_U32 bbrq_cmps_left_len1 : 1; 1344 RK_U32 cmps_left_len0 : 1; 1345 RK_U32 bbrq_rdy2 : 1; 1346 RK_U32 dcps_vld2 : 1; 1347 RK_U32 bbrq_rdy1 : 1; 1348 RK_U32 dcps_vld1 : 1; 1349 RK_U32 bbrq_rdy0 : 1; 1350 RK_U32 dcps_vld0 : 1; 1351 RK_U32 hb_rdy2 : 1; 1352 RK_U32 bbrq_vld2 : 1; 1353 RK_U32 hb_rdy1 : 1; 1354 RK_U32 bbrq_vld1 : 1; 1355 RK_U32 hb_rdy0 : 1; 1356 RK_U32 bbrq_vld0 : 1; 1357 RK_U32 idle_msb2 : 1; 1358 RK_U32 idle_msb1 : 1; 1359 RK_U32 idle_msb0 : 1; 1360 RK_U32 cur_state_dcps : 1; 1361 RK_U32 cur_state_bbrq : 1; 1362 RK_U32 cur_state_hb : 1; 1363 RK_U32 cke_bbrq_dcps : 1; 1364 RK_U32 cke_dcps : 1; 1365 RK_U32 cke_bbrq : 1; 1366 RK_U32 rdy_lwcd_rsp : 1; 1367 RK_U32 vld_lwcd_rsp : 1; 1368 RK_U32 rdy_lwcd_req : 1; 1369 RK_U32 vld_lwcd_req : 1; 1370 RK_U32 rdy_lwrsp : 1; 1371 RK_U32 vld_lwrsp : 1; 1372 RK_U32 rdy_lwreq : 1; 1373 RK_U32 vld_lwreq : 1; 1374 } dbg_fbd_hhit0; 1375 1376 /* 0x5110 */ 1377 RK_U32 reserved_5188; 1378 1379 /* 0x00005114 reg5189 */ 1380 struct { 1381 RK_U32 mscnt_clr : 1; 1382 RK_U32 reserved : 31; 1383 } dbg_cach_clr; 1384 1385 /* 0x00005118 reg5190 */ 1386 RK_U32 l1_mis; 1387 1388 /* 0x0000511c reg5191 */ 1389 RK_U32 l2_mis; 1390 1391 /* 0x00005120 reg5192 */ 1392 RK_U32 rdo_st; 1393 1394 /* 0x00005124 reg5193 */ 1395 RK_U32 rdo_if; 1396 1397 /* 0x00005128 reg5194 */ 1398 struct { 1399 RK_U32 h264_sh_st_cs : 4; 1400 RK_U32 rsd_st_cs : 4; 1401 RK_U32 h264_sd_st_cs : 5; 1402 RK_U32 etpy_rdy : 1; 1403 RK_U32 reserved : 18; 1404 } dbg_etpy; 1405 1406 /* 0x0000512c reg5195 */ 1407 struct { 1408 RK_U32 crdy_ppr : 1; 1409 RK_U32 cvld_ppr : 1; 1410 RK_U32 drdy_ppw : 1; 1411 RK_U32 dvld_ppw : 1; 1412 RK_U32 crdy_ppw : 1; 1413 RK_U32 cvld_ppw : 1; 1414 RK_U32 reserved : 26; 1415 } dbg_dma_pp; 1416 1417 /* 0x00005130 reg5196 */ 1418 struct { 1419 RK_U32 axi_wrdy : 8; 1420 RK_U32 axi_wvld : 8; 1421 RK_U32 axi_awrdy : 8; 1422 RK_U32 axi_awvld : 8; 1423 } dbg_dma_w; 1424 1425 /* 0x00005134 reg5197 */ 1426 struct { 1427 RK_U32 axi_otsd_read : 16; 1428 RK_U32 axi_arrdy : 7; 1429 RK_U32 reserved : 1; 1430 RK_U32 axi_arvld : 7; 1431 RK_U32 reserved1 : 1; 1432 } dbg_dma_ar; 1433 1434 /* 0x00005138 reg5198 */ 1435 struct { 1436 RK_U32 dfifo0_lvl : 4; 1437 RK_U32 dfifo1_lvl : 4; 1438 RK_U32 dfifo2_lvl : 4; 1439 RK_U32 dfifo3_lvl : 4; 1440 RK_U32 dfifo4_lvl : 4; 1441 RK_U32 dfifo5_lvl : 4; 1442 RK_U32 reserved : 6; 1443 RK_U32 cmd_vld : 1; 1444 RK_U32 reserved1 : 1; 1445 } dbg_dma_r; 1446 1447 /* 0x0000513c reg5199 */ 1448 struct { 1449 RK_U32 meiw_busy : 1; 1450 RK_U32 dspw_busy : 1; 1451 RK_U32 bsw_rdy : 1; 1452 RK_U32 bsw_flsh : 1; 1453 RK_U32 bsw_busy : 1; 1454 RK_U32 crpw_busy : 1; 1455 RK_U32 lktw_busy : 1; 1456 RK_U32 lpfw_busy : 1; 1457 RK_U32 roir_busy : 1; 1458 RK_U32 dspr_crdy : 1; 1459 RK_U32 dspr_cvld : 1; 1460 RK_U32 lktr_busy : 1; 1461 RK_U32 lpfr_otsd : 4; 1462 RK_U32 rfpr_otsd : 12; 1463 RK_U32 dspr_otsd : 4; 1464 } dbg_dma_dbg0; 1465 1466 /* 0x00005140 reg5200 */ 1467 struct { 1468 RK_U32 cpip_st : 2; 1469 RK_U32 mvp_st : 3; 1470 RK_U32 qpd6_st : 2; 1471 RK_U32 cmd_st : 2; 1472 RK_U32 reserved : 23; 1473 } dbg_dma_dbg1; 1474 1475 /* 0x00005144 reg5201 */ 1476 struct { 1477 RK_U32 cme_byps : 3; 1478 RK_U32 reserved : 29; 1479 } dbg_tctrl; 1480 1481 /* 0x5148 */ 1482 RK_U32 reserved_5202; 1483 1484 /* 0x0000514c reg5203 */ 1485 struct { 1486 RK_U32 lpf_work : 1; 1487 RK_U32 rdo_par_nrdy : 1; 1488 RK_U32 rdo_rcn_nrdy : 1; 1489 RK_U32 lpf_rcn_rdy : 1; 1490 RK_U32 dblk_work : 1; 1491 RK_U32 sao_work : 1; 1492 RK_U32 reserved : 18; 1493 RK_U32 tile_bdry_read : 1; 1494 RK_U32 tile_bdry_write : 1; 1495 RK_U32 tile_bdry_rrdy : 1; 1496 RK_U32 rdo_read_tile_bdry : 1; 1497 RK_U32 rdo_write_tile_bdry : 1; 1498 RK_U32 reserved1 : 3; 1499 } dbg_lpf; 1500 1501 /* 0x00005150 reg5204 */ 1502 RK_U32 dbg_topc_lpfr; 1503 1504 /* 0x00005154 reg5205 */ 1505 RK_U32 dbg0_cache; 1506 1507 /* 0x00005158 reg5206 */ 1508 RK_U32 dbg1_cache; 1509 1510 /* 0x0000515c reg5207 */ 1511 RK_U32 dbg2_cache; 1512 1513 /* 0x00005160 reg5208 */ 1514 struct { 1515 RK_U32 ebuf_diff_cmd : 8; 1516 RK_U32 lbuf_lpf_ncnt : 7; 1517 RK_U32 lbuf_lpf_cien : 1; 1518 RK_U32 lbuf_rdo_ncnt : 7; 1519 RK_U32 lbuf_rdo_cien : 1; 1520 RK_U32 reserved : 8; 1521 } dbg_lbuf0; 1522 1523 /* 0x00005164 reg5209 */ 1524 struct { 1525 RK_U32 rvld_ebfr : 1; 1526 RK_U32 rrdy_ebfr : 1; 1527 RK_U32 arvld_ebfr : 1; 1528 RK_U32 arrdy_ebfr : 1; 1529 RK_U32 wvld_ebfw : 1; 1530 RK_U32 wrdy_ebfw : 1; 1531 RK_U32 awvld_ebfw : 1; 1532 RK_U32 awrdy_ebfw : 1; 1533 RK_U32 lpf_lbuf_rvld : 1; 1534 RK_U32 lpf_lbuf_rrdy : 1; 1535 RK_U32 lpf_lbuf_wvld : 1; 1536 RK_U32 lpf_lbuf_wrdy : 1; 1537 RK_U32 rdo_lbuf_rvld : 1; 1538 RK_U32 rdo_lbuf_rrdy : 1; 1539 RK_U32 rdo_lbuf_wvld : 1; 1540 RK_U32 rdo_lbuf_wrdy : 1; 1541 RK_U32 fme_lbuf_rvld : 1; 1542 RK_U32 fme_lbuf_rrdy : 1; 1543 RK_U32 cme_lbuf_rvld : 1; 1544 RK_U32 cme_lbuf_rrdy : 1; 1545 RK_U32 smear_lbuf_rvld : 1; 1546 RK_U32 smear_lbuf_rrdy : 1; 1547 RK_U32 smear_lbuf_wvld : 1; 1548 RK_U32 smear_lbuf_wrdy : 1; 1549 RK_U32 rdo_lbufw_flag : 1; 1550 RK_U32 rdo_lbufr_flag : 1; 1551 RK_U32 cme_lbufr_flag : 1; 1552 RK_U32 reserved : 5; 1553 } dbg_lbuf1; 1554 1555 /* 0x00005168 reg5210 */ 1556 struct { 1557 RK_U32 vinf_lcnt_dvbm : 14; 1558 RK_U32 vinf_fcnt_dvbm : 8; 1559 RK_U32 vinf_rdy_dvbm : 1; 1560 RK_U32 vinf_vld_dvbm : 1; 1561 RK_U32 st_cur_vinf : 3; 1562 RK_U32 st_cur_vrsp : 2; 1563 RK_U32 vcnt_req_sync : 1; 1564 RK_U32 vcnt_ack_dvbm : 1; 1565 RK_U32 vcnt_req_dvbm : 1; 1566 } dbg_dvbm0; 1567 1568 /* 0x0000516c reg5211 */ 1569 struct { 1570 RK_U32 vrsp_lcnt_dvbm : 14; 1571 RK_U32 vrsp_fcnt_dvbm : 8; 1572 RK_U32 vrsp_tgl_dvbm : 1; 1573 RK_U32 reserved : 9; 1574 } dbg_dvbm1; 1575 1576 /* 0x00005170 reg5212 */ 1577 struct { 1578 RK_U32 dvbm_src_lcnt : 12; 1579 RK_U32 jbuf_dvbm_rdy : 1; 1580 RK_U32 vbuf_dvbm_rdy : 1; 1581 RK_U32 work_dvbm_rdy : 1; 1582 RK_U32 fmch_dvbm_rdy : 1; 1583 RK_U32 vrsp_lcnt_vsld : 14; 1584 RK_U32 vrsp_rdy_vsld : 1; 1585 RK_U32 vrsp_vld_vsld : 1; 1586 } dbg_dvbm2; 1587 1588 /* 0x00005174 reg5213 */ 1589 struct { 1590 RK_U32 vsp_ctu_flag : 4; 1591 RK_U32 reserved : 4; 1592 RK_U32 cime_ctu_flag : 8; 1593 RK_U32 swin_ctu_flag : 2; 1594 RK_U32 rfme_ctu_flag : 6; 1595 RK_U32 pnra_ctu_flag : 1; 1596 RK_U32 rdo_ctu_flg0 : 7; 1597 } dbg_tctrl0; 1598 1599 /* 0x00005178 reg5214 */ 1600 struct { 1601 RK_U32 rdo_ctu_flg1 : 8; 1602 RK_U32 jpeg_ctu_flag : 3; 1603 RK_U32 lpf_ctu_flag : 1; 1604 RK_U32 reserved : 4; 1605 RK_U32 dma_brsp_idle : 1; 1606 RK_U32 jpeg_frm_done : 1; 1607 RK_U32 rdo_frm_done : 1; 1608 RK_U32 lpf_frm_done : 1; 1609 RK_U32 ent_frm_done : 1; 1610 RK_U32 ppl_ctrl_done : 1; 1611 RK_U32 reserved1 : 10; 1612 } dbg_tctrl1; 1613 1614 /* 0x0000517c reg5215 */ 1615 struct { 1616 RK_U32 criw_frm_done : 1; 1617 RK_U32 meiw_frm_done : 1; 1618 RK_U32 smiw_frm_done : 1; 1619 RK_U32 strg_rsrc_done : 1; 1620 RK_U32 reserved : 28; 1621 } dbg_tctrl2; 1622 1623 /* 0x5180 - 0x51fc */ 1624 RK_U32 reserved5216_5247[32]; 1625 1626 /* 0x00005200 reg5248 */ 1627 RK_U32 frame_cyc; 1628 1629 /* 0x00005204 reg5249 */ 1630 RK_U32 pp0_fcyc; 1631 1632 /* 0x00005208 reg5250 */ 1633 RK_U32 pp1_fcyc; 1634 1635 /* 0x0000520c reg5251 */ 1636 RK_U32 cme_fcyc; 1637 1638 /* 0x00005210 reg5252 */ 1639 RK_U32 ldr_fcyc; 1640 1641 /* 0x00005214 reg5253 */ 1642 RK_U32 rfme_fcyc; 1643 1644 /* 0x00005218 reg5254 */ 1645 RK_U32 fme_fcyc; 1646 1647 /* 0x0000521c reg5255 */ 1648 RK_U32 rdo_fcyc; 1649 1650 /* 0x00005220 reg5256 */ 1651 RK_U32 lpf_fcyc; 1652 1653 /* 0x00005224 reg5257 */ 1654 RK_U32 etpy_fcyc; 1655 1656 /* 0x00005228 reg5258 */ 1657 RK_U32 jpeg_fcyc; 1658 1659 /* 0x522c - 0x52fc */ 1660 RK_U32 reserved5259_5311[53]; 1661 1662 /* 0x00005300 reg5312 */ 1663 struct { 1664 RK_U32 axip_e : 1; 1665 RK_U32 axip_clr : 1; 1666 RK_U32 axip_mod : 1; 1667 RK_U32 reserved : 29; 1668 } axip0_cmd; 1669 1670 /* 0x00005304 reg5313 */ 1671 struct { 1672 RK_U32 axip_ltcy_id : 4; 1673 RK_U32 axip_ltcy_thd : 12; 1674 RK_U32 reserved : 16; 1675 } axip0_ltcy; 1676 1677 /* 0x00005308 reg5314 */ 1678 struct { 1679 RK_U32 axip_cnt_typ : 1; 1680 RK_U32 axip_cnt_ddr : 2; 1681 RK_U32 axip_cnt_rid : 5; 1682 RK_U32 axip_cnt_wid : 5; 1683 RK_U32 reserved : 19; 1684 } axip0_cnt; 1685 1686 /* 0x530c */ 1687 RK_U32 reserved_5315; 1688 1689 /* 0x00005310 reg5316 */ 1690 struct { 1691 RK_U32 axip_e : 1; 1692 RK_U32 axip_clr : 1; 1693 RK_U32 axip_mod : 1; 1694 RK_U32 reserved : 29; 1695 } axip1_cmd; 1696 1697 /* 0x00005314 reg5317 */ 1698 struct { 1699 RK_U32 axip_ltcy_id : 4; 1700 RK_U32 axip_ltcy_thd : 12; 1701 RK_U32 reserved : 16; 1702 } axip1_ltcy; 1703 1704 /* 0x00005318 reg5318 */ 1705 struct { 1706 RK_U32 axip_cnt_typ : 1; 1707 RK_U32 axip_cnt_ddr : 2; 1708 RK_U32 axip_cnt_rid : 5; 1709 RK_U32 axip_cnt_wid : 5; 1710 RK_U32 reserved : 19; 1711 } axip1_cnt; 1712 1713 /* 0x531c */ 1714 RK_U32 reserved_5319; 1715 1716 /* 0x00005320 reg5320 */ 1717 struct { 1718 RK_U32 axip_max_ltcy : 16; 1719 RK_U32 reserved : 16; 1720 } st_axip0_maxl; 1721 1722 /* 0x00005324 reg5321 */ 1723 RK_U32 axip_num_ltcy; 1724 1725 /* 0x00005328 reg5322 */ 1726 RK_U32 axip_sum_ltcy; 1727 1728 /* 0x0000532c reg5323 */ 1729 RK_U32 axip_rbyt; 1730 1731 /* 0x00005330 reg5324 */ 1732 RK_U32 axip_wbyt; 1733 1734 /* 0x00005334 reg5325 */ 1735 RK_U32 axip_wrk_cyc; 1736 1737 /* 0x5338 - 0x533c */ 1738 RK_U32 reserved5326_5327[2]; 1739 1740 /* 0x00005340 reg5328 */ 1741 struct { 1742 RK_U32 axip_max_ltcy : 16; 1743 RK_U32 reserved : 16; 1744 } st_axip1_maxl; 1745 1746 /* 0x00005344 reg5329 */ 1747 RK_U32 axip1_num_ltcy; 1748 1749 /* 0x00005348 reg5330 */ 1750 RK_U32 axip1_sum_ltcy; 1751 1752 /* 0x0000534c reg5331 */ 1753 RK_U32 axip1_rbyt; 1754 1755 /* 0x00005350 reg5332 */ 1756 RK_U32 axip1_wbyt; 1757 1758 /* 0x00005354 reg5333 */ 1759 RK_U32 axip1_wrk_cyc; 1760 } vepu540c_dbg; 1761 1762 typedef struct Vepu540cJpegCfg_t { 1763 MppDev dev; 1764 void *jpeg_reg_base; 1765 void *reg_tab; 1766 void *enc_task; 1767 void *input_fmt; 1768 } Vepu540cJpegCfg; 1769 1770 #ifdef __cplusplus 1771 extern "C" { 1772 #endif 1773 1774 MPP_RET vepu540c_set_jpeg_reg(Vepu540cJpegCfg *cfg); 1775 MPP_RET vepu540c_set_roi(void *roi_reg_base, MppEncROICfg * roi, RK_S32 w, 1776 RK_S32 h); 1777 1778 #ifdef __cplusplus 1779 } 1780 #endif 1781 #endif /* __VEPU540C_COMMON_H__ */ 1782