xref: /rockchip-linux_mpp/mpp/hal/rkdec/inc/vdpu384a_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 __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