xref: /rockchip-linux_mpp/mpp/hal/rkdec/inc/vdpu383_com.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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 __VDPU383_COM_H__
7*437bfbebSnyanmisaka #define __VDPU383_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_VDPU383_DATAS
24*437bfbebSnyanmisaka 
25*437bfbebSnyanmisaka typedef enum Vdpu383RcbType_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 } Vdpu383RcbType;
40*437bfbebSnyanmisaka 
41*437bfbebSnyanmisaka typedef enum Vdpu383_RCB_SET_MODE_E {
42*437bfbebSnyanmisaka     RCB_SET_BY_SIZE_SORT_MODE,
43*437bfbebSnyanmisaka     RCB_SET_BY_PRIORITY_MODE,
44*437bfbebSnyanmisaka } Vdpu383RcbSetMode_e;
45*437bfbebSnyanmisaka 
46*437bfbebSnyanmisaka typedef struct Vdpu383RegVersion_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 } Vdpu383RegVersion;
54*437bfbebSnyanmisaka 
55*437bfbebSnyanmisaka typedef struct Vdpu383CtrlReg_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 fbc_e                          : 1;
61*437bfbebSnyanmisaka         RK_U32 tile_e                         : 1;
62*437bfbebSnyanmisaka         RK_U32 reserve0                       : 2;
63*437bfbebSnyanmisaka         RK_U32 buf_empty_en                   : 1;
64*437bfbebSnyanmisaka         RK_U32 scale_down_en                  : 1;
65*437bfbebSnyanmisaka         RK_U32 reserve1                       : 1;
66*437bfbebSnyanmisaka         RK_U32 pix_range_det_e                : 1;
67*437bfbebSnyanmisaka         RK_U32 av1_fgs_en                     : 1;
68*437bfbebSnyanmisaka         RK_U32 reserve2                       : 7;
69*437bfbebSnyanmisaka         RK_U32 line_irq_en                    : 1;
70*437bfbebSnyanmisaka         RK_U32 out_cbcr_swap                  : 1;
71*437bfbebSnyanmisaka         RK_U32 fbc_force_uncompress           : 1;
72*437bfbebSnyanmisaka         RK_U32 fbc_sparse_mode                : 1;
73*437bfbebSnyanmisaka         RK_U32 reserve3                       : 12;
74*437bfbebSnyanmisaka     } reg9;
75*437bfbebSnyanmisaka 
76*437bfbebSnyanmisaka     struct SWREG10_BLOCK_GATING_EN {
77*437bfbebSnyanmisaka         RK_U32 strmd_auto_gating_e            : 1;
78*437bfbebSnyanmisaka         RK_U32 inter_auto_gating_e            : 1;
79*437bfbebSnyanmisaka         RK_U32 intra_auto_gating_e            : 1;
80*437bfbebSnyanmisaka         RK_U32 transd_auto_gating_e           : 1;
81*437bfbebSnyanmisaka         RK_U32 recon_auto_gating_e            : 1;
82*437bfbebSnyanmisaka         RK_U32 filterd_auto_gating_e          : 1;
83*437bfbebSnyanmisaka         RK_U32 bus_auto_gating_e              : 1;
84*437bfbebSnyanmisaka         RK_U32 ctrl_auto_gating_e             : 1;
85*437bfbebSnyanmisaka         RK_U32 rcb_auto_gating_e              : 1;
86*437bfbebSnyanmisaka         RK_U32 err_prc_auto_gating_e          : 1;
87*437bfbebSnyanmisaka         RK_U32 reserve0                       : 22;
88*437bfbebSnyanmisaka     } reg10;
89*437bfbebSnyanmisaka 
90*437bfbebSnyanmisaka     struct SWREG11_CFG_PARA {
91*437bfbebSnyanmisaka         RK_U32 reserve0                       : 9;
92*437bfbebSnyanmisaka         RK_U32 dec_timeout_dis                : 1;
93*437bfbebSnyanmisaka         RK_U32 reserve1                       : 22;
94*437bfbebSnyanmisaka     } reg11;
95*437bfbebSnyanmisaka 
96*437bfbebSnyanmisaka     struct SWREG12_CACHE_HASH_MASK {
97*437bfbebSnyanmisaka         RK_U32 reserve0                       : 7;
98*437bfbebSnyanmisaka         RK_U32 cache_hash_mask                : 25;
99*437bfbebSnyanmisaka     } reg12;
100*437bfbebSnyanmisaka 
101*437bfbebSnyanmisaka     /* SWREG13_CORE_TIMEOUT_THRESHOLD */
102*437bfbebSnyanmisaka     RK_U32 reg13_core_timeout_threshold;
103*437bfbebSnyanmisaka 
104*437bfbebSnyanmisaka     struct SWREG14_LINE_IRQ_CTRL {
105*437bfbebSnyanmisaka         RK_U32 dec_line_irq_step              : 16;
106*437bfbebSnyanmisaka         RK_U32 dec_line_offset_y_st           : 16;
107*437bfbebSnyanmisaka     } reg14;
108*437bfbebSnyanmisaka 
109*437bfbebSnyanmisaka     /* copy from llp, media group add */
110*437bfbebSnyanmisaka     struct SWREG15_IRQ_STA {
111*437bfbebSnyanmisaka         RK_U32 rkvdec_frame_rdy_sta           : 1;
112*437bfbebSnyanmisaka         RK_U32 rkvdec_strm_error_sta          : 1;
113*437bfbebSnyanmisaka         RK_U32 rkvdec_core_timeout_sta        : 1;
114*437bfbebSnyanmisaka         RK_U32 rkvdec_ip_timeout_sta          : 1;
115*437bfbebSnyanmisaka         RK_U32 rkvdec_bus_error_sta           : 1;
116*437bfbebSnyanmisaka         RK_U32 rkvdec_buffer_empty_sta        : 1;
117*437bfbebSnyanmisaka         RK_U32 rkvdec_colmv_ref_error_sta     : 1;
118*437bfbebSnyanmisaka         RK_U32 rkvdec_error_spread_sta        : 1;
119*437bfbebSnyanmisaka         RK_U32 create_core_timeout_sta        : 1;
120*437bfbebSnyanmisaka         RK_U32 wlast_miss_match_sta           : 1;
121*437bfbebSnyanmisaka         RK_U32 rkvdec_core_rst_rdy_sta        : 1;
122*437bfbebSnyanmisaka         RK_U32 rkvdec_ip_rst_rdy_sta          : 1;
123*437bfbebSnyanmisaka         RK_U32 force_busidle_rdy_sta          : 1;
124*437bfbebSnyanmisaka         RK_U32 ltb_pause_rdy_sta              : 1;
125*437bfbebSnyanmisaka         RK_U32 ltb_end_flag                   : 1;
126*437bfbebSnyanmisaka         RK_U32 unsupport_decmode_error_sta    : 1;
127*437bfbebSnyanmisaka         RK_U32 wmask_bits                     : 15;
128*437bfbebSnyanmisaka         RK_U32 reserve0                       : 1;
129*437bfbebSnyanmisaka     } reg15;
130*437bfbebSnyanmisaka 
131*437bfbebSnyanmisaka     struct SWREG16_ERROR_CTRL_SET {
132*437bfbebSnyanmisaka         RK_U32 error_proc_disable             : 1;
133*437bfbebSnyanmisaka         RK_U32 reserve0                       : 7;
134*437bfbebSnyanmisaka         RK_U32 error_spread_disable           : 1;
135*437bfbebSnyanmisaka         RK_U32 reserve1                       : 15;
136*437bfbebSnyanmisaka         RK_U32 roi_error_ctu_cal_en           : 1;
137*437bfbebSnyanmisaka         RK_U32 reserve2                       : 7;
138*437bfbebSnyanmisaka     } reg16;
139*437bfbebSnyanmisaka 
140*437bfbebSnyanmisaka     struct SWREG17_ERR_ROI_CTU_OFFSET_START {
141*437bfbebSnyanmisaka         RK_U32 roi_x_ctu_offset_st            : 12;
142*437bfbebSnyanmisaka         RK_U32 reserve0                       : 4;
143*437bfbebSnyanmisaka         RK_U32 roi_y_ctu_offset_st            : 12;
144*437bfbebSnyanmisaka         RK_U32 reserve1                       : 4;
145*437bfbebSnyanmisaka     } reg17;
146*437bfbebSnyanmisaka 
147*437bfbebSnyanmisaka     struct SWREG18_ERR_ROI_CTU_OFFSET_END {
148*437bfbebSnyanmisaka         RK_U32 roi_x_ctu_offset_end           : 12;
149*437bfbebSnyanmisaka         RK_U32 reserve0                       : 4;
150*437bfbebSnyanmisaka         RK_U32 roi_y_ctu_offset_end           : 12;
151*437bfbebSnyanmisaka         RK_U32 reserve1                       : 4;
152*437bfbebSnyanmisaka     } reg18;
153*437bfbebSnyanmisaka 
154*437bfbebSnyanmisaka     struct SWREG19_ERROR_REF_INFO {
155*437bfbebSnyanmisaka         RK_U32 avs2_ref_error_field           : 1;
156*437bfbebSnyanmisaka         RK_U32 avs2_ref_error_topfield        : 1;
157*437bfbebSnyanmisaka         RK_U32 ref_error_topfield_used        : 1;
158*437bfbebSnyanmisaka         RK_U32 ref_error_botfield_used        : 1;
159*437bfbebSnyanmisaka         RK_U32 reserve0                       : 28;
160*437bfbebSnyanmisaka     } reg19;
161*437bfbebSnyanmisaka 
162*437bfbebSnyanmisaka     /* SWREG20_CABAC_ERROR_EN_LOWBITS */
163*437bfbebSnyanmisaka     RK_U32 reg20_cabac_error_en_lowbits;
164*437bfbebSnyanmisaka 
165*437bfbebSnyanmisaka     /* SWREG21_CABAC_ERROR_EN_HIGHBITS */
166*437bfbebSnyanmisaka     RK_U32 reg21_cabac_error_en_highbits;
167*437bfbebSnyanmisaka 
168*437bfbebSnyanmisaka     RK_U32 reserve_reg22;
169*437bfbebSnyanmisaka 
170*437bfbebSnyanmisaka     struct SWREG23_INVALID_PIXEL_FILL {
171*437bfbebSnyanmisaka         RK_U32 fill_y                         : 10;
172*437bfbebSnyanmisaka         RK_U32 fill_u                         : 10;
173*437bfbebSnyanmisaka         RK_U32 fill_v                         : 10;
174*437bfbebSnyanmisaka         RK_U32 reserve0                       : 2;
175*437bfbebSnyanmisaka     } reg23;
176*437bfbebSnyanmisaka 
177*437bfbebSnyanmisaka     RK_U32 reserve_reg24_26[3];
178*437bfbebSnyanmisaka 
179*437bfbebSnyanmisaka     struct SWREG27_ALIGN_EN {
180*437bfbebSnyanmisaka         RK_U32 reserve0                       : 4;
181*437bfbebSnyanmisaka         RK_U32 ctu_align_wr_en                : 1;
182*437bfbebSnyanmisaka         RK_U32 reserve1                       : 27;
183*437bfbebSnyanmisaka     } reg27;
184*437bfbebSnyanmisaka 
185*437bfbebSnyanmisaka     struct SWREG28_DEBUG_PERF_LATENCY_CTRL0 {
186*437bfbebSnyanmisaka         RK_U32 axi_perf_work_e                : 1;
187*437bfbebSnyanmisaka         RK_U32 reserve0                       : 2;
188*437bfbebSnyanmisaka         RK_U32 axi_cnt_type                   : 1;
189*437bfbebSnyanmisaka         RK_U32 rd_latency_id                  : 8;
190*437bfbebSnyanmisaka         RK_U32 reserve1                       : 4;
191*437bfbebSnyanmisaka         RK_U32 rd_latency_thr                 : 12;
192*437bfbebSnyanmisaka         RK_U32 reserve2                       : 4;
193*437bfbebSnyanmisaka     } reg28;
194*437bfbebSnyanmisaka 
195*437bfbebSnyanmisaka     struct SWREG29_DEBUG_PERF_LATENCY_CTRL1 {
196*437bfbebSnyanmisaka         RK_U32 addr_align_type                : 2;
197*437bfbebSnyanmisaka         RK_U32 ar_cnt_id_type                 : 1;
198*437bfbebSnyanmisaka         RK_U32 aw_cnt_id_type                 : 1;
199*437bfbebSnyanmisaka         RK_U32 ar_count_id                    : 8;
200*437bfbebSnyanmisaka         RK_U32 reserve0                       : 4;
201*437bfbebSnyanmisaka         RK_U32 aw_count_id                    : 8;
202*437bfbebSnyanmisaka         RK_U32 rd_band_width_mode             : 1;
203*437bfbebSnyanmisaka         RK_U32 reserve1                       : 7;
204*437bfbebSnyanmisaka     } reg29;
205*437bfbebSnyanmisaka 
206*437bfbebSnyanmisaka     struct SWREG30_QOS_CTRL {
207*437bfbebSnyanmisaka         RK_U32 axi_wr_qos_level               : 4;
208*437bfbebSnyanmisaka         RK_U32 reserve0                       : 4;
209*437bfbebSnyanmisaka         RK_U32 axi_wr_qos                     : 4;
210*437bfbebSnyanmisaka         RK_U32 reserve1                       : 4;
211*437bfbebSnyanmisaka         RK_U32 axi_rd_qos_level               : 4;
212*437bfbebSnyanmisaka         RK_U32 reserve2                       : 4;
213*437bfbebSnyanmisaka         RK_U32 axi_rd_qos                     : 4;
214*437bfbebSnyanmisaka         RK_U32 reserve3                       : 4;
215*437bfbebSnyanmisaka     } reg30;
216*437bfbebSnyanmisaka } Vdpu383CtrlReg;
217*437bfbebSnyanmisaka 
218*437bfbebSnyanmisaka typedef struct Vdpu383RegCommonAddr_t {
219*437bfbebSnyanmisaka     /* SWREG128_STRM_BASE */
220*437bfbebSnyanmisaka     RK_U32 reg128_strm_base;
221*437bfbebSnyanmisaka 
222*437bfbebSnyanmisaka     /* SWREG129_RPS_BASE */
223*437bfbebSnyanmisaka     RK_U32 reg129_rps_base;
224*437bfbebSnyanmisaka 
225*437bfbebSnyanmisaka     /* SWREG130_CABACTBL_BASE */
226*437bfbebSnyanmisaka     RK_U32 reg130_cabactbl_base;
227*437bfbebSnyanmisaka 
228*437bfbebSnyanmisaka     /* SWREG131_GBL_BASE */
229*437bfbebSnyanmisaka     RK_U32 reg131_gbl_base;
230*437bfbebSnyanmisaka 
231*437bfbebSnyanmisaka     /* SWREG132_SCANLIST_ADDR */
232*437bfbebSnyanmisaka     RK_U32 reg132_scanlist_addr;
233*437bfbebSnyanmisaka 
234*437bfbebSnyanmisaka     /* SWREG133_SCL_BASE */
235*437bfbebSnyanmisaka     RK_U32 reg133_scale_down_base;
236*437bfbebSnyanmisaka 
237*437bfbebSnyanmisaka     /* SWREG134_FGS_BASE */
238*437bfbebSnyanmisaka     RK_U32 reg134_fgs_base;
239*437bfbebSnyanmisaka 
240*437bfbebSnyanmisaka     RK_U32 reserve_reg135_139[5];
241*437bfbebSnyanmisaka 
242*437bfbebSnyanmisaka     /* SWREG140_RCB_STRMD_ROW_OFFSET */
243*437bfbebSnyanmisaka     RK_U32 reg140_rcb_strmd_row_offset;
244*437bfbebSnyanmisaka 
245*437bfbebSnyanmisaka     /* SWREG141_RCB_STRMD_ROW_LEN */
246*437bfbebSnyanmisaka     RK_U32 reg141_rcb_strmd_row_len;
247*437bfbebSnyanmisaka 
248*437bfbebSnyanmisaka     /* SWREG142_RCB_STRMD_TILE_ROW_OFFSET */
249*437bfbebSnyanmisaka     RK_U32 reg142_rcb_strmd_tile_row_offset;
250*437bfbebSnyanmisaka 
251*437bfbebSnyanmisaka     /* SWREG143_RCB_STRMD_TILE_ROW_LEN */
252*437bfbebSnyanmisaka     RK_U32 reg143_rcb_strmd_tile_row_len;
253*437bfbebSnyanmisaka 
254*437bfbebSnyanmisaka     /* SWREG144_RCB_INTER_ROW_OFFSET */
255*437bfbebSnyanmisaka     RK_U32 reg144_rcb_inter_row_offset;
256*437bfbebSnyanmisaka 
257*437bfbebSnyanmisaka     /* SWREG145_RCB_INTER_ROW_LEN */
258*437bfbebSnyanmisaka     RK_U32 reg145_rcb_inter_row_len;
259*437bfbebSnyanmisaka 
260*437bfbebSnyanmisaka     /* SWREG146_RCB_INTER_TILE_ROW_OFFSET */
261*437bfbebSnyanmisaka     RK_U32 reg146_rcb_inter_tile_row_offset;
262*437bfbebSnyanmisaka 
263*437bfbebSnyanmisaka     /* SWREG147_RCB_INTER_TILE_ROW_LEN */
264*437bfbebSnyanmisaka     RK_U32 reg147_rcb_inter_tile_row_len;
265*437bfbebSnyanmisaka 
266*437bfbebSnyanmisaka     /* SWREG148_RCB_INTRA_ROW_OFFSET */
267*437bfbebSnyanmisaka     RK_U32 reg148_rcb_intra_row_offset;
268*437bfbebSnyanmisaka 
269*437bfbebSnyanmisaka     /* SWREG149_RCB_INTRA_ROW_LEN */
270*437bfbebSnyanmisaka     RK_U32 reg149_rcb_intra_row_len;
271*437bfbebSnyanmisaka 
272*437bfbebSnyanmisaka     /* SWREG150_RCB_INTRA_TILE_ROW_OFFSET */
273*437bfbebSnyanmisaka     RK_U32 reg150_rcb_intra_tile_row_offset;
274*437bfbebSnyanmisaka 
275*437bfbebSnyanmisaka     /* SWREG151_RCB_INTRA_TILE_ROW_LEN */
276*437bfbebSnyanmisaka     RK_U32 reg151_rcb_intra_tile_row_len;
277*437bfbebSnyanmisaka 
278*437bfbebSnyanmisaka     /* SWREG152_RCB_FILTERD_ROW_OFFSET */
279*437bfbebSnyanmisaka     RK_U32 reg152_rcb_filterd_row_offset;
280*437bfbebSnyanmisaka 
281*437bfbebSnyanmisaka     /* SWREG153_RCB_FILTERD_ROW_LEN */
282*437bfbebSnyanmisaka     RK_U32 reg153_rcb_filterd_row_len;
283*437bfbebSnyanmisaka 
284*437bfbebSnyanmisaka     /* SWREG154_RCB_FILTERD_PROTECT_ROW_OFFSET */
285*437bfbebSnyanmisaka     RK_U32 reg154_rcb_filterd_protect_row_offset;
286*437bfbebSnyanmisaka 
287*437bfbebSnyanmisaka     /* SWREG155_RCB_FILTERD_PROTECT_ROW_LEN */
288*437bfbebSnyanmisaka     RK_U32 reg155_rcb_filterd_protect_row_len;
289*437bfbebSnyanmisaka 
290*437bfbebSnyanmisaka     /* SWREG156_RCB_FILTERD_TILE_ROW_OFFSET */
291*437bfbebSnyanmisaka     RK_U32 reg156_rcb_filterd_tile_row_offset;
292*437bfbebSnyanmisaka 
293*437bfbebSnyanmisaka     /* SWREG157_RCB_FILTERD_TILE_ROW_LEN */
294*437bfbebSnyanmisaka     RK_U32 reg157_rcb_filterd_tile_row_len;
295*437bfbebSnyanmisaka 
296*437bfbebSnyanmisaka     /* SWREG158_RCB_FILTERD_TILE_COL_OFFSET */
297*437bfbebSnyanmisaka     RK_U32 reg158_rcb_filterd_tile_col_offset;
298*437bfbebSnyanmisaka 
299*437bfbebSnyanmisaka     /* SWREG159_RCB_FILTERD_TILE_COL_LEN */
300*437bfbebSnyanmisaka     RK_U32 reg159_rcb_filterd_tile_col_len;
301*437bfbebSnyanmisaka 
302*437bfbebSnyanmisaka     /* SWREG160_RCB_FILTERD_AV1_UPSCALE_TILE_COL_OFFSET */
303*437bfbebSnyanmisaka     RK_U32 reg160_rcb_filterd_av1_upscale_tile_col_offset;
304*437bfbebSnyanmisaka 
305*437bfbebSnyanmisaka     /* SWREG161_RCB_FILTERD_AV1_UPSCALE_TILE_COL_LEN */
306*437bfbebSnyanmisaka     RK_U32 reg161_rcb_filterd_av1_upscale_tile_col_len;
307*437bfbebSnyanmisaka 
308*437bfbebSnyanmisaka } Vdpu383RegCommonAddr;
309*437bfbebSnyanmisaka 
310*437bfbebSnyanmisaka typedef struct Vdpu383RegCommParas_t {
311*437bfbebSnyanmisaka     /* SWREG64_H26X_PARA */
312*437bfbebSnyanmisaka     RK_U32 reg64_unused_bits;
313*437bfbebSnyanmisaka 
314*437bfbebSnyanmisaka     /* SWREG65_STREAM_PARAM_SET */
315*437bfbebSnyanmisaka     RK_U32 reg65_strm_start_bit;
316*437bfbebSnyanmisaka 
317*437bfbebSnyanmisaka     /* SWREG66_STREAM_LEN */
318*437bfbebSnyanmisaka     RK_U32 reg66_stream_len;
319*437bfbebSnyanmisaka 
320*437bfbebSnyanmisaka     /* SWREG67_GLOBAL_LEN */
321*437bfbebSnyanmisaka     RK_U32 reg67_global_len;
322*437bfbebSnyanmisaka 
323*437bfbebSnyanmisaka     /* SWREG68_HOR_STRIDE */
324*437bfbebSnyanmisaka     RK_U32 reg68_hor_virstride;
325*437bfbebSnyanmisaka 
326*437bfbebSnyanmisaka     /* SWREG69_RASTER_UV_HOR_STRIDE */
327*437bfbebSnyanmisaka     RK_U32 reg69_raster_uv_hor_virstride;
328*437bfbebSnyanmisaka 
329*437bfbebSnyanmisaka     /* SWREG70_Y_STRIDE */
330*437bfbebSnyanmisaka     RK_U32 reg70_y_virstride;
331*437bfbebSnyanmisaka 
332*437bfbebSnyanmisaka     /* SWREG71_SCL_Y_HOR_VIRSTRIDE */
333*437bfbebSnyanmisaka     RK_U32 reg71_scl_ref_hor_virstride;
334*437bfbebSnyanmisaka 
335*437bfbebSnyanmisaka     /* SWREG72_SCL_UV_HOR_VIRSTRIDE */
336*437bfbebSnyanmisaka     RK_U32 reg72_scl_ref_raster_uv_hor_virstride;
337*437bfbebSnyanmisaka 
338*437bfbebSnyanmisaka     /* SWREG73_SCL_Y_VIRSTRIDE */
339*437bfbebSnyanmisaka     RK_U32 reg73_scl_ref_virstride;
340*437bfbebSnyanmisaka 
341*437bfbebSnyanmisaka     /* SWREG74_FGS_Y_HOR_VIRSTRIDE */
342*437bfbebSnyanmisaka     RK_U32 reg74_fgs_ref_hor_virstride;
343*437bfbebSnyanmisaka 
344*437bfbebSnyanmisaka     RK_U32 reserve_reg75_79[5];
345*437bfbebSnyanmisaka 
346*437bfbebSnyanmisaka     /* SWREG80_ERROR_REF_Y_HOR_VIRSTRIDE */
347*437bfbebSnyanmisaka     RK_U32 reg80_error_ref_hor_virstride;
348*437bfbebSnyanmisaka 
349*437bfbebSnyanmisaka     /* SWREG81_ERROR_REF_UV_HOR_VIRSTRIDE */
350*437bfbebSnyanmisaka     RK_U32 reg81_error_ref_raster_uv_hor_virstride;
351*437bfbebSnyanmisaka 
352*437bfbebSnyanmisaka     /* SWREG82_ERROR_REF_Y_VIRSTRIDE */
353*437bfbebSnyanmisaka     RK_U32 reg82_error_ref_virstride;
354*437bfbebSnyanmisaka 
355*437bfbebSnyanmisaka     /* SWREG83_REF0_Y_HOR_VIRSTRIDE */
356*437bfbebSnyanmisaka     RK_U32 reg83_ref0_hor_virstride;
357*437bfbebSnyanmisaka 
358*437bfbebSnyanmisaka     /* SWREG84_REF0_UV_HOR_VIRSTRIDE */
359*437bfbebSnyanmisaka     RK_U32 reg84_ref0_raster_uv_hor_virstride;
360*437bfbebSnyanmisaka 
361*437bfbebSnyanmisaka     /* SWREG85_REF0_Y_VIRSTRIDE */
362*437bfbebSnyanmisaka     RK_U32 reg85_ref0_virstride;
363*437bfbebSnyanmisaka 
364*437bfbebSnyanmisaka     /* SWREG86_REF1_Y_HOR_VIRSTRIDE */
365*437bfbebSnyanmisaka     RK_U32 reg86_ref1_hor_virstride;
366*437bfbebSnyanmisaka 
367*437bfbebSnyanmisaka     /* SWREG87_REF1_UV_HOR_VIRSTRIDE */
368*437bfbebSnyanmisaka     RK_U32 reg87_ref1_raster_uv_hor_virstride;
369*437bfbebSnyanmisaka 
370*437bfbebSnyanmisaka     /* SWREG88_REF1_Y_VIRSTRIDE */
371*437bfbebSnyanmisaka     RK_U32 reg88_ref1_virstride;
372*437bfbebSnyanmisaka 
373*437bfbebSnyanmisaka     /* SWREG89_REF2_Y_HOR_VIRSTRIDE */
374*437bfbebSnyanmisaka     RK_U32 reg89_ref2_hor_virstride;
375*437bfbebSnyanmisaka 
376*437bfbebSnyanmisaka     /* SWREG90_REF2_UV_HOR_VIRSTRIDE */
377*437bfbebSnyanmisaka     RK_U32 reg90_ref2_raster_uv_hor_virstride;
378*437bfbebSnyanmisaka 
379*437bfbebSnyanmisaka     /* SWREG91_REF2_Y_VIRSTRIDE */
380*437bfbebSnyanmisaka     RK_U32 reg91_ref2_virstride;
381*437bfbebSnyanmisaka 
382*437bfbebSnyanmisaka     /* SWREG92_REF3_Y_HOR_VIRSTRIDE */
383*437bfbebSnyanmisaka     RK_U32 reg92_ref3_hor_virstride;
384*437bfbebSnyanmisaka 
385*437bfbebSnyanmisaka     /* SWREG93_REF3_UV_HOR_VIRSTRIDE */
386*437bfbebSnyanmisaka     RK_U32 reg93_ref3_raster_uv_hor_virstride;
387*437bfbebSnyanmisaka 
388*437bfbebSnyanmisaka     /* SWREG94_REF3_Y_VIRSTRIDE */
389*437bfbebSnyanmisaka     RK_U32 reg94_ref3_virstride;
390*437bfbebSnyanmisaka 
391*437bfbebSnyanmisaka     /* SWREG95_REF4_Y_HOR_VIRSTRIDE */
392*437bfbebSnyanmisaka     RK_U32 reg95_ref4_hor_virstride;
393*437bfbebSnyanmisaka 
394*437bfbebSnyanmisaka     /* SWREG96_REF4_UV_HOR_VIRSTRIDE */
395*437bfbebSnyanmisaka     RK_U32 reg96_ref4_raster_uv_hor_virstride;
396*437bfbebSnyanmisaka 
397*437bfbebSnyanmisaka     /* SWREG97_REF4_Y_VIRSTRIDE */
398*437bfbebSnyanmisaka     RK_U32 reg97_ref4_virstride;
399*437bfbebSnyanmisaka 
400*437bfbebSnyanmisaka     /* SWREG98_REF5_Y_HOR_VIRSTRIDE */
401*437bfbebSnyanmisaka     RK_U32 reg98_ref5_hor_virstride;
402*437bfbebSnyanmisaka 
403*437bfbebSnyanmisaka     /* SWREG99_REF5_UV_HOR_VIRSTRIDE */
404*437bfbebSnyanmisaka     RK_U32 reg99_ref5_raster_uv_hor_virstride;
405*437bfbebSnyanmisaka 
406*437bfbebSnyanmisaka     /* SWREG100_REF5_Y_VIRSTRIDE */
407*437bfbebSnyanmisaka     RK_U32 reg100_ref5_virstride;
408*437bfbebSnyanmisaka 
409*437bfbebSnyanmisaka     /* SWREG101_REF6_Y_HOR_VIRSTRIDE */
410*437bfbebSnyanmisaka     RK_U32 reg101_ref6_hor_virstride;
411*437bfbebSnyanmisaka 
412*437bfbebSnyanmisaka     /* SWREG102_REF6_UV_HOR_VIRSTRIDE */
413*437bfbebSnyanmisaka     RK_U32 reg102_ref6_raster_uv_hor_virstride;
414*437bfbebSnyanmisaka 
415*437bfbebSnyanmisaka     /* SWREG103_REF6_Y_VIRSTRIDE */
416*437bfbebSnyanmisaka     RK_U32 reg103_ref6_virstride;
417*437bfbebSnyanmisaka 
418*437bfbebSnyanmisaka     /* SWREG104_REF7_Y_HOR_VIRSTRIDE */
419*437bfbebSnyanmisaka     RK_U32 reg104_ref7_hor_virstride;
420*437bfbebSnyanmisaka 
421*437bfbebSnyanmisaka     /* SWREG105_REF7_UV_HOR_VIRSTRIDE */
422*437bfbebSnyanmisaka     RK_U32 reg105_ref7_raster_uv_hor_virstride;
423*437bfbebSnyanmisaka 
424*437bfbebSnyanmisaka     /* SWREG106_REF7_Y_VIRSTRIDE */
425*437bfbebSnyanmisaka     RK_U32 reg106_ref7_virstride;
426*437bfbebSnyanmisaka 
427*437bfbebSnyanmisaka } Vdpu383RegCommParas;
428*437bfbebSnyanmisaka 
429*437bfbebSnyanmisaka typedef struct Vdpu383RegNew_t {
430*437bfbebSnyanmisaka     struct SWREG320_IDLE_FLAG {
431*437bfbebSnyanmisaka         RK_U32 reserve0                       : 24;
432*437bfbebSnyanmisaka         RK_U32 rkvdec_bus_idle_flag           : 1;
433*437bfbebSnyanmisaka         RK_U32 reserve1                       : 7;
434*437bfbebSnyanmisaka     } reg320;
435*437bfbebSnyanmisaka 
436*437bfbebSnyanmisaka     RK_U32 reserve_reg321;
437*437bfbebSnyanmisaka 
438*437bfbebSnyanmisaka     /* SWREG322_PERF_MONITOR */
439*437bfbebSnyanmisaka     RK_U32 reg322_perf_rd_max_latency_num;
440*437bfbebSnyanmisaka 
441*437bfbebSnyanmisaka     /* SWREG323_PERF_MONITOR */
442*437bfbebSnyanmisaka     RK_U32 reg323_perf_rd_latency_samp_num;
443*437bfbebSnyanmisaka 
444*437bfbebSnyanmisaka     /* SWREG324_PERF_MONITOR */
445*437bfbebSnyanmisaka     RK_U32 reg324_perf_rd_latency_acc_sum;
446*437bfbebSnyanmisaka 
447*437bfbebSnyanmisaka     /* SWREG325_PERF_MONITOR */
448*437bfbebSnyanmisaka     RK_U32 reg325_perf_rd_axi_total_byte;
449*437bfbebSnyanmisaka 
450*437bfbebSnyanmisaka     /* SWREG326_PERF_MONITOR */
451*437bfbebSnyanmisaka     RK_U32 reg326_perf_wr_axi_total_bytes;
452*437bfbebSnyanmisaka 
453*437bfbebSnyanmisaka     /* SWREG327_PERF_MONITOR */
454*437bfbebSnyanmisaka     RK_U32 reg327_perf_working_cnt;
455*437bfbebSnyanmisaka 
456*437bfbebSnyanmisaka     RK_U32 reserve_reg328_336[9];
457*437bfbebSnyanmisaka 
458*437bfbebSnyanmisaka     /* SWREG337_REFLIST_IDX_USED */
459*437bfbebSnyanmisaka     RK_U32 reg337_inter_sw_reflst_idx_use;
460*437bfbebSnyanmisaka 
461*437bfbebSnyanmisaka     RK_U32 reserve_reg338_348[11];
462*437bfbebSnyanmisaka 
463*437bfbebSnyanmisaka     /* SWREG349_PAYLOAD_CNT */
464*437bfbebSnyanmisaka     RK_U32 reg349_filterd_payload_total_cnt;
465*437bfbebSnyanmisaka 
466*437bfbebSnyanmisaka     struct SWREG350_WR_OFFSET {
467*437bfbebSnyanmisaka         RK_U32 filterd_report_offsety         : 16;
468*437bfbebSnyanmisaka         RK_U32 filterd_report_offsetx         : 16;
469*437bfbebSnyanmisaka     } reg350;
470*437bfbebSnyanmisaka 
471*437bfbebSnyanmisaka     struct SWREG351_MAX_PIX {
472*437bfbebSnyanmisaka         RK_U32 filterd_max_y                  : 10;
473*437bfbebSnyanmisaka         RK_U32 filterd_max_u                  : 10;
474*437bfbebSnyanmisaka         RK_U32 filterd_max_v                  : 10;
475*437bfbebSnyanmisaka         RK_U32 reserve0                       : 2;
476*437bfbebSnyanmisaka     } reg351;
477*437bfbebSnyanmisaka 
478*437bfbebSnyanmisaka     struct SWREG352_MIN_PIX {
479*437bfbebSnyanmisaka         RK_U32 filterd_min_y                  : 10;
480*437bfbebSnyanmisaka         RK_U32 filterd_min_u                  : 10;
481*437bfbebSnyanmisaka         RK_U32 filterd_min_v                  : 10;
482*437bfbebSnyanmisaka         RK_U32 reserve0                       : 2;
483*437bfbebSnyanmisaka     } reg352;
484*437bfbebSnyanmisaka 
485*437bfbebSnyanmisaka     /* SWREG353_WR_LINE_NUM */
486*437bfbebSnyanmisaka     RK_U32 reg353_filterd_line_irq_offsety;
487*437bfbebSnyanmisaka 
488*437bfbebSnyanmisaka     RK_U32 reserve_reg354_355[2];
489*437bfbebSnyanmisaka 
490*437bfbebSnyanmisaka     struct SWREG356_RCB_RW_SUM {
491*437bfbebSnyanmisaka         RK_U32 rcb_rd_sum_chk                 : 8;
492*437bfbebSnyanmisaka         RK_U32 rcb_wr_sum_chk                 : 8;
493*437bfbebSnyanmisaka         RK_U32 reserve0                       : 16;
494*437bfbebSnyanmisaka     } reg356;
495*437bfbebSnyanmisaka 
496*437bfbebSnyanmisaka     RK_U32 reserve_reg357;
497*437bfbebSnyanmisaka 
498*437bfbebSnyanmisaka     struct SWREG358_ERR_CTU_NUM0 {
499*437bfbebSnyanmisaka         RK_U32 error_ctu_num                  : 24;
500*437bfbebSnyanmisaka         RK_U32 roi_error_ctu_num_lowbit       : 8;
501*437bfbebSnyanmisaka     } reg358;
502*437bfbebSnyanmisaka 
503*437bfbebSnyanmisaka     /* SWREG359_ERR_CTU_NUM1 */
504*437bfbebSnyanmisaka     RK_U32 reg359_roi_error_ctu_num_highbit;
505*437bfbebSnyanmisaka 
506*437bfbebSnyanmisaka } Vdpu383RegNew;
507*437bfbebSnyanmisaka 
508*437bfbebSnyanmisaka typedef struct Vdpu383RegLlp_t {
509*437bfbebSnyanmisaka     struct SWREG0_LINK_MODE {
510*437bfbebSnyanmisaka         RK_U32 llp_mmu_zap_cache_dis          : 1;
511*437bfbebSnyanmisaka         RK_U32 reserve0                       : 15;
512*437bfbebSnyanmisaka         RK_U32 core_work_mode                 : 1;
513*437bfbebSnyanmisaka         RK_U32 ccu_core_work_mode             : 1;
514*437bfbebSnyanmisaka         RK_U32 reserve1                       : 3;
515*437bfbebSnyanmisaka         RK_U32 ltb_pause_flag                 : 1;
516*437bfbebSnyanmisaka         RK_U32 reserve2                       : 10;
517*437bfbebSnyanmisaka     } reg0;
518*437bfbebSnyanmisaka 
519*437bfbebSnyanmisaka     struct SWREG1_CFG_START_ADDR {
520*437bfbebSnyanmisaka         RK_U32 reserve0                       : 4;
521*437bfbebSnyanmisaka         RK_U32 reg_cfg_addr                   : 28;
522*437bfbebSnyanmisaka     } reg1;
523*437bfbebSnyanmisaka 
524*437bfbebSnyanmisaka     struct SWREG2_LINK_MODE {
525*437bfbebSnyanmisaka         RK_U32 pre_frame_num                  : 30;
526*437bfbebSnyanmisaka         RK_U32 reserve0                       : 1;
527*437bfbebSnyanmisaka         RK_U32 link_mode                      : 1;
528*437bfbebSnyanmisaka     } reg2;
529*437bfbebSnyanmisaka 
530*437bfbebSnyanmisaka     /* SWREG3_CONFIG_DONE */
531*437bfbebSnyanmisaka     RK_U32 reg3_done;
532*437bfbebSnyanmisaka 
533*437bfbebSnyanmisaka     /* SWREG4_DECODERED_NUM */
534*437bfbebSnyanmisaka     RK_U32 reg4_num;
535*437bfbebSnyanmisaka 
536*437bfbebSnyanmisaka     /* SWREG5_DEC_TOTAL_NUM */
537*437bfbebSnyanmisaka     RK_U32 reg5_total_num;
538*437bfbebSnyanmisaka 
539*437bfbebSnyanmisaka     /* SWREG6_LINK_MODE_EN */
540*437bfbebSnyanmisaka     RK_U32 reg6_mode_en;
541*437bfbebSnyanmisaka 
542*437bfbebSnyanmisaka     /* SWREG7_SKIP_NUM */
543*437bfbebSnyanmisaka     RK_U32 reg7_num;
544*437bfbebSnyanmisaka 
545*437bfbebSnyanmisaka     /* SWREG8_CUR_LTB_IDX */
546*437bfbebSnyanmisaka     RK_U32 reg8_ltb_idx;
547*437bfbebSnyanmisaka 
548*437bfbebSnyanmisaka     RK_U32 reserve_reg9_15[7];
549*437bfbebSnyanmisaka 
550*437bfbebSnyanmisaka     /* SWREG16_DEC_E */
551*437bfbebSnyanmisaka     RK_U32 reg16_dec_e;
552*437bfbebSnyanmisaka 
553*437bfbebSnyanmisaka     /* SWREG17_SOFT_RST */
554*437bfbebSnyanmisaka     RK_U32 reg17_rkvdec_ip_rst_p;
555*437bfbebSnyanmisaka 
556*437bfbebSnyanmisaka     struct SWREG18_IRQ {
557*437bfbebSnyanmisaka         RK_U32 rkvdec_irq                     : 1;
558*437bfbebSnyanmisaka         RK_U32 rkvdec_line_irq                : 1;
559*437bfbebSnyanmisaka         RK_U32 reserve0                       : 14;
560*437bfbebSnyanmisaka         RK_U32 wmask                          : 2;
561*437bfbebSnyanmisaka         RK_U32 reserve1                       : 14;
562*437bfbebSnyanmisaka     } reg18;
563*437bfbebSnyanmisaka 
564*437bfbebSnyanmisaka     struct SWREG19_STA {
565*437bfbebSnyanmisaka         RK_U32 rkvdec_frame_rdy_sta           : 1;
566*437bfbebSnyanmisaka         RK_U32 rkvdec_strm_error_sta          : 1;
567*437bfbebSnyanmisaka         RK_U32 rkvdec_core_timeout_sta        : 1;
568*437bfbebSnyanmisaka         RK_U32 rkvdec_ip_timeout_sta          : 1;
569*437bfbebSnyanmisaka         RK_U32 rkvdec_bus_error_sta           : 1;
570*437bfbebSnyanmisaka         RK_U32 rkvdec_buffer_empty_sta        : 1;
571*437bfbebSnyanmisaka         RK_U32 rkvdec_colmv_ref_error_sta     : 1;
572*437bfbebSnyanmisaka         RK_U32 rkvdec_error_spread_sta        : 1;
573*437bfbebSnyanmisaka         RK_U32 create_core_timeout_sta        : 1;
574*437bfbebSnyanmisaka         RK_U32 wlast_miss_match_sta           : 1;
575*437bfbebSnyanmisaka         RK_U32 rkvdec_core_rst_rdy_sta        : 1;
576*437bfbebSnyanmisaka         RK_U32 rkvdec_ip_rst_rdy_sta          : 1;
577*437bfbebSnyanmisaka         RK_U32 force_busidle_rdy_sta          : 1;
578*437bfbebSnyanmisaka         RK_U32 ltb_pause_rdy_sta              : 1;
579*437bfbebSnyanmisaka         RK_U32 ltb_end_flag                   : 1;
580*437bfbebSnyanmisaka         RK_U32 unsupport_decmode_error_sta    : 1;
581*437bfbebSnyanmisaka         RK_U32 wmask_bits                     : 15;
582*437bfbebSnyanmisaka         RK_U32 reserve0                       : 1;
583*437bfbebSnyanmisaka     } reg19;
584*437bfbebSnyanmisaka 
585*437bfbebSnyanmisaka     RK_U32 reserve_reg20;
586*437bfbebSnyanmisaka 
587*437bfbebSnyanmisaka     /* SWREG21_IP_TIMEOUT_THRESHOD */
588*437bfbebSnyanmisaka     RK_U32 reg21_ip_timeout_threshold;
589*437bfbebSnyanmisaka 
590*437bfbebSnyanmisaka     struct SWREG22_IP_EN {
591*437bfbebSnyanmisaka         RK_U32 ip_timeout_pause_flag          : 1;
592*437bfbebSnyanmisaka         RK_U32 reserve0                       : 3;
593*437bfbebSnyanmisaka         RK_U32 auto_reset_dis                 : 1;
594*437bfbebSnyanmisaka         RK_U32 reserve1                       : 3;
595*437bfbebSnyanmisaka         RK_U32 force_busidle_req_flag         : 1;
596*437bfbebSnyanmisaka         RK_U32 reserve2                       : 3;
597*437bfbebSnyanmisaka         RK_U32 bus_clkgate_dis                : 1;
598*437bfbebSnyanmisaka         RK_U32 ctrl_clkgate_dis               : 1;
599*437bfbebSnyanmisaka         RK_U32 reserve3                       : 1;
600*437bfbebSnyanmisaka         RK_U32 irq_dis                        : 1;
601*437bfbebSnyanmisaka         RK_U32 wid_reorder_dis                : 1;
602*437bfbebSnyanmisaka         RK_U32 reserve4                       : 7;
603*437bfbebSnyanmisaka         RK_U32 clk_cru_mode                   : 2;
604*437bfbebSnyanmisaka         RK_U32 reserve5                       : 5;
605*437bfbebSnyanmisaka         RK_U32 mmu_sel                        : 1;
606*437bfbebSnyanmisaka     } reg22;
607*437bfbebSnyanmisaka 
608*437bfbebSnyanmisaka     struct SWREG23_IN_OUT {
609*437bfbebSnyanmisaka         RK_U32 endian                         : 1;
610*437bfbebSnyanmisaka         RK_U32 swap32_e                       : 1;
611*437bfbebSnyanmisaka         RK_U32 swap64_e                       : 1;
612*437bfbebSnyanmisaka         RK_U32 str_endian                     : 1;
613*437bfbebSnyanmisaka         RK_U32 str_swap32_e                   : 1;
614*437bfbebSnyanmisaka         RK_U32 str_swap64_e                   : 1;
615*437bfbebSnyanmisaka         RK_U32 reserve0                       : 26;
616*437bfbebSnyanmisaka     } reg23;
617*437bfbebSnyanmisaka 
618*437bfbebSnyanmisaka     /* SWREG24_EXTRA_STRM_BASE */
619*437bfbebSnyanmisaka     RK_U32 reg24_extra_stream_base;
620*437bfbebSnyanmisaka 
621*437bfbebSnyanmisaka     /* SWREG25_EXTRA_STRM_LEN */
622*437bfbebSnyanmisaka     RK_U32 reg25_extra_stream_len;
623*437bfbebSnyanmisaka 
624*437bfbebSnyanmisaka     /* SWREG26_EXTRA_STRM_PARA_SET */
625*437bfbebSnyanmisaka     RK_U32 reg26_extra_strm_start_bit;
626*437bfbebSnyanmisaka 
627*437bfbebSnyanmisaka     /* SWREG27_BUF_EMPTY_RESTART */
628*437bfbebSnyanmisaka     RK_U32 reg27_buf_emtpy_restart_p;
629*437bfbebSnyanmisaka 
630*437bfbebSnyanmisaka     /* SWREG28_RCB_BASE */
631*437bfbebSnyanmisaka     RK_U32 reg28_rcb_base;
632*437bfbebSnyanmisaka 
633*437bfbebSnyanmisaka } Vdpu383RegLlp;
634*437bfbebSnyanmisaka 
635*437bfbebSnyanmisaka typedef struct Vdpu383RcbInfo_t {
636*437bfbebSnyanmisaka     RK_U32              reg_idx;
637*437bfbebSnyanmisaka     RK_S32              size;
638*437bfbebSnyanmisaka     RK_S32              offset;
639*437bfbebSnyanmisaka } Vdpu383RcbInfo;
640*437bfbebSnyanmisaka 
641*437bfbebSnyanmisaka #ifdef  __cplusplus
642*437bfbebSnyanmisaka extern "C" {
643*437bfbebSnyanmisaka #endif
644*437bfbebSnyanmisaka 
645*437bfbebSnyanmisaka RK_S32 vdpu383_get_rcb_buf_size(Vdpu383RcbInfo *info, RK_S32 width, RK_S32 height);
646*437bfbebSnyanmisaka void vdpu383_setup_rcb(Vdpu383RegCommonAddr *reg, MppDev dev, MppBuffer buf, Vdpu383RcbInfo *info);
647*437bfbebSnyanmisaka RK_S32 vdpu383_compare_rcb_size(const void *a, const void *b);
648*437bfbebSnyanmisaka void vdpu383_setup_statistic(Vdpu383CtrlReg *com);
649*437bfbebSnyanmisaka void vdpu383_afbc_align_calc(MppBufSlots slots, MppFrame frame, RK_U32 expand);
650*437bfbebSnyanmisaka RK_S32 vdpu383_set_rcbinfo(MppDev dev, Vdpu383RcbInfo *rcb_info);
651*437bfbebSnyanmisaka void vdpu383_setup_down_scale(MppFrame frame, MppDev dev, Vdpu383CtrlReg *com, void* comParas);
652*437bfbebSnyanmisaka void vdpu383_update_thumbnail_frame_info(MppFrame frame);
653*437bfbebSnyanmisaka 
654*437bfbebSnyanmisaka #ifdef DUMP_VDPU383_DATAS
655*437bfbebSnyanmisaka extern RK_U32 dump_cur_frame;
656*437bfbebSnyanmisaka extern char dump_cur_dir[128];
657*437bfbebSnyanmisaka extern char dump_cur_fname_path[512];
658*437bfbebSnyanmisaka 
659*437bfbebSnyanmisaka MPP_RET flip_string(char *str);
660*437bfbebSnyanmisaka MPP_RET dump_data_to_file(char *fname_path, void *data, RK_U32 data_bit_size,
661*437bfbebSnyanmisaka                           RK_U32 line_bits, RK_U32 big_end);
662*437bfbebSnyanmisaka #endif
663*437bfbebSnyanmisaka 
664*437bfbebSnyanmisaka #ifdef  __cplusplus
665*437bfbebSnyanmisaka }
666*437bfbebSnyanmisaka #endif
667*437bfbebSnyanmisaka 
668*437bfbebSnyanmisaka #endif /* __VDPU383_COM_H__ */
669