1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 */ 2*437bfbebSnyanmisaka /* 3*437bfbebSnyanmisaka * Copyright (c) 2024 Rockchip Electronics Co., Ltd. 4*437bfbebSnyanmisaka */ 5*437bfbebSnyanmisaka 6*437bfbebSnyanmisaka #ifndef __HAL_H264E_VEPU510_REG_H__ 7*437bfbebSnyanmisaka #define __HAL_H264E_VEPU510_REG_H__ 8*437bfbebSnyanmisaka 9*437bfbebSnyanmisaka #include "rk_type.h" 10*437bfbebSnyanmisaka #include "vepu510_common.h" 11*437bfbebSnyanmisaka 12*437bfbebSnyanmisaka /* class: buffer/video syntax */ 13*437bfbebSnyanmisaka /* 0x00000270 reg156 - 0x000003f4 reg253*/ 14*437bfbebSnyanmisaka typedef struct H264eVepu510Frame_t { 15*437bfbebSnyanmisaka 16*437bfbebSnyanmisaka Vepu510FrmCommon common; 17*437bfbebSnyanmisaka 18*437bfbebSnyanmisaka /* 0x000003a0 reg232 */ 19*437bfbebSnyanmisaka struct { 20*437bfbebSnyanmisaka RK_U32 rect_size : 1; 21*437bfbebSnyanmisaka RK_U32 reserved : 2; 22*437bfbebSnyanmisaka RK_U32 vlc_lmt : 1; 23*437bfbebSnyanmisaka RK_U32 chrm_spcl : 1; 24*437bfbebSnyanmisaka RK_U32 reserved1 : 8; 25*437bfbebSnyanmisaka RK_U32 ccwa_e : 1; 26*437bfbebSnyanmisaka RK_U32 reserved2 : 1; 27*437bfbebSnyanmisaka RK_U32 atr_e : 1; 28*437bfbebSnyanmisaka RK_U32 reserved3 : 4; 29*437bfbebSnyanmisaka RK_U32 scl_lst_sel : 2; 30*437bfbebSnyanmisaka RK_U32 reserved4 : 6; 31*437bfbebSnyanmisaka RK_U32 atf_e : 1; 32*437bfbebSnyanmisaka RK_U32 atr_mult_sel_e : 1; 33*437bfbebSnyanmisaka RK_U32 reserved5 : 2; 34*437bfbebSnyanmisaka } rdo_cfg; 35*437bfbebSnyanmisaka 36*437bfbebSnyanmisaka /* 0x000003a4 reg233 */ 37*437bfbebSnyanmisaka struct { 38*437bfbebSnyanmisaka RK_U32 rdo_mark_mode : 9; 39*437bfbebSnyanmisaka RK_U32 reserved : 23; 40*437bfbebSnyanmisaka } iprd_csts; 41*437bfbebSnyanmisaka 42*437bfbebSnyanmisaka /* 0x3a8 - 0x3ac */ 43*437bfbebSnyanmisaka RK_U32 reserved234_235[2]; 44*437bfbebSnyanmisaka 45*437bfbebSnyanmisaka /* 0x000003b0 reg236 */ 46*437bfbebSnyanmisaka struct { 47*437bfbebSnyanmisaka RK_U32 nal_ref_idc : 2; 48*437bfbebSnyanmisaka RK_U32 nal_unit_type : 5; 49*437bfbebSnyanmisaka RK_U32 reserved : 25; 50*437bfbebSnyanmisaka } synt_nal; 51*437bfbebSnyanmisaka 52*437bfbebSnyanmisaka /* 0x000003b4 reg237 */ 53*437bfbebSnyanmisaka struct { 54*437bfbebSnyanmisaka RK_U32 max_fnum : 4; 55*437bfbebSnyanmisaka RK_U32 drct_8x8 : 1; 56*437bfbebSnyanmisaka RK_U32 mpoc_lm4 : 4; 57*437bfbebSnyanmisaka RK_U32 poc_type : 2; 58*437bfbebSnyanmisaka RK_U32 reserved : 21; 59*437bfbebSnyanmisaka } synt_sps; 60*437bfbebSnyanmisaka 61*437bfbebSnyanmisaka /* 0x000003b8 reg238 */ 62*437bfbebSnyanmisaka struct { 63*437bfbebSnyanmisaka RK_U32 etpy_mode : 1; 64*437bfbebSnyanmisaka RK_U32 trns_8x8 : 1; 65*437bfbebSnyanmisaka RK_U32 csip_flag : 1; 66*437bfbebSnyanmisaka RK_U32 num_ref0_idx : 2; 67*437bfbebSnyanmisaka RK_U32 num_ref1_idx : 2; 68*437bfbebSnyanmisaka RK_U32 pic_init_qp : 6; 69*437bfbebSnyanmisaka RK_U32 cb_ofst : 5; 70*437bfbebSnyanmisaka RK_U32 cr_ofst : 5; 71*437bfbebSnyanmisaka RK_U32 reserved : 1; 72*437bfbebSnyanmisaka RK_U32 dbf_cp_flg : 1; 73*437bfbebSnyanmisaka RK_U32 reserved1 : 7; 74*437bfbebSnyanmisaka } synt_pps; 75*437bfbebSnyanmisaka 76*437bfbebSnyanmisaka /* 0x000003bc reg239 */ 77*437bfbebSnyanmisaka struct { 78*437bfbebSnyanmisaka RK_U32 sli_type : 2; 79*437bfbebSnyanmisaka RK_U32 pps_id : 8; 80*437bfbebSnyanmisaka RK_U32 drct_smvp : 1; 81*437bfbebSnyanmisaka RK_U32 num_ref_ovrd : 1; 82*437bfbebSnyanmisaka RK_U32 cbc_init_idc : 2; 83*437bfbebSnyanmisaka RK_U32 reserved : 2; 84*437bfbebSnyanmisaka RK_U32 frm_num : 16; 85*437bfbebSnyanmisaka } synt_sli0; 86*437bfbebSnyanmisaka 87*437bfbebSnyanmisaka /* 0x000003c0 reg240 */ 88*437bfbebSnyanmisaka struct { 89*437bfbebSnyanmisaka RK_U32 idr_pid : 16; 90*437bfbebSnyanmisaka RK_U32 poc_lsb : 16; 91*437bfbebSnyanmisaka } synt_sli1; 92*437bfbebSnyanmisaka 93*437bfbebSnyanmisaka /* 0x000003c4 reg241 */ 94*437bfbebSnyanmisaka struct { 95*437bfbebSnyanmisaka RK_U32 rodr_pic_idx : 2; 96*437bfbebSnyanmisaka RK_U32 ref_list0_rodr : 1; 97*437bfbebSnyanmisaka RK_U32 sli_beta_ofst : 4; 98*437bfbebSnyanmisaka RK_U32 sli_alph_ofst : 4; 99*437bfbebSnyanmisaka RK_U32 dis_dblk_idc : 2; 100*437bfbebSnyanmisaka RK_U32 reserved : 3; 101*437bfbebSnyanmisaka RK_U32 rodr_pic_num : 16; 102*437bfbebSnyanmisaka } synt_sli2; 103*437bfbebSnyanmisaka 104*437bfbebSnyanmisaka /* 0x000003c8 reg242 */ 105*437bfbebSnyanmisaka struct { 106*437bfbebSnyanmisaka RK_U32 nopp_flg : 1; 107*437bfbebSnyanmisaka RK_U32 ltrf_flg : 1; 108*437bfbebSnyanmisaka RK_U32 arpm_flg : 1; 109*437bfbebSnyanmisaka RK_U32 mmco4_pre : 1; 110*437bfbebSnyanmisaka RK_U32 mmco_type0 : 3; 111*437bfbebSnyanmisaka RK_U32 mmco_parm0 : 16; 112*437bfbebSnyanmisaka RK_U32 mmco_type1 : 3; 113*437bfbebSnyanmisaka RK_U32 mmco_type2 : 3; 114*437bfbebSnyanmisaka RK_U32 reserved : 3; 115*437bfbebSnyanmisaka } synt_refm0; 116*437bfbebSnyanmisaka 117*437bfbebSnyanmisaka /* 0x000003cc reg243 */ 118*437bfbebSnyanmisaka struct { 119*437bfbebSnyanmisaka RK_U32 mmco_parm1 : 16; 120*437bfbebSnyanmisaka RK_U32 mmco_parm2 : 16; 121*437bfbebSnyanmisaka } synt_refm1; 122*437bfbebSnyanmisaka 123*437bfbebSnyanmisaka /* 0x000003d0 reg244 */ 124*437bfbebSnyanmisaka struct { 125*437bfbebSnyanmisaka RK_U32 long_term_frame_idx0 : 4; 126*437bfbebSnyanmisaka RK_U32 long_term_frame_idx1 : 4; 127*437bfbebSnyanmisaka RK_U32 long_term_frame_idx2 : 4; 128*437bfbebSnyanmisaka RK_U32 reserved : 20; 129*437bfbebSnyanmisaka } synt_refm2; 130*437bfbebSnyanmisaka 131*437bfbebSnyanmisaka /* 0x000003d4 reg245 */ 132*437bfbebSnyanmisaka struct { 133*437bfbebSnyanmisaka RK_U32 dlt_poc_s0_m12 : 16; 134*437bfbebSnyanmisaka RK_U32 dlt_poc_s0_m13 : 16; 135*437bfbebSnyanmisaka } synt_refm3_hevc; 136*437bfbebSnyanmisaka 137*437bfbebSnyanmisaka /* 0x000003d8 reg246 */ 138*437bfbebSnyanmisaka struct { 139*437bfbebSnyanmisaka RK_U32 poc_lsb_lt1 : 16; 140*437bfbebSnyanmisaka RK_U32 poc_lsb_lt2 : 16; 141*437bfbebSnyanmisaka } synt_long_refm0_hevc; 142*437bfbebSnyanmisaka 143*437bfbebSnyanmisaka /* 0x000003dc reg247 */ 144*437bfbebSnyanmisaka struct { 145*437bfbebSnyanmisaka RK_U32 dlt_poc_msb_cycl1 : 16; 146*437bfbebSnyanmisaka RK_U32 dlt_poc_msb_cycl2 : 16; 147*437bfbebSnyanmisaka } synt_long_refm1_hevc; 148*437bfbebSnyanmisaka 149*437bfbebSnyanmisaka /* 0x000003e0 reg248 */ 150*437bfbebSnyanmisaka struct { 151*437bfbebSnyanmisaka RK_U32 sao_lambda_multi : 3; 152*437bfbebSnyanmisaka RK_U32 reserved : 29; 153*437bfbebSnyanmisaka } sao_cfg_hevc; 154*437bfbebSnyanmisaka 155*437bfbebSnyanmisaka /* 0x3e4 - 0x3ec */ 156*437bfbebSnyanmisaka RK_U32 reserved249_251[3]; 157*437bfbebSnyanmisaka 158*437bfbebSnyanmisaka /* 0x000003f0 reg252 */ 159*437bfbebSnyanmisaka struct { 160*437bfbebSnyanmisaka RK_U32 mv_v_lmt_thd : 14; 161*437bfbebSnyanmisaka RK_U32 reserved : 1; 162*437bfbebSnyanmisaka RK_U32 mv_v_lmt_en : 1; 163*437bfbebSnyanmisaka RK_U32 reserved1 : 16; 164*437bfbebSnyanmisaka } sli_cfg; 165*437bfbebSnyanmisaka 166*437bfbebSnyanmisaka /* 0x000003f4 reg253 */ 167*437bfbebSnyanmisaka struct { 168*437bfbebSnyanmisaka RK_U32 tile_x : 9; 169*437bfbebSnyanmisaka RK_U32 reserved : 7; 170*437bfbebSnyanmisaka RK_U32 tile_y : 9; 171*437bfbebSnyanmisaka RK_U32 reserved1 : 7; 172*437bfbebSnyanmisaka } tile_pos_hevc; 173*437bfbebSnyanmisaka } H264eVepu510Frame; 174*437bfbebSnyanmisaka 175*437bfbebSnyanmisaka /* class: param */ 176*437bfbebSnyanmisaka /* 0x00001700 reg1472 - 0x000019cc reg1651 */ 177*437bfbebSnyanmisaka typedef struct H264eVepu510Param_t { 178*437bfbebSnyanmisaka /* 0x00001700 reg1472 */ 179*437bfbebSnyanmisaka struct { 180*437bfbebSnyanmisaka RK_U32 iprd_tthdy4_0 : 12; 181*437bfbebSnyanmisaka RK_U32 reserved : 4; 182*437bfbebSnyanmisaka RK_U32 iprd_tthdy4_1 : 12; 183*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 184*437bfbebSnyanmisaka } iprd_tthdy4_0; 185*437bfbebSnyanmisaka 186*437bfbebSnyanmisaka /* 0x00001704 reg1473 */ 187*437bfbebSnyanmisaka struct { 188*437bfbebSnyanmisaka RK_U32 iprd_tthdy4_2 : 12; 189*437bfbebSnyanmisaka RK_U32 reserved : 4; 190*437bfbebSnyanmisaka RK_U32 iprd_tthdy4_3 : 12; 191*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 192*437bfbebSnyanmisaka } iprd_tthdy4_1; 193*437bfbebSnyanmisaka 194*437bfbebSnyanmisaka /* 0x00001708 reg1474 */ 195*437bfbebSnyanmisaka struct { 196*437bfbebSnyanmisaka RK_U32 iprd_tthdc8_0 : 12; 197*437bfbebSnyanmisaka RK_U32 reserved : 4; 198*437bfbebSnyanmisaka RK_U32 iprd_tthdc8_1 : 12; 199*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 200*437bfbebSnyanmisaka } iprd_tthdc8_0; 201*437bfbebSnyanmisaka 202*437bfbebSnyanmisaka /* 0x0000170c reg1475 */ 203*437bfbebSnyanmisaka struct { 204*437bfbebSnyanmisaka RK_U32 iprd_tthdc8_2 : 12; 205*437bfbebSnyanmisaka RK_U32 reserved : 4; 206*437bfbebSnyanmisaka RK_U32 iprd_tthdc8_3 : 12; 207*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 208*437bfbebSnyanmisaka } iprd_tthdc8_1; 209*437bfbebSnyanmisaka 210*437bfbebSnyanmisaka /* 0x00001710 reg1476 */ 211*437bfbebSnyanmisaka struct { 212*437bfbebSnyanmisaka RK_U32 iprd_tthdy8_0 : 12; 213*437bfbebSnyanmisaka RK_U32 reserved : 4; 214*437bfbebSnyanmisaka RK_U32 iprd_tthdy8_1 : 12; 215*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 216*437bfbebSnyanmisaka } iprd_tthdy8_0; 217*437bfbebSnyanmisaka 218*437bfbebSnyanmisaka /* 0x00001714 reg1477 */ 219*437bfbebSnyanmisaka struct { 220*437bfbebSnyanmisaka RK_U32 iprd_tthdy8_2 : 12; 221*437bfbebSnyanmisaka RK_U32 reserved : 4; 222*437bfbebSnyanmisaka RK_U32 iprd_tthdy8_3 : 12; 223*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 224*437bfbebSnyanmisaka } iprd_tthdy8_1; 225*437bfbebSnyanmisaka 226*437bfbebSnyanmisaka /* 0x00001718 reg1478 */ 227*437bfbebSnyanmisaka struct { 228*437bfbebSnyanmisaka RK_U32 iprd_tthd_ul : 12; 229*437bfbebSnyanmisaka RK_U32 reserved : 20; 230*437bfbebSnyanmisaka } iprd_tthd_ul; 231*437bfbebSnyanmisaka 232*437bfbebSnyanmisaka /* 0x0000171c reg1479 */ 233*437bfbebSnyanmisaka struct { 234*437bfbebSnyanmisaka RK_U32 iprd_wgty8_0 : 8; 235*437bfbebSnyanmisaka RK_U32 iprd_wgty8_1 : 8; 236*437bfbebSnyanmisaka RK_U32 iprd_wgty8_2 : 8; 237*437bfbebSnyanmisaka RK_U32 iprd_wgty8_3 : 8; 238*437bfbebSnyanmisaka } iprd_wgty8; 239*437bfbebSnyanmisaka 240*437bfbebSnyanmisaka /* 0x00001720 reg1480 */ 241*437bfbebSnyanmisaka struct { 242*437bfbebSnyanmisaka RK_U32 iprd_wgty4_0 : 8; 243*437bfbebSnyanmisaka RK_U32 iprd_wgty4_1 : 8; 244*437bfbebSnyanmisaka RK_U32 iprd_wgty4_2 : 8; 245*437bfbebSnyanmisaka RK_U32 iprd_wgty4_3 : 8; 246*437bfbebSnyanmisaka } iprd_wgty4; 247*437bfbebSnyanmisaka 248*437bfbebSnyanmisaka /* 0x00001724 reg1481 */ 249*437bfbebSnyanmisaka struct { 250*437bfbebSnyanmisaka RK_U32 iprd_wgty16_0 : 8; 251*437bfbebSnyanmisaka RK_U32 iprd_wgty16_1 : 8; 252*437bfbebSnyanmisaka RK_U32 iprd_wgty16_2 : 8; 253*437bfbebSnyanmisaka RK_U32 iprd_wgty16_3 : 8; 254*437bfbebSnyanmisaka } iprd_wgty16; 255*437bfbebSnyanmisaka 256*437bfbebSnyanmisaka /* 0x00001728 reg1482 */ 257*437bfbebSnyanmisaka struct { 258*437bfbebSnyanmisaka RK_U32 iprd_wgtc8_0 : 8; 259*437bfbebSnyanmisaka RK_U32 iprd_wgtc8_1 : 8; 260*437bfbebSnyanmisaka RK_U32 iprd_wgtc8_2 : 8; 261*437bfbebSnyanmisaka RK_U32 iprd_wgtc8_3 : 8; 262*437bfbebSnyanmisaka } iprd_wgtc8; 263*437bfbebSnyanmisaka 264*437bfbebSnyanmisaka /* 0x172c */ 265*437bfbebSnyanmisaka RK_U32 reserved_1483; 266*437bfbebSnyanmisaka 267*437bfbebSnyanmisaka /* 0x00001730 reg1484 */ 268*437bfbebSnyanmisaka struct { 269*437bfbebSnyanmisaka RK_U32 qnt_f_bias_i : 10; 270*437bfbebSnyanmisaka RK_U32 qnt_f_bias_p : 10; 271*437bfbebSnyanmisaka RK_U32 reserve : 12; 272*437bfbebSnyanmisaka } qnt_bias_comb; 273*437bfbebSnyanmisaka 274*437bfbebSnyanmisaka /* 0x1734 - 0x173c */ 275*437bfbebSnyanmisaka RK_U32 reserved1485_1487[3]; 276*437bfbebSnyanmisaka 277*437bfbebSnyanmisaka /* 0x00001740 reg1488 */ 278*437bfbebSnyanmisaka struct { 279*437bfbebSnyanmisaka RK_U32 thd0 : 8; 280*437bfbebSnyanmisaka RK_U32 reserve0 : 8; 281*437bfbebSnyanmisaka RK_U32 thd1 : 8; 282*437bfbebSnyanmisaka RK_U32 reserve1 : 8; 283*437bfbebSnyanmisaka } atr_thd0; 284*437bfbebSnyanmisaka 285*437bfbebSnyanmisaka /* 0x00001744 reg1489 */ 286*437bfbebSnyanmisaka struct { 287*437bfbebSnyanmisaka RK_U32 thd2 : 8; 288*437bfbebSnyanmisaka RK_U32 reserve0 : 8; 289*437bfbebSnyanmisaka RK_U32 thdqp : 6; 290*437bfbebSnyanmisaka RK_U32 reserve1 : 10; 291*437bfbebSnyanmisaka } atr_thd1; 292*437bfbebSnyanmisaka 293*437bfbebSnyanmisaka /* 0x1748 - 0x174c */ 294*437bfbebSnyanmisaka RK_U32 reserved1490_1491[2]; 295*437bfbebSnyanmisaka 296*437bfbebSnyanmisaka /* 0x00001750 reg1492 */ 297*437bfbebSnyanmisaka struct { 298*437bfbebSnyanmisaka RK_U32 atr_lv16_wgt0 : 8; 299*437bfbebSnyanmisaka RK_U32 atr_lv16_wgt1 : 8; 300*437bfbebSnyanmisaka RK_U32 atr_lv16_wgt2 : 8; 301*437bfbebSnyanmisaka RK_U32 reserved : 8; 302*437bfbebSnyanmisaka } atr_wgt16; 303*437bfbebSnyanmisaka 304*437bfbebSnyanmisaka /* 0x00001754 reg1493*/ 305*437bfbebSnyanmisaka struct { 306*437bfbebSnyanmisaka RK_U32 atr_lv8_wgt0 : 8; 307*437bfbebSnyanmisaka RK_U32 atr_lv8_wgt1 : 8; 308*437bfbebSnyanmisaka RK_U32 atr_lv8_wgt2 : 8; 309*437bfbebSnyanmisaka RK_U32 reserved : 8; 310*437bfbebSnyanmisaka } atr_wgt8; 311*437bfbebSnyanmisaka 312*437bfbebSnyanmisaka /* 0x00001758 reg1494 */ 313*437bfbebSnyanmisaka struct { 314*437bfbebSnyanmisaka RK_U32 atr_lv4_wgt0 : 8; 315*437bfbebSnyanmisaka RK_U32 atr_lv4_wgt1 : 8; 316*437bfbebSnyanmisaka RK_U32 atr_lv4_wgt2 : 8; 317*437bfbebSnyanmisaka RK_U32 reserved : 8; 318*437bfbebSnyanmisaka } atr_wgt4; 319*437bfbebSnyanmisaka 320*437bfbebSnyanmisaka /* 0x175c */ 321*437bfbebSnyanmisaka RK_U32 reserved_1495; 322*437bfbebSnyanmisaka 323*437bfbebSnyanmisaka /* 0x00001760 reg1496 */ 324*437bfbebSnyanmisaka struct { 325*437bfbebSnyanmisaka RK_U32 cime_pmv_num : 1; 326*437bfbebSnyanmisaka RK_U32 cime_fuse : 1; 327*437bfbebSnyanmisaka RK_U32 itp_mode : 1; 328*437bfbebSnyanmisaka RK_U32 reserved : 1; 329*437bfbebSnyanmisaka RK_U32 move_lambda : 4; 330*437bfbebSnyanmisaka RK_U32 rime_lvl_mrg : 2; 331*437bfbebSnyanmisaka RK_U32 rime_prelvl_en : 2; 332*437bfbebSnyanmisaka RK_U32 rime_prersu_en : 3; 333*437bfbebSnyanmisaka RK_U32 reserved1 : 17; 334*437bfbebSnyanmisaka } me_sqi_comb; 335*437bfbebSnyanmisaka 336*437bfbebSnyanmisaka /* 0x00001764 reg1497 */ 337*437bfbebSnyanmisaka struct { 338*437bfbebSnyanmisaka RK_U32 cime_mvd_th0 : 9; 339*437bfbebSnyanmisaka RK_U32 reserved : 1; 340*437bfbebSnyanmisaka RK_U32 cime_mvd_th1 : 9; 341*437bfbebSnyanmisaka RK_U32 reserved1 : 1; 342*437bfbebSnyanmisaka RK_U32 cime_mvd_th2 : 9; 343*437bfbebSnyanmisaka RK_U32 reserved2 : 3; 344*437bfbebSnyanmisaka } cime_mvd_th_comb; 345*437bfbebSnyanmisaka 346*437bfbebSnyanmisaka /* 0x00001768 reg1498 */ 347*437bfbebSnyanmisaka struct { 348*437bfbebSnyanmisaka RK_U32 cime_madp_th : 12; 349*437bfbebSnyanmisaka RK_U32 reserved : 20; 350*437bfbebSnyanmisaka } cime_madp_th_comb; 351*437bfbebSnyanmisaka 352*437bfbebSnyanmisaka /* 0x0000176c reg1499 */ 353*437bfbebSnyanmisaka struct { 354*437bfbebSnyanmisaka RK_U32 cime_multi0 : 8; 355*437bfbebSnyanmisaka RK_U32 cime_multi1 : 8; 356*437bfbebSnyanmisaka RK_U32 cime_multi2 : 8; 357*437bfbebSnyanmisaka RK_U32 cime_multi3 : 8; 358*437bfbebSnyanmisaka } cime_multi_comb; 359*437bfbebSnyanmisaka 360*437bfbebSnyanmisaka /* 0x00001770 reg1500 */ 361*437bfbebSnyanmisaka struct { 362*437bfbebSnyanmisaka RK_U32 rime_mvd_th0 : 3; 363*437bfbebSnyanmisaka RK_U32 reserved : 1; 364*437bfbebSnyanmisaka RK_U32 rime_mvd_th1 : 3; 365*437bfbebSnyanmisaka RK_U32 reserved1 : 9; 366*437bfbebSnyanmisaka RK_U32 fme_madp_th : 12; 367*437bfbebSnyanmisaka RK_U32 reserved2 : 4; 368*437bfbebSnyanmisaka } rime_mvd_th_comb; 369*437bfbebSnyanmisaka 370*437bfbebSnyanmisaka /* 0x00001774 reg1501 */ 371*437bfbebSnyanmisaka struct { 372*437bfbebSnyanmisaka RK_U32 rime_madp_th0 : 12; 373*437bfbebSnyanmisaka RK_U32 reserved : 4; 374*437bfbebSnyanmisaka RK_U32 rime_madp_th1 : 12; 375*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 376*437bfbebSnyanmisaka } rime_madp_th_comb; 377*437bfbebSnyanmisaka 378*437bfbebSnyanmisaka /* 0x00001778 reg1502 */ 379*437bfbebSnyanmisaka struct { 380*437bfbebSnyanmisaka RK_U32 rime_multi0 : 10; 381*437bfbebSnyanmisaka RK_U32 rime_multi1 : 10; 382*437bfbebSnyanmisaka RK_U32 rime_multi2 : 10; 383*437bfbebSnyanmisaka RK_U32 reserved : 2; 384*437bfbebSnyanmisaka } rime_multi_comb; 385*437bfbebSnyanmisaka 386*437bfbebSnyanmisaka /* 0x0000177c reg1503 */ 387*437bfbebSnyanmisaka struct { 388*437bfbebSnyanmisaka RK_U32 cmv_th0 : 8; 389*437bfbebSnyanmisaka RK_U32 cmv_th1 : 8; 390*437bfbebSnyanmisaka RK_U32 cmv_th2 : 8; 391*437bfbebSnyanmisaka RK_U32 reserved : 8; 392*437bfbebSnyanmisaka } cmv_st_th_comb; 393*437bfbebSnyanmisaka 394*437bfbebSnyanmisaka /* 0x1780 - 0x17fc */ 395*437bfbebSnyanmisaka RK_U32 reserved1504_1535[32]; 396*437bfbebSnyanmisaka 397*437bfbebSnyanmisaka /* 0x00001800 reg1536 - 0x000018cc reg1587*/ 398*437bfbebSnyanmisaka RK_U32 pprd_lamb_satd_0_51[52]; 399*437bfbebSnyanmisaka 400*437bfbebSnyanmisaka /* 0x000018d0 reg1588 */ 401*437bfbebSnyanmisaka struct { 402*437bfbebSnyanmisaka RK_U32 lambda_satd_offset : 5; 403*437bfbebSnyanmisaka RK_U32 reserved : 27; 404*437bfbebSnyanmisaka } iprd_lamb_satd_ofst; 405*437bfbebSnyanmisaka 406*437bfbebSnyanmisaka /* 0x18d4 - 0x18fc */ 407*437bfbebSnyanmisaka RK_U32 reserved1589_1599[11]; 408*437bfbebSnyanmisaka 409*437bfbebSnyanmisaka /* 0x00001900 reg1600 - 0x000019cc reg1651*/ 410*437bfbebSnyanmisaka RK_U32 rdo_wgta_qp_grpa_0_51[52]; 411*437bfbebSnyanmisaka } H264eVepu510Param; 412*437bfbebSnyanmisaka 413*437bfbebSnyanmisaka /* class: rdo/q_i */ 414*437bfbebSnyanmisaka /* 0x00002000 reg2048 - 0x000020fc reg2111 */ 415*437bfbebSnyanmisaka typedef struct H264eVepu510SqiCfg_t { 416*437bfbebSnyanmisaka /* 0x00002000 reg2048 - 0x00002010 reg2052*/ 417*437bfbebSnyanmisaka RK_U32 reserved_2048_2052[5]; 418*437bfbebSnyanmisaka 419*437bfbebSnyanmisaka /* 0x00002014 reg2053 */ 420*437bfbebSnyanmisaka struct { 421*437bfbebSnyanmisaka RK_U32 rdo_smear_lvl16_multi : 8; 422*437bfbebSnyanmisaka RK_U32 rdo_smear_dlt_qp : 4; 423*437bfbebSnyanmisaka RK_U32 reserved : 1; 424*437bfbebSnyanmisaka RK_U32 stated_mode : 2; 425*437bfbebSnyanmisaka RK_U32 rdo_smear_en : 1; 426*437bfbebSnyanmisaka RK_U32 reserved1 : 16; 427*437bfbebSnyanmisaka } smear_opt_cfg; 428*437bfbebSnyanmisaka 429*437bfbebSnyanmisaka /* 0x00002018 reg2054 */ 430*437bfbebSnyanmisaka struct { 431*437bfbebSnyanmisaka RK_U32 madp_cur_thd0 : 12; 432*437bfbebSnyanmisaka RK_U32 reserved : 4; 433*437bfbebSnyanmisaka RK_U32 madp_cur_thd1 : 12; 434*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 435*437bfbebSnyanmisaka } smear_madp_thd0; 436*437bfbebSnyanmisaka 437*437bfbebSnyanmisaka /* 0x0000201c reg2055 */ 438*437bfbebSnyanmisaka struct { 439*437bfbebSnyanmisaka RK_U32 madp_cur_thd2 : 12; 440*437bfbebSnyanmisaka RK_U32 reserved : 4; 441*437bfbebSnyanmisaka RK_U32 madp_cur_thd3 : 12; 442*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 443*437bfbebSnyanmisaka } smear_madp_thd1; 444*437bfbebSnyanmisaka 445*437bfbebSnyanmisaka /* 0x00002020 reg2056 */ 446*437bfbebSnyanmisaka struct { 447*437bfbebSnyanmisaka RK_U32 madp_around_thd0 : 12; 448*437bfbebSnyanmisaka RK_U32 reserved : 4; 449*437bfbebSnyanmisaka RK_U32 madp_around_thd1 : 12; 450*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 451*437bfbebSnyanmisaka } smear_madp_thd2; 452*437bfbebSnyanmisaka 453*437bfbebSnyanmisaka /* 0x00002024 reg2057 */ 454*437bfbebSnyanmisaka struct { 455*437bfbebSnyanmisaka RK_U32 madp_around_thd2 : 12; 456*437bfbebSnyanmisaka RK_U32 reserved : 4; 457*437bfbebSnyanmisaka RK_U32 madp_around_thd3 : 12; 458*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 459*437bfbebSnyanmisaka } smear_madp_thd3; 460*437bfbebSnyanmisaka 461*437bfbebSnyanmisaka /* 0x00002028 reg2058 */ 462*437bfbebSnyanmisaka struct { 463*437bfbebSnyanmisaka RK_U32 madp_around_thd4 : 12; 464*437bfbebSnyanmisaka RK_U32 reserved : 4; 465*437bfbebSnyanmisaka RK_U32 madp_around_thd5 : 12; 466*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 467*437bfbebSnyanmisaka } smear_madp_thd4; 468*437bfbebSnyanmisaka 469*437bfbebSnyanmisaka /* 0x0000202c reg2059 */ 470*437bfbebSnyanmisaka struct { 471*437bfbebSnyanmisaka RK_U32 madp_ref_thd0 : 12; 472*437bfbebSnyanmisaka RK_U32 reserved : 4; 473*437bfbebSnyanmisaka RK_U32 madp_ref_thd1 : 12; 474*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 475*437bfbebSnyanmisaka } smear_madp_thd5; 476*437bfbebSnyanmisaka 477*437bfbebSnyanmisaka /* 0x00002030 reg2060 */ 478*437bfbebSnyanmisaka struct { 479*437bfbebSnyanmisaka RK_U32 cnt_cur_thd0 : 4; 480*437bfbebSnyanmisaka RK_U32 reserved : 4; 481*437bfbebSnyanmisaka RK_U32 cnt_cur_thd1 : 4; 482*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 483*437bfbebSnyanmisaka RK_U32 cnt_cur_thd2 : 4; 484*437bfbebSnyanmisaka RK_U32 reserved2 : 4; 485*437bfbebSnyanmisaka RK_U32 cnt_cur_thd3 : 4; 486*437bfbebSnyanmisaka RK_U32 reserved3 : 4; 487*437bfbebSnyanmisaka } smear_cnt_thd0; 488*437bfbebSnyanmisaka 489*437bfbebSnyanmisaka /* 0x00002034 reg2061 */ 490*437bfbebSnyanmisaka struct { 491*437bfbebSnyanmisaka RK_U32 cnt_around_thd0 : 4; 492*437bfbebSnyanmisaka RK_U32 reserved : 4; 493*437bfbebSnyanmisaka RK_U32 cnt_around_thd1 : 4; 494*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 495*437bfbebSnyanmisaka RK_U32 cnt_around_thd2 : 4; 496*437bfbebSnyanmisaka RK_U32 reserved2 : 4; 497*437bfbebSnyanmisaka RK_U32 cnt_around_thd3 : 4; 498*437bfbebSnyanmisaka RK_U32 reserved3 : 4; 499*437bfbebSnyanmisaka } smear_cnt_thd1; 500*437bfbebSnyanmisaka 501*437bfbebSnyanmisaka /* 0x00002038 reg2062 */ 502*437bfbebSnyanmisaka struct { 503*437bfbebSnyanmisaka RK_U32 cnt_around_thd4 : 4; 504*437bfbebSnyanmisaka RK_U32 reserved : 4; 505*437bfbebSnyanmisaka RK_U32 cnt_around_thd5 : 4; 506*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 507*437bfbebSnyanmisaka RK_U32 cnt_around_thd6 : 4; 508*437bfbebSnyanmisaka RK_U32 reserved2 : 4; 509*437bfbebSnyanmisaka RK_U32 cnt_around_thd7 : 4; 510*437bfbebSnyanmisaka RK_U32 reserved3 : 4; 511*437bfbebSnyanmisaka } smear_cnt_thd2; 512*437bfbebSnyanmisaka 513*437bfbebSnyanmisaka /* 0x0000203c reg2063 */ 514*437bfbebSnyanmisaka struct { 515*437bfbebSnyanmisaka RK_U32 cnt_ref_thd0 : 4; 516*437bfbebSnyanmisaka RK_U32 reserved : 4; 517*437bfbebSnyanmisaka RK_U32 cnt_ref_thd1 : 4; 518*437bfbebSnyanmisaka RK_U32 reserved1 : 20; 519*437bfbebSnyanmisaka } smear_cnt_thd3; 520*437bfbebSnyanmisaka 521*437bfbebSnyanmisaka /* 0x00002040 reg2064 */ 522*437bfbebSnyanmisaka struct { 523*437bfbebSnyanmisaka RK_U32 resi_small_cur_th0 : 6; 524*437bfbebSnyanmisaka RK_U32 reserved : 2; 525*437bfbebSnyanmisaka RK_U32 resi_big_cur_th0 : 6; 526*437bfbebSnyanmisaka RK_U32 reserved1 : 2; 527*437bfbebSnyanmisaka RK_U32 resi_small_cur_th1 : 6; 528*437bfbebSnyanmisaka RK_U32 reserved2 : 2; 529*437bfbebSnyanmisaka RK_U32 resi_big_cur_th1 : 6; 530*437bfbebSnyanmisaka RK_U32 reserved3 : 2; 531*437bfbebSnyanmisaka } smear_resi_thd0; 532*437bfbebSnyanmisaka 533*437bfbebSnyanmisaka /* 0x00002044 reg2065 */ 534*437bfbebSnyanmisaka struct { 535*437bfbebSnyanmisaka RK_U32 resi_small_around_th0 : 6; 536*437bfbebSnyanmisaka RK_U32 reserved : 2; 537*437bfbebSnyanmisaka RK_U32 resi_big_around_th0 : 6; 538*437bfbebSnyanmisaka RK_U32 reserved1 : 2; 539*437bfbebSnyanmisaka RK_U32 resi_small_around_th1 : 6; 540*437bfbebSnyanmisaka RK_U32 reserved2 : 2; 541*437bfbebSnyanmisaka RK_U32 resi_big_around_th1 : 6; 542*437bfbebSnyanmisaka RK_U32 reserved3 : 2; 543*437bfbebSnyanmisaka } smear_resi_thd1; 544*437bfbebSnyanmisaka 545*437bfbebSnyanmisaka /* 0x00002048 reg2066 */ 546*437bfbebSnyanmisaka struct { 547*437bfbebSnyanmisaka RK_U32 resi_small_around_th2 : 6; 548*437bfbebSnyanmisaka RK_U32 reserved : 2; 549*437bfbebSnyanmisaka RK_U32 resi_big_around_th2 : 6; 550*437bfbebSnyanmisaka RK_U32 reserved1 : 2; 551*437bfbebSnyanmisaka RK_U32 resi_small_around_th3 : 6; 552*437bfbebSnyanmisaka RK_U32 reserved2 : 2; 553*437bfbebSnyanmisaka RK_U32 resi_big_around_th3 : 6; 554*437bfbebSnyanmisaka RK_U32 reserved3 : 2; 555*437bfbebSnyanmisaka } smear_resi_thd2; 556*437bfbebSnyanmisaka 557*437bfbebSnyanmisaka /* 0x0000204c reg2067 */ 558*437bfbebSnyanmisaka struct { 559*437bfbebSnyanmisaka RK_U32 resi_small_ref_th0 : 6; 560*437bfbebSnyanmisaka RK_U32 reserved : 2; 561*437bfbebSnyanmisaka RK_U32 resi_big_ref_th0 : 6; 562*437bfbebSnyanmisaka RK_U32 reserved1 : 18; 563*437bfbebSnyanmisaka } smear_resi_thd3; 564*437bfbebSnyanmisaka 565*437bfbebSnyanmisaka /* 0x00002050 reg2068 */ 566*437bfbebSnyanmisaka struct { 567*437bfbebSnyanmisaka RK_U32 resi_th0 : 8; 568*437bfbebSnyanmisaka RK_U32 reserved : 8; 569*437bfbebSnyanmisaka RK_U32 resi_th1 : 8; 570*437bfbebSnyanmisaka RK_U32 reserved1 : 8; 571*437bfbebSnyanmisaka } smear_resi_thd4; 572*437bfbebSnyanmisaka 573*437bfbebSnyanmisaka /* 0x00002054 reg2069 */ 574*437bfbebSnyanmisaka struct { 575*437bfbebSnyanmisaka RK_U32 madp_cnt_th0 : 4; 576*437bfbebSnyanmisaka RK_U32 madp_cnt_th1 : 4; 577*437bfbebSnyanmisaka RK_U32 madp_cnt_th2 : 4; 578*437bfbebSnyanmisaka RK_U32 madp_cnt_th3 : 4; 579*437bfbebSnyanmisaka RK_U32 reserved : 16; 580*437bfbebSnyanmisaka } smear_st_thd; 581*437bfbebSnyanmisaka 582*437bfbebSnyanmisaka /* 0x2058 - 0x206c */ 583*437bfbebSnyanmisaka RK_U32 reserved2070_2075[6]; 584*437bfbebSnyanmisaka 585*437bfbebSnyanmisaka /* 0x00002070 reg2076 - 0x0000207c reg2079*/ 586*437bfbebSnyanmisaka rdo_skip_par rdo_b16_skip; 587*437bfbebSnyanmisaka 588*437bfbebSnyanmisaka /* 0x00002080 reg2080 - 0x00002088 reg2082 */ 589*437bfbebSnyanmisaka RK_U32 reserved2080_2082[3]; 590*437bfbebSnyanmisaka 591*437bfbebSnyanmisaka /* 0x0000208c reg2083 - 0x00002094 reg2085 */ 592*437bfbebSnyanmisaka rdo_noskip_par rdo_b16_inter; 593*437bfbebSnyanmisaka 594*437bfbebSnyanmisaka /* 0x00002098 reg2086 - 0x000020a4 reg2088 */ 595*437bfbebSnyanmisaka RK_U32 reserved2086_2088[3]; 596*437bfbebSnyanmisaka 597*437bfbebSnyanmisaka /* 0x000020a8 reg2089 - 0x000020ac reg2091 */ 598*437bfbebSnyanmisaka rdo_noskip_par rdo_b16_intra; 599*437bfbebSnyanmisaka 600*437bfbebSnyanmisaka /* 0x000020b0 reg2092 */ 601*437bfbebSnyanmisaka RK_U32 reserved2092; 602*437bfbebSnyanmisaka 603*437bfbebSnyanmisaka /* 0x000020b4 reg2093 */ 604*437bfbebSnyanmisaka struct { 605*437bfbebSnyanmisaka RK_U32 thd0 : 4; 606*437bfbebSnyanmisaka RK_U32 reserved : 4; 607*437bfbebSnyanmisaka RK_U32 thd1 : 4; 608*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 609*437bfbebSnyanmisaka RK_U32 thd2 : 4; 610*437bfbebSnyanmisaka RK_U32 reserved2 : 4; 611*437bfbebSnyanmisaka RK_U32 thd3 : 4; 612*437bfbebSnyanmisaka RK_U32 reserved3 : 4; 613*437bfbebSnyanmisaka } rdo_b16_intra_atf_cnt_thd; 614*437bfbebSnyanmisaka 615*437bfbebSnyanmisaka /* 0x000020b8 reg2094 */ 616*437bfbebSnyanmisaka struct { 617*437bfbebSnyanmisaka RK_U32 big_th0 : 6; 618*437bfbebSnyanmisaka RK_U32 reserved : 2; 619*437bfbebSnyanmisaka RK_U32 big_th1 : 6; 620*437bfbebSnyanmisaka RK_U32 reserved1 : 2; 621*437bfbebSnyanmisaka RK_U32 small_th0 : 6; 622*437bfbebSnyanmisaka RK_U32 reserved2 : 2; 623*437bfbebSnyanmisaka RK_U32 small_th1 : 6; 624*437bfbebSnyanmisaka RK_U32 reserved3 : 2; 625*437bfbebSnyanmisaka } rdo_atf_resi_thd; 626*437bfbebSnyanmisaka } H264eVepu510Sqi; 627*437bfbebSnyanmisaka 628*437bfbebSnyanmisaka /* class: mmu */ 629*437bfbebSnyanmisaka /* 0x0000f000 reg15360 - 0x0000f024 reg15369 */ 630*437bfbebSnyanmisaka typedef struct HalVepu510Reg_t { 631*437bfbebSnyanmisaka Vepu510ControlCfg reg_ctl; 632*437bfbebSnyanmisaka H264eVepu510Frame reg_frm; 633*437bfbebSnyanmisaka Vepu510RcRoi reg_rc_roi; 634*437bfbebSnyanmisaka H264eVepu510Param reg_param; 635*437bfbebSnyanmisaka H264eVepu510Sqi reg_sqi; 636*437bfbebSnyanmisaka Vepu510SclCfg reg_scl; 637*437bfbebSnyanmisaka Vepu510Status reg_st; 638*437bfbebSnyanmisaka Vepu510Dbg reg_dbg; 639*437bfbebSnyanmisaka } HalVepu510RegSet; 640*437bfbebSnyanmisaka 641*437bfbebSnyanmisaka #endif