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