From e9ef10b8ca50bbfaab6fd6348dbeb8af385e5e84 Mon Sep 17 00:00:00 2001 From: "sayon.chen" Date: Mon, 13 Dec 2021 12:20:43 +0800 Subject: [PATCH] [vepu54c_common]: Add common part code Change-Id: Iaf7a025ab4b90fb73e4e65c81eed29842c6ac055 Signed-off-by: sayon.chen Signed-off-by: Chandler Chen --- mpp/hal/rkenc/common/CMakeLists.txt | 1 + mpp/hal/rkenc/common/vepu540c_common.c | 261 ++++ mpp/hal/rkenc/common/vepu540c_common.h | 1788 ++++++++++++++++++++++++ mpp/hal/rkenc/common/vepu5xx.h | 1 + 4 files changed, 2051 insertions(+) create mode 100644 mpp/hal/rkenc/common/vepu540c_common.c create mode 100644 mpp/hal/rkenc/common/vepu540c_common.h diff --git a/mpp/hal/rkenc/common/CMakeLists.txt b/mpp/hal/rkenc/common/CMakeLists.txt index 4dab682e..c08e66f8 100644 --- a/mpp/hal/rkenc/common/CMakeLists.txt +++ b/mpp/hal/rkenc/common/CMakeLists.txt @@ -5,6 +5,7 @@ include_directories(.) add_library(hal_vepu541_common STATIC vepu541_common.c vepu5xx_common.c + vepu540c_common.c ) target_link_libraries(hal_vepu541_common mpp_base) diff --git a/mpp/hal/rkenc/common/vepu540c_common.c b/mpp/hal/rkenc/common/vepu540c_common.c new file mode 100644 index 00000000..8d40490b --- /dev/null +++ b/mpp/hal/rkenc/common/vepu540c_common.c @@ -0,0 +1,261 @@ +/* + * Copyright 2021 Rockchip Electronics Co. LTD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define MODULE_TAG "vepu540c_common" + +#include + +#include "mpp_log.h" +#include "mpp_debug.h" +#include "mpp_mem.h" +#include "mpp_common.h" +#include "jpege_syntax.h" +#include "vepu541_common.h" +#include "vepu540c_common.h" +#include "hal_enc_task.h" +#include "mpp_frame_impl.h" +#include "mpp_packet.h" + +MPP_RET vepu540c_set_roi(void *roi_reg_base, MppEncROICfg * roi, + RK_S32 w, RK_S32 h) +{ + MppEncROIRegion *region = roi->regions; + Vepu540cRoiCfg *roi_cfg = (Vepu540cRoiCfg *)roi_reg_base; + Vepu540cRoiRegion *reg_regions = &roi_cfg->regions[0]; + MPP_RET ret = MPP_NOK; + RK_S32 i = 0; + memset(reg_regions, 0, sizeof(Vepu540cRoiRegion) * 8); + if (NULL == roi_cfg || NULL == roi) { + mpp_err_f("invalid buf %p roi %p\n", roi_cfg, roi); + goto DONE; + } + + if (roi->number > VEPU540C_MAX_ROI_NUM) { + mpp_err_f("invalid region number %d\n", roi->number); + goto DONE; + } + + /* check region config */ + ret = MPP_OK; + for (i = 0; i < (RK_S32) roi->number; i++, region++) { + if (region->x + region->w > w || region->y + region->h > h) + ret = MPP_NOK; + + if (region->intra > 1 + || region->qp_area_idx >= VEPU541_MAX_ROI_NUM + || region->area_map_en > 1 || region->abs_qp_en > 1) + ret = MPP_NOK; + + if ((region->abs_qp_en && region->quality > 51) || + (!region->abs_qp_en + && (region->quality > 51 || region->quality < -51))) + ret = MPP_NOK; + + if (ret) { + mpp_err_f("region %d invalid param:\n", i); + mpp_err_f("position [%d:%d:%d:%d] vs [%d:%d]\n", + region->x, region->y, region->w, region->h, w, + h); + mpp_err_f("force intra %d qp area index %d\n", + region->intra, region->qp_area_idx); + mpp_err_f("abs qp mode %d value %d\n", + region->abs_qp_en, region->quality); + goto DONE; + } + reg_regions->roi_pos_lt.roi_lt_x = MPP_ALIGN(region->x, 16) >> 4; + reg_regions->roi_pos_lt.roi_lt_y = MPP_ALIGN(region->y, 16) >> 4; + reg_regions->roi_pos_rb.roi_rb_x = MPP_ALIGN(region->x + region->w, 16) >> 4; + reg_regions->roi_pos_rb.roi_rb_y = MPP_ALIGN(region->y + region->h, 16) >> 4; + reg_regions->roi_base.roi_qp_value = region->quality; + reg_regions->roi_base.roi_qp_adj_mode = region->abs_qp_en; + reg_regions->roi_base.roi_en = 1; + reg_regions->roi_base.roi_pri = 0x1f; + if (region->intra) { + reg_regions->roi_mdc.roi_mdc_intra16 = 1; + reg_regions->roi_mdc.roi0_mdc_intra32_hevc = 1; + } + reg_regions++; + } + +DONE: + return ret; +} + +static MPP_RET vepu540c_jpeg_set_patch_info(MppDev dev, JpegeSyntax *syn, + Vepu541Fmt input_fmt, + HalEncTask *task) +{ + RK_U32 hor_stride = syn->hor_stride; + RK_U32 ver_stride = syn->ver_stride ? syn->ver_stride : syn->height; + RK_U32 frame_size = hor_stride * ver_stride; + RK_U32 u_offset = 0, v_offset = 0; + MPP_RET ret = MPP_OK; + + if (MPP_FRAME_FMT_IS_FBC(mpp_frame_get_fmt(task->frame))) { + u_offset = mpp_frame_get_fbc_offset(task->frame); + v_offset = 0; + mpp_log("fbc case u_offset = %d", u_offset); + } else { + switch (input_fmt) { + case VEPU541_FMT_YUV420P: { + u_offset = frame_size; + v_offset = frame_size * 5 / 4; + } break; + case VEPU541_FMT_YUV420SP: + case VEPU541_FMT_YUV422SP: { + u_offset = frame_size; + v_offset = frame_size; + } break; + case VEPU541_FMT_YUV422P: { + u_offset = frame_size; + v_offset = frame_size * 3 / 2; + } break; + case VEPU541_FMT_YUYV422: + case VEPU541_FMT_UYVY422: { + u_offset = 0; + v_offset = 0; + } break; + case VEPU541_FMT_BGR565: + case VEPU541_FMT_BGR888: + case VEPU541_FMT_BGRA8888: { + u_offset = 0; + v_offset = 0; + } break; + default: { + mpp_err("unknown color space: %d\n", input_fmt); + u_offset = frame_size; + v_offset = frame_size * 5 / 4; + } + } + } + + /* input cb addr */ + if (u_offset) + mpp_dev_set_reg_offset(dev, 265, u_offset); + + /* input cr addr */ + if (v_offset) + mpp_dev_set_reg_offset(dev, 266, u_offset); + + return ret; +} + + +MPP_RET vepu540c_set_jpeg_reg(Vepu540cJpegCfg *cfg) +{ + HalEncTask *task = ( HalEncTask *)cfg->enc_task; + JpegeSyntax *syn = (JpegeSyntax *)task->syntax.data; + Vepu540cJpegReg *regs = (Vepu540cJpegReg *)cfg->jpeg_reg_base; + VepuFmtCfg *fmt = (VepuFmtCfg *)cfg->input_fmt; + RK_U32 pic_width_align8, pic_height_align8; + RK_S32 stridey = 0; + RK_S32 stridec = 0; + + pic_width_align8 = (syn->width + 7) & (~7); + pic_height_align8 = (syn->height + 7) & (~7); + + regs->reg0264_adr_src0 = mpp_buffer_get_fd(task->input); + regs->reg0265_adr_src1 = regs->reg0264_adr_src0; + regs->reg0266_adr_src2 = regs->reg0264_adr_src0; + + vepu540c_jpeg_set_patch_info(cfg->dev, syn, (Vepu541Fmt) fmt->format, task); + + regs->reg0256_adr_bsbt = mpp_buffer_get_fd(task->output); + regs->reg0257_adr_bsbb = regs->reg0256_adr_bsbt; + regs->reg0258_adr_bsbr = regs->reg0256_adr_bsbt; + regs->reg0259_adr_bsbs = regs->reg0256_adr_bsbt; + + mpp_dev_set_reg_offset(cfg->dev, 259, mpp_packet_get_length(task->packet)); + mpp_dev_set_reg_offset(cfg->dev, 256, mpp_buffer_get_size(task->output)); + + regs->reg0272_enc_rsl.pic_wd8_m1 = pic_width_align8 / 8 - 1; + regs->reg0273_src_fill.pic_wfill = (syn->width & 0x7) + ? (8 - (syn->width & 0x7)) : 0; + regs->reg0272_enc_rsl.pic_hd8_m1 = pic_height_align8 / 8 - 1; + regs->reg0273_src_fill.pic_hfill = (syn->height & 0x7) + ? (8 - (syn->height & 0x7)) : 0; + + regs->reg0274_src_fmt.src_cfmt = fmt->format; + regs->reg0274_src_fmt.alpha_swap = fmt->alpha_swap; + regs->reg0274_src_fmt.rbuv_swap = fmt->rbuv_swap; + regs->reg0274_src_fmt.src_range_trns_en = 0; + regs->reg0274_src_fmt.src_range_trns_sel = 0; + regs->reg0274_src_fmt.chroma_ds_mode = 0; + regs->reg0274_src_fmt.out_fmt = 1; + + regs->reg0279_src_proc.src_mirr = 0 ;//prep_cfg->mirroring > 0; + regs->reg0279_src_proc.src_rot = syn->rotation; + + if (syn->hor_stride) { + stridey = syn->hor_stride; + } else { + if (regs->reg0274_src_fmt.src_cfmt == VEPU541_FMT_BGRA8888 ) + stridey = syn->width * 4; + else if (regs->reg0274_src_fmt.src_cfmt == VEPU541_FMT_BGR888 ) + stridey = syn->width * 3; + else if (regs->reg0274_src_fmt.src_cfmt == VEPU541_FMT_BGR565 || + regs->reg0274_src_fmt.src_cfmt == VEPU541_FMT_YUYV422 || + regs->reg0274_src_fmt.src_cfmt == VEPU541_FMT_UYVY422) + stridey = syn->width * 2; + } + + stridec = (regs->reg0274_src_fmt.src_cfmt == VEPU541_FMT_YUV422SP || + regs->reg0274_src_fmt.src_cfmt == VEPU541_FMT_YUV420SP) ? + stridey : stridey / 2; + + if (regs->reg0274_src_fmt.src_cfmt < VEPU541_FMT_NONE) { + regs->reg0275_src_udfy.csc_wgt_r2y = 66; + regs->reg0275_src_udfy.csc_wgt_g2y = 129; + regs->reg0275_src_udfy.csc_wgt_b2y = 25; + + regs->reg0276_src_udfu.csc_wgt_r2u = -38; + regs->reg0276_src_udfu.csc_wgt_g2u = -74; + regs->reg0276_src_udfu.csc_wgt_b2u = 112; + + regs->reg0277_src_udfv.csc_wgt_r2v = 112; + regs->reg0277_src_udfv.csc_wgt_g2v = -94; + regs->reg0277_src_udfv.csc_wgt_b2v = -18; + + regs->reg0278_src_udfo.csc_ofst_y = 16; + regs->reg0278_src_udfo.csc_ofst_u = 128; + regs->reg0278_src_udfo.csc_ofst_v = 128; + } + regs->reg0281_src_strd0.src_strd0 = stridey; + regs->reg0282_src_strd1.src_strd1 = stridec; + regs->reg0280_pic_ofst.pic_ofst_y = mpp_frame_get_offset_y(task->frame); + regs->reg0280_pic_ofst.pic_ofst_x = mpp_frame_get_offset_x(task->frame); + //to be done + + regs->reg0283_src_flt.pp_corner_filter_strength = 0; + regs->reg0283_src_flt.pp_edge_filter_strength = 0; + regs->reg0283_src_flt.pp_internal_filter_strength = 0; + + regs->reg0284_y_cfg.bias_y = 0; + regs->reg0285_u_cfg.bias_u = 0; + regs->reg0286_v_cfg.bias_v = 0; + + regs->reg0287_base_cfg.jpeg_ri = 0; + regs->reg0287_base_cfg.jpeg_out_mode = 0; + regs->reg0287_base_cfg.jpeg_start_rst_m = 0; + regs->reg0287_base_cfg.jpeg_pic_last_ecs = 1; + regs->reg0287_base_cfg.jpeg_slen_fifo = 0; + regs->reg0287_base_cfg.jpeg_stnd = 1; //enable + + regs->reg0288_uvc_cfg.uvc_partition0_len = 0; + regs->reg0288_uvc_cfg.uvc_partition_len = 0; + regs->reg0288_uvc_cfg.uvc_skip_len = 0; + return MPP_OK; +} diff --git a/mpp/hal/rkenc/common/vepu540c_common.h b/mpp/hal/rkenc/common/vepu540c_common.h new file mode 100644 index 00000000..11f53b1e --- /dev/null +++ b/mpp/hal/rkenc/common/vepu540c_common.h @@ -0,0 +1,1788 @@ +/* + * Copyright 2022 Rockchip Electronics Co. LTD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __VEPU540C_COMMON_H__ +#define __VEPU540C_COMMON_H__ + +#include "rk_venc_cmd.h" +#include "mpp_device.h" + +#define VEPU540C_CTL_OFFSET (0 * sizeof(RK_U32)) +#define VEPU540C_BASE_OFFSET (156 * sizeof(RK_U32)) +#define VEPU540C_RCROI_OFFSET (1024 * sizeof(RK_U32)) +#define VEPU540C_WEG_OFFSET (1472 * sizeof(RK_U32)) +#define VEPU540C_RDOCFG_OFFSET (2048 * sizeof(RK_U32)) +#define VEPU540C_SCLCFG_OFFSET (2168 * sizeof(RK_U32)) +#define VEPU540C_JPEGTAB_OFFSET (2848 * sizeof(RK_U32)) + +#define VEPU540C_OSD_OFFSET (3072 * sizeof(RK_U32)) +#define VEPU540C_STATUS_OFFSET (4096 * sizeof(RK_U32)) +#define VEPU540C_DEBUG_OFFSET (5120 * sizeof(RK_U32)) +#define VEPU540C_REG_BASE_HW_STATUS 0x2c + +#define VEPU540C_MAX_ROI_NUM 8 + +typedef struct Vepu540cOnline_t { + /* 0x00000270 reg156 */ + RK_U32 reg0156_adr_vsy_t; + /* 0x00000274 reg157 */ + RK_U32 reg0157_adr_vsc_t; + /* 0x00000278 reg158 */ + RK_U32 reg0158_adr_vsy_b; + /* 0x0000027c reg159 */ + RK_U32 reg0159_adr_vsc_b; +} vepu540c_online; + +typedef struct IpRaw8_t { + RK_U8 intra_val[8]; + RK_U8 inter_val[8]; +} ip_raw8; + +typedef struct IpRaw32_16_t { + RK_U16 q_intra16[4]; + RK_U16 q_intra32[2]; + RK_U8 iq_intra16[4]; +} ip_raw32_16; + +/* 0x000021e0 reg2168 - 0x00002c7c reg2847*/ +typedef struct Vepu540cSclCfg_t { + /* 0x000021e0 reg2168 */ + RK_U32 q_dc_y16; + RK_U32 q_dc_u16; + RK_U32 q_dc_v16; + RK_U32 q_dc_y32; + RK_U32 iq_dc_0; + RK_U32 iq_dc_1; + RK_U32 scal_clk_sel; + + /* 0x000021f8 reg2174 */ + struct { + RK_U32 scal_clk_sel : 1; + RK_U32 reserved : 31; + } scal_cfg; + /* 0x21fc */ + RK_U32 reserved_2175; + /* 0x00002200 reg2176 - 0x0000227c reg2207*/ + RK_U16 q_intra_y8[64]; + /* 0x00002280 reg2208 - 0x000022fc reg2239*/ + RK_U16 q_intra_u8[64]; + /* 0x00002300 reg2240 - 0x0000237c reg2271*/ + RK_U16 q_intra_v8[64]; + + /* 0x00002380 reg2272 - 0x000023fc reg2303*/ + RK_U16 q_inter_y8[64]; + /* 0x00002400 reg2304 - 0x0000247c reg2335*/ + RK_U16 q_inter_u8[64]; + /* 0x00002480 reg2336 - 0x000024fc reg2367*/ + RK_U16 q_inter_v8[64]; + + /* 0x00002500 reg2368 - 0x000025fc reg2431*/ + ip_raw32_16 q_intra_y[16]; + /* 0x00002600 reg2432 - 0x000026fc reg2495*/ + ip_raw32_16 q_intra_u[16]; + /* 0x00002700 reg2496 - 0x000027fc reg2559 */ + ip_raw32_16 q_intra_v[16]; + + /*0x00002800 reg2560 - 0x000028fc reg2623*/ + ip_raw32_16 q_inter_y[16]; + /*0x00002900 reg2624 - 0x000029fc reg2687*/ + ip_raw32_16 q_inter_u[16]; + /*0x00002a00 reg2688 - 0x00002afc reg2751 */ + ip_raw32_16 q_inter_v[16]; + + /* 0x00002b00 reg2752 - 0x00002b7c reg2783 */ + ip_raw8 ip_y8[8]; + /* 0x00002b80 reg2784 - 0x00002bfc reg2815 */ + ip_raw8 ip_u8[8]; + /* 0x00002c00 reg2816 - 0x00002c7c reg2847 */ + ip_raw8 ip_v8[8]; +} vepu540c_scl_cfg; + +typedef struct PreCstPar_t { + struct { + RK_U32 madi_thd0 : 8; + RK_U32 madi_thd1 : 8; + RK_U32 madi_thd2 : 8; + RK_U32 madi_thd3 : 8; + } cst_madi_thd0; + + /* 0x000020c4 reg2097 */ + struct { + RK_U32 madi_thd4 : 8; + RK_U32 madi_thd5 : 8; + RK_U32 reserved : 16; + } cst_madi_thd1; + + /* 0x000020c8 reg2098 */ + struct { + RK_U32 wgt0 : 8; + RK_U32 wgt1 : 8; + RK_U32 wgt2 : 8; + RK_U32 wgt3 : 8; + } cst_wgt0; + + /* 0x000020cc reg2099 */ + struct { + RK_U32 wgt4 : 8; + RK_U32 wgt5 : 8; + RK_U32 wgt6 : 8; + RK_U32 wgt7 : 8; + } cst_wgt1; + + /* 0x000020d0 reg2100 */ + struct { + RK_U32 wgt8 : 8; + RK_U32 wgt9 : 8; + RK_U32 mode_th : 3; + RK_U32 reserved : 13; + } cst_wgt2; +} pre_cst_par; + +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 : 20; + } 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; + +/* class: rdo/q_i */ +/* 0x00002000 reg2048 - 0x00002c7c reg2847*/ +typedef struct Vepu540cRdoCfg_t { + + /* 0x00002000 reg2048 */ + struct { + RK_U32 log2weight_denom_c : 3; + RK_U32 log2weight_denom_y : 3; + RK_U32 weightp_c : 1; + RK_U32 weightp_y : 1; + RK_U32 weightp_en : 1; + RK_U32 cime_ds_data_chg_for_wp : 1; + RK_U32 reserved : 22; + } weightp_cfg_comb; + + /* 0x00002004 reg2049 */ + struct { + RK_U32 input_weight_v : 9; + RK_U32 reserved : 1; + RK_U32 input_weight_u : 9; + RK_U32 reserved1 : 1; + RK_U32 input_weight_y : 9; + RK_U32 reserved2 : 3; + } whightp_input_comb; + + /* 0x00002008 reg2050 */ + struct { + RK_U32 input_offset_v : 8; + RK_U32 reserved : 2; + RK_U32 input_offset_u : 8; + RK_U32 reserved1 : 2; + RK_U32 input_offset_y : 8; + RK_U32 reserved2 : 4; + } whightp_inoffset_comb; + + /* 0x200c */ + RK_U32 reserved_2051; + + /* 0x00002010 reg2052 */ + struct { + RK_U32 rdo_segment_multi : 8; + RK_U32 rdo_segment_en : 1; + RK_U32 reserved : 7; + RK_U32 rdo_smear_lvl4_multi : 8; + RK_U32 rdo_smear_lvl8_multi : 8; + } rdo_segment_cfg; + + /* 0x00002014 reg2053 */ + struct { + RK_U32 rdo_smear_lvl16_multi : 8; + RK_U32 rdo_smear_dlt_qp : 4; + RK_U32 rdo_smear_order_state : 1; + RK_U32 stated_mode : 2; + RK_U32 rdo_smear_en : 1; + RK_U32 online_en : 1; + RK_U32 reserved : 3; + RK_U32 smear_stride : 12; + } rdo_smear_cfg_comb; + + /* 0x00002018 reg2054 */ + struct { + RK_U32 rdo_smear_madp_cur_thd0 : 12; + RK_U32 reserved : 4; + RK_U32 rdo_smear_madp_cur_thd1 : 12; + RK_U32 reserved1 : 4; + } rdo_smear_madp_thd0_comb; + + /* 0x0000201c reg2055 */ + struct { + RK_U32 rdo_smear_madp_cur_thd2 : 12; + RK_U32 reserved : 4; + RK_U32 rdo_smear_madp_cur_thd3 : 12; + RK_U32 reserved1 : 4; + } rdo_smear_madp_thd1_comb; + + /* 0x00002020 reg2056 */ + struct { + RK_U32 rdo_smear_madp_around_thd0 : 12; + RK_U32 reserved : 4; + RK_U32 rdo_smear_madp_around_thd1 : 12; + RK_U32 reserved1 : 4; + } rdo_smear_madp_thd2_comb; + + /* 0x00002024 reg2057 */ + struct { + RK_U32 rdo_smear_madp_around_thd2 : 12; + RK_U32 reserved : 4; + RK_U32 rdo_smear_madp_around_thd3 : 12; + RK_U32 reserved1 : 4; + } rdo_smear_madp_thd3_comb; + + /* 0x00002028 reg2058 */ + struct { + RK_U32 rdo_smear_madp_around_thd4 : 12; + RK_U32 reserved : 4; + RK_U32 rdo_smear_madp_around_thd5 : 12; + RK_U32 reserved1 : 4; + } rdo_smear_madp_thd4_comb; + + /* 0x0000202c reg2059 */ + struct { + RK_U32 rdo_smear_madp_ref_thd0 : 12; + RK_U32 reserved : 4; + RK_U32 rdo_smear_madp_ref_thd1 : 12; + RK_U32 reserved1 : 4; + } rdo_smear_madp_thd5_comb; + + /* 0x00002030 reg2060 */ + struct { + RK_U32 rdo_smear_cnt_cur_thd0 : 4; + RK_U32 reserved : 4; + RK_U32 rdo_smear_cnt_cur_thd1 : 4; + RK_U32 reserved1 : 4; + RK_U32 rdo_smear_cnt_cur_thd2 : 4; + RK_U32 reserved2 : 4; + RK_U32 rdo_smear_cnt_cur_thd3 : 4; + RK_U32 reserved3 : 4; + } rdo_smear_cnt_thd0_comb; + + /* 0x00002034 reg2061 */ + struct { + RK_U32 rdo_smear_cnt_around_thd0 : 4; + RK_U32 reserved : 4; + RK_U32 rdo_smear_cnt_around_thd1 : 4; + RK_U32 reserved1 : 4; + RK_U32 rdo_smear_cnt_around_thd2 : 4; + RK_U32 reserved2 : 4; + RK_U32 rdo_smear_cnt_around_thd3 : 4; + RK_U32 reserved3 : 4; + } rdo_smear_cnt_thd1_comb; + + /* 0x00002038 reg2062 */ + struct { + RK_U32 rdo_smear_cnt_around_thd4 : 4; + RK_U32 reserved : 4; + RK_U32 rdo_smear_cnt_around_thd5 : 4; + RK_U32 reserved1 : 4; + RK_U32 rdo_smear_cnt_around_thd6 : 4; + RK_U32 reserved2 : 4; + RK_U32 rdo_smear_cnt_around_thd7 : 4; + RK_U32 reserved3 : 4; + } rdo_smear_cnt_thd2_comb; + + /* 0x0000203c reg2063 */ + struct { + RK_U32 rdo_smear_cnt_ref_thd0 : 4; + RK_U32 reserved : 4; + RK_U32 rdo_smear_cnt_ref_thd1 : 4; + RK_U32 reserved1 : 20; + } rdo_smear_cnt_thd3_comb; + + /* 0x00002040 reg2064 */ + struct { + RK_U32 rdo_smear_resi_small_cur_th0 : 6; + RK_U32 reserved : 2; + RK_U32 rdo_smear_resi_big_cur_th0 : 6; + RK_U32 reserved1 : 2; + RK_U32 rdo_smear_resi_small_cur_th1 : 6; + RK_U32 reserved2 : 2; + RK_U32 rdo_smear_resi_big_cur_th1 : 6; + RK_U32 reserved3 : 2; + } rdo_smear_resi_thd0_comb; + + /* 0x00002044 reg2065 */ + struct { + RK_U32 rdo_smear_resi_small_around_th0 : 6; + RK_U32 reserved : 2; + RK_U32 rdo_smear_resi_big_around_th0 : 6; + RK_U32 reserved1 : 2; + RK_U32 rdo_smear_resi_small_around_th1 : 6; + RK_U32 reserved2 : 2; + RK_U32 rdo_smear_resi_big_around_th1 : 6; + RK_U32 reserved3 : 2; + } rdo_smear_resi_thd1_comb; + + /* 0x00002048 reg2066 */ + struct { + RK_U32 rdo_smear_resi_small_around_th2 : 6; + RK_U32 reserved : 2; + RK_U32 rdo_smear_resi_big_around_th2 : 6; + RK_U32 reserved1 : 2; + RK_U32 rdo_smear_resi_small_around_th3 : 6; + RK_U32 reserved2 : 2; + RK_U32 rdo_smear_resi_big_around_th3 : 6; + RK_U32 reserved3 : 2; + } rdo_smear_resi_thd2_comb; + + /* 0x0000204c reg2067 */ + struct { + RK_U32 rdo_smear_resi_small_ref_th0 : 6; + RK_U32 reserved : 2; + RK_U32 rdo_smear_resi_big_ref_th0 : 6; + RK_U32 reserved1 : 18; + } rdo_smear_resi_thd3_comb; + + /* 0x00002050 reg2068 */ + struct { + RK_U32 rdo_smear_resi_th0 : 8; + RK_U32 reserved : 8; + RK_U32 rdo_smear_resi_th1 : 8; + RK_U32 reserved1 : 8; + } rdo_smear_st_thd0_comb; + + /* 0x00002054 reg2069 */ + struct { + RK_U32 rdo_smear_madp_cnt_th0 : 4; + RK_U32 rdo_smear_madp_cnt_th1 : 4; + RK_U32 rdo_smear_madp_cnt_th2 : 4; + RK_U32 rdo_smear_madp_cnt_th3 : 4; + RK_U32 rdo_smear_madp_cnt_th4 : 4; + RK_U32 rdo_smear_madp_cnt_th5 : 4; + RK_U32 reserved : 8; + } rdo_smear_st_thd1_comb; + + /* 0x2058 - 0x205c */ + RK_U32 reserved2070_2071[2]; + /* 0x00002060 reg2072 - 0x0000206c reg2075 */ + rdo_skip_par rdo_b32_skip; + /* 0x00002070 reg2076 - 0x0000207c reg2079*/ + rdo_skip_par rdo_b16_skip; + + /* 0x00002080 reg2080 - 0x00002088 reg2082 */ + rdo_noskip_par rdo_b32_inter; + + /* 0x0000208c reg2083 - 0x00002094 reg2085 */ + rdo_noskip_par rdo_b16_inter; + + /* 0x00002098 reg2086 - 0x000020a4 reg2089 */ + rdo_noskip_par rdo_b32_intra; + + /* 0x000020a8 reg2090 - 0x000020ac reg2091 */ + rdo_noskip_par rdo_b16_intra; + + /* 0x000020b0 reg2092 */ + struct { + RK_U32 thd0 : 6; + RK_U32 reserved : 2; + RK_U32 thd1 : 6; + RK_U32 reserved1 : 2; + RK_U32 thd2 : 6; + RK_U32 reserved2 : 2; + RK_U32 thd3 : 6; + RK_U32 reserved3 : 2; + } rdo_b32_intra_atf_cnt_thd; + + /* 0x000020b4 reg2093 */ + struct { + RK_U32 thd0 : 4; + RK_U32 reserved : 4; + RK_U32 thd1 : 4; + RK_U32 reserved1 : 4; + RK_U32 thd2 : 4; + RK_U32 reserved2 : 4; + RK_U32 thd3 : 4; + RK_U32 reserved3 : 4; + } rdo_b16_intra_atf_cnt_thd_comb; + + /* 0x000020b8 reg2094 */ + struct { + RK_U32 big_th0 : 6; + RK_U32 reserved : 2; + RK_U32 big_th1 : 6; + RK_U32 reserved1 : 2; + RK_U32 small_th0 : 6; + RK_U32 reserved2 : 2; + RK_U32 small_th1 : 6; + RK_U32 reserved3 : 2; + } rdo_atf_resi_thd_comb; + + /* 0x20bc */ + RK_U32 reserved_2095; + + /* 0x000020c0 reg2096 - 0x000020d0 reg2100 */ + pre_cst_par preintra32_cst; + /* 0x000020d4 reg2101 - 0x000020e4 reg2105 */ + pre_cst_par preintra16_cst; + + /* 0x20e8 - 0x20ec */ + RK_U32 reserved2106_2107[2]; + + /* 0x000020f0 reg2108 */ + struct { + RK_U32 pre_intra_qp_thd : 6; + RK_U32 reserved : 2; + RK_U32 pre_intra4_lambda_mv_bit : 3; + RK_U32 reserved1 : 1; + RK_U32 pre_intra8_lambda_mv_bit : 3; + RK_U32 reserved2 : 1; + RK_U32 pre_intra16_lambda_mv_bit : 3; + RK_U32 reserved3 : 1; + RK_U32 pre_intra32_lambda_mv_bit : 3; + RK_U32 reserved4 : 9; + } preintra_sqi_cfg; + + /* 0x000020f4 reg2109 */ + struct { + RK_U32 i_cu32_madi_thd0 : 8; + RK_U32 i_cu32_madi_thd1 : 8; + RK_U32 i_cu32_madi_thd2 : 8; + RK_U32 reserved : 8; + } rdo_atr_i_cu32_madi_cfg0; + + /* 0x000020f8 reg2110 */ + struct { + RK_U32 i_cu32_madi_cnt_thd3 : 5; + RK_U32 reserved : 3; + RK_U32 i_cu32_madi_thd4 : 8; + RK_U32 i_cu32_madi_cost_multi : 8; + RK_U32 reserved1 : 8; + } rdo_atr_i_cu32_madi_cfg1; + + /* 0x000020fc reg2111 */ + struct { + RK_U32 i_cu16_madi_thd0 : 8; + RK_U32 i_cu16_madi_thd1 : 8; + RK_U32 i_cu16_madi_cost_multi : 8; + RK_U32 reserved : 8; + } rdo_atr_i_cu16_madi_cfg0; +} vepu540c_rdo_cfg; + +typedef struct Vepu540cJpegReg_t { + + RK_U32 reg0256_adr_bsbt; + + /* 0x00000404 reg257 */ + RK_U32 reg0257_adr_bsbb; + + /* 0x00000408 reg258 */ + RK_U32 reg0258_adr_bsbr; + + /* 0x0000040c reg259 */ + RK_U32 reg0259_adr_bsbs; + + /* 0x00000410 reg260 */ + RK_U32 reg0260_adr_vsy_b; + + /* 0x00000414 reg261 */ + RK_U32 reg0261_adr_vsc_b; + + /* 0x00000418 reg262 */ + RK_U32 reg0262_adr_vsy_t; + + /* 0x0000041c reg263 */ + RK_U32 reg0263_adr_vsc_t; + + /* 0x00000420 reg264 */ + RK_U32 reg0264_adr_src0; + + /* 0x00000424 reg265 */ + RK_U32 reg0265_adr_src1; + + /* 0x00000428 reg266 */ + RK_U32 reg0266_adr_src2; + + /* 0x0000042c reg267 */ + struct { + RK_U32 bsp_size_jpeg : 1; + RK_U32 reserved : 31; + } bsp_size_jpeg; + + /* 0x430 - 0x43c */ + RK_U32 reserved268_271[4]; + + /* 0x00000440 reg272 */ + struct { + RK_U32 pic_wd8_m1 : 11; + RK_U32 reserved : 5; + RK_U32 pic_hd8_m1 : 11; + RK_U32 reserved1 : 5; + } reg0272_enc_rsl; + + /* 0x00000444 reg273 */ + struct { + RK_U32 pic_wfill : 6; + RK_U32 reserved : 10; + RK_U32 pic_hfill : 6; + RK_U32 reserved1 : 10; + } reg0273_src_fill; + + /* 0x00000448 reg274 */ + struct { + RK_U32 alpha_swap : 1; + RK_U32 rbuv_swap : 1; + RK_U32 src_cfmt : 4; + RK_U32 reserved : 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 reserved1 : 21; + } reg0274_src_fmt; + + /* 0x0000044c reg275 */ + struct { + RK_U32 csc_wgt_b2y : 9; + RK_U32 csc_wgt_g2y : 9; + RK_U32 csc_wgt_r2y : 9; + RK_U32 reserved : 5; + } reg0275_src_udfy; + + /* 0x00000450 reg276 */ + struct { + RK_U32 csc_wgt_b2u : 9; + RK_U32 csc_wgt_g2u : 9; + RK_U32 csc_wgt_r2u : 9; + RK_U32 reserved : 5; + } reg0276_src_udfu; + + /* 0x00000454 reg277 */ + struct { + RK_U32 csc_wgt_b2v : 9; + RK_U32 csc_wgt_g2v : 9; + RK_U32 csc_wgt_r2v : 9; + RK_U32 reserved : 5; + } reg0277_src_udfv; + + /* 0x00000458 reg278 */ + struct { + RK_U32 csc_ofst_v : 8; + RK_U32 csc_ofst_u : 8; + RK_U32 csc_ofst_y : 5; + RK_U32 reserved : 11; + } reg0278_src_udfo; + + /* 0x0000045c reg279 */ + struct { + RK_U32 reserved : 26; + RK_U32 src_mirr : 1; + RK_U32 src_rot : 2; + RK_U32 reserved1 : 3; + } reg0279_src_proc; + + /* 0x00000460 reg280 */ + struct { + RK_U32 pic_ofst_x : 14; + RK_U32 reserved : 2; + RK_U32 pic_ofst_y : 14; + RK_U32 reserved1 : 2; + } reg0280_pic_ofst; + + /* 0x00000464 reg281 */ + struct { + RK_U32 src_strd0 : 17; + RK_U32 reserved : 15; + } reg0281_src_strd0; + + /* 0x00000468 reg282 */ + struct { + RK_U32 src_strd1 : 16; + RK_U32 reserved : 16; + } reg0282_src_strd1; + + /* 0x0000046c reg283 */ + struct { + RK_U32 pp_corner_filter_strength : 2; + RK_U32 reserved : 2; + RK_U32 pp_edge_filter_strength : 2; + RK_U32 reserved1 : 2; + RK_U32 pp_internal_filter_strength : 2; + RK_U32 reserved2 : 22; + } reg0283_src_flt; + + /* 0x00000470 reg284 */ + struct { + RK_U32 bias_y : 15; + RK_U32 reserved : 17; + } reg0284_y_cfg; + + /* 0x00000474 reg285 */ + struct { + RK_U32 bias_u : 15; + RK_U32 reserved : 17; + } reg0285_u_cfg; + + /* 0x00000478 reg286 */ + struct { + RK_U32 bias_v : 15; + RK_U32 reserved : 17; + } reg0286_v_cfg; + + /* 0x0000047c reg287 */ + struct { + RK_U32 jpeg_ri : 25; + RK_U32 jpeg_out_mode : 1; + RK_U32 jpeg_start_rst_m : 3; + RK_U32 jpeg_pic_last_ecs : 1; + RK_U32 jpeg_slen_fifo : 1; + RK_U32 jpeg_stnd : 1; + } reg0287_base_cfg; + + /* 0x00000480 reg288 */ + struct { + RK_U32 uvc_partition0_len : 12; + RK_U32 uvc_partition_len : 12; + RK_U32 uvc_skip_len : 6; + RK_U32 reserved : 2; + } reg0288_uvc_cfg; +} Vepu540cJpegReg; + +/* 0x00002c80 reg2848 - - 0x00002dfc reg2943*/ +typedef struct Vepu540cJpegTab_t { + /* 0x00002c80 reg2848 - 0x00002cfc reg2879 */ + RK_U16 qua_tab0[64]; + /* 0x00002d00 reg2880 - 0x00002d7c reg2911 */ + RK_U16 qua_tab1[64]; + /* 0x00002d80 reg2912 - 0x00002dfc reg2943 */ + RK_U16 qua_tab2[64]; +} vepu540c_jpeg_tab; + +typedef struct Vepu540cRoiRegion_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; +} Vepu540cRoiRegion; + +/* + * Vepu540cRoiCfg + * + */ +typedef struct Vepu540cRoiCfg_t { + 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; + + Vepu540cRoiRegion regions[8]; +} Vepu540cRoiCfg; + +/* class: st */ +/* 0x00004000 reg4096 - 0x000042cc reg4275 */ +typedef struct Vepu540cStatus_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 reserved : 29; + } 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 */ + RK_U32 node_addr; + + /* 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 : 7; + RK_U32 reserved : 1; + } 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 */ + RK_U32 sli_len; + + /* 0x403c - 0x40fc */ + 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 dvbm_enc_err : 1; + RK_U32 dvbm_fmch_err : 1; + RK_U32 reserved : 1; + RK_U32 rfpr_ovrb_err : 1; + } st_link_task; + + /* 0x4040 - 0x405c */ + RK_U32 reserved4111_4119[8]; + + RK_U32 sli_len_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 madi_sum; + + /* 0x40ac - 0x40bc */ + RK_U32 reserved4139_4143[5]; + + /* 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; + + /* 0x00004128 reg4170 */ + struct { + RK_U32 jpeg_y_r_max_value : 8; + RK_U32 jpeg_y_r_min_value : 8; + RK_U32 jpeg_u_g_max_value : 8; + RK_U32 jpeg_u_g_min_value : 8; + } st_vsp_jpeg_value0; + + /* 0x0000412c reg4171 */ + struct { + RK_U32 jpeg_v_b_max_value : 8; + RK_U32 jpeg_v_b_min_value : 8; + RK_U32 reserved : 16; + } st_vsp_jpeg_value1; + + /* 0x4130 - 0x417c */ + RK_U32 reserved4172_4191[20]; + + /* 0x00004180 reg4192 - 0x0000424c reg4243*/ + RK_U32 st_b8_qp[52]; + +} vepu540c_status; + +/* class: dbg/st/axipn */ +/* 0x00005000 reg5120 - 0x00005354 reg5333*/ +typedef struct Vepu540cDbg_t { + struct { + RK_U32 pp0_tout : 1; + RK_U32 pp1_out : 1; + RK_U32 cme_tout : 1; + RK_U32 swn_tout : 1; + RK_U32 rfme_tout : 1; + RK_U32 pren_tout : 1; + RK_U32 rdo_tout : 1; + RK_U32 lpf_tout : 1; + RK_U32 etpy_tout : 1; + RK_U32 jpeg_tout : 1; + RK_U32 frm_tout : 1; + RK_U32 reserved : 21; + } st_wdg; + + /* 0x00005004 reg5121 */ + struct { + RK_U32 pp0_wrk : 1; + RK_U32 pp1_wrk : 1; + RK_U32 cme_wrk : 1; + RK_U32 swn_wrk : 1; + RK_U32 rfme_wrk : 1; + RK_U32 pren_wrk : 1; + RK_U32 rdo_wrk : 1; + RK_U32 lpf_wrk : 1; + RK_U32 etpy_wrk : 1; + RK_U32 jpeg_wrk : 1; + RK_U32 frm_wrk : 1; + RK_U32 reserved : 21; + } st_ppl; + + /* 0x00005008 reg5122 */ + struct { + RK_U32 vsp0_pos_x : 16; + RK_U32 vsp0_pos_y : 16; + } st_ppl_pos_vsp0; + + /* 0x0000500c reg5123 */ + struct { + RK_U32 vsp1_pos_x : 16; + RK_U32 vsp1_pos_y : 16; + } st_ppl_pos_vsp1; + + /* 0x00005010 reg5124 */ + struct { + RK_U32 cme_pos_x : 16; + RK_U32 cme_pos_y : 16; + } st_ppl_pos_cme; + + /* 0x00005014 reg5125 */ + struct { + RK_U32 swin_pos_x : 16; + RK_U32 swin_pos_y : 16; + } st_ppl_pos_swin; + + /* 0x00005018 reg5126 */ + struct { + RK_U32 rfme_pos_x : 16; + RK_U32 rfme_pos_y : 16; + } st_ppl_pos_rfme; + + /* 0x0000501c reg5127 */ + struct { + RK_U32 pren_pos_x : 16; + RK_U32 pren_pos_y : 16; + } st_ppl_pos_pren; + + /* 0x00005020 reg5128 */ + struct { + RK_U32 rdo_pos_x : 16; + RK_U32 rdo_pos_y : 16; + } st_ppl_pos_rdo; + + /* 0x00005024 reg5129 */ + struct { + RK_U32 lpf_pos_x : 16; + RK_U32 lpf_pos_y : 16; + } st_ppl_pos_lpf; + + /* 0x00005028 reg5130 */ + struct { + RK_U32 etpy_pos_x : 16; + RK_U32 etpy_pos_y : 16; + } st_ppl_pos_etpy; + + /* 0x0000502c reg5131 */ + struct { + RK_U32 vsp0_pos_x : 16; + RK_U32 vsp0_pos_y : 16; + } st_ppl_pos_jsp0; + + /* 0x00005030 reg5132 */ + struct { + RK_U32 vsp1_pos_x : 16; + RK_U32 vsp1_pos_y : 16; + } st_ppl_pos_jsp1; + + /* 0x00005034 reg5133 */ + struct { + RK_U32 jpeg_pos_x : 16; + RK_U32 jpeg_pos_y : 16; + } st_ppl_pos_jpeg; + + /* 0x5038 - 0x503c */ + RK_U32 reserved5134_5135[2]; + + /* 0x00005040 reg5136 */ + struct { + RK_U32 sli_num : 15; + RK_U32 reserved : 17; + } st_sli_num; + + /* 0x5044 - 0x50fc */ + RK_U32 reserved5137_5183[47]; + + /* 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; + + /* 0x5110 */ + RK_U32 reserved_5188; + + /* 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_st; + + /* 0x00005124 reg5193 */ + RK_U32 rdo_if; + + /* 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 crdy_ppr : 1; + RK_U32 cvld_ppr : 1; + RK_U32 drdy_ppw : 1; + RK_U32 dvld_ppw : 1; + RK_U32 crdy_ppw : 1; + RK_U32 cvld_ppw : 1; + RK_U32 reserved : 26; + } dbg_dma_pp; + + /* 0x00005130 reg5196 */ + struct { + RK_U32 axi_wrdy : 8; + RK_U32 axi_wvld : 8; + RK_U32 axi_awrdy : 8; + RK_U32 axi_awvld : 8; + } dbg_dma_w; + + /* 0x00005134 reg5197 */ + struct { + RK_U32 axi_otsd_read : 16; + RK_U32 axi_arrdy : 7; + RK_U32 reserved : 1; + RK_U32 axi_arvld : 7; + RK_U32 reserved1 : 1; + } dbg_dma_ar; + + /* 0x00005138 reg5198 */ + struct { + RK_U32 dfifo0_lvl : 4; + RK_U32 dfifo1_lvl : 4; + RK_U32 dfifo2_lvl : 4; + RK_U32 dfifo3_lvl : 4; + RK_U32 dfifo4_lvl : 4; + RK_U32 dfifo5_lvl : 4; + RK_U32 reserved : 6; + RK_U32 cmd_vld : 1; + RK_U32 reserved1 : 1; + } dbg_dma_r; + + /* 0x0000513c reg5199 */ + struct { + RK_U32 meiw_busy : 1; + RK_U32 dspw_busy : 1; + RK_U32 bsw_rdy : 1; + RK_U32 bsw_flsh : 1; + RK_U32 bsw_busy : 1; + RK_U32 crpw_busy : 1; + RK_U32 lktw_busy : 1; + RK_U32 lpfw_busy : 1; + RK_U32 roir_busy : 1; + RK_U32 dspr_crdy : 1; + RK_U32 dspr_cvld : 1; + RK_U32 lktr_busy : 1; + RK_U32 lpfr_otsd : 4; + RK_U32 rfpr_otsd : 12; + RK_U32 dspr_otsd : 4; + } dbg_dma_dbg0; + + /* 0x00005140 reg5200 */ + struct { + RK_U32 cpip_st : 2; + RK_U32 mvp_st : 3; + RK_U32 qpd6_st : 2; + RK_U32 cmd_st : 2; + RK_U32 reserved : 23; + } dbg_dma_dbg1; + + /* 0x00005144 reg5201 */ + struct { + RK_U32 cme_byps : 3; + RK_U32 reserved : 29; + } dbg_tctrl; + + /* 0x5148 */ + RK_U32 reserved_5202; + + /* 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; + + /* 0x00005150 reg5204 */ + RK_U32 dbg_topc_lpfr; + + /* 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 vinf_lcnt_dvbm : 14; + RK_U32 vinf_fcnt_dvbm : 8; + RK_U32 vinf_rdy_dvbm : 1; + RK_U32 vinf_vld_dvbm : 1; + RK_U32 st_cur_vinf : 3; + RK_U32 st_cur_vrsp : 2; + RK_U32 vcnt_req_sync : 1; + RK_U32 vcnt_ack_dvbm : 1; + RK_U32 vcnt_req_dvbm : 1; + } dbg_dvbm0; + + /* 0x0000516c reg5211 */ + struct { + RK_U32 vrsp_lcnt_dvbm : 14; + RK_U32 vrsp_fcnt_dvbm : 8; + RK_U32 vrsp_tgl_dvbm : 1; + RK_U32 reserved : 9; + } dbg_dvbm1; + + /* 0x00005170 reg5212 */ + struct { + RK_U32 dvbm_src_lcnt : 12; + RK_U32 jbuf_dvbm_rdy : 1; + RK_U32 vbuf_dvbm_rdy : 1; + RK_U32 work_dvbm_rdy : 1; + RK_U32 fmch_dvbm_rdy : 1; + RK_U32 vrsp_lcnt_vsld : 14; + RK_U32 vrsp_rdy_vsld : 1; + RK_U32 vrsp_vld_vsld : 1; + } dbg_dvbm2; + + /* 0x00005174 reg5213 */ + struct { + RK_U32 vsp_ctu_flag : 4; + RK_U32 reserved : 4; + RK_U32 cime_ctu_flag : 8; + RK_U32 swin_ctu_flag : 2; + RK_U32 rfme_ctu_flag : 6; + RK_U32 pnra_ctu_flag : 1; + RK_U32 rdo_ctu_flg0 : 7; + } dbg_tctrl0; + + /* 0x00005178 reg5214 */ + struct { + RK_U32 rdo_ctu_flg1 : 8; + RK_U32 jpeg_ctu_flag : 3; + RK_U32 lpf_ctu_flag : 1; + RK_U32 reserved : 4; + 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 reserved1 : 10; + } dbg_tctrl1; + + /* 0x0000517c reg5215 */ + struct { + 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 : 28; + } dbg_tctrl2; + + /* 0x5180 - 0x51fc */ + RK_U32 reserved5216_5247[32]; + + /* 0x00005200 reg5248 */ + RK_U32 frame_cyc; + + /* 0x00005204 reg5249 */ + RK_U32 pp0_fcyc; + + /* 0x00005208 reg5250 */ + RK_U32 pp1_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 jpeg_fcyc; + + /* 0x522c - 0x52fc */ + RK_U32 reserved5259_5311[53]; + + /* 0x00005300 reg5312 */ + struct { + RK_U32 axip_e : 1; + RK_U32 axip_clr : 1; + RK_U32 axip_mod : 1; + RK_U32 reserved : 29; + } axip0_cmd; + + /* 0x00005304 reg5313 */ + struct { + RK_U32 axip_ltcy_id : 4; + RK_U32 axip_ltcy_thd : 12; + RK_U32 reserved : 16; + } axip0_ltcy; + + /* 0x00005308 reg5314 */ + struct { + RK_U32 axip_cnt_typ : 1; + RK_U32 axip_cnt_ddr : 2; + RK_U32 axip_cnt_rid : 5; + RK_U32 axip_cnt_wid : 5; + RK_U32 reserved : 19; + } axip0_cnt; + + /* 0x530c */ + RK_U32 reserved_5315; + + /* 0x00005310 reg5316 */ + struct { + RK_U32 axip_e : 1; + RK_U32 axip_clr : 1; + RK_U32 axip_mod : 1; + RK_U32 reserved : 29; + } axip1_cmd; + + /* 0x00005314 reg5317 */ + struct { + RK_U32 axip_ltcy_id : 4; + RK_U32 axip_ltcy_thd : 12; + RK_U32 reserved : 16; + } axip1_ltcy; + + /* 0x00005318 reg5318 */ + struct { + RK_U32 axip_cnt_typ : 1; + RK_U32 axip_cnt_ddr : 2; + RK_U32 axip_cnt_rid : 5; + RK_U32 axip_cnt_wid : 5; + RK_U32 reserved : 19; + } axip1_cnt; + + /* 0x531c */ + RK_U32 reserved_5319; + + /* 0x00005320 reg5320 */ + struct { + RK_U32 axip_max_ltcy : 16; + RK_U32 reserved : 16; + } st_axip0_maxl; + + /* 0x00005324 reg5321 */ + RK_U32 axip_num_ltcy; + + /* 0x00005328 reg5322 */ + RK_U32 axip_sum_ltcy; + + /* 0x0000532c reg5323 */ + RK_U32 axip_rbyt; + + /* 0x00005330 reg5324 */ + RK_U32 axip_wbyt; + + /* 0x00005334 reg5325 */ + RK_U32 axip_wrk_cyc; + + /* 0x5338 - 0x533c */ + RK_U32 reserved5326_5327[2]; + + /* 0x00005340 reg5328 */ + struct { + RK_U32 axip_max_ltcy : 16; + RK_U32 reserved : 16; + } st_axip1_maxl; + + /* 0x00005344 reg5329 */ + RK_U32 axip1_num_ltcy; + + /* 0x00005348 reg5330 */ + RK_U32 axip1_sum_ltcy; + + /* 0x0000534c reg5331 */ + RK_U32 axip1_rbyt; + + /* 0x00005350 reg5332 */ + RK_U32 axip1_wbyt; + + /* 0x00005354 reg5333 */ + RK_U32 axip1_wrk_cyc; +} vepu540c_dbg; + +typedef struct Vepu540cJpegCfg_t { + MppDev dev; + void *jpeg_reg_base; + void *reg_tab; + void *enc_task; + void *input_fmt; +} Vepu540cJpegCfg; + +#ifdef __cplusplus +extern "C" { +#endif + +MPP_RET vepu540c_set_jpeg_reg(Vepu540cJpegCfg *cfg); +MPP_RET vepu540c_set_roi(void *roi_reg_base, MppEncROICfg * roi, RK_S32 w, + RK_S32 h); + +#ifdef __cplusplus +} +#endif +#endif /* __VEPU540C_COMMON_H__ */ diff --git a/mpp/hal/rkenc/common/vepu5xx.h b/mpp/hal/rkenc/common/vepu5xx.h index 2786ed13..75181b8e 100644 --- a/mpp/hal/rkenc/common/vepu5xx.h +++ b/mpp/hal/rkenc/common/vepu5xx.h @@ -18,5 +18,6 @@ #define __VEPU5XX_H__ #define HWID_VEPU58X (0x50603312) +#define HWID_VEPU540C (0x50603313) #endif /* __VEPU5XX_H__ */