1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */ 2*437bfbebSnyanmisaka /* 3*437bfbebSnyanmisaka * Copyright (c) 2024 Rockchip Electronics Co., Ltd. 4*437bfbebSnyanmisaka */ 5*437bfbebSnyanmisaka 6*437bfbebSnyanmisaka #ifndef __VDPU384A_COM_H__ 7*437bfbebSnyanmisaka #define __VDPU384A_COM_H__ 8*437bfbebSnyanmisaka 9*437bfbebSnyanmisaka #include "mpp_device.h" 10*437bfbebSnyanmisaka #include "mpp_buf_slot.h" 11*437bfbebSnyanmisaka 12*437bfbebSnyanmisaka #define OFFSET_CTRL_REGS (8 * sizeof(RK_U32)) 13*437bfbebSnyanmisaka #define OFFSET_COMMON_ADDR_REGS (128 * sizeof(RK_U32)) 14*437bfbebSnyanmisaka #define OFFSET_COM_NEW_REGS (320 * sizeof(RK_U32)) 15*437bfbebSnyanmisaka #define OFFSET_CODEC_PARAS_REGS (64 * sizeof(RK_U32)) 16*437bfbebSnyanmisaka #define OFFSET_CODEC_ADDR_REGS (168 * sizeof(RK_U32)) 17*437bfbebSnyanmisaka #define OFFSET_INTERRUPT_REGS (15 * sizeof(RK_U32)) 18*437bfbebSnyanmisaka 19*437bfbebSnyanmisaka #define RCB_ALLINE_SIZE (64) 20*437bfbebSnyanmisaka 21*437bfbebSnyanmisaka #define MPP_RCB_BYTES(bits) MPP_ALIGN((bits + 7) / 8, RCB_ALLINE_SIZE) 22*437bfbebSnyanmisaka 23*437bfbebSnyanmisaka // #define DUMP_VDPU384A_DATAS 24*437bfbebSnyanmisaka 25*437bfbebSnyanmisaka typedef enum Vdpu384aRcbType_e { 26*437bfbebSnyanmisaka RCB_STRMD_ROW, 27*437bfbebSnyanmisaka RCB_STRMD_TILE_ROW, 28*437bfbebSnyanmisaka RCB_INTER_ROW, 29*437bfbebSnyanmisaka RCB_INTER_TILE_ROW, 30*437bfbebSnyanmisaka RCB_INTRA_ROW, 31*437bfbebSnyanmisaka RCB_INTRA_TILE_ROW, 32*437bfbebSnyanmisaka RCB_FILTERD_ROW, 33*437bfbebSnyanmisaka RCB_FILTERD_PROTECT_ROW, 34*437bfbebSnyanmisaka RCB_FILTERD_TILE_ROW, 35*437bfbebSnyanmisaka RCB_FILTERD_TILE_COL, 36*437bfbebSnyanmisaka RCB_FILTERD_AV1_UP_TILE_COL, 37*437bfbebSnyanmisaka 38*437bfbebSnyanmisaka RCB_BUF_COUNT, 39*437bfbebSnyanmisaka } Vdpu384aRcbType; 40*437bfbebSnyanmisaka 41*437bfbebSnyanmisaka typedef enum Vdpu384a_RCB_SET_MODE_E { 42*437bfbebSnyanmisaka RCB_SET_BY_SIZE_SORT_MODE, 43*437bfbebSnyanmisaka RCB_SET_BY_PRIORITY_MODE, 44*437bfbebSnyanmisaka } Vdpu384aRcbSetMode_e; 45*437bfbebSnyanmisaka 46*437bfbebSnyanmisaka typedef struct Vdpu384aRegVersion_t { 47*437bfbebSnyanmisaka struct SWREG0_ID { 48*437bfbebSnyanmisaka RK_U32 minor_ver : 8; 49*437bfbebSnyanmisaka RK_U32 major_ver : 8; 50*437bfbebSnyanmisaka RK_U32 prod_num : 16; 51*437bfbebSnyanmisaka } reg0; 52*437bfbebSnyanmisaka 53*437bfbebSnyanmisaka } Vdpu384aRegVersion; 54*437bfbebSnyanmisaka 55*437bfbebSnyanmisaka typedef struct Vdpu384aCtrlReg_t { 56*437bfbebSnyanmisaka /* SWREG8_DEC_MODE */ 57*437bfbebSnyanmisaka RK_U32 reg8_dec_mode; 58*437bfbebSnyanmisaka 59*437bfbebSnyanmisaka struct SWREG9_IMPORTANT_EN { 60*437bfbebSnyanmisaka RK_U32 dpb_output_dis : 1; 61*437bfbebSnyanmisaka /* 62*437bfbebSnyanmisaka * 0: dpb data use rkfbc64x4 channel 63*437bfbebSnyanmisaka * 1: dpb data user main pp channel 64*437bfbebSnyanmisaka * 2: dpb data use scl down channel 65*437bfbebSnyanmisaka */ 66*437bfbebSnyanmisaka RK_U32 dpb_data_sel : 2; 67*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 68*437bfbebSnyanmisaka RK_U32 low_latency_en : 1; 69*437bfbebSnyanmisaka RK_U32 scale_down_en : 1; 70*437bfbebSnyanmisaka RK_U32 reserve1 : 1; 71*437bfbebSnyanmisaka RK_U32 pix_range_det_e : 1; 72*437bfbebSnyanmisaka RK_U32 av1_fgs_en : 1; 73*437bfbebSnyanmisaka RK_U32 reserve2 : 3; 74*437bfbebSnyanmisaka RK_U32 scale_down_ratio : 1; 75*437bfbebSnyanmisaka RK_U32 scale_down_10bitto8bit_en : 1; 76*437bfbebSnyanmisaka RK_U32 line_irq_en : 3; 77*437bfbebSnyanmisaka RK_U32 out_cbcr_swap : 1; 78*437bfbebSnyanmisaka RK_U32 dpb_rkfbc_force_uncompress : 1; 79*437bfbebSnyanmisaka RK_U32 dpb_rkfbc_sparse_mode : 1; 80*437bfbebSnyanmisaka RK_U32 reserve3 : 1; 81*437bfbebSnyanmisaka RK_U32 pp_m_fbc32x8_force_uncompress : 1; 82*437bfbebSnyanmisaka RK_U32 pp_m_fbc32x8_sparse_mode : 1; 83*437bfbebSnyanmisaka RK_U32 inter_max_mv_detect_en : 1; 84*437bfbebSnyanmisaka /* 85*437bfbebSnyanmisaka * 0:disable pp main channel output 86*437bfbebSnyanmisaka * 1:pp main channel output raster picture to ddr. 87*437bfbebSnyanmisaka * 2:pp main channel output tile4x4 picture to ddr. 88*437bfbebSnyanmisaka * 3:pp main channel output afbc32x8 picture to ddr. 89*437bfbebSnyanmisaka */ 90*437bfbebSnyanmisaka RK_U32 pp_m_output_mode : 2; 91*437bfbebSnyanmisaka RK_U32 reserve4 : 6; 92*437bfbebSnyanmisaka } reg9; 93*437bfbebSnyanmisaka 94*437bfbebSnyanmisaka struct SWREG10_BLOCK_GATING_EN { 95*437bfbebSnyanmisaka RK_U32 strmd_auto_gating_e : 1; 96*437bfbebSnyanmisaka RK_U32 inter_auto_gating_e : 1; 97*437bfbebSnyanmisaka RK_U32 intra_auto_gating_e : 1; 98*437bfbebSnyanmisaka RK_U32 transd_auto_gating_e : 1; 99*437bfbebSnyanmisaka RK_U32 recon_auto_gating_e : 1; 100*437bfbebSnyanmisaka RK_U32 filterd_auto_gating_e : 1; 101*437bfbebSnyanmisaka RK_U32 bus_auto_gating_e : 1; 102*437bfbebSnyanmisaka RK_U32 ctrl_auto_gating_e : 1; 103*437bfbebSnyanmisaka RK_U32 rcb_auto_gating_e : 1; 104*437bfbebSnyanmisaka RK_U32 err_prc_auto_gating_e : 1; 105*437bfbebSnyanmisaka RK_U32 reserve0 : 22; 106*437bfbebSnyanmisaka } reg10; 107*437bfbebSnyanmisaka 108*437bfbebSnyanmisaka struct SWREG11_CFG_PARA { 109*437bfbebSnyanmisaka RK_U32 frame_irq_dis : 1; 110*437bfbebSnyanmisaka RK_U32 reserve0 : 8; 111*437bfbebSnyanmisaka RK_U32 dec_timeout_dis : 1; 112*437bfbebSnyanmisaka RK_U32 reserve1 : 6; 113*437bfbebSnyanmisaka RK_U32 rd_outstanding : 8; 114*437bfbebSnyanmisaka RK_U32 wr_outstanding : 8; 115*437bfbebSnyanmisaka } reg11; 116*437bfbebSnyanmisaka 117*437bfbebSnyanmisaka struct SWREG12_CACHE_HASH_MASK { 118*437bfbebSnyanmisaka RK_U32 reserve0 : 7; 119*437bfbebSnyanmisaka RK_U32 cache_hash_mask : 25; 120*437bfbebSnyanmisaka } reg12; 121*437bfbebSnyanmisaka 122*437bfbebSnyanmisaka /* SWREG13_CORE_TIMEOUT_THRESHOLD */ 123*437bfbebSnyanmisaka RK_U32 reg13_core_timeout_threshold; 124*437bfbebSnyanmisaka 125*437bfbebSnyanmisaka struct SWREG14_LINE_IRQ_CTRL { 126*437bfbebSnyanmisaka RK_U32 dec_line_irq_step : 16; 127*437bfbebSnyanmisaka RK_U32 dec_line_offset_y_st : 16; 128*437bfbebSnyanmisaka } reg14; 129*437bfbebSnyanmisaka 130*437bfbebSnyanmisaka /* copy from llp, media group add */ 131*437bfbebSnyanmisaka struct SWREG15_IRQ_STA { 132*437bfbebSnyanmisaka RK_U32 rkvdec_frame_rdy_sta : 1; 133*437bfbebSnyanmisaka RK_U32 rkvdec_strm_error_sta : 1; 134*437bfbebSnyanmisaka RK_U32 rkvdec_core_timeout_sta : 1; 135*437bfbebSnyanmisaka RK_U32 rkvdec_ip_timeout_sta : 1; 136*437bfbebSnyanmisaka RK_U32 rkvdec_bus_error_sta : 1; 137*437bfbebSnyanmisaka RK_U32 rkvdec_buffer_empty_sta : 1; 138*437bfbebSnyanmisaka RK_U32 rkvdec_colmv_ref_error_sta : 1; 139*437bfbebSnyanmisaka RK_U32 rkvdec_error_spread_sta : 1; 140*437bfbebSnyanmisaka RK_U32 create_core_timeout_sta : 1; 141*437bfbebSnyanmisaka RK_U32 wlast_miss_match_sta : 1; 142*437bfbebSnyanmisaka RK_U32 rkvdec_core_rst_rdy_sta : 1; 143*437bfbebSnyanmisaka RK_U32 rkvdec_ip_rst_rdy_sta : 1; 144*437bfbebSnyanmisaka RK_U32 force_busidle_rdy_sta : 1; 145*437bfbebSnyanmisaka RK_U32 ltb_pause_rdy_sta : 1; 146*437bfbebSnyanmisaka RK_U32 ltb_end_flag : 1; 147*437bfbebSnyanmisaka RK_U32 unsupport_decmode_error_sta : 1; 148*437bfbebSnyanmisaka RK_U32 wmask_bits : 15; 149*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 150*437bfbebSnyanmisaka } reg15; 151*437bfbebSnyanmisaka 152*437bfbebSnyanmisaka struct SWREG16_ERROR_CTRL_SET { 153*437bfbebSnyanmisaka RK_U32 error_proc_disable : 1; 154*437bfbebSnyanmisaka RK_U32 reserve0 : 3; 155*437bfbebSnyanmisaka RK_U32 error_proc_mode : 1; 156*437bfbebSnyanmisaka RK_U32 reserve1 : 3; 157*437bfbebSnyanmisaka RK_U32 error_spread_disable : 1; 158*437bfbebSnyanmisaka RK_U32 error_fill_mode : 1; 159*437bfbebSnyanmisaka RK_U32 reserve2 : 14; 160*437bfbebSnyanmisaka RK_U32 roi_error_ctu_cal_en : 1; 161*437bfbebSnyanmisaka RK_U32 reserve3 : 7; 162*437bfbebSnyanmisaka } reg16; 163*437bfbebSnyanmisaka 164*437bfbebSnyanmisaka struct SWREG17_ERR_ROI_CTU_OFFSET_START { 165*437bfbebSnyanmisaka RK_U32 roi_x_ctu_offset_st : 12; 166*437bfbebSnyanmisaka RK_U32 reserve0 : 4; 167*437bfbebSnyanmisaka RK_U32 roi_y_ctu_offset_st : 12; 168*437bfbebSnyanmisaka RK_U32 reserve1 : 4; 169*437bfbebSnyanmisaka } reg17; 170*437bfbebSnyanmisaka 171*437bfbebSnyanmisaka struct SWREG18_ERR_ROI_CTU_OFFSET_END { 172*437bfbebSnyanmisaka RK_U32 roi_x_ctu_offset_end : 12; 173*437bfbebSnyanmisaka RK_U32 reserve0 : 4; 174*437bfbebSnyanmisaka RK_U32 roi_y_ctu_offset_end : 12; 175*437bfbebSnyanmisaka RK_U32 reserve1 : 4; 176*437bfbebSnyanmisaka } reg18; 177*437bfbebSnyanmisaka 178*437bfbebSnyanmisaka struct SWREG19_ERROR_REF_INFO { 179*437bfbebSnyanmisaka RK_U32 avs2_ref_error_field : 1; 180*437bfbebSnyanmisaka RK_U32 avs2_ref_error_topfield : 1; 181*437bfbebSnyanmisaka RK_U32 ref_error_topfield_used : 1; 182*437bfbebSnyanmisaka RK_U32 ref_error_botfield_used : 1; 183*437bfbebSnyanmisaka RK_U32 reserve0 : 28; 184*437bfbebSnyanmisaka } reg19; 185*437bfbebSnyanmisaka 186*437bfbebSnyanmisaka /* SWREG20_CABAC_ERROR_EN_LOWBITS */ 187*437bfbebSnyanmisaka RK_U32 reg20_cabac_error_en_lowbits; 188*437bfbebSnyanmisaka 189*437bfbebSnyanmisaka /* SWREG21_CABAC_ERROR_EN_HIGHBITS */ 190*437bfbebSnyanmisaka RK_U32 reg21_cabac_error_en_highbits; 191*437bfbebSnyanmisaka 192*437bfbebSnyanmisaka RK_U32 reserve_reg22; 193*437bfbebSnyanmisaka 194*437bfbebSnyanmisaka struct SWREG23_INVALID_PIXEL_FILL { 195*437bfbebSnyanmisaka RK_U32 fill_y : 10; 196*437bfbebSnyanmisaka RK_U32 fill_u : 10; 197*437bfbebSnyanmisaka RK_U32 fill_v : 10; 198*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 199*437bfbebSnyanmisaka } reg23; 200*437bfbebSnyanmisaka 201*437bfbebSnyanmisaka RK_U32 reserve_reg24_27[4]; 202*437bfbebSnyanmisaka 203*437bfbebSnyanmisaka struct SWREG28_DEBUG_PERF_LATENCY_CTRL0 { 204*437bfbebSnyanmisaka RK_U32 axi_perf_work_e : 1; 205*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 206*437bfbebSnyanmisaka RK_U32 axi_cnt_type : 1; 207*437bfbebSnyanmisaka RK_U32 rd_latency_id : 8; 208*437bfbebSnyanmisaka RK_U32 reserve1 : 4; 209*437bfbebSnyanmisaka RK_U32 rd_latency_thr : 12; 210*437bfbebSnyanmisaka RK_U32 reserve2 : 4; 211*437bfbebSnyanmisaka } reg28; 212*437bfbebSnyanmisaka 213*437bfbebSnyanmisaka struct SWREG29_DEBUG_PERF_LATENCY_CTRL1 { 214*437bfbebSnyanmisaka RK_U32 addr_align_type : 2; 215*437bfbebSnyanmisaka RK_U32 ar_cnt_id_type : 1; 216*437bfbebSnyanmisaka RK_U32 aw_cnt_id_type : 1; 217*437bfbebSnyanmisaka RK_U32 ar_count_id : 8; 218*437bfbebSnyanmisaka RK_U32 reserve0 : 4; 219*437bfbebSnyanmisaka RK_U32 aw_count_id : 8; 220*437bfbebSnyanmisaka RK_U32 rd_band_width_mode : 1; 221*437bfbebSnyanmisaka RK_U32 reserve1 : 7; 222*437bfbebSnyanmisaka } reg29; 223*437bfbebSnyanmisaka 224*437bfbebSnyanmisaka struct SWREG30_QOS_CTRL { 225*437bfbebSnyanmisaka RK_U32 axi_wr_qos_level : 4; 226*437bfbebSnyanmisaka RK_U32 reserve0 : 4; 227*437bfbebSnyanmisaka RK_U32 axi_wr_qos : 4; 228*437bfbebSnyanmisaka RK_U32 reserve1 : 4; 229*437bfbebSnyanmisaka RK_U32 axi_rd_qos_level : 4; 230*437bfbebSnyanmisaka RK_U32 reserve2 : 4; 231*437bfbebSnyanmisaka RK_U32 axi_rd_qos : 4; 232*437bfbebSnyanmisaka RK_U32 reserve3 : 4; 233*437bfbebSnyanmisaka } reg30; 234*437bfbebSnyanmisaka 235*437bfbebSnyanmisaka } Vdpu384aCtrlReg; 236*437bfbebSnyanmisaka 237*437bfbebSnyanmisaka typedef struct Vdpu384aRegCommonAddr_t { 238*437bfbebSnyanmisaka /* SWREG128_STRM_BASE */ 239*437bfbebSnyanmisaka RK_U32 reg128_strm_base; 240*437bfbebSnyanmisaka 241*437bfbebSnyanmisaka /* SWREG129_STREAM_BUF_ST_BASE */ 242*437bfbebSnyanmisaka RK_U32 reg129_stream_buf_st_base; 243*437bfbebSnyanmisaka 244*437bfbebSnyanmisaka /* SWREG130_STREAM_BUF_END_BASE */ 245*437bfbebSnyanmisaka RK_U32 reg130_stream_buf_end_base; 246*437bfbebSnyanmisaka 247*437bfbebSnyanmisaka /* SWREG131_GBL_BASE */ 248*437bfbebSnyanmisaka RK_U32 reg131_gbl_base; 249*437bfbebSnyanmisaka 250*437bfbebSnyanmisaka /* SWREG132_SCANLIST_ADDR */ 251*437bfbebSnyanmisaka RK_U32 reg132_scanlist_addr; 252*437bfbebSnyanmisaka 253*437bfbebSnyanmisaka /* SWREG133_SCL_BASE */ 254*437bfbebSnyanmisaka RK_U32 reg133_scale_down_base; 255*437bfbebSnyanmisaka 256*437bfbebSnyanmisaka /* SWREG134_FGS_BASE */ 257*437bfbebSnyanmisaka RK_U32 reg134_fgs_base; 258*437bfbebSnyanmisaka 259*437bfbebSnyanmisaka /* SWREG135_PP_M_DECOUT_BASE */ 260*437bfbebSnyanmisaka RK_U32 reg135_pp_m_decout_base; 261*437bfbebSnyanmisaka 262*437bfbebSnyanmisaka /* SWREG136_PP_M_FBC32x8_PAYLOAD_OFFSET */ 263*437bfbebSnyanmisaka RK_U32 reg136_pp_m_fbc32x8_payload_offset; 264*437bfbebSnyanmisaka 265*437bfbebSnyanmisaka RK_U32 reserve_reg137_139[3]; 266*437bfbebSnyanmisaka 267*437bfbebSnyanmisaka /* SWREG140_RCB_STRMD_ROW_OFFSET */ 268*437bfbebSnyanmisaka RK_U32 reg140_rcb_strmd_row_offset; 269*437bfbebSnyanmisaka 270*437bfbebSnyanmisaka /* SWREG141_RCB_STRMD_ROW_LEN */ 271*437bfbebSnyanmisaka RK_U32 reg141_rcb_strmd_row_len; 272*437bfbebSnyanmisaka 273*437bfbebSnyanmisaka /* SWREG142_RCB_STRMD_TILE_ROW_OFFSET */ 274*437bfbebSnyanmisaka RK_U32 reg142_rcb_strmd_tile_row_offset; 275*437bfbebSnyanmisaka 276*437bfbebSnyanmisaka /* SWREG143_RCB_STRMD_TILE_ROW_LEN */ 277*437bfbebSnyanmisaka RK_U32 reg143_rcb_strmd_tile_row_len; 278*437bfbebSnyanmisaka 279*437bfbebSnyanmisaka /* SWREG144_RCB_INTER_ROW_OFFSET */ 280*437bfbebSnyanmisaka RK_U32 reg144_rcb_inter_row_offset; 281*437bfbebSnyanmisaka 282*437bfbebSnyanmisaka /* SWREG145_RCB_INTER_ROW_LEN */ 283*437bfbebSnyanmisaka RK_U32 reg145_rcb_inter_row_len; 284*437bfbebSnyanmisaka 285*437bfbebSnyanmisaka /* SWREG146_RCB_INTER_TILE_ROW_OFFSET */ 286*437bfbebSnyanmisaka RK_U32 reg146_rcb_inter_tile_row_offset; 287*437bfbebSnyanmisaka 288*437bfbebSnyanmisaka /* SWREG147_RCB_INTER_TILE_ROW_LEN */ 289*437bfbebSnyanmisaka RK_U32 reg147_rcb_inter_tile_row_len; 290*437bfbebSnyanmisaka 291*437bfbebSnyanmisaka /* SWREG148_RCB_INTRA_ROW_OFFSET */ 292*437bfbebSnyanmisaka RK_U32 reg148_rcb_intra_row_offset; 293*437bfbebSnyanmisaka 294*437bfbebSnyanmisaka /* SWREG149_RCB_INTRA_ROW_LEN */ 295*437bfbebSnyanmisaka RK_U32 reg149_rcb_intra_row_len; 296*437bfbebSnyanmisaka 297*437bfbebSnyanmisaka /* SWREG150_RCB_INTRA_TILE_ROW_OFFSET */ 298*437bfbebSnyanmisaka RK_U32 reg150_rcb_intra_tile_row_offset; 299*437bfbebSnyanmisaka 300*437bfbebSnyanmisaka /* SWREG151_RCB_INTRA_TILE_ROW_LEN */ 301*437bfbebSnyanmisaka RK_U32 reg151_rcb_intra_tile_row_len; 302*437bfbebSnyanmisaka 303*437bfbebSnyanmisaka /* SWREG152_RCB_FILTERD_ROW_OFFSET */ 304*437bfbebSnyanmisaka RK_U32 reg152_rcb_filterd_row_offset; 305*437bfbebSnyanmisaka 306*437bfbebSnyanmisaka /* SWREG153_RCB_FILTERD_ROW_LEN */ 307*437bfbebSnyanmisaka RK_U32 reg153_rcb_filterd_row_len; 308*437bfbebSnyanmisaka 309*437bfbebSnyanmisaka RK_U32 reserve_reg154_155[2]; 310*437bfbebSnyanmisaka 311*437bfbebSnyanmisaka /* SWREG156_RCB_FILTERD_TILE_ROW_OFFSET */ 312*437bfbebSnyanmisaka RK_U32 reg156_rcb_filterd_tile_row_offset; 313*437bfbebSnyanmisaka 314*437bfbebSnyanmisaka /* SWREG157_RCB_FILTERD_TILE_ROW_LEN */ 315*437bfbebSnyanmisaka RK_U32 reg157_rcb_filterd_tile_row_len; 316*437bfbebSnyanmisaka 317*437bfbebSnyanmisaka /* SWREG158_RCB_FILTERD_TILE_COL_OFFSET */ 318*437bfbebSnyanmisaka RK_U32 reg158_rcb_filterd_tile_col_offset; 319*437bfbebSnyanmisaka 320*437bfbebSnyanmisaka /* SWREG159_RCB_FILTERD_TILE_COL_LEN */ 321*437bfbebSnyanmisaka RK_U32 reg159_rcb_filterd_tile_col_len; 322*437bfbebSnyanmisaka 323*437bfbebSnyanmisaka /* SWREG160_RCB_FILTERD_AV1_UPSCALE_TILE_COL_OFFSET */ 324*437bfbebSnyanmisaka RK_U32 reg160_rcb_filterd_av1_upscale_tile_col_offset; 325*437bfbebSnyanmisaka 326*437bfbebSnyanmisaka /* SWREG161_RCB_FILTERD_AV1_UPSCALE_TILE_COL_LEN */ 327*437bfbebSnyanmisaka RK_U32 reg161_rcb_filterd_av1_upscale_tile_col_len; 328*437bfbebSnyanmisaka 329*437bfbebSnyanmisaka } Vdpu384aRegCommonAddr; 330*437bfbebSnyanmisaka 331*437bfbebSnyanmisaka typedef struct Vdpu384aRegCommParas_t { 332*437bfbebSnyanmisaka /* SWREG64_H26X_PARA */ 333*437bfbebSnyanmisaka RK_U32 reg64_unused_bits; 334*437bfbebSnyanmisaka 335*437bfbebSnyanmisaka /* SWREG65_STREAM_PARAM_SET */ 336*437bfbebSnyanmisaka RK_U32 reg65_strm_start_bit; 337*437bfbebSnyanmisaka 338*437bfbebSnyanmisaka /* SWREG66_STREAM_LEN */ 339*437bfbebSnyanmisaka RK_U32 reg66_stream_len; 340*437bfbebSnyanmisaka 341*437bfbebSnyanmisaka /* SWREG67_GLOBAL_LEN */ 342*437bfbebSnyanmisaka RK_U32 reg67_global_len; 343*437bfbebSnyanmisaka 344*437bfbebSnyanmisaka /* SWREG68_DPB_HOR_STRIDE */ 345*437bfbebSnyanmisaka RK_U32 reg68_dpb_hor_virstride; 346*437bfbebSnyanmisaka 347*437bfbebSnyanmisaka RK_U32 reserve_reg69_70[2]; 348*437bfbebSnyanmisaka 349*437bfbebSnyanmisaka /* SWREG71_SCL_Y_HOR_VIRSTRIDE */ 350*437bfbebSnyanmisaka RK_U32 reg71_scl_ref_hor_virstride; 351*437bfbebSnyanmisaka 352*437bfbebSnyanmisaka /* SWREG72_SCL_UV_HOR_VIRSTRIDE */ 353*437bfbebSnyanmisaka RK_U32 reg72_scl_ref_raster_uv_hor_virstride; 354*437bfbebSnyanmisaka 355*437bfbebSnyanmisaka /* SWREG73_SCL_Y_VIRSTRIDE */ 356*437bfbebSnyanmisaka RK_U32 reg73_scl_ref_virstride; 357*437bfbebSnyanmisaka 358*437bfbebSnyanmisaka /* SWREG74_FGS_Y_HOR_VIRSTRIDE */ 359*437bfbebSnyanmisaka RK_U32 reg74_fgs_ref_hor_virstride; 360*437bfbebSnyanmisaka 361*437bfbebSnyanmisaka RK_U32 reserve_reg75_76[2]; 362*437bfbebSnyanmisaka 363*437bfbebSnyanmisaka /* SWREG77_HEAD_HOR_STRIDE */ 364*437bfbebSnyanmisaka RK_U32 reg77_pp_m_hor_stride; 365*437bfbebSnyanmisaka 366*437bfbebSnyanmisaka /* SWREG78_PP_M_RASTER_UV_HOR_STRIDE */ 367*437bfbebSnyanmisaka RK_U32 reg78_pp_m_uv_hor_stride; 368*437bfbebSnyanmisaka 369*437bfbebSnyanmisaka /* SWREG79_PP_M_Y_STRIDE */ 370*437bfbebSnyanmisaka RK_U32 reg79_pp_m_y_virstride; 371*437bfbebSnyanmisaka 372*437bfbebSnyanmisaka /* SWREG80_ERROR_REF_Y_HOR_VIRSTRIDE */ 373*437bfbebSnyanmisaka RK_U32 reg80_error_ref_hor_virstride; 374*437bfbebSnyanmisaka 375*437bfbebSnyanmisaka /* SWREG81_ERROR_REF_UV_HOR_VIRSTRIDE */ 376*437bfbebSnyanmisaka RK_U32 reg81_error_ref_raster_uv_hor_virstride; 377*437bfbebSnyanmisaka 378*437bfbebSnyanmisaka /* SWREG82_ERROR_REF_Y_VIRSTRIDE */ 379*437bfbebSnyanmisaka RK_U32 reg82_error_ref_virstride; 380*437bfbebSnyanmisaka 381*437bfbebSnyanmisaka /* SWREG83_REF0_Y_HOR_VIRSTRIDE */ 382*437bfbebSnyanmisaka RK_U32 reg83_ref0_hor_virstride; 383*437bfbebSnyanmisaka 384*437bfbebSnyanmisaka /* SWREG84_REF0_UV_HOR_VIRSTRIDE */ 385*437bfbebSnyanmisaka RK_U32 reg84_ref0_raster_uv_hor_virstride; 386*437bfbebSnyanmisaka 387*437bfbebSnyanmisaka /* SWREG85_REF0_Y_VIRSTRIDE */ 388*437bfbebSnyanmisaka RK_U32 reg85_ref0_virstride; 389*437bfbebSnyanmisaka 390*437bfbebSnyanmisaka /* SWREG86_REF1_Y_HOR_VIRSTRIDE */ 391*437bfbebSnyanmisaka RK_U32 reg86_ref1_hor_virstride; 392*437bfbebSnyanmisaka 393*437bfbebSnyanmisaka /* SWREG87_REF1_UV_HOR_VIRSTRIDE */ 394*437bfbebSnyanmisaka RK_U32 reg87_ref1_raster_uv_hor_virstride; 395*437bfbebSnyanmisaka 396*437bfbebSnyanmisaka /* SWREG88_REF1_Y_VIRSTRIDE */ 397*437bfbebSnyanmisaka RK_U32 reg88_ref1_virstride; 398*437bfbebSnyanmisaka 399*437bfbebSnyanmisaka /* SWREG89_REF2_Y_HOR_VIRSTRIDE */ 400*437bfbebSnyanmisaka RK_U32 reg89_ref2_hor_virstride; 401*437bfbebSnyanmisaka 402*437bfbebSnyanmisaka /* SWREG90_REF2_UV_HOR_VIRSTRIDE */ 403*437bfbebSnyanmisaka RK_U32 reg90_ref2_raster_uv_hor_virstride; 404*437bfbebSnyanmisaka 405*437bfbebSnyanmisaka /* SWREG91_REF2_Y_VIRSTRIDE */ 406*437bfbebSnyanmisaka RK_U32 reg91_ref2_virstride; 407*437bfbebSnyanmisaka 408*437bfbebSnyanmisaka /* SWREG92_REF3_Y_HOR_VIRSTRIDE */ 409*437bfbebSnyanmisaka RK_U32 reg92_ref3_hor_virstride; 410*437bfbebSnyanmisaka 411*437bfbebSnyanmisaka /* SWREG93_REF3_UV_HOR_VIRSTRIDE */ 412*437bfbebSnyanmisaka RK_U32 reg93_ref3_raster_uv_hor_virstride; 413*437bfbebSnyanmisaka 414*437bfbebSnyanmisaka /* SWREG94_REF3_Y_VIRSTRIDE */ 415*437bfbebSnyanmisaka RK_U32 reg94_ref3_virstride; 416*437bfbebSnyanmisaka 417*437bfbebSnyanmisaka /* SWREG95_REF4_Y_HOR_VIRSTRIDE */ 418*437bfbebSnyanmisaka RK_U32 reg95_ref4_hor_virstride; 419*437bfbebSnyanmisaka 420*437bfbebSnyanmisaka /* SWREG96_REF4_UV_HOR_VIRSTRIDE */ 421*437bfbebSnyanmisaka RK_U32 reg96_ref4_raster_uv_hor_virstride; 422*437bfbebSnyanmisaka 423*437bfbebSnyanmisaka /* SWREG97_REF4_Y_VIRSTRIDE */ 424*437bfbebSnyanmisaka RK_U32 reg97_ref4_virstride; 425*437bfbebSnyanmisaka 426*437bfbebSnyanmisaka /* SWREG98_REF5_Y_HOR_VIRSTRIDE */ 427*437bfbebSnyanmisaka RK_U32 reg98_ref5_hor_virstride; 428*437bfbebSnyanmisaka 429*437bfbebSnyanmisaka /* SWREG99_REF5_UV_HOR_VIRSTRIDE */ 430*437bfbebSnyanmisaka RK_U32 reg99_ref5_raster_uv_hor_virstride; 431*437bfbebSnyanmisaka 432*437bfbebSnyanmisaka /* SWREG100_REF5_Y_VIRSTRIDE */ 433*437bfbebSnyanmisaka RK_U32 reg100_ref5_virstride; 434*437bfbebSnyanmisaka 435*437bfbebSnyanmisaka /* SWREG101_REF6_Y_HOR_VIRSTRIDE */ 436*437bfbebSnyanmisaka RK_U32 reg101_ref6_hor_virstride; 437*437bfbebSnyanmisaka 438*437bfbebSnyanmisaka /* SWREG102_REF6_UV_HOR_VIRSTRIDE */ 439*437bfbebSnyanmisaka RK_U32 reg102_ref6_raster_uv_hor_virstride; 440*437bfbebSnyanmisaka 441*437bfbebSnyanmisaka /* SWREG103_REF6_Y_VIRSTRIDE */ 442*437bfbebSnyanmisaka RK_U32 reg103_ref6_virstride; 443*437bfbebSnyanmisaka 444*437bfbebSnyanmisaka /* SWREG104_REF7_Y_HOR_VIRSTRIDE */ 445*437bfbebSnyanmisaka RK_U32 reg104_ref7_hor_virstride; 446*437bfbebSnyanmisaka 447*437bfbebSnyanmisaka /* SWREG105_REF7_UV_HOR_VIRSTRIDE */ 448*437bfbebSnyanmisaka RK_U32 reg105_ref7_raster_uv_hor_virstride; 449*437bfbebSnyanmisaka 450*437bfbebSnyanmisaka /* SWREG106_REF7_Y_VIRSTRIDE */ 451*437bfbebSnyanmisaka RK_U32 reg106_ref7_virstride; 452*437bfbebSnyanmisaka 453*437bfbebSnyanmisaka } Vdpu384aRegCommParas; 454*437bfbebSnyanmisaka 455*437bfbebSnyanmisaka typedef struct Vdpu384aRegStatistic_t { 456*437bfbebSnyanmisaka struct SWREG256_IDLE_FLAG { 457*437bfbebSnyanmisaka RK_U32 reserve0 : 24; 458*437bfbebSnyanmisaka RK_U32 rkvdec_bus_idle_flag : 1; 459*437bfbebSnyanmisaka RK_U32 reserve1 : 7; 460*437bfbebSnyanmisaka } reg256; 461*437bfbebSnyanmisaka 462*437bfbebSnyanmisaka RK_U32 reserve_reg257; 463*437bfbebSnyanmisaka 464*437bfbebSnyanmisaka /* SWREG258_PERF_MONITOR */ 465*437bfbebSnyanmisaka RK_U32 reg258_perf_rd_max_latency_num; 466*437bfbebSnyanmisaka 467*437bfbebSnyanmisaka /* SWREG259_PERF_MONITOR */ 468*437bfbebSnyanmisaka RK_U32 reg259_perf_rd_latency_samp_num; 469*437bfbebSnyanmisaka 470*437bfbebSnyanmisaka /* SWREG260_PERF_MONITOR */ 471*437bfbebSnyanmisaka RK_U32 reg260_perf_rd_latency_acc_sum; 472*437bfbebSnyanmisaka 473*437bfbebSnyanmisaka /* SWREG261_PERF_MONITOR */ 474*437bfbebSnyanmisaka RK_U32 reg261_perf_rd_axi_total_byte; 475*437bfbebSnyanmisaka 476*437bfbebSnyanmisaka /* SWREG262_PERF_MONITOR */ 477*437bfbebSnyanmisaka RK_U32 reg262_perf_wr_axi_total_bytes; 478*437bfbebSnyanmisaka 479*437bfbebSnyanmisaka /* SWREG263_PERF_MONITOR */ 480*437bfbebSnyanmisaka RK_U32 reg263_perf_working_cnt; 481*437bfbebSnyanmisaka 482*437bfbebSnyanmisaka RK_U32 reserve_reg264_272[9]; 483*437bfbebSnyanmisaka 484*437bfbebSnyanmisaka /* SWREG273_REFLIST_IDX_USED */ 485*437bfbebSnyanmisaka RK_U32 reg273_inter_sw_reflst_idx_use; 486*437bfbebSnyanmisaka 487*437bfbebSnyanmisaka RK_U32 reserve_reg274_284[11]; 488*437bfbebSnyanmisaka 489*437bfbebSnyanmisaka /* SWREG285_PAYLOAD_CNT */ 490*437bfbebSnyanmisaka RK_U32 reg285_filterd_payload_total_cnt; 491*437bfbebSnyanmisaka 492*437bfbebSnyanmisaka struct SWREG286_WR_OFFSET { 493*437bfbebSnyanmisaka RK_U32 filterd_report_offsety : 16; 494*437bfbebSnyanmisaka RK_U32 filterd_report_offsetx : 16; 495*437bfbebSnyanmisaka } reg286; 496*437bfbebSnyanmisaka 497*437bfbebSnyanmisaka struct SWREG287_MAX_PIX { 498*437bfbebSnyanmisaka RK_U32 filterd_max_y : 10; 499*437bfbebSnyanmisaka RK_U32 filterd_max_u : 10; 500*437bfbebSnyanmisaka RK_U32 filterd_max_v : 10; 501*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 502*437bfbebSnyanmisaka } reg287; 503*437bfbebSnyanmisaka 504*437bfbebSnyanmisaka struct SWREG288_MIN_PIX { 505*437bfbebSnyanmisaka RK_U32 filterd_min_y : 10; 506*437bfbebSnyanmisaka RK_U32 filterd_min_u : 10; 507*437bfbebSnyanmisaka RK_U32 filterd_min_v : 10; 508*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 509*437bfbebSnyanmisaka } reg288; 510*437bfbebSnyanmisaka 511*437bfbebSnyanmisaka /* SWREG289_WR_LINE_NUM */ 512*437bfbebSnyanmisaka RK_U32 reg289_filterd_line_irq_offsety; 513*437bfbebSnyanmisaka 514*437bfbebSnyanmisaka RK_U32 reserve_reg290_291[2]; 515*437bfbebSnyanmisaka 516*437bfbebSnyanmisaka struct SWREG292_RCB_RW_SUM { 517*437bfbebSnyanmisaka RK_U32 rcb_rd_sum_chk : 8; 518*437bfbebSnyanmisaka RK_U32 rcb_wr_sum_chk : 8; 519*437bfbebSnyanmisaka RK_U32 reserve0 : 16; 520*437bfbebSnyanmisaka } reg292; 521*437bfbebSnyanmisaka 522*437bfbebSnyanmisaka RK_U32 reserve_reg293; 523*437bfbebSnyanmisaka 524*437bfbebSnyanmisaka struct SWREG294_ERR_CTU_NUM0 { 525*437bfbebSnyanmisaka RK_U32 error_ctu_num : 24; 526*437bfbebSnyanmisaka RK_U32 roi_error_ctu_num_lowbit : 8; 527*437bfbebSnyanmisaka } reg294; 528*437bfbebSnyanmisaka 529*437bfbebSnyanmisaka /* SWREG295_ERR_CTU_NUM1 */ 530*437bfbebSnyanmisaka RK_U32 reg295_roi_error_ctu_num_highbit; 531*437bfbebSnyanmisaka 532*437bfbebSnyanmisaka } Vdpu384aRegStatistic; 533*437bfbebSnyanmisaka 534*437bfbebSnyanmisaka typedef struct Vdpu384aRegLlp_t { 535*437bfbebSnyanmisaka struct SWREG0_LINK_MODE { 536*437bfbebSnyanmisaka RK_U32 llp_mmu_zap_cache_dis : 1; 537*437bfbebSnyanmisaka RK_U32 reserve0 : 15; 538*437bfbebSnyanmisaka RK_U32 core_work_mode : 1; 539*437bfbebSnyanmisaka RK_U32 ccu_core_work_mode : 1; 540*437bfbebSnyanmisaka RK_U32 reserve1 : 3; 541*437bfbebSnyanmisaka RK_U32 ltb_pause_flag : 1; 542*437bfbebSnyanmisaka RK_U32 reserve2 : 10; 543*437bfbebSnyanmisaka } reg0; 544*437bfbebSnyanmisaka 545*437bfbebSnyanmisaka struct SWREG1_CFG_START_ADDR { 546*437bfbebSnyanmisaka RK_U32 reserve0 : 4; 547*437bfbebSnyanmisaka RK_U32 reg_cfg_addr : 28; 548*437bfbebSnyanmisaka } reg1; 549*437bfbebSnyanmisaka 550*437bfbebSnyanmisaka struct SWREG2_LINK_MODE { 551*437bfbebSnyanmisaka RK_U32 pre_frame_num : 30; 552*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 553*437bfbebSnyanmisaka RK_U32 link_mode : 1; 554*437bfbebSnyanmisaka } reg2; 555*437bfbebSnyanmisaka 556*437bfbebSnyanmisaka /* SWREG3_CONFIG_DONE */ 557*437bfbebSnyanmisaka RK_U32 reg3_done; 558*437bfbebSnyanmisaka 559*437bfbebSnyanmisaka /* SWREG4_DECODERED_NUM */ 560*437bfbebSnyanmisaka RK_U32 reg4_num; 561*437bfbebSnyanmisaka 562*437bfbebSnyanmisaka /* SWREG5_DEC_TOTAL_NUM */ 563*437bfbebSnyanmisaka RK_U32 reg5_total_num; 564*437bfbebSnyanmisaka 565*437bfbebSnyanmisaka /* SWREG6_LINK_MODE_EN */ 566*437bfbebSnyanmisaka RK_U32 reg6_mode_en; 567*437bfbebSnyanmisaka 568*437bfbebSnyanmisaka /* SWREG7_SKIP_NUM */ 569*437bfbebSnyanmisaka RK_U32 reg7_num; 570*437bfbebSnyanmisaka 571*437bfbebSnyanmisaka /* SWREG8_CUR_LTB_IDX */ 572*437bfbebSnyanmisaka RK_U32 reg8_ltb_idx; 573*437bfbebSnyanmisaka 574*437bfbebSnyanmisaka RK_U32 reserve_reg9_15[7]; 575*437bfbebSnyanmisaka 576*437bfbebSnyanmisaka /* SWREG16_DEC_E */ 577*437bfbebSnyanmisaka RK_U32 reg16_dec_e; 578*437bfbebSnyanmisaka 579*437bfbebSnyanmisaka /* SWREG17_SOFT_RST */ 580*437bfbebSnyanmisaka RK_U32 reg17_rkvdec_ip_rst_p; 581*437bfbebSnyanmisaka 582*437bfbebSnyanmisaka struct SWREG18_IRQ { 583*437bfbebSnyanmisaka RK_U32 rkvdec_irq : 1; 584*437bfbebSnyanmisaka RK_U32 rkvdec_line_irq : 1; 585*437bfbebSnyanmisaka RK_U32 reserve0 : 14; 586*437bfbebSnyanmisaka RK_U32 wmask : 2; 587*437bfbebSnyanmisaka RK_U32 reserve1 : 14; 588*437bfbebSnyanmisaka } reg18; 589*437bfbebSnyanmisaka 590*437bfbebSnyanmisaka struct SWREG19_STA { 591*437bfbebSnyanmisaka RK_U32 rkvdec_frame_rdy_sta : 1; 592*437bfbebSnyanmisaka RK_U32 rkvdec_strm_error_sta : 1; 593*437bfbebSnyanmisaka RK_U32 rkvdec_core_timeout_sta : 1; 594*437bfbebSnyanmisaka RK_U32 rkvdec_ip_timeout_sta : 1; 595*437bfbebSnyanmisaka RK_U32 rkvdec_bus_error_sta : 1; 596*437bfbebSnyanmisaka RK_U32 rkvdec_buffer_empty_sta : 1; 597*437bfbebSnyanmisaka RK_U32 rkvdec_colmv_ref_error_sta : 1; 598*437bfbebSnyanmisaka RK_U32 rkvdec_error_spread_sta : 1; 599*437bfbebSnyanmisaka RK_U32 create_core_timeout_sta : 1; 600*437bfbebSnyanmisaka RK_U32 wlast_miss_match_sta : 1; 601*437bfbebSnyanmisaka RK_U32 rkvdec_core_rst_rdy_sta : 1; 602*437bfbebSnyanmisaka RK_U32 rkvdec_ip_rst_rdy_sta : 1; 603*437bfbebSnyanmisaka RK_U32 force_busidle_rdy_sta : 1; 604*437bfbebSnyanmisaka RK_U32 ltb_pause_rdy_sta : 1; 605*437bfbebSnyanmisaka RK_U32 ltb_end_flag : 1; 606*437bfbebSnyanmisaka RK_U32 unsupport_decmode_error_sta : 1; 607*437bfbebSnyanmisaka RK_U32 wmask_bits : 15; 608*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 609*437bfbebSnyanmisaka } reg19; 610*437bfbebSnyanmisaka 611*437bfbebSnyanmisaka RK_U32 reserve_reg20; 612*437bfbebSnyanmisaka 613*437bfbebSnyanmisaka /* SWREG21_IP_TIMEOUT_THRESHOD */ 614*437bfbebSnyanmisaka RK_U32 reg21_ip_timeout_threshold; 615*437bfbebSnyanmisaka 616*437bfbebSnyanmisaka struct SWREG22_IP_EN { 617*437bfbebSnyanmisaka RK_U32 ip_timeout_pause_flag : 1; 618*437bfbebSnyanmisaka RK_U32 reserve0 : 3; 619*437bfbebSnyanmisaka RK_U32 abnormal_auto_reset_dis : 1; 620*437bfbebSnyanmisaka RK_U32 reserve1 : 3; 621*437bfbebSnyanmisaka RK_U32 force_busidle_req_flag : 1; 622*437bfbebSnyanmisaka RK_U32 reserve2 : 3; 623*437bfbebSnyanmisaka RK_U32 bus_clkgate_dis : 1; 624*437bfbebSnyanmisaka RK_U32 ctrl_clkgate_dis : 1; 625*437bfbebSnyanmisaka RK_U32 reserve3 : 1; 626*437bfbebSnyanmisaka RK_U32 irq_dis : 1; 627*437bfbebSnyanmisaka RK_U32 wid_reorder_dis : 1; 628*437bfbebSnyanmisaka RK_U32 reserve4 : 7; 629*437bfbebSnyanmisaka RK_U32 clk_cru_mode : 2; 630*437bfbebSnyanmisaka RK_U32 reserve5 : 5; 631*437bfbebSnyanmisaka RK_U32 mmu_sel : 1; 632*437bfbebSnyanmisaka } reg22; 633*437bfbebSnyanmisaka 634*437bfbebSnyanmisaka struct SWREG23_IN_OUT { 635*437bfbebSnyanmisaka RK_U32 endian : 1; 636*437bfbebSnyanmisaka RK_U32 swap32_e : 1; 637*437bfbebSnyanmisaka RK_U32 swap64_e : 1; 638*437bfbebSnyanmisaka RK_U32 str_endian : 1; 639*437bfbebSnyanmisaka RK_U32 str_swap32_e : 1; 640*437bfbebSnyanmisaka RK_U32 str_swap64_e : 1; 641*437bfbebSnyanmisaka RK_U32 reserve0 : 26; 642*437bfbebSnyanmisaka } reg23; 643*437bfbebSnyanmisaka 644*437bfbebSnyanmisaka /* SWREG24_EXTRA_STRM_BASE */ 645*437bfbebSnyanmisaka RK_U32 reg24_extra_stream_base; 646*437bfbebSnyanmisaka 647*437bfbebSnyanmisaka /* SWREG25_EXTRA_STRM_LEN */ 648*437bfbebSnyanmisaka RK_U32 reg25_extra_stream_len; 649*437bfbebSnyanmisaka 650*437bfbebSnyanmisaka /* SWREG26_EXTRA_STRM_PARA_SET */ 651*437bfbebSnyanmisaka RK_U32 reg26_extra_strm_start_bit; 652*437bfbebSnyanmisaka 653*437bfbebSnyanmisaka /* SWREG27_BUF_EMPTY_RESTART */ 654*437bfbebSnyanmisaka RK_U32 reg27_buf_emtpy_restart_p; 655*437bfbebSnyanmisaka 656*437bfbebSnyanmisaka /* SWREG28_RCB_BASE */ 657*437bfbebSnyanmisaka RK_U32 reg28_rcb_base; 658*437bfbebSnyanmisaka 659*437bfbebSnyanmisaka } Vdpu384aRegLlp; 660*437bfbebSnyanmisaka 661*437bfbebSnyanmisaka typedef struct Vdpu384aRcbInfo_t { 662*437bfbebSnyanmisaka RK_U32 reg_idx; 663*437bfbebSnyanmisaka RK_S32 size; 664*437bfbebSnyanmisaka RK_S32 offset; 665*437bfbebSnyanmisaka } Vdpu384aRcbInfo; 666*437bfbebSnyanmisaka 667*437bfbebSnyanmisaka #ifdef __cplusplus 668*437bfbebSnyanmisaka extern "C" { 669*437bfbebSnyanmisaka #endif 670*437bfbebSnyanmisaka 671*437bfbebSnyanmisaka RK_S32 vdpu384a_get_rcb_buf_size(Vdpu384aRcbInfo *info, RK_S32 width, RK_S32 height); 672*437bfbebSnyanmisaka RK_RET vdpu384a_check_rcb_buf_size(Vdpu384aRcbInfo *info, RK_S32 width, RK_S32 height); 673*437bfbebSnyanmisaka void vdpu384a_setup_rcb(Vdpu384aRegCommonAddr *reg, MppDev dev, MppBuffer buf, Vdpu384aRcbInfo *info); 674*437bfbebSnyanmisaka RK_S32 vdpu384a_compare_rcb_size(const void *a, const void *b); 675*437bfbebSnyanmisaka void vdpu384a_setup_statistic(Vdpu384aCtrlReg *com); 676*437bfbebSnyanmisaka void vdpu384a_afbc_align_calc(MppBufSlots slots, MppFrame frame, RK_U32 expand); 677*437bfbebSnyanmisaka RK_S32 vdpu384a_set_rcbinfo(MppDev dev, Vdpu384aRcbInfo *rcb_info); 678*437bfbebSnyanmisaka void vdpu384a_setup_down_scale(MppFrame frame, MppDev dev, Vdpu384aCtrlReg *com, void* comParas); 679*437bfbebSnyanmisaka void vdpu384a_update_thumbnail_frame_info(MppFrame frame); 680*437bfbebSnyanmisaka 681*437bfbebSnyanmisaka #ifdef DUMP_VDPU384A_DATAS 682*437bfbebSnyanmisaka extern RK_U32 dump_cur_frame; 683*437bfbebSnyanmisaka extern char dump_cur_dir[128]; 684*437bfbebSnyanmisaka extern char dump_cur_fname_path[512]; 685*437bfbebSnyanmisaka 686*437bfbebSnyanmisaka MPP_RET flip_string(char *str); 687*437bfbebSnyanmisaka MPP_RET dump_data_to_file(char *fname_path, void *data, RK_U32 data_bit_size, 688*437bfbebSnyanmisaka RK_U32 line_bits, RK_U32 big_end); 689*437bfbebSnyanmisaka #endif 690*437bfbebSnyanmisaka 691*437bfbebSnyanmisaka #ifdef __cplusplus 692*437bfbebSnyanmisaka } 693*437bfbebSnyanmisaka #endif 694*437bfbebSnyanmisaka 695*437bfbebSnyanmisaka #endif /* __VDPU384A_COM_H__ */ 696