/* SPDX-License-Identifier: Apache-2.0 */ /* * Copyright (c) 2024 Rockchip Electronics Co., Ltd. */ #ifndef __VEPU510_COMMON_H__ #define __VEPU510_COMMON_H__ #include "rk_venc_cmd.h" #define VEPU510_CTL_OFFSET (0 * sizeof(RK_U32)) /* 0x00000000 reg0 - 0x00000120 reg72 */ #define VEPU510_FRAME_OFFSET (156 * sizeof(RK_U32)) /* 0x00000270 reg156 - 0x000003f4 reg253 */ #define VEPU510_RC_ROI_OFFSET (1024 * sizeof(RK_U32)) /* 0x00001000 reg1024 - 0x0000110c reg1091 */ #define VEPU510_PARAM_OFFSET (1472 * sizeof(RK_U32)) /* 0x00001700 reg1472 - 0x000019cc reg1651 */ #define VEPU510_SQI_OFFSET (2048 * sizeof(RK_U32)) /* 0x00002000 reg2048 - 0x0000212c reg2123 */ #define VEPU510_SCL_OFFSET (2176 * sizeof(RK_U32)) /* 0x00002200 reg2176 - 0x00002584 reg2401 */ #define VEPU510_STATUS_OFFSET (4096 * sizeof(RK_U32)) /* 0x00004000 reg4096 - 0x0000424c reg4243 */ #define VEPU510_DBG_OFFSET (5120 * sizeof(RK_U32)) /* 0x00005000 reg5120 - 0x00005230 reg5260 */ #define VEPU510_REG_BASE_HW_STATUS (0x2c) #define VEPU510_MAX_ROI_NUM 8 #define VEPU510_SLICE_FIFO_LEN 8 typedef struct Vepu510Online_t { /* 0x00000270 reg156 */ struct { RK_U32 reserved : 4; RK_U32 adr_vsy_t : 28; } adr_vsy_t; /* 0x00000274 reg157 */ struct { RK_U32 reserved : 4; RK_U32 adr_vsc_t : 28; } adr_vsc_t; /* 0x00000278 reg158 */ struct { RK_U32 reserved : 4; RK_U32 adr_vsy_b : 28; } adr_vsy_b; /* 0x0000027c reg159 */ struct { RK_U32 reserved : 4; RK_U32 adr_vsc_b : 28; } adr_vsc_b; } vepu510_online; typedef struct RdoSkipPar_t { struct { RK_U32 madp_thd0 : 12; RK_U32 reserved : 4; RK_U32 madp_thd1 : 12; RK_U32 reserved1 : 4; } atf_thd0; /* 0x00002064 reg2073 */ struct { RK_U32 madp_thd2 : 12; RK_U32 reserved : 4; RK_U32 madp_thd3 : 12; RK_U32 reserved1 : 4; } atf_thd1; /* 0x00002068 reg2074 */ struct { RK_U32 wgt0 : 8; RK_U32 wgt1 : 8; RK_U32 wgt2 : 8; RK_U32 wgt3 : 8; } atf_wgt0; /* 0x0000206c reg2075 */ struct { RK_U32 wgt4 : 8; RK_U32 reserved : 24; } atf_wgt1; } rdo_skip_par; typedef struct RdoNoSkipPar_t { /* 0x00002080 reg2080 */ struct { RK_U32 madp_thd0 : 12; RK_U32 reserved : 4; RK_U32 madp_thd1 : 12; RK_U32 reserved1 : 4; } ratf_thd0; /* 0x00002084 reg2081 */ struct { RK_U32 madp_thd2 : 12; RK_U32 reserved : 4; RK_U32 atf_bypass_pri_flag : 1; RK_U32 reserved1 : 15; } ratf_thd1; /* 0x00002088 reg2082 */ struct { RK_U32 wgt0 : 8; RK_U32 wgt1 : 8; RK_U32 wgt2 : 8; RK_U32 wgt3 : 8; } atf_wgt; } rdo_noskip_par; typedef struct Vepu510RoiRegion_t { struct { RK_U32 roi_lt_x : 10; RK_U32 reserved : 6; RK_U32 roi_lt_y : 10; RK_U32 reserved1 : 6; } roi_pos_lt; struct { RK_U32 roi_rb_x : 10; RK_U32 reserved : 6; RK_U32 roi_rb_y : 10; RK_U32 reserved1 : 6; } roi_pos_rb; struct { RK_U32 roi_qp_value : 7; RK_U32 roi_qp_adj_mode : 1; RK_U32 roi_pri : 5; RK_U32 roi_en : 1; RK_U32 reserved : 18; } roi_base; struct { RK_U32 roi_mdc_inter16 : 4; RK_U32 roi_mdc_skip16 : 4; RK_U32 roi_mdc_intra16 : 4; RK_U32 roi0_mdc_inter32_hevc : 4; RK_U32 roi0_mdc_skip32_hevc : 4; RK_U32 roi0_mdc_intra32_hevc : 4; RK_U32 roi0_mdc_dpth_hevc : 1; RK_U32 reserved : 7; } roi_mdc; } Vepu510RoiRegion; typedef struct Vepu510RoiCfg_t { /* 0x00001080 reg1056 */ struct { RK_U32 fmdc_adju_inter16 : 4; RK_U32 fmdc_adju_skip16 : 4; RK_U32 fmdc_adju_intra16 : 4; RK_U32 fmdc_adju_inter32 : 4; RK_U32 fmdc_adju_skip32 : 4; RK_U32 fmdc_adju_intra32 : 4; RK_U32 fmdc_adj_pri : 5; RK_U32 reserved : 3; } fmdc_adj0; /* 0x00001084 reg1057 */ struct { RK_U32 fmdc_adju_inter8 : 4; RK_U32 fmdc_adju_skip8 : 4; RK_U32 fmdc_adju_intra8 : 4; RK_U32 reserved : 20; } fmdc_adj1; RK_U32 reserved_1058; /* 0x0000108c reg1059 */ struct { RK_U32 bmap_en : 1; RK_U32 bmap_pri : 5; RK_U32 bmap_qpmin : 6; RK_U32 bmap_qpmax : 6; RK_U32 bmap_mdc_dpth : 1; RK_U32 reserved : 13; } bmap_cfg; /* 0x00001090 reg1060 - 0x0000110c reg1091 */ Vepu510RoiRegion regions[8]; } Vepu510RoiCfg; /* class: control/link */ /* 0x00000000 reg0 - 0x00000120 reg72 */ typedef struct Vepu510ControlCfg_t { /* 0x00000000 reg0 */ struct { RK_U32 sub_ver : 8; RK_U32 h264_cap : 1; RK_U32 hevc_cap : 1; RK_U32 reserved : 2; RK_U32 res_cap : 4; RK_U32 osd_cap : 2; RK_U32 filtr_cap : 2; RK_U32 bfrm_cap : 1; RK_U32 fbc_cap : 2; RK_U32 reserved1 : 1; RK_U32 ip_id : 8; } version; /* 0x00000004 - 0x0000000c */ RK_U32 reserved1_3[3]; /* 0x00000010 reg4 */ struct { RK_U32 lkt_num : 8; RK_U32 vepu_cmd : 3; RK_U32 reserved : 21; } enc_strt; /* 0x00000014 reg5 */ struct { RK_U32 safe_clr : 1; RK_U32 force_clr : 1; RK_U32 reserved : 30; } enc_clr; /* 0x00000018 reg6 */ struct { RK_U32 vswm_lcnt_soft : 14; RK_U32 vswm_fcnt_soft : 8; RK_U32 reserved : 2; RK_U32 dvbm_ack_soft : 1; RK_U32 dvbm_ack_sel : 1; RK_U32 dvbm_inf_sel : 1; RK_U32 reserved1 : 5; } vs_ldly; /* 0x0000001c */ RK_U32 reserved_7; /* 0x00000020 reg8 */ struct { RK_U32 enc_done_en : 1; RK_U32 lkt_node_done_en : 1; RK_U32 sclr_done_en : 1; RK_U32 vslc_done_en : 1; RK_U32 vbsf_oflw_en : 1; RK_U32 vbuf_lens_en : 1; RK_U32 enc_err_en : 1; RK_U32 vsrc_err_en : 1; RK_U32 wdg_en : 1; RK_U32 lkt_err_int_en : 1; RK_U32 lkt_err_stop_en : 1; RK_U32 lkt_force_stop_en : 1; RK_U32 jslc_done_en : 1; RK_U32 jbsf_oflw_en : 1; RK_U32 jbuf_lens_en : 1; RK_U32 dvbm_err_en : 1; RK_U32 reserved : 16; } int_en; /* 0x00000024 reg9 */ struct { RK_U32 enc_done_msk : 1; RK_U32 lkt_node_done_msk : 1; RK_U32 sclr_done_msk : 1; RK_U32 vslc_done_msk : 1; RK_U32 vbsf_oflw_msk : 1; RK_U32 vbuf_lens_msk : 1; RK_U32 enc_err_msk : 1; RK_U32 vsrc_err_msk : 1; RK_U32 wdg_msk : 1; RK_U32 lkt_err_int_msk : 1; RK_U32 lkt_err_stop_msk : 1; RK_U32 lkt_force_stop_msk : 1; RK_U32 jslc_done_msk : 1; RK_U32 jbsf_oflw_msk : 1; RK_U32 jbuf_lens_msk : 1; RK_U32 dvbm_err_msk : 1; RK_U32 reserved : 16; } int_msk; /* 0x00000028 reg10 */ struct { RK_U32 enc_done_clr : 1; RK_U32 lkt_node_done_clr : 1; RK_U32 sclr_done_clr : 1; RK_U32 vslc_done_clr : 1; RK_U32 vbsf_oflw_clr : 1; RK_U32 vbuf_lens_clr : 1; RK_U32 enc_err_clr : 1; RK_U32 vsrc_err_clr : 1; RK_U32 wdg_clr : 1; RK_U32 lkt_err_int_clr : 1; RK_U32 lkt_err_stop_clr : 1; RK_U32 lkt_force_stop_clr : 1; RK_U32 jslc_done_clr : 1; RK_U32 jbsf_oflw_clr : 1; RK_U32 jbuf_lens_clr : 1; RK_U32 dvbm_err_clr : 1; RK_U32 reserved : 16; } int_clr; /* 0x0000002c reg11 */ struct { RK_U32 enc_done_sta : 1; RK_U32 lkt_node_done_sta : 1; RK_U32 sclr_done_sta : 1; RK_U32 vslc_done_sta : 1; RK_U32 vbsf_oflw_sta : 1; RK_U32 vbuf_lens_sta : 1; RK_U32 enc_err_sta : 1; RK_U32 vsrc_err_sta : 1; RK_U32 wdg_sta : 1; RK_U32 lkt_err_int_sta : 1; RK_U32 lkt_err_stop_sta : 1; RK_U32 lkt_force_stop_sta : 1; RK_U32 jslc_done_sta : 1; RK_U32 jbsf_oflw_sta : 1; RK_U32 jbuf_lens_sta : 1; RK_U32 dvbm_err_sta : 1; RK_U32 reserved : 16; } int_sta; /* 0x00000030 reg12 */ struct { RK_U32 jpeg_bus_edin : 4; RK_U32 src_bus_edin : 4; RK_U32 meiw_bus_edin : 4; RK_U32 bsw_bus_edin : 4; RK_U32 reserved : 8; RK_U32 lktw_bus_edin : 4; RK_U32 rec_nfbc_bus_edin : 4; } dtrns_map; /* 0x00000034 reg13 */ struct { RK_U32 reserved : 16; RK_U32 axi_brsp_cke : 10; RK_U32 reserved1 : 6; } dtrns_cfg; /* 0x00000038 reg14 */ struct { RK_U32 vs_load_thd : 24; RK_U32 reserved : 8; } enc_wdg; /* 0x0000003c - 0x0000004c */ RK_U32 reserved15_19[5]; /* 0x00000050 reg20 */ struct { RK_U32 idle_en_core : 1; RK_U32 idle_en_axi : 1; RK_U32 idle_en_ahb : 1; RK_U32 reserved : 29; } enc_idle_en; /* 0x00000054 reg21 */ struct { RK_U32 cke : 1; RK_U32 resetn_hw_en : 1; RK_U32 rfpr_err_e : 1; RK_U32 sram_ckg_en : 1; RK_U32 link_err_stop : 1; RK_U32 reserved : 27; } opt_strg; /* 0x00000058 reg22 */ union { struct { RK_U32 tq8_ckg : 1; RK_U32 tq4_ckg : 1; RK_U32 bits_ckg_8x8 : 1; RK_U32 bits_ckg_4x4_1 : 1; RK_U32 bits_ckg_4x4_0 : 1; RK_U32 inter_mode_ckg : 1; RK_U32 inter_ctrl_ckg : 1; RK_U32 inter_pred_ckg : 1; RK_U32 intra8_ckg : 1; RK_U32 intra4_ckg : 1; RK_U32 reserved : 22; } h264; struct { RK_U32 recon32_ckg : 1; RK_U32 iqit32_ckg : 1; RK_U32 q32_ckg : 1; RK_U32 t32_ckg : 1; RK_U32 cabac32_ckg : 1; RK_U32 recon16_ckg : 1; RK_U32 iqit16_ckg : 1; RK_U32 q16_ckg : 1; RK_U32 t16_ckg : 1; RK_U32 cabac16_ckg : 1; RK_U32 recon8_ckg : 1; RK_U32 iqit8_ckg : 1; RK_U32 q8_ckg : 1; RK_U32 t8_ckg : 1; RK_U32 cabac8_ckg : 1; RK_U32 recon4_ckg : 1; RK_U32 iqit4_ckg : 1; RK_U32 q4_ckg : 1; RK_U32 t4_ckg : 1; RK_U32 cabac4_ckg : 1; RK_U32 intra32_ckg : 1; RK_U32 intra16_ckg : 1; RK_U32 intra8_ckg : 1; RK_U32 intra4_ckg : 1; RK_U32 inter_pred_ckg : 1; RK_U32 reserved : 7; } hevc; } rdo_ckg; /* 0x0000005c reg23 */ struct { RK_U32 core_id : 2; RK_U32 reserved : 30; } core_id; } Vepu510ControlCfg; /* 0x00000270 reg156 - 0x0000039c reg231 */ typedef struct Vepu510FrmCommon_t { /* 0x00000270 reg156 - 0x0000027c reg159 */ vepu510_online online_addr; /* 0x00000280 reg160 */ RK_U32 adr_src0; /* 0x00000284 reg161 */ RK_U32 adr_src1; /* 0x00000288 reg162 */ RK_U32 adr_src2; /* 0x0000028c reg163 */ RK_U32 rfpw_h_addr; /* 0x00000290 reg164 */ RK_U32 rfpw_b_addr; /* 0x00000294 reg165 */ RK_U32 rfpr_h_addr; /* 0x00000298 reg166 */ RK_U32 rfpr_b_addr; /* 0x0000029c reg167 */ RK_U32 colmvw_addr; /* 0x000002a0 reg168 */ RK_U32 colmvr_addr; /* 0x000002a4 reg169 */ RK_U32 dspw_addr; /* 0x000002a8 reg170 */ RK_U32 dspr_addr; /* 0x000002ac reg171 */ RK_U32 meiw_addr; /* 0x000002b0 reg172 */ RK_U32 bsbt_addr; /* 0x000002b4 reg173 */ RK_U32 bsbb_addr; /* 0x000002b8 reg174 */ RK_U32 adr_bsbs; /* 0x000002bc reg175 */ RK_U32 bsbr_addr; /* 0x000002c0 reg176 */ RK_U32 lpfw_addr; /* 0x000002c4 reg177 */ RK_U32 lpfr_addr; /* 0x000002c8 reg178 */ RK_U32 ebuft_addr; /* 0x000002cc reg179 */ RK_U32 ebufb_addr; /* 0x000002d0 reg180 */ RK_U32 rfpt_h_addr; /* 0x000002d4 reg181 */ RK_U32 rfpb_h_addr; /* 0x000002d8 reg182 */ RK_U32 rfpt_b_addr; /* 0x000002dc reg183 */ RK_U32 adr_rfpb_b; /* 0x000002e0 reg184 */ RK_U32 adr_smear_rd; /* 0x000002e4 reg185 */ RK_U32 adr_smear_wr; /* 0x000002e8 reg186 */ RK_U32 adr_roir; /* 0x2ec - 0x2fc */ RK_U32 reserved187_191[5]; /* 0x00000300 reg192 */ struct { RK_U32 enc_stnd : 2; RK_U32 cur_frm_ref : 1; RK_U32 mei_stor : 1; RK_U32 bs_scp : 1; RK_U32 reserved : 3; RK_U32 pic_qp : 6; RK_U32 num_pic_tot_cur_hevc : 5; RK_U32 log2_ctu_num_hevc : 5; RK_U32 reserved1 : 6; RK_U32 slen_fifo : 1; RK_U32 rec_fbc_dis : 1; } enc_pic; /* 0x00000304 reg193 */ struct { RK_U32 dchs_txid : 2; RK_U32 dchs_rxid : 2; RK_U32 dchs_txe : 1; RK_U32 dchs_rxe : 1; RK_U32 reserved : 2; RK_U32 dchs_dly : 8; RK_U32 dchs_ofst : 10; RK_U32 reserved1 : 6; } dual_core; /* 0x00000308 reg194 */ struct { RK_U32 frame_id : 8; RK_U32 frm_id_match : 1; RK_U32 reserved : 7; RK_U32 ch_id : 2; RK_U32 vrsp_rtn_en : 1; RK_U32 vinf_req_en : 1; RK_U32 reserved1 : 12; } enc_id; /* 0x0000030c reg195 */ RK_U32 bsp_size; /* 0x00000310 reg196 */ struct { RK_U32 pic_wd8_m1 : 11; RK_U32 reserved : 5; RK_U32 pic_hd8_m1 : 11; RK_U32 reserved1 : 5; } enc_rsl; /* 0x00000314 reg197 */ struct { RK_U32 pic_wfill : 6; RK_U32 reserved : 10; RK_U32 pic_hfill : 6; RK_U32 reserved1 : 10; } src_fill; /* 0x00000318 reg198 */ struct { RK_U32 alpha_swap : 1; RK_U32 rbuv_swap : 1; RK_U32 src_cfmt : 4; RK_U32 src_rcne : 1; RK_U32 out_fmt : 1; RK_U32 src_range_trns_en : 1; RK_U32 src_range_trns_sel : 1; RK_U32 chroma_ds_mode : 1; RK_U32 reserved : 21; } src_fmt; /* 0x0000031c reg199 */ struct { RK_U32 csc_wgt_b2y : 9; RK_U32 csc_wgt_g2y : 9; RK_U32 csc_wgt_r2y : 9; RK_U32 reserved : 5; } src_udfy; /* 0x00000320 reg200 */ struct { RK_U32 csc_wgt_b2u : 9; RK_U32 csc_wgt_g2u : 9; RK_U32 csc_wgt_r2u : 9; RK_U32 reserved : 5; } src_udfu; /* 0x00000324 reg201 */ struct { RK_U32 csc_wgt_b2v : 9; RK_U32 csc_wgt_g2v : 9; RK_U32 csc_wgt_r2v : 9; RK_U32 reserved : 5; } src_udfv; /* 0x00000328 reg202 */ struct { RK_U32 csc_ofst_v : 8; RK_U32 csc_ofst_u : 8; RK_U32 csc_ofst_y : 5; RK_U32 reserved : 11; } src_udfo; /* 0x0000032c reg203 */ struct { RK_U32 cr_force_value : 8; RK_U32 cb_force_value : 8; RK_U32 chroma_force_en : 1; RK_U32 reserved : 9; RK_U32 src_mirr : 1; RK_U32 src_rot : 2; RK_U32 tile4x4_en : 1; RK_U32 reserved1 : 2; } src_proc; /* 0x00000330 reg204 */ struct { RK_U32 pic_ofst_x : 14; RK_U32 reserved : 2; RK_U32 pic_ofst_y : 14; RK_U32 reserved1 : 2; } pic_ofst; /* 0x00000334 reg205 */ struct { RK_U32 src_strd0 : 21; RK_U32 reserved : 11; } src_strd0; /* 0x00000338 reg206 */ struct { RK_U32 src_strd1 : 16; RK_U32 reserved : 16; } src_strd1; /* 0x33c - 0x34c */ RK_U32 reserved207_211[5]; /* 0x00000350 reg212 */ struct { RK_U32 rc_en : 1; RK_U32 aq_en : 1; RK_U32 reserved : 10; RK_U32 rc_ctu_num : 20; } rc_cfg; /* 0x00000354 reg213 */ struct { RK_U32 reserved : 16; RK_U32 rc_qp_range : 4; RK_U32 rc_max_qp : 6; RK_U32 rc_min_qp : 6; } rc_qp; /* 0x00000358 reg214 */ struct { RK_U32 ctu_ebit : 20; RK_U32 reserved : 12; } rc_tgt; /* 0x35c */ RK_U32 reserved_215; /* 0x00000360 reg216 */ struct { RK_U32 sli_splt : 1; RK_U32 sli_splt_mode : 1; RK_U32 sli_splt_cpst : 1; RK_U32 reserved : 12; RK_U32 sli_flsh : 1; RK_U32 sli_max_num_m1 : 15; RK_U32 reserved1 : 1; } sli_splt; /* 0x00000364 reg217 */ struct { RK_U32 sli_splt_byte : 20; RK_U32 reserved : 12; } sli_byte; /* 0x00000368 reg218 */ struct { RK_U32 sli_splt_cnum_m1 : 20; RK_U32 reserved : 12; } sli_cnum; /* 0x0000036c reg219 */ struct { RK_U32 uvc_partition0_len : 12; RK_U32 uvc_partition_len : 12; RK_U32 uvc_skip_len : 6; RK_U32 reserved : 2; } vbs_pad; /* 0x00000370 reg220 */ struct { RK_U32 cime_srch_dwnh : 4; RK_U32 cime_srch_uph : 4; RK_U32 cime_srch_rgtw : 4; RK_U32 cime_srch_lftw : 4; RK_U32 dlt_frm_num : 16; } me_rnge; /* 0x00000374 reg221 */ struct { RK_U32 srgn_max_num : 7; RK_U32 cime_dist_thre : 13; RK_U32 rme_srch_h : 2; RK_U32 rme_srch_v : 2; RK_U32 rme_dis : 3; RK_U32 reserved : 1; RK_U32 fme_dis : 3; RK_U32 reserved1 : 1; } me_cfg; /* 0x00000378 reg222 */ struct { RK_U32 cime_zero_thre : 13; RK_U32 reserved : 15; RK_U32 fme_prefsu_en : 2; RK_U32 colmv_stor_hevc : 1; RK_U32 colmv_load_hevc : 1; } me_cach; /* 0x37c - 0x39c */ RK_U32 reserved223_231[9]; } Vepu510FrmCommon; /* class: rc/roi/aq/klut */ /* 0x00001000 reg1024 - 0x0000110c reg1091 */ typedef struct Vepu510RcRoi_t { /* 0x00001000 reg1024 */ struct { RK_U32 qp_adj0 : 5; RK_U32 qp_adj1 : 5; RK_U32 qp_adj2 : 5; RK_U32 qp_adj3 : 5; RK_U32 qp_adj4 : 5; RK_U32 reserved : 7; } rc_adj0; /* 0x00001004 reg1025 */ struct { RK_U32 qp_adj5 : 5; RK_U32 qp_adj6 : 5; RK_U32 qp_adj7 : 5; RK_U32 qp_adj8 : 5; RK_U32 reserved : 12; } rc_adj1; /* 0x00001008 reg1026 - 0x00001028 reg1034 */ RK_U32 rc_dthd_0_8[9]; /* 0x102c */ RK_U32 reserved_1035; /* 0x00001030 reg1036 */ struct { RK_U32 qpmin_area0 : 6; RK_U32 qpmax_area0 : 6; RK_U32 qpmin_area1 : 6; RK_U32 qpmax_area1 : 6; RK_U32 qpmin_area2 : 6; RK_U32 reserved : 2; } roi_qthd0; /* 0x00001034 reg1037 */ struct { RK_U32 qpmax_area2 : 6; RK_U32 qpmin_area3 : 6; RK_U32 qpmax_area3 : 6; RK_U32 qpmin_area4 : 6; RK_U32 qpmax_area4 : 6; RK_U32 reserved : 2; } roi_qthd1; /* 0x00001038 reg1038 */ struct { RK_U32 qpmin_area5 : 6; RK_U32 qpmax_area5 : 6; RK_U32 qpmin_area6 : 6; RK_U32 qpmax_area6 : 6; RK_U32 qpmin_area7 : 6; RK_U32 reserved : 2; } roi_qthd2; /* 0x0000103c reg1039 */ struct { RK_U32 qpmax_area7 : 6; RK_U32 reserved : 24; RK_U32 qpmap_mode : 2; } roi_qthd3; /* 0x00001040 reg1040 */ RK_U32 reserved_1040; /* 0x00001044 reg1041 - 0x00001050 reg1044 */ RK_U8 aq_tthd[16]; /* 0x00001054 reg1045 */ struct { RK_S32 aq_stp_s0 : 5; RK_S32 aq_stp_0t1 : 5; RK_S32 aq_stp_1t2 : 5; RK_S32 aq_stp_2t3 : 5; RK_S32 aq_stp_3t4 : 5; RK_S32 aq_stp_4t5 : 5; RK_S32 reserved : 2; } aq_stp0; /* 0x00001058 reg1046 */ struct { RK_S32 aq_stp_5t6 : 5; RK_S32 aq_stp_6t7 : 5; RK_S32 aq_stp_7t8 : 5; RK_S32 aq_stp_8t9 : 5; RK_S32 aq_stp_9t10 : 5; RK_S32 aq_stp_10t11 : 5; RK_S32 reserved : 2; } aq_stp1; /* 0x0000105c reg1047 */ struct { RK_S32 aq_stp_11t12 : 5; RK_S32 aq_stp_12t13 : 5; RK_S32 aq_stp_13t14 : 5; RK_S32 aq_stp_14t15 : 5; RK_S32 aq_stp_b15 : 5; RK_U32 reserved : 7; } aq_stp2; /* 0x00001060 reg1048 */ struct { RK_U32 aq16_rnge : 4; RK_U32 aq32_rnge : 4; RK_U32 aq8_rnge : 5; RK_U32 aq16_dif0 : 5; RK_U32 aq16_dif1 : 5; RK_U32 reserved : 1; RK_U32 aq_cme_en : 1; RK_U32 aq_subj_cme_en : 1; RK_U32 aq_rme_en : 1; RK_U32 aq_subj_rme_en : 1; RK_U32 reserved1 : 4; } aq_clip; /* 0x00001064 reg1049 */ struct { RK_U32 madi_th0 : 8; RK_U32 madi_th1 : 8; RK_U32 madi_th2 : 8; RK_U32 reserved : 8; } madi_st_thd; /* 0x00001068 reg1050 */ struct { RK_U32 madp_th0 : 12; RK_U32 reserved : 4; RK_U32 madp_th1 : 12; RK_U32 reserved1 : 4; } madp_st_thd0; /* 0x0000106c reg1051 */ struct { RK_U32 madp_th2 : 12; RK_U32 reserved : 20; } madp_st_thd1; /* 0x1070 - 0x1078 */ RK_U32 reserved1052_1054[3]; /* 0x0000107c reg1055 */ struct { RK_U32 chrm_klut_ofst : 4; RK_U32 reserved : 4; RK_U32 inter_chrm_dist_multi : 6; RK_U32 reserved1 : 18; } klut_ofst; /*0x00001080 reg1056 - 0x0000110c reg1091 */ Vepu510RoiCfg roi_cfg; } Vepu510RcRoi; /* class: scaling list */ /* 0x00002200 reg2176- 0x00002584 reg2401*/ typedef struct Vepu510SclCfg_t { /* 0x2200 - 0x221F, valid for h.264/h.h265, jpeg no use */ RK_U32 tu8_intra_y[16]; RK_U32 tu8_intra_u[16]; /* tu8_inter_y[16] for h.264 */ /* 0x2220 - 0x2584, valid for h.265 only */ RK_U32 tu8_intra_v[16]; RK_U32 tu8_inter_y[16]; RK_U32 tu8_inter_u[16]; RK_U32 tu8_inter_v[16]; RK_U32 tu16_intra_y_ac[16]; RK_U32 tu16_intra_u_ac[16]; RK_U32 tu16_intra_v_ac[16]; RK_U32 tu16_inter_y_ac[16]; RK_U32 tu16_inter_u_ac[16]; RK_U32 tu16_inter_v_ac[16]; RK_U32 tu32_intra_y_ac[16]; RK_U32 tu32_inter_y_ac[16]; /* 0x2580 */ struct { RK_U32 tu16_intra_y_dc : 8; RK_U32 tu16_intra_u_dc : 8; RK_U32 tu16_intra_v_dc : 8; RK_U32 tu16_inter_y_dc : 8; } tu_dc0; /* 0x2584 */ struct { RK_U32 tu16_inter_u_dc : 8; RK_U32 tu16_inter_v_dc : 8; RK_U32 tu32_intra_y_dc : 8; RK_U32 tu32_inter_y_dc : 8; } tu_dc1; } Vepu510SclCfg; /* class: st */ /* 0x00004000 reg4096 - 0x0000424c reg4243*/ typedef struct Vepu510Status_t { /* 0x00004000 reg4096 */ RK_U32 bs_lgth_l32; /* 0x00004004 reg4097 */ struct { RK_U32 bs_lgth_h8 : 8; RK_U32 reserved : 8; RK_U32 sse_l16 : 16; } st_sse_bsl; /* 0x00004008 reg4098 */ RK_U32 sse_h32; /* 0x0000400c reg4099 */ RK_U32 qp_sum; /* 0x00004010 reg4100 */ struct { RK_U32 sao_cnum : 16; RK_U32 sao_ynum : 16; } st_sao; /* 0x00004014 reg4101 */ RK_U32 rdo_head_bits; /* 0x00004018 reg4102 */ struct { RK_U32 rdo_head_bits_h8 : 8; RK_U32 reserved : 8; RK_U32 rdo_res_bits_l16 : 16; } st_head_res_bl; /* 0x0000401c reg4103 */ RK_U32 rdo_res_bits_h24; /* 0x00004020 reg4104 */ struct { RK_U32 st_enc : 2; RK_U32 st_sclr : 1; RK_U32 isp_src_oflw : 1; RK_U32 vepu_src_oflw : 1; RK_U32 vepu_fcnt_nmch : 1; RK_U32 vepu_fbd_err : 5; RK_U32 reserved : 5; RK_U32 dvbm_finf_wful : 1; RK_U32 dvbm_linf_wful : 1; RK_U32 dvbm_fcnt_late : 1; RK_U32 dvbm_fcnt_early : 1; RK_U32 dvbm_isp_oflw : 1; RK_U32 dvbm_vepu_oflw : 1; RK_U32 isp_time_out : 1; RK_U32 dvbm_vsrc_fcnt : 1; RK_U32 reserved1 : 8; } st_enc; /* 0x00004024 reg4105 */ struct { RK_U32 fnum_cfg_done : 8; RK_U32 fnum_cfg : 8; RK_U32 fnum_int : 8; RK_U32 fnum_enc_done : 8; } st_lkt; /* 0x00004028 reg4106 */ struct { RK_U32 reserved : 4; RK_U32 node_addr : 28; } st_nadr; /* 0x0000402c reg4107 */ struct { RK_U32 bsbw_ovfl : 1; RK_U32 reserved : 2; RK_U32 bsbw_addr : 28; RK_U32 reserved1 : 1; } st_bsb; /* 0x00004030 reg4108 */ struct { RK_U32 axib_idl : 8; RK_U32 axib_ovfl : 8; RK_U32 axib_err : 8; RK_U32 axir_err : 8; } st_bus; /* 0x00004034 reg4109 */ struct { RK_U32 sli_num_video : 6; RK_U32 sli_num_jpeg : 6; RK_U32 reserved : 4; RK_U32 bpkt_num_video : 7; RK_U32 bpkt_lst_video : 1; RK_U32 bpkt_num_jpeg : 7; RK_U32 bpkt_lst_jpeg : 1; } st_snum; /* 0x00004038 reg4110 */ struct { RK_U32 sli_len : 31; RK_U32 sli_lst : 1; } st_slen; /* 0x403c - reg4111 */ struct { RK_U32 task_id_proc : 12; RK_U32 task_id_done : 12; RK_U32 task_done : 1; RK_U32 task_lkt_err : 3; RK_U32 reserved : 4; } st_link_task; /* 0x4040 - 0x405c */ RK_U32 reserved4111_4119[8]; /* 0x00004060 reg4120 */ struct { RK_U32 sli_len_jpeg : 31; RK_U32 sli_lst_jpeg : 1; } st_slen_jpeg; /* 0x00004064 reg4121 */ RK_U32 jpeg_head_bits_l32; /* 0x00004068 reg4122 */ struct { RK_U32 jpeg_head_bits_h8 : 1; RK_U32 reserved : 31; } st_bsl_h8_jpeg; /* 0x0000406c reg4123 */ struct { RK_U32 jbsbw_ovfl : 1; RK_U32 reserved : 2; RK_U32 jbsbw_addr : 28; RK_U32 reserved1 : 1; } st_jbsb; /* 0x4070 - 0x407c */ RK_U32 reserved4124_4127[4]; /* 0x00004080 reg4128 */ struct { RK_U32 pnum_p64 : 17; RK_U32 reserved : 15; } st_pnum_p64; /* 0x00004084 reg4129 */ struct { RK_U32 pnum_p32 : 19; RK_U32 reserved : 13; } st_pnum_p32; /* 0x00004088 reg4130 */ struct { RK_U32 pnum_p16 : 21; RK_U32 reserved : 11; } st_pnum_p16; /* 0x0000408c reg4131 */ struct { RK_U32 pnum_p8 : 23; RK_U32 reserved : 9; } st_pnum_p8; /* 0x00004090 reg4132 */ struct { RK_U32 pnum_i32 : 19; RK_U32 reserved : 13; } st_pnum_i32; /* 0x00004094 reg4133 */ struct { RK_U32 pnum_i16 : 21; RK_U32 reserved : 11; } st_pnum_i16; /* 0x00004098 reg4134 */ struct { RK_U32 pnum_i8 : 23; RK_U32 reserved : 9; } st_pnum_i8; /* 0x0000409c reg4135 */ struct { RK_U32 pnum_i4 : 23; RK_U32 reserved : 9; } st_pnum_i4; /* 0x000040a0 reg4136 */ struct { RK_U32 num_b16 : 23; RK_U32 reserved : 9; } st_bnum_b16; /* 0x000040a4 reg4137 */ struct { RK_U32 rdo_smear_cnt0 : 8; RK_U32 rdo_smear_cnt1 : 8; RK_U32 rdo_smear_cnt2 : 8; RK_U32 rdo_smear_cnt3 : 8; } st_smear_cnt; /* 0x000040a8 reg4138 */ RK_U32 madi16_sum; /* 0x000040ac reg4139 */ RK_U32 madi32_sum; /* 0x000040b0 reg4140 */ RK_U32 madp16_sum; /* 0x40b4 - 0x40bc */ RK_U32 reserved4141_4143[3]; /* 0x000040c0 reg4144 */ struct { RK_U32 madi_th_lt_cnt0 : 16; RK_U32 madi_th_lt_cnt1 : 16; } st_madi_lt_num0; /* 0x000040c4 reg4145 */ struct { RK_U32 madi_th_lt_cnt2 : 16; RK_U32 madi_th_lt_cnt3 : 16; } st_madi_lt_num1; /* 0x000040c8 reg4146 */ struct { RK_U32 madi_th_rt_cnt0 : 16; RK_U32 madi_th_rt_cnt1 : 16; } st_madi_rt_num0; /* 0x000040cc reg4147 */ struct { RK_U32 madi_th_rt_cnt2 : 16; RK_U32 madi_th_rt_cnt3 : 16; } st_madi_rt_num1; /* 0x000040d0 reg4148 */ struct { RK_U32 madi_th_lb_cnt0 : 16; RK_U32 madi_th_lb_cnt1 : 16; } st_madi_lb_num0; /* 0x000040d4 reg4149 */ struct { RK_U32 madi_th_lb_cnt2 : 16; RK_U32 madi_th_lb_cnt3 : 16; } st_madi_lb_num1; /* 0x000040d8 reg4150 */ struct { RK_U32 madi_th_rb_cnt0 : 16; RK_U32 madi_th_rb_cnt1 : 16; } st_madi_rb_num0; /* 0x000040dc reg4151 */ struct { RK_U32 madi_th_rb_cnt2 : 16; RK_U32 madi_th_rb_cnt3 : 16; } st_madi_rb_num1; /* 0x000040e0 reg4152 */ struct { RK_U32 madp_th_lt_cnt0 : 16; RK_U32 madp_th_lt_cnt1 : 16; } st_madp_lt_num0; /* 0x000040e4 reg4153 */ struct { RK_U32 madp_th_lt_cnt2 : 16; RK_U32 madp_th_lt_cnt3 : 16; } st_madp_lt_num1; /* 0x000040e8 reg4154 */ struct { RK_U32 madp_th_rt_cnt0 : 16; RK_U32 madp_th_rt_cnt1 : 16; } st_madp_rt_num0; /* 0x000040ec reg4155 */ struct { RK_U32 madp_th_rt_cnt2 : 16; RK_U32 madp_th_rt_cnt3 : 16; } st_madp_rt_num1; /* 0x000040f0 reg4156 */ struct { RK_U32 madp_th_lb_cnt0 : 16; RK_U32 madp_th_lb_cnt1 : 16; } st_madp_lb_num0; /* 0x000040f4 reg4157 */ struct { RK_U32 madp_th_lb_cnt2 : 16; RK_U32 madp_th_lb_cnt3 : 16; } st_madp_lb_num1; /* 0x000040f8 reg4158 */ struct { RK_U32 madp_th_rb_cnt0 : 16; RK_U32 madp_th_rb_cnt1 : 16; } st_madp_rb_num0; /* 0x000040fc reg4159 */ struct { RK_U32 madp_th_rb_cnt2 : 16; RK_U32 madp_th_rb_cnt3 : 16; } st_madp_rb_num1; /* 0x00004100 reg4160 */ struct { RK_U32 cmv_th_lt_cnt0 : 16; RK_U32 cmv_th_lt_cnt1 : 16; } st_cmv_lt_num0; /* 0x00004104 reg4161 */ struct { RK_U32 cmv_th_lt_cnt2 : 16; RK_U32 cmv_th_lt_cnt3 : 16; } st_cmv_lt_num1; /* 0x00004108 reg4162 */ struct { RK_U32 cmv_th_rt_cnt0 : 16; RK_U32 cmv_th_rt_cnt1 : 16; } st_cmv_rt_num0; /* 0x0000410c reg4163 */ struct { RK_U32 cmv_th_rt_cnt2 : 16; RK_U32 cmv_th_rt_cnt3 : 16; } st_cmv_rt_num1; /* 0x00004110 reg4164 */ struct { RK_U32 cmv_th_lb_cnt0 : 16; RK_U32 cmv_th_lb_cnt1 : 16; } st_cmv_lb_num0; /* 0x00004114 reg4165 */ struct { RK_U32 cmv_th_lb_cnt2 : 16; RK_U32 cmv_th_lb_cnt3 : 16; } st_cmv_lb_num1; /* 0x00004118 reg4166 */ struct { RK_U32 cmv_th_rb_cnt0 : 16; RK_U32 cmv_th_rb_cnt1 : 16; } st_cmv_rb_num0; /* 0x0000411c reg4167 */ struct { RK_U32 cmv_th_rb_cnt2 : 16; RK_U32 cmv_th_rb_cnt3 : 16; } st_cmv_rb_num1; /* 0x00004120 reg4168 */ struct { RK_U32 org_y_r_max_value : 8; RK_U32 org_y_r_min_value : 8; RK_U32 org_u_g_max_value : 8; RK_U32 org_u_g_min_value : 8; } st_vsp_org_value0; /* 0x00004124 reg4169 */ struct { RK_U32 org_v_b_max_value : 8; RK_U32 org_v_b_min_value : 8; RK_U32 reserved : 16; } st_vsp_org_value1; /* 0x4128 - 0x412c */ RK_U32 reserved4170_4171[2]; /* 0x00004130 reg4172 */ RK_U32 dsp_y_sum; /* 0x00004134 reg4173 */ RK_U32 acc_zero_mv; /* 0x00004138 reg4174 */ RK_U32 acc_dist0; /* 0x0000413c reg4175 */ RK_U32 acc_block_num; /* 0x00004140 reg4176 */ struct { RK_U32 num0_point_skin : 15; RK_U32 acc_cmplx_num : 17; } st_skin_sum0; /* 0x00004144 reg4177 */ struct { RK_U32 num1_point_skin : 15; RK_U32 acc_cover16_num : 17; } st_skin_sum1; /* 0x00004148 reg4178 */ struct { RK_U32 num2_point_skin : 15; RK_U32 acc_bndry16_num : 17; } st_skin_sum2; /* 0x0000414c reg4179 */ RK_U32 num0_grdnt_point_dep0; /* 0x00004150 reg4180 */ RK_U32 num1_grdnt_point_dep0; /* 0x00004154 reg4181 */ RK_U32 num2_grdnt_point_dep0; /* 0x4158 - 0x417c */ RK_U32 reserved4182_4191[10]; /* 0x00004180 reg4192 - 0x0000424c reg4243*/ RK_U32 st_b8_qp[52]; } Vepu510Status; /* class: dbg/st/axipn */ /* 0x00005000 reg5120 - 0x0000230 reg5260*/ //TODO: typedef struct Vepu510Dbg_t { /* 0x00005000 reg5120 */ struct { RK_U32 vsp0_pos_x : 16; RK_U32 vsp0_pos_y : 16; } st_ppl_pos_vsp0; /* 0x00005004 reg5121 */ struct { RK_U32 vsp1_pos_x : 16; RK_U32 vsp1_pos_y : 16; } st_ppl_pos_vsp1; /* 0x00005008 reg5122 */ struct { RK_U32 cme_pos_x : 16; RK_U32 cme_pos_y : 16; } st_ppl_pos_cme; /* 0x0000500c reg5123 */ struct { RK_U32 swin_cmd_x : 16; RK_U32 swin_cmd_y : 16; } st_ppl_cmd_swin; /* 0x00005010 reg5124 */ struct { RK_U32 swin_pos_x : 16; RK_U32 swin_pos_y : 16; } st_ppl_pos_swin; /* 0x00005014 reg5125 */ struct { RK_U32 pren_pos_x : 16; RK_U32 pren_pos_y : 16; } st_ppl_pos_pren; /* 0x00005018 reg5126 */ struct { RK_U32 rfme_pos_x : 16; RK_U32 rfme_pos_y : 16; } st_ppl_pos_rfme; /* 0x0000501c reg5127 */ struct { RK_U32 rdo_pos_x : 16; RK_U32 rdo_pos_y : 16; } st_ppl_pos_rdo; /* 0x00005020 reg5128 */ struct { RK_U32 lpf_pos_x : 16; RK_U32 lpf_pos_y : 16; } st_ppl_pos_lpf; /* 0x00005024 reg5129 */ struct { RK_U32 etpy_pos_x : 16; RK_U32 etpy_pos_y : 16; } st_ppl_pos_etpy; /* 0x00005028 reg5130 */ struct { RK_U32 vsp0_pos_x : 16; RK_U32 vsp0_pos_y : 16; } st_ppl_pos_jsp0; /* 0x0000502c reg5131 */ struct { RK_U32 vsp1_pos_x : 16; RK_U32 vsp1_pos_y : 16; } st_ppl_pos_jsp1; /* 0x00005030 reg5132 */ struct { RK_U32 jpeg_pos_x : 16; RK_U32 jpeg_pos_y : 16; } st_ppl_pos_jpeg; /* 0x5034 - 0x503c */ RK_U32 reserved5133_5135[3]; /* 0x00005040 reg5136 */ struct { RK_U32 vsp0_org_err : 1; RK_U32 vsp0_vsld_err : 1; RK_U32 pp0_pp1_err : 1; RK_U32 vsp0_cmd_err : 1; RK_U32 reserved : 24; RK_U32 vsp0_wrk : 1; RK_U32 vsp0_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_vsp0; /* 0x00005044 reg5137 */ struct { RK_U32 vsp1_org_err : 1; RK_U32 vsp1_rdo_err : 1; RK_U32 reserved : 26; RK_U32 vsp1_wrk : 1; RK_U32 vsp1_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_vsp1; /* 0x00005048 reg5138 */ struct { RK_U32 cme_org_err : 1; RK_U32 cme_roi_err : 1; RK_U32 cme_win_err : 1; RK_U32 cme_cmmv_err : 1; RK_U32 cme_smvp_err : 1; RK_U32 cme_meiw_err : 1; RK_U32 cme_dist_err : 1; RK_U32 cme_rdo_err : 1; RK_U32 cme_madp_err : 1; RK_U32 cme_mv_err : 1; RK_U32 reserved : 18; RK_U32 cme_wrk : 1; RK_U32 cme_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_cme; /* 0x0000504c reg5139 */ struct { RK_U32 swin_org_err : 1; RK_U32 swin_ref_err : 1; RK_U32 swin_cmd_err : 1; RK_U32 reserved : 25; RK_U32 swin_wrk : 1; RK_U32 swin_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_swin; /* 0x00005050 reg5140 */ struct { RK_U32 swin_buff_ptr : 2; RK_U32 swin_buff_num0 : 2; RK_U32 swin_buff_num1 : 2; RK_U32 swin_buff_num2 : 2; RK_U32 reserved : 24; } dbg_ppl_swin; /* 0x00005054 reg5141 */ struct { RK_U32 pnra_org_err : 1; RK_U32 pnra_dist_err : 1; RK_U32 pnra_olm_err : 1; RK_U32 reserved : 25; RK_U32 pnra_wrk : 1; RK_U32 pnra_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_pren; /* 0x00005058 reg5142 */ struct { RK_U32 rfme_org_err : 1; RK_U32 rfme_ref_err : 1; RK_U32 rfme_cmmv_err : 1; RK_U32 rfme_rfmv_err : 1; RK_U32 rfme_tmvp_err : 1; RK_U32 reserved : 23; RK_U32 rfme_wrk : 1; RK_U32 rfme_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_rfme; /* 0x0000505c reg5143 */ struct { RK_U32 rdo_org_err : 1; RK_U32 rdo_ref_err : 1; RK_U32 rdo_inf_err : 1; RK_U32 rdo_roi_err : 1; RK_U32 rdo_rfmv_err : 1; RK_U32 rdo_lbfr_err : 1; RK_U32 rdo_lbfw_err : 1; RK_U32 rdo_tmvp_rd_err : 1; RK_U32 rdo_tmvp_wr_err : 1; RK_U32 rdo_st_err : 1; RK_U32 rdo_pnra_err : 1; RK_U32 rdo_lpf_err : 1; RK_U32 rdo_ent_err : 1; RK_U32 reserved : 15; RK_U32 rdo_wrk : 1; RK_U32 rdo_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_rdo; /* 0x00005060 reg5144 */ struct { RK_U32 lpf_org_err : 1; RK_U32 lpf_lbfr_err : 1; RK_U32 lpf_lbfw_err : 1; RK_U32 lpf_rcol_err : 1; RK_U32 reserved : 24; RK_U32 lpf_wrk : 1; RK_U32 lpf_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_lpf; /* 0x00005064 reg5145 */ struct { RK_U32 etpy_bsw_err : 1; RK_U32 reserved : 27; RK_U32 etpy_wrk : 1; RK_U32 etpy_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_etpy; /* 0x00005068 reg5146 */ struct { RK_U32 jsp0_org_err : 1; RK_U32 jsp0_vsld_err : 1; RK_U32 pp0_pp1_err : 1; RK_U32 jsp0_cmd_err : 1; RK_U32 reserved : 24; RK_U32 jsp0_wrk : 1; RK_U32 jsp0_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_jsp0; /* 0x0000506c reg5147 */ struct { RK_U32 jsp1_org_err : 1; RK_U32 jsp1_madi_err : 1; RK_U32 reserved : 26; RK_U32 jsp1_wrk : 1; RK_U32 jsp1_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_jsp1; /* 0x00005070 reg5148 */ struct { RK_U32 jpeg_org_err : 1; RK_U32 reserved : 27; RK_U32 jpeg_wrk : 1; RK_U32 jpeg_tout : 1; RK_U32 reserved1 : 2; } dbg_ctrl_jpeg; /* 0x00005074 reg5149 */ struct { RK_U32 dma_brsp_idle : 1; RK_U32 jpeg_frm_done : 1; RK_U32 rdo_frm_done : 1; RK_U32 lpf_frm_done : 1; RK_U32 ent_frm_done : 1; RK_U32 ppl_ctrl_done : 1; RK_U32 criw_frm_done : 1; RK_U32 meiw_frm_done : 1; RK_U32 smiw_frm_done : 1; RK_U32 strg_rsrc_done : 1; RK_U32 reserved : 18; RK_U32 frm_wrk : 1; RK_U32 frm_tout : 1; RK_U32 reserved1 : 2; } dbg_tctrl0; /* 0x00005078 reg5150 */ struct { RK_U32 pp0_cmd_vld : 1; RK_U32 pp0_cmd_rdy : 1; RK_U32 pp0_cmd_eid : 1; RK_U32 cme_madp_vld : 1; RK_U32 cme_madp_rdy0 : 1; RK_U32 cmd_madp_rdy1 : 1; RK_U32 cme_mv16_vld : 1; RK_U32 cmd_mv16_rdy : 1; RK_U32 swin_cmd_vld : 1; RK_U32 swin_cmd_rdy : 1; RK_U32 pnra_olm_vld : 1; RK_U32 pnra_olm_rdy : 1; RK_U32 lpf_rcol_vld : 1; RK_U32 lpf_rcol_rdy : 1; RK_U32 bsw_dat_vld : 1; RK_U32 bsw_dat_rdy : 1; RK_U32 slc_fifo_full : 1; RK_U32 reserved : 15; } dbg_tctrl1; /* 0x507c */ RK_U32 reserved_5151; /* 0x00005080 reg5152 */ struct { RK_U32 sli_num : 15; RK_U32 reserved : 17; } st_sli_num; /* 0x5084 - 0x50fc */ RK_U32 reserved5153_5183[31]; /* 0x00005100 reg5184 */ struct { RK_U32 empty_oafifo : 1; RK_U32 full_cmd_oafifo : 1; RK_U32 full_data_oafifo : 1; RK_U32 empty_iafifo : 1; RK_U32 full_cmd_iafifo : 1; RK_U32 full_info_iafifo : 1; RK_U32 fbd_brq_st : 4; RK_U32 fbd_hdr_vld : 1; RK_U32 fbd_bmng_end : 1; RK_U32 nfbd_req_st : 4; RK_U32 acc_axi_cmd : 8; RK_U32 reserved : 8; } dbg_pp_st; /* 0x00005104 reg5185 */ struct { RK_U32 r_ena_lambd : 1; RK_U32 r_fst_swinw_end : 1; RK_U32 r_swinw_end : 1; RK_U32 r_cnt_swinw : 1; RK_U32 r_dspw_end : 1; RK_U32 r_dspw_cnt : 1; RK_U32 i_sjgen_work : 1; RK_U32 r_end_rspgen : 1; RK_U32 r_cost_gate : 1; RK_U32 r_ds_gate : 1; RK_U32 r_mvp_gate : 1; RK_U32 i_smvp_arrdy : 1; RK_U32 i_smvp_arvld : 1; RK_U32 i_stptr_wrdy : 1; RK_U32 i_stptr_wvld : 1; RK_U32 i_rdy_atf : 1; RK_U32 i_vld_atf : 1; RK_U32 i_rdy_bmv16 : 1; RK_U32 i_vld_bmv16 : 1; RK_U32 i_wr_dsp : 1; RK_U32 i_rdy_dsp : 1; RK_U32 i_vld_dsp : 1; RK_U32 r_rdy_org : 1; RK_U32 i_vld_org : 1; RK_U32 i_rdy_state : 1; RK_U32 i_vld_state : 1; RK_U32 i_rdy_madp : 1; RK_U32 i_vld_madp : 1; RK_U32 i_rdy_diff : 1; RK_U32 i_vld_diff : 1; RK_U32 reserved : 2; } dbg_cime_st; /* 0x00005108 reg5186 */ RK_U32 swin_dbg_inf; /* 0x0000510c reg5187 */ struct { RK_U32 bbrq_cmps_left_len2 : 1; RK_U32 bbrq_cmps_left_len1 : 1; RK_U32 cmps_left_len0 : 1; RK_U32 bbrq_rdy2 : 1; RK_U32 dcps_vld2 : 1; RK_U32 bbrq_rdy1 : 1; RK_U32 dcps_vld1 : 1; RK_U32 bbrq_rdy0 : 1; RK_U32 dcps_vld0 : 1; RK_U32 hb_rdy2 : 1; RK_U32 bbrq_vld2 : 1; RK_U32 hb_rdy1 : 1; RK_U32 bbrq_vld1 : 1; RK_U32 hb_rdy0 : 1; RK_U32 bbrq_vld0 : 1; RK_U32 idle_msb2 : 1; RK_U32 idle_msb1 : 1; RK_U32 idle_msb0 : 1; RK_U32 cur_state_dcps : 1; RK_U32 cur_state_bbrq : 1; RK_U32 cur_state_hb : 1; RK_U32 cke_bbrq_dcps : 1; RK_U32 cke_dcps : 1; RK_U32 cke_bbrq : 1; RK_U32 rdy_lwcd_rsp : 1; RK_U32 vld_lwcd_rsp : 1; RK_U32 rdy_lwcd_req : 1; RK_U32 vld_lwcd_req : 1; RK_U32 rdy_lwrsp : 1; RK_U32 vld_lwrsp : 1; RK_U32 rdy_lwreq : 1; RK_U32 vld_lwreq : 1; } dbg_fbd_hhit0; /* 0x00005110 reg5188 */ RK_U32 rfme_dbg_inf; /* 0x00005114 reg5189 */ struct { RK_U32 mscnt_clr : 1; RK_U32 reserved : 31; } dbg_cach_clr; /* 0x00005118 reg5190 */ RK_U32 l1_mis; /* 0x0000511c reg5191 */ RK_U32 l2_mis; /* 0x00005120 reg5192 */ RK_U32 rdo_dbg0; /* 0x00005124 reg5193 */ RK_U32 rdo_dbg1; /* 0x00005128 reg5194 */ struct { RK_U32 h264_sh_st_cs : 4; RK_U32 rsd_st_cs : 4; RK_U32 h264_sd_st_cs : 5; RK_U32 etpy_rdy : 1; RK_U32 reserved : 18; } dbg_etpy; /* 0x0000512c reg5195 */ struct { RK_U32 chl_aw_vld : 10; RK_U32 chl_aw_rdy : 10; RK_U32 aw_vld_arb : 1; RK_U32 aw_rdy_arb : 1; RK_U32 aw_vld_crosclk : 1; RK_U32 aw_rdy_crosclk : 1; RK_U32 aw_rdy_mmu : 1; RK_U32 aw_vld_mmu : 1; RK_U32 aw_rdy_axi : 1; RK_U32 aw_vld_axi : 1; RK_U32 reserved : 4; } dbg_dma_aw; /* 0x00005130 reg5196 */ struct { RK_U32 chl_w_vld : 10; RK_U32 chl_w_rdy : 10; RK_U32 w_vld_arb : 1; RK_U32 w_rdy_arb : 1; RK_U32 w_vld_crosclk : 1; RK_U32 w_rdy_crosclk : 1; RK_U32 w_rdy_mmu : 1; RK_U32 w_vld_mmu : 1; RK_U32 w_rdy_axi : 1; RK_U32 w_vld_axi : 1; RK_U32 reserved : 4; } dbg_dma_w; /* 0x00005134 reg5197 */ struct { RK_U32 chl_ar_vld : 9; RK_U32 chl_ar_rdy : 9; RK_U32 reserved : 2; RK_U32 ar_vld_arb : 1; RK_U32 ar_rdy_arb : 1; RK_U32 ar_vld_crosclk : 1; RK_U32 ar_rdy_crosclk : 1; RK_U32 ar_rdy_mmu : 1; RK_U32 ar_vld_mmu : 1; RK_U32 ar_rdy_axi : 1; RK_U32 ar_vld_axi : 1; RK_U32 reserved1 : 4; } dbg_dma_ar; /* 0x00005138 reg5198 */ struct { RK_U32 chl_r_vld : 9; RK_U32 chl_r_rdy : 9; RK_U32 reserved : 2; RK_U32 r_vld_arb : 1; RK_U32 r_rdy_arb : 1; RK_U32 r_vld_crosclk : 1; RK_U32 r_rdy_crosclk : 1; RK_U32 r_rdy_mmu : 1; RK_U32 r_vld_mmu : 1; RK_U32 r_rdy_axi : 1; RK_U32 r_vld_axi : 1; RK_U32 b_rdy_mmu : 1; RK_U32 b_vld_mmu : 1; RK_U32 b_rdy_axi : 1; RK_U32 b_vld_axi : 1; } dbg_dma_r; /* 0x513c */ RK_U32 reserved_5199; /* 0x00005140 reg5200 */ struct { RK_U32 bsw_fsm_stus : 4; RK_U32 bsw_aw_full : 1; RK_U32 bsw_rdy_ent : 1; RK_U32 bsw_vld_ent : 1; RK_U32 jpg_bsw_stus : 4; RK_U32 jpg_aw_full : 1; RK_U32 jpg_bsw_rdy : 1; RK_U32 jpg_bsw_vld : 1; RK_U32 crpw_fsm_stus : 3; RK_U32 hdwr_rdy : 1; RK_U32 hdwr_vld : 1; RK_U32 bdwr_rdy : 1; RK_U32 bdwr_vld : 1; RK_U32 nfbc_rdy : 1; RK_U32 nfbc_vld : 1; RK_U32 dsp_fsm_stus : 2; RK_U32 dsp_wr_flg : 1; RK_U32 dsp_rsy : 1; RK_U32 dsp_vld : 1; RK_U32 lpfw_fsm_stus : 3; RK_U32 reserved : 1; } dbg_dma_dbg1; /* 0x5144 */ RK_U32 reserved_5201; /* 0x00005148 reg5202 */ struct { RK_U32 rdo_st : 20; RK_U32 reserved : 12; } dbg_rdo_st; /* 0x0000514c reg5203 */ struct { RK_U32 lpf_work : 1; RK_U32 rdo_par_nrdy : 1; RK_U32 rdo_rcn_nrdy : 1; RK_U32 lpf_rcn_rdy : 1; RK_U32 dblk_work : 1; RK_U32 sao_work : 1; RK_U32 reserved : 18; RK_U32 tile_bdry_read : 1; RK_U32 tile_bdry_write : 1; RK_U32 tile_bdry_rrdy : 1; RK_U32 rdo_read_tile_bdry : 1; RK_U32 rdo_write_tile_bdry : 1; RK_U32 reserved1 : 3; } dbg_lpf; /* 0x5150 */ RK_U32 reserved_5204; /* 0x00005154 reg5205 */ RK_U32 dbg0_cache; /* 0x00005158 reg5206 */ RK_U32 dbg1_cache; /* 0x0000515c reg5207 */ RK_U32 dbg2_cache; /* 0x00005160 reg5208 */ struct { RK_U32 ebuf_diff_cmd : 8; RK_U32 lbuf_lpf_ncnt : 7; RK_U32 lbuf_lpf_cien : 1; RK_U32 lbuf_rdo_ncnt : 7; RK_U32 lbuf_rdo_cien : 1; RK_U32 reserved : 8; } dbg_lbuf0; /* 0x00005164 reg5209 */ struct { RK_U32 rvld_ebfr : 1; RK_U32 rrdy_ebfr : 1; RK_U32 arvld_ebfr : 1; RK_U32 arrdy_ebfr : 1; RK_U32 wvld_ebfw : 1; RK_U32 wrdy_ebfw : 1; RK_U32 awvld_ebfw : 1; RK_U32 awrdy_ebfw : 1; RK_U32 lpf_lbuf_rvld : 1; RK_U32 lpf_lbuf_rrdy : 1; RK_U32 lpf_lbuf_wvld : 1; RK_U32 lpf_lbuf_wrdy : 1; RK_U32 rdo_lbuf_rvld : 1; RK_U32 rdo_lbuf_rrdy : 1; RK_U32 rdo_lbuf_wvld : 1; RK_U32 rdo_lbuf_wrdy : 1; RK_U32 fme_lbuf_rvld : 1; RK_U32 fme_lbuf_rrdy : 1; RK_U32 cme_lbuf_rvld : 1; RK_U32 cme_lbuf_rrdy : 1; RK_U32 smear_lbuf_rvld : 1; RK_U32 smear_lbuf_rrdy : 1; RK_U32 smear_lbuf_wvld : 1; RK_U32 smear_lbuf_wrdy : 1; RK_U32 rdo_lbufw_flag : 1; RK_U32 rdo_lbufr_flag : 1; RK_U32 cme_lbufr_flag : 1; RK_U32 reserved : 5; } dbg_lbuf1; /* 0x00005168 reg5210 */ struct { RK_U32 dbg_isp_fcnt : 8; RK_U32 dbg_isp_fcyc : 24; } dbg_dvbm_isp0; /* 0x0000516c reg5211 */ struct { RK_U32 dbg_isp_lcnt : 14; RK_U32 reserved : 1; RK_U32 dbg_isp_ltgl : 1; RK_U32 dbg_isp_fcnt : 8; RK_U32 dbg_isp_oflw : 1; RK_U32 dbg_isp_ftgl : 1; RK_U32 dbg_isp_full : 1; RK_U32 dbg_isp_work : 1; RK_U32 dbg_isp_lvld : 1; RK_U32 dbg_isp_lrdy : 1; RK_U32 dbg_isp_fvld : 1; RK_U32 dbg_isp_frdy : 1; } dbg_dvbm_isp1; /* 0x00005170 reg5212 */ struct { RK_U32 dbg_bf0_isp_lcnt : 14; RK_U32 dbg_bf0_isp_llst : 1; RK_U32 dbg_bf0_isp_sofw : 1; RK_U32 dbg_bf0_isp_fcnt : 8; RK_U32 dbg_bf0_isp_pnt : 1; RK_U32 reserved : 3; RK_U32 dbg_bf0_vpu_pnt : 1; RK_U32 reserved1 : 3; } dbg_dvbm_buf0_inf0; /* 0x00005174 reg5213 */ struct { RK_U32 dbg_bf0_src_lcnt : 14; RK_U32 dbg_bf0_src_llst : 1; RK_U32 reserved : 1; RK_U32 dbg_bf0_vpu_lcnt : 14; RK_U32 dbg_bf0_vpu_llst : 1; RK_U32 dbg_bf0_vpu_vofw : 1; } dbg_dvbm_buf0_inf1; /* 0x00005178 reg5214 */ struct { RK_U32 dbg_bf1_isp_lcnt : 14; RK_U32 dbg_bf1_isp_llst : 1; RK_U32 dbg_bf1_isp_sofw : 1; RK_U32 dbg_bf1_isp_fcnt : 1; RK_U32 reserved : 7; RK_U32 dbg_bf1_isp_pnt : 1; RK_U32 reserved1 : 3; RK_U32 dbg_bf1_vpu_pnt : 1; RK_U32 reserved2 : 3; } dbg_dvbm_buf1_inf0; /* 0x0000517c reg5215 */ struct { RK_U32 dbg_bf1_src_lcnt : 14; RK_U32 dbg_bf1_src_llst : 1; RK_U32 reserved : 1; RK_U32 dbg_bf1_vpu_lcnt : 14; RK_U32 dbg_bf1_vpu_llst : 1; RK_U32 dbg_bf1_vpu_vofw : 1; } dbg_dvbm_buf1_inf1; /* 0x00005180 reg5216 */ struct { RK_U32 dbg_bf2_isp_lcnt : 14; RK_U32 dbg_bf2_isp_llst : 1; RK_U32 dbg_bf2_isp_sofw : 1; RK_U32 dbg_bf2_isp_fcnt : 1; RK_U32 reserved : 7; RK_U32 dbg_bf2_isp_pnt : 1; RK_U32 reserved1 : 3; RK_U32 dbg_bf2_vpu_pnt : 1; RK_U32 reserved2 : 3; } dbg_dvbm_buf2_inf0; /* 0x00005184 reg5217 */ struct { RK_U32 dbg_bf2_src_lcnt : 14; RK_U32 dbg_bf2_src_llst : 1; RK_U32 reserved : 1; RK_U32 dbg_bf2_vpu_lcnt : 14; RK_U32 dbg_bf2_vpu_llst : 1; RK_U32 dbg_bf2_vpu_vofw : 1; } dbg_dvbm_buf2_inf1; /* 0x00005188 reg5218 */ struct { RK_U32 dbg_bf3_isp_lcnt : 14; RK_U32 dbg_bf3_isp_llst : 1; RK_U32 dbg_bf3_isp_sofw : 1; RK_U32 dbg_bf3_isp_fcnt : 1; RK_U32 reserved : 7; RK_U32 dbg_bf3_isp_pnt : 1; RK_U32 reserved1 : 3; RK_U32 dbg_bf3_vpu_pnt : 1; RK_U32 reserved2 : 3; } dbg_dvbm_buf3_inf0; /* 0x0000518c reg5219 */ struct { RK_U32 dbg_bf3_src_lcnt : 14; RK_U32 dbg_bf3_src_llst : 1; RK_U32 reserved : 1; RK_U32 dbg_bf3_vpu_lcnt : 14; RK_U32 dbg_bf3_vpu_llst : 1; RK_U32 dbg_bf3_vpu_vofw : 1; } dbg_dvbm_buf3_inf1; /* 0x00005190 reg5220 */ struct { RK_U32 dbg_isp_fptr : 3; RK_U32 dbg_isp_full : 1; RK_U32 dbg_src_fptr : 3; RK_U32 reserved : 1; RK_U32 dbg_vpu_fptr : 3; RK_U32 dbg_vpu_empt : 1; RK_U32 dbg_vpu_lvld : 1; RK_U32 dbg_vpu_lrdy : 1; RK_U32 dbg_vpu_fvld : 1; RK_U32 dbg_vpu_frdy : 1; RK_U32 dbg_fcnt_misp : 4; RK_U32 dbg_fcnt_mvpu : 4; RK_U32 dbg_fcnt_sofw : 4; RK_U32 dbg_fcnt_vofw : 4; } dbg_dvbm_ctrl; /* 0x5194 - 0x519c */ RK_U32 reserved5221_5223[3]; /* 0x000051a0 reg5224 */ RK_U32 dbg_dvbm_buf0_yadr; /* 0x000051a4 reg5225 */ RK_U32 dbg_dvbm_buf0_cadr; /* 0x000051a8 reg5226 */ RK_U32 dbg_dvbm_buf1_yadr; /* 0x000051ac reg5227 */ RK_U32 dbg_dvbm_buf1_cadr; /* 0x000051b0 reg5228 */ RK_U32 dbg_dvbm_buf2_yadr; /* 0x000051b4 reg5229 */ RK_U32 dbg_dvbm_buf2_cadr; /* 0x000051b8 reg5230 */ RK_U32 dbg_dvbm_buf3_yadr; /* 0x000051bc reg5231 */ RK_U32 dbg_dvbm_buf3_cadr; /* 0x000051c0 reg5232 */ struct { RK_U32 dchs_rx_cnt : 11; RK_U32 dchs_rx_id : 2; RK_U32 dchs_rx_en : 1; RK_U32 dchs_rx_ack : 1; RK_U32 dchs_rx_req : 1; RK_U32 dchs_tx_cnt : 11; RK_U32 dchs_tx_id : 2; RK_U32 dchs_tx_en : 1; RK_U32 dchs_tx_ack : 1; RK_U32 dchs_tx_req : 1; } dbg_dchs_intfc; /* 0x000051c4 reg5233 */ struct { RK_U32 lpfw_tx_cnt : 11; RK_U32 lpfw_tx_en : 1; RK_U32 crpw_tx_cnt : 11; RK_U32 crpw_tx_en : 1; RK_U32 dual_err_updt : 1; RK_U32 dlyc_fifo_oflw : 1; RK_U32 dlyc_tx_vld : 1; RK_U32 dlyc_tx_rdy : 1; RK_U32 dlyc_tx_empty : 1; RK_U32 dchs_tx_idle : 1; RK_U32 dchs_tx_asy : 1; RK_U32 dchs_tx_syn : 1; } dbg_dchs_tx_inf0; /* 0x000051c8 reg5234 */ struct { RK_U32 criw_tx_cnt : 11; RK_U32 criw_tx_en : 1; RK_U32 smrw_tx_cnt : 11; RK_U32 smrw_tx_en : 1; RK_U32 reserved : 8; } dbg_dchs_tx_inf1; /* 0x000051cc reg5235 */ struct { RK_U32 dual_rx_cnt : 11; RK_U32 dual_rx_id : 2; RK_U32 dual_rx_en : 1; RK_U32 dual_rx_syn : 1; RK_U32 dual_rx_lock : 1; RK_U32 dual_lpfr_dule : 1; RK_U32 dual_cime_dule : 1; RK_U32 dual_clomv_dule : 1; RK_U32 dual_smear_dule : 1; RK_U32 reserved : 12; } dbg_dchs_rx_inf0; /* 0x51d0 - 0x51fc */ RK_U32 reserved5236_5247[12]; /* 0x00005200 reg5248 */ RK_U32 frame_cyc; /* 0x00005204 reg5249 */ RK_U32 vsp0_fcyc; /* 0x00005208 reg5250 */ RK_U32 vsp1_fcyc; /* 0x0000520c reg5251 */ RK_U32 cme_fcyc; /* 0x00005210 reg5252 */ RK_U32 ldr_fcyc; /* 0x00005214 reg5253 */ RK_U32 rfme_fcyc; /* 0x00005218 reg5254 */ RK_U32 fme_fcyc; /* 0x0000521c reg5255 */ RK_U32 rdo_fcyc; /* 0x00005220 reg5256 */ RK_U32 lpf_fcyc; /* 0x00005224 reg5257 */ RK_U32 etpy_fcyc; /* 0x00005228 reg5258 */ RK_U32 jsp0_fcyc; /* 0x0000522c reg5259 */ RK_U32 jsp1_fcyc; /* 0x00005230 reg5260 */ RK_U32 jpeg_fcyc; } Vepu510Dbg; /* ROI block configuration */ typedef struct Vepu510H264RoiBlkCfg { RK_U32 qp_adju : 8; RK_U32 mdc_adju_inter : 4; RK_U32 mdc_adju_skip : 4; RK_U32 mdc_adju_intra : 4; RK_U32 reserved : 12; } Vepu510H264RoiBlkCfg; typedef struct Vepu510H265RoiBlkCfg { RK_U32 qp_adju : 8; RK_U32 reserved : 12; RK_U32 mdc_adju_inter : 4; RK_U32 mdc_adju_skip : 4; RK_U32 mdc_adju_intra : 4; } Vepu510H265RoiBlkCfg; typedef struct Vepu510NpuOut_t { RK_S32 found_objects; /* npu object flag: one byte for each block16x16 */ RK_U8 *object_seg_map; } Vepu510NpuOut; #ifdef __cplusplus extern "C" { #endif MPP_RET vepu510_set_roi(void *roi_reg_base, MppEncROICfg * roi, RK_S32 w, RK_S32 h); #ifdef __cplusplus } #endif #endif /* __VEPU510_COMMON_H__ */