xref: /rockchip-linux_mpp/mpp/hal/rkenc/h264e/hal_h264e_vepu510_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 */
2*437bfbebSnyanmisaka /*
3*437bfbebSnyanmisaka  * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
4*437bfbebSnyanmisaka  */
5*437bfbebSnyanmisaka 
6*437bfbebSnyanmisaka #ifndef __HAL_H264E_VEPU510_REG_H__
7*437bfbebSnyanmisaka #define __HAL_H264E_VEPU510_REG_H__
8*437bfbebSnyanmisaka 
9*437bfbebSnyanmisaka #include "rk_type.h"
10*437bfbebSnyanmisaka #include "vepu510_common.h"
11*437bfbebSnyanmisaka 
12*437bfbebSnyanmisaka /* class: buffer/video syntax */
13*437bfbebSnyanmisaka /* 0x00000270 reg156 - 0x000003f4 reg253*/
14*437bfbebSnyanmisaka typedef struct H264eVepu510Frame_t {
15*437bfbebSnyanmisaka 
16*437bfbebSnyanmisaka     Vepu510FrmCommon    common;
17*437bfbebSnyanmisaka 
18*437bfbebSnyanmisaka     /* 0x000003a0 reg232 */
19*437bfbebSnyanmisaka     struct {
20*437bfbebSnyanmisaka         RK_U32 rect_size         : 1;
21*437bfbebSnyanmisaka         RK_U32 reserved          : 2;
22*437bfbebSnyanmisaka         RK_U32 vlc_lmt           : 1;
23*437bfbebSnyanmisaka         RK_U32 chrm_spcl         : 1;
24*437bfbebSnyanmisaka         RK_U32 reserved1         : 8;
25*437bfbebSnyanmisaka         RK_U32 ccwa_e            : 1;
26*437bfbebSnyanmisaka         RK_U32 reserved2         : 1;
27*437bfbebSnyanmisaka         RK_U32 atr_e             : 1;
28*437bfbebSnyanmisaka         RK_U32 reserved3         : 4;
29*437bfbebSnyanmisaka         RK_U32 scl_lst_sel       : 2;
30*437bfbebSnyanmisaka         RK_U32 reserved4         : 6;
31*437bfbebSnyanmisaka         RK_U32 atf_e             : 1;
32*437bfbebSnyanmisaka         RK_U32 atr_mult_sel_e    : 1;
33*437bfbebSnyanmisaka         RK_U32 reserved5         : 2;
34*437bfbebSnyanmisaka     } rdo_cfg;
35*437bfbebSnyanmisaka 
36*437bfbebSnyanmisaka     /* 0x000003a4 reg233 */
37*437bfbebSnyanmisaka     struct {
38*437bfbebSnyanmisaka         RK_U32 rdo_mark_mode    : 9;
39*437bfbebSnyanmisaka         RK_U32 reserved         : 23;
40*437bfbebSnyanmisaka     } iprd_csts;
41*437bfbebSnyanmisaka 
42*437bfbebSnyanmisaka     /* 0x3a8 - 0x3ac */
43*437bfbebSnyanmisaka     RK_U32 reserved234_235[2];
44*437bfbebSnyanmisaka 
45*437bfbebSnyanmisaka     /* 0x000003b0 reg236 */
46*437bfbebSnyanmisaka     struct {
47*437bfbebSnyanmisaka         RK_U32 nal_ref_idc      : 2;
48*437bfbebSnyanmisaka         RK_U32 nal_unit_type    : 5;
49*437bfbebSnyanmisaka         RK_U32 reserved         : 25;
50*437bfbebSnyanmisaka     } synt_nal;
51*437bfbebSnyanmisaka 
52*437bfbebSnyanmisaka     /* 0x000003b4 reg237 */
53*437bfbebSnyanmisaka     struct {
54*437bfbebSnyanmisaka         RK_U32 max_fnum    : 4;
55*437bfbebSnyanmisaka         RK_U32 drct_8x8    : 1;
56*437bfbebSnyanmisaka         RK_U32 mpoc_lm4    : 4;
57*437bfbebSnyanmisaka         RK_U32 poc_type    : 2;
58*437bfbebSnyanmisaka         RK_U32 reserved    : 21;
59*437bfbebSnyanmisaka     } synt_sps;
60*437bfbebSnyanmisaka 
61*437bfbebSnyanmisaka     /* 0x000003b8 reg238 */
62*437bfbebSnyanmisaka     struct {
63*437bfbebSnyanmisaka         RK_U32 etpy_mode       : 1;
64*437bfbebSnyanmisaka         RK_U32 trns_8x8        : 1;
65*437bfbebSnyanmisaka         RK_U32 csip_flag       : 1;
66*437bfbebSnyanmisaka         RK_U32 num_ref0_idx    : 2;
67*437bfbebSnyanmisaka         RK_U32 num_ref1_idx    : 2;
68*437bfbebSnyanmisaka         RK_U32 pic_init_qp     : 6;
69*437bfbebSnyanmisaka         RK_U32 cb_ofst         : 5;
70*437bfbebSnyanmisaka         RK_U32 cr_ofst         : 5;
71*437bfbebSnyanmisaka         RK_U32 reserved        : 1;
72*437bfbebSnyanmisaka         RK_U32 dbf_cp_flg      : 1;
73*437bfbebSnyanmisaka         RK_U32 reserved1       : 7;
74*437bfbebSnyanmisaka     } synt_pps;
75*437bfbebSnyanmisaka 
76*437bfbebSnyanmisaka     /* 0x000003bc reg239 */
77*437bfbebSnyanmisaka     struct {
78*437bfbebSnyanmisaka         RK_U32 sli_type        : 2;
79*437bfbebSnyanmisaka         RK_U32 pps_id          : 8;
80*437bfbebSnyanmisaka         RK_U32 drct_smvp       : 1;
81*437bfbebSnyanmisaka         RK_U32 num_ref_ovrd    : 1;
82*437bfbebSnyanmisaka         RK_U32 cbc_init_idc    : 2;
83*437bfbebSnyanmisaka         RK_U32 reserved        : 2;
84*437bfbebSnyanmisaka         RK_U32 frm_num         : 16;
85*437bfbebSnyanmisaka     } synt_sli0;
86*437bfbebSnyanmisaka 
87*437bfbebSnyanmisaka     /* 0x000003c0 reg240 */
88*437bfbebSnyanmisaka     struct {
89*437bfbebSnyanmisaka         RK_U32 idr_pid    : 16;
90*437bfbebSnyanmisaka         RK_U32 poc_lsb    : 16;
91*437bfbebSnyanmisaka     } synt_sli1;
92*437bfbebSnyanmisaka 
93*437bfbebSnyanmisaka     /* 0x000003c4 reg241 */
94*437bfbebSnyanmisaka     struct {
95*437bfbebSnyanmisaka         RK_U32 rodr_pic_idx      : 2;
96*437bfbebSnyanmisaka         RK_U32 ref_list0_rodr    : 1;
97*437bfbebSnyanmisaka         RK_U32 sli_beta_ofst     : 4;
98*437bfbebSnyanmisaka         RK_U32 sli_alph_ofst     : 4;
99*437bfbebSnyanmisaka         RK_U32 dis_dblk_idc      : 2;
100*437bfbebSnyanmisaka         RK_U32 reserved          : 3;
101*437bfbebSnyanmisaka         RK_U32 rodr_pic_num      : 16;
102*437bfbebSnyanmisaka     } synt_sli2;
103*437bfbebSnyanmisaka 
104*437bfbebSnyanmisaka     /* 0x000003c8 reg242 */
105*437bfbebSnyanmisaka     struct {
106*437bfbebSnyanmisaka         RK_U32 nopp_flg      : 1;
107*437bfbebSnyanmisaka         RK_U32 ltrf_flg      : 1;
108*437bfbebSnyanmisaka         RK_U32 arpm_flg      : 1;
109*437bfbebSnyanmisaka         RK_U32 mmco4_pre     : 1;
110*437bfbebSnyanmisaka         RK_U32 mmco_type0    : 3;
111*437bfbebSnyanmisaka         RK_U32 mmco_parm0    : 16;
112*437bfbebSnyanmisaka         RK_U32 mmco_type1    : 3;
113*437bfbebSnyanmisaka         RK_U32 mmco_type2    : 3;
114*437bfbebSnyanmisaka         RK_U32 reserved      : 3;
115*437bfbebSnyanmisaka     } synt_refm0;
116*437bfbebSnyanmisaka 
117*437bfbebSnyanmisaka     /* 0x000003cc reg243 */
118*437bfbebSnyanmisaka     struct {
119*437bfbebSnyanmisaka         RK_U32 mmco_parm1    : 16;
120*437bfbebSnyanmisaka         RK_U32 mmco_parm2    : 16;
121*437bfbebSnyanmisaka     } synt_refm1;
122*437bfbebSnyanmisaka 
123*437bfbebSnyanmisaka     /* 0x000003d0 reg244 */
124*437bfbebSnyanmisaka     struct {
125*437bfbebSnyanmisaka         RK_U32 long_term_frame_idx0    : 4;
126*437bfbebSnyanmisaka         RK_U32 long_term_frame_idx1    : 4;
127*437bfbebSnyanmisaka         RK_U32 long_term_frame_idx2    : 4;
128*437bfbebSnyanmisaka         RK_U32 reserved                : 20;
129*437bfbebSnyanmisaka     } synt_refm2;
130*437bfbebSnyanmisaka 
131*437bfbebSnyanmisaka     /* 0x000003d4 reg245 */
132*437bfbebSnyanmisaka     struct {
133*437bfbebSnyanmisaka         RK_U32 dlt_poc_s0_m12    : 16;
134*437bfbebSnyanmisaka         RK_U32 dlt_poc_s0_m13    : 16;
135*437bfbebSnyanmisaka     } synt_refm3_hevc;
136*437bfbebSnyanmisaka 
137*437bfbebSnyanmisaka     /* 0x000003d8 reg246 */
138*437bfbebSnyanmisaka     struct {
139*437bfbebSnyanmisaka         RK_U32 poc_lsb_lt1    : 16;
140*437bfbebSnyanmisaka         RK_U32 poc_lsb_lt2    : 16;
141*437bfbebSnyanmisaka     } synt_long_refm0_hevc;
142*437bfbebSnyanmisaka 
143*437bfbebSnyanmisaka     /* 0x000003dc reg247 */
144*437bfbebSnyanmisaka     struct {
145*437bfbebSnyanmisaka         RK_U32 dlt_poc_msb_cycl1    : 16;
146*437bfbebSnyanmisaka         RK_U32 dlt_poc_msb_cycl2    : 16;
147*437bfbebSnyanmisaka     } synt_long_refm1_hevc;
148*437bfbebSnyanmisaka 
149*437bfbebSnyanmisaka     /* 0x000003e0 reg248 */
150*437bfbebSnyanmisaka     struct {
151*437bfbebSnyanmisaka         RK_U32 sao_lambda_multi    : 3;
152*437bfbebSnyanmisaka         RK_U32 reserved            : 29;
153*437bfbebSnyanmisaka     } sao_cfg_hevc;
154*437bfbebSnyanmisaka 
155*437bfbebSnyanmisaka     /* 0x3e4 - 0x3ec */
156*437bfbebSnyanmisaka     RK_U32 reserved249_251[3];
157*437bfbebSnyanmisaka 
158*437bfbebSnyanmisaka     /* 0x000003f0 reg252 */
159*437bfbebSnyanmisaka     struct {
160*437bfbebSnyanmisaka         RK_U32 mv_v_lmt_thd    : 14;
161*437bfbebSnyanmisaka         RK_U32 reserved        : 1;
162*437bfbebSnyanmisaka         RK_U32 mv_v_lmt_en     : 1;
163*437bfbebSnyanmisaka         RK_U32 reserved1       : 16;
164*437bfbebSnyanmisaka     } sli_cfg;
165*437bfbebSnyanmisaka 
166*437bfbebSnyanmisaka     /* 0x000003f4 reg253 */
167*437bfbebSnyanmisaka     struct {
168*437bfbebSnyanmisaka         RK_U32 tile_x       : 9;
169*437bfbebSnyanmisaka         RK_U32 reserved     : 7;
170*437bfbebSnyanmisaka         RK_U32 tile_y       : 9;
171*437bfbebSnyanmisaka         RK_U32 reserved1    : 7;
172*437bfbebSnyanmisaka     } tile_pos_hevc;
173*437bfbebSnyanmisaka } H264eVepu510Frame;
174*437bfbebSnyanmisaka 
175*437bfbebSnyanmisaka /* class: param */
176*437bfbebSnyanmisaka /* 0x00001700 reg1472 - 0x000019cc reg1651 */
177*437bfbebSnyanmisaka typedef struct H264eVepu510Param_t {
178*437bfbebSnyanmisaka     /* 0x00001700 reg1472 */
179*437bfbebSnyanmisaka     struct {
180*437bfbebSnyanmisaka         RK_U32 iprd_tthdy4_0    : 12;
181*437bfbebSnyanmisaka         RK_U32 reserved         : 4;
182*437bfbebSnyanmisaka         RK_U32 iprd_tthdy4_1    : 12;
183*437bfbebSnyanmisaka         RK_U32 reserved1        : 4;
184*437bfbebSnyanmisaka     } iprd_tthdy4_0;
185*437bfbebSnyanmisaka 
186*437bfbebSnyanmisaka     /* 0x00001704 reg1473 */
187*437bfbebSnyanmisaka     struct {
188*437bfbebSnyanmisaka         RK_U32 iprd_tthdy4_2    : 12;
189*437bfbebSnyanmisaka         RK_U32 reserved         : 4;
190*437bfbebSnyanmisaka         RK_U32 iprd_tthdy4_3    : 12;
191*437bfbebSnyanmisaka         RK_U32 reserved1        : 4;
192*437bfbebSnyanmisaka     } iprd_tthdy4_1;
193*437bfbebSnyanmisaka 
194*437bfbebSnyanmisaka     /* 0x00001708 reg1474 */
195*437bfbebSnyanmisaka     struct {
196*437bfbebSnyanmisaka         RK_U32 iprd_tthdc8_0    : 12;
197*437bfbebSnyanmisaka         RK_U32 reserved         : 4;
198*437bfbebSnyanmisaka         RK_U32 iprd_tthdc8_1    : 12;
199*437bfbebSnyanmisaka         RK_U32 reserved1        : 4;
200*437bfbebSnyanmisaka     } iprd_tthdc8_0;
201*437bfbebSnyanmisaka 
202*437bfbebSnyanmisaka     /* 0x0000170c reg1475 */
203*437bfbebSnyanmisaka     struct {
204*437bfbebSnyanmisaka         RK_U32 iprd_tthdc8_2    : 12;
205*437bfbebSnyanmisaka         RK_U32 reserved         : 4;
206*437bfbebSnyanmisaka         RK_U32 iprd_tthdc8_3    : 12;
207*437bfbebSnyanmisaka         RK_U32 reserved1        : 4;
208*437bfbebSnyanmisaka     } iprd_tthdc8_1;
209*437bfbebSnyanmisaka 
210*437bfbebSnyanmisaka     /* 0x00001710 reg1476 */
211*437bfbebSnyanmisaka     struct {
212*437bfbebSnyanmisaka         RK_U32 iprd_tthdy8_0    : 12;
213*437bfbebSnyanmisaka         RK_U32 reserved         : 4;
214*437bfbebSnyanmisaka         RK_U32 iprd_tthdy8_1    : 12;
215*437bfbebSnyanmisaka         RK_U32 reserved1        : 4;
216*437bfbebSnyanmisaka     } iprd_tthdy8_0;
217*437bfbebSnyanmisaka 
218*437bfbebSnyanmisaka     /* 0x00001714 reg1477 */
219*437bfbebSnyanmisaka     struct {
220*437bfbebSnyanmisaka         RK_U32 iprd_tthdy8_2    : 12;
221*437bfbebSnyanmisaka         RK_U32 reserved         : 4;
222*437bfbebSnyanmisaka         RK_U32 iprd_tthdy8_3    : 12;
223*437bfbebSnyanmisaka         RK_U32 reserved1        : 4;
224*437bfbebSnyanmisaka     } iprd_tthdy8_1;
225*437bfbebSnyanmisaka 
226*437bfbebSnyanmisaka     /* 0x00001718 reg1478 */
227*437bfbebSnyanmisaka     struct {
228*437bfbebSnyanmisaka         RK_U32 iprd_tthd_ul    : 12;
229*437bfbebSnyanmisaka         RK_U32 reserved        : 20;
230*437bfbebSnyanmisaka     } iprd_tthd_ul;
231*437bfbebSnyanmisaka 
232*437bfbebSnyanmisaka     /* 0x0000171c reg1479 */
233*437bfbebSnyanmisaka     struct {
234*437bfbebSnyanmisaka         RK_U32 iprd_wgty8_0    : 8;
235*437bfbebSnyanmisaka         RK_U32 iprd_wgty8_1    : 8;
236*437bfbebSnyanmisaka         RK_U32 iprd_wgty8_2    : 8;
237*437bfbebSnyanmisaka         RK_U32 iprd_wgty8_3    : 8;
238*437bfbebSnyanmisaka     } iprd_wgty8;
239*437bfbebSnyanmisaka 
240*437bfbebSnyanmisaka     /* 0x00001720 reg1480 */
241*437bfbebSnyanmisaka     struct {
242*437bfbebSnyanmisaka         RK_U32 iprd_wgty4_0    : 8;
243*437bfbebSnyanmisaka         RK_U32 iprd_wgty4_1    : 8;
244*437bfbebSnyanmisaka         RK_U32 iprd_wgty4_2    : 8;
245*437bfbebSnyanmisaka         RK_U32 iprd_wgty4_3    : 8;
246*437bfbebSnyanmisaka     } iprd_wgty4;
247*437bfbebSnyanmisaka 
248*437bfbebSnyanmisaka     /* 0x00001724 reg1481 */
249*437bfbebSnyanmisaka     struct {
250*437bfbebSnyanmisaka         RK_U32 iprd_wgty16_0    : 8;
251*437bfbebSnyanmisaka         RK_U32 iprd_wgty16_1    : 8;
252*437bfbebSnyanmisaka         RK_U32 iprd_wgty16_2    : 8;
253*437bfbebSnyanmisaka         RK_U32 iprd_wgty16_3    : 8;
254*437bfbebSnyanmisaka     } iprd_wgty16;
255*437bfbebSnyanmisaka 
256*437bfbebSnyanmisaka     /* 0x00001728 reg1482 */
257*437bfbebSnyanmisaka     struct {
258*437bfbebSnyanmisaka         RK_U32 iprd_wgtc8_0    : 8;
259*437bfbebSnyanmisaka         RK_U32 iprd_wgtc8_1    : 8;
260*437bfbebSnyanmisaka         RK_U32 iprd_wgtc8_2    : 8;
261*437bfbebSnyanmisaka         RK_U32 iprd_wgtc8_3    : 8;
262*437bfbebSnyanmisaka     } iprd_wgtc8;
263*437bfbebSnyanmisaka 
264*437bfbebSnyanmisaka     /* 0x172c */
265*437bfbebSnyanmisaka     RK_U32 reserved_1483;
266*437bfbebSnyanmisaka 
267*437bfbebSnyanmisaka     /* 0x00001730 reg1484 */
268*437bfbebSnyanmisaka     struct {
269*437bfbebSnyanmisaka         RK_U32    qnt_f_bias_i  : 10;
270*437bfbebSnyanmisaka         RK_U32    qnt_f_bias_p  : 10;
271*437bfbebSnyanmisaka         RK_U32    reserve       : 12;
272*437bfbebSnyanmisaka     } qnt_bias_comb;
273*437bfbebSnyanmisaka 
274*437bfbebSnyanmisaka     /* 0x1734 - 0x173c */
275*437bfbebSnyanmisaka     RK_U32 reserved1485_1487[3];
276*437bfbebSnyanmisaka 
277*437bfbebSnyanmisaka     /* 0x00001740 reg1488 */
278*437bfbebSnyanmisaka     struct {
279*437bfbebSnyanmisaka         RK_U32    thd0      : 8;
280*437bfbebSnyanmisaka         RK_U32    reserve0  : 8;
281*437bfbebSnyanmisaka         RK_U32    thd1      : 8;
282*437bfbebSnyanmisaka         RK_U32    reserve1  : 8;
283*437bfbebSnyanmisaka     } atr_thd0;
284*437bfbebSnyanmisaka 
285*437bfbebSnyanmisaka     /* 0x00001744 reg1489 */
286*437bfbebSnyanmisaka     struct {
287*437bfbebSnyanmisaka         RK_U32    thd2      : 8;
288*437bfbebSnyanmisaka         RK_U32    reserve0  : 8;
289*437bfbebSnyanmisaka         RK_U32    thdqp     : 6;
290*437bfbebSnyanmisaka         RK_U32    reserve1  : 10;
291*437bfbebSnyanmisaka     } atr_thd1;
292*437bfbebSnyanmisaka 
293*437bfbebSnyanmisaka     /* 0x1748 - 0x174c */
294*437bfbebSnyanmisaka     RK_U32 reserved1490_1491[2];
295*437bfbebSnyanmisaka 
296*437bfbebSnyanmisaka     /* 0x00001750 reg1492 */
297*437bfbebSnyanmisaka     struct {
298*437bfbebSnyanmisaka         RK_U32 atr_lv16_wgt0    : 8;
299*437bfbebSnyanmisaka         RK_U32 atr_lv16_wgt1    : 8;
300*437bfbebSnyanmisaka         RK_U32 atr_lv16_wgt2    : 8;
301*437bfbebSnyanmisaka         RK_U32 reserved         : 8;
302*437bfbebSnyanmisaka     } atr_wgt16;
303*437bfbebSnyanmisaka 
304*437bfbebSnyanmisaka     /* 0x00001754  reg1493*/
305*437bfbebSnyanmisaka     struct {
306*437bfbebSnyanmisaka         RK_U32 atr_lv8_wgt0    : 8;
307*437bfbebSnyanmisaka         RK_U32 atr_lv8_wgt1    : 8;
308*437bfbebSnyanmisaka         RK_U32 atr_lv8_wgt2    : 8;
309*437bfbebSnyanmisaka         RK_U32 reserved        : 8;
310*437bfbebSnyanmisaka     } atr_wgt8;
311*437bfbebSnyanmisaka 
312*437bfbebSnyanmisaka     /* 0x00001758 reg1494 */
313*437bfbebSnyanmisaka     struct {
314*437bfbebSnyanmisaka         RK_U32 atr_lv4_wgt0    : 8;
315*437bfbebSnyanmisaka         RK_U32 atr_lv4_wgt1    : 8;
316*437bfbebSnyanmisaka         RK_U32 atr_lv4_wgt2    : 8;
317*437bfbebSnyanmisaka         RK_U32 reserved        : 8;
318*437bfbebSnyanmisaka     } atr_wgt4;
319*437bfbebSnyanmisaka 
320*437bfbebSnyanmisaka     /* 0x175c */
321*437bfbebSnyanmisaka     RK_U32 reserved_1495;
322*437bfbebSnyanmisaka 
323*437bfbebSnyanmisaka     /* 0x00001760 reg1496 */
324*437bfbebSnyanmisaka     struct {
325*437bfbebSnyanmisaka         RK_U32 cime_pmv_num      : 1;
326*437bfbebSnyanmisaka         RK_U32 cime_fuse         : 1;
327*437bfbebSnyanmisaka         RK_U32 itp_mode          : 1;
328*437bfbebSnyanmisaka         RK_U32 reserved          : 1;
329*437bfbebSnyanmisaka         RK_U32 move_lambda       : 4;
330*437bfbebSnyanmisaka         RK_U32 rime_lvl_mrg      : 2;
331*437bfbebSnyanmisaka         RK_U32 rime_prelvl_en    : 2;
332*437bfbebSnyanmisaka         RK_U32 rime_prersu_en    : 3;
333*437bfbebSnyanmisaka         RK_U32 reserved1         : 17;
334*437bfbebSnyanmisaka     } me_sqi_comb;
335*437bfbebSnyanmisaka 
336*437bfbebSnyanmisaka     /* 0x00001764 reg1497 */
337*437bfbebSnyanmisaka     struct {
338*437bfbebSnyanmisaka         RK_U32 cime_mvd_th0    : 9;
339*437bfbebSnyanmisaka         RK_U32 reserved        : 1;
340*437bfbebSnyanmisaka         RK_U32 cime_mvd_th1    : 9;
341*437bfbebSnyanmisaka         RK_U32 reserved1       : 1;
342*437bfbebSnyanmisaka         RK_U32 cime_mvd_th2    : 9;
343*437bfbebSnyanmisaka         RK_U32 reserved2       : 3;
344*437bfbebSnyanmisaka     }  cime_mvd_th_comb;
345*437bfbebSnyanmisaka 
346*437bfbebSnyanmisaka     /* 0x00001768 reg1498 */
347*437bfbebSnyanmisaka     struct {
348*437bfbebSnyanmisaka         RK_U32 cime_madp_th    : 12;
349*437bfbebSnyanmisaka         RK_U32 reserved        : 20;
350*437bfbebSnyanmisaka     } cime_madp_th_comb;
351*437bfbebSnyanmisaka 
352*437bfbebSnyanmisaka     /* 0x0000176c reg1499 */
353*437bfbebSnyanmisaka     struct {
354*437bfbebSnyanmisaka         RK_U32 cime_multi0    : 8;
355*437bfbebSnyanmisaka         RK_U32 cime_multi1    : 8;
356*437bfbebSnyanmisaka         RK_U32 cime_multi2    : 8;
357*437bfbebSnyanmisaka         RK_U32 cime_multi3    : 8;
358*437bfbebSnyanmisaka     } cime_multi_comb;
359*437bfbebSnyanmisaka 
360*437bfbebSnyanmisaka     /* 0x00001770 reg1500 */
361*437bfbebSnyanmisaka     struct {
362*437bfbebSnyanmisaka         RK_U32 rime_mvd_th0    : 3;
363*437bfbebSnyanmisaka         RK_U32 reserved        : 1;
364*437bfbebSnyanmisaka         RK_U32 rime_mvd_th1    : 3;
365*437bfbebSnyanmisaka         RK_U32 reserved1       : 9;
366*437bfbebSnyanmisaka         RK_U32 fme_madp_th     : 12;
367*437bfbebSnyanmisaka         RK_U32 reserved2       : 4;
368*437bfbebSnyanmisaka     } rime_mvd_th_comb;
369*437bfbebSnyanmisaka 
370*437bfbebSnyanmisaka     /* 0x00001774 reg1501 */
371*437bfbebSnyanmisaka     struct {
372*437bfbebSnyanmisaka         RK_U32 rime_madp_th0    : 12;
373*437bfbebSnyanmisaka         RK_U32 reserved         : 4;
374*437bfbebSnyanmisaka         RK_U32 rime_madp_th1    : 12;
375*437bfbebSnyanmisaka         RK_U32 reserved1        : 4;
376*437bfbebSnyanmisaka     } rime_madp_th_comb;
377*437bfbebSnyanmisaka 
378*437bfbebSnyanmisaka     /* 0x00001778 reg1502 */
379*437bfbebSnyanmisaka     struct {
380*437bfbebSnyanmisaka         RK_U32 rime_multi0    : 10;
381*437bfbebSnyanmisaka         RK_U32 rime_multi1    : 10;
382*437bfbebSnyanmisaka         RK_U32 rime_multi2    : 10;
383*437bfbebSnyanmisaka         RK_U32 reserved       : 2;
384*437bfbebSnyanmisaka     } rime_multi_comb;
385*437bfbebSnyanmisaka 
386*437bfbebSnyanmisaka     /* 0x0000177c reg1503 */
387*437bfbebSnyanmisaka     struct {
388*437bfbebSnyanmisaka         RK_U32 cmv_th0     : 8;
389*437bfbebSnyanmisaka         RK_U32 cmv_th1     : 8;
390*437bfbebSnyanmisaka         RK_U32 cmv_th2     : 8;
391*437bfbebSnyanmisaka         RK_U32 reserved    : 8;
392*437bfbebSnyanmisaka     } cmv_st_th_comb;
393*437bfbebSnyanmisaka 
394*437bfbebSnyanmisaka     /* 0x1780 - 0x17fc */
395*437bfbebSnyanmisaka     RK_U32 reserved1504_1535[32];
396*437bfbebSnyanmisaka 
397*437bfbebSnyanmisaka     /* 0x00001800 reg1536 - 0x000018cc reg1587*/
398*437bfbebSnyanmisaka     RK_U32 pprd_lamb_satd_0_51[52];
399*437bfbebSnyanmisaka 
400*437bfbebSnyanmisaka     /* 0x000018d0 reg1588 */
401*437bfbebSnyanmisaka     struct {
402*437bfbebSnyanmisaka         RK_U32 lambda_satd_offset    : 5;
403*437bfbebSnyanmisaka         RK_U32 reserved              : 27;
404*437bfbebSnyanmisaka     } iprd_lamb_satd_ofst;
405*437bfbebSnyanmisaka 
406*437bfbebSnyanmisaka     /* 0x18d4 - 0x18fc */
407*437bfbebSnyanmisaka     RK_U32 reserved1589_1599[11];
408*437bfbebSnyanmisaka 
409*437bfbebSnyanmisaka     /* 0x00001900 reg1600 - 0x000019cc reg1651*/
410*437bfbebSnyanmisaka     RK_U32 rdo_wgta_qp_grpa_0_51[52];
411*437bfbebSnyanmisaka } H264eVepu510Param;
412*437bfbebSnyanmisaka 
413*437bfbebSnyanmisaka /* class: rdo/q_i */
414*437bfbebSnyanmisaka /* 0x00002000 reg2048 - 0x000020fc reg2111 */
415*437bfbebSnyanmisaka typedef struct H264eVepu510SqiCfg_t {
416*437bfbebSnyanmisaka     /* 0x00002000 reg2048 - 0x00002010 reg2052*/
417*437bfbebSnyanmisaka     RK_U32 reserved_2048_2052[5];
418*437bfbebSnyanmisaka 
419*437bfbebSnyanmisaka     /* 0x00002014 reg2053 */
420*437bfbebSnyanmisaka     struct {
421*437bfbebSnyanmisaka         RK_U32 rdo_smear_lvl16_multi    : 8;
422*437bfbebSnyanmisaka         RK_U32 rdo_smear_dlt_qp         : 4;
423*437bfbebSnyanmisaka         RK_U32 reserved                 : 1;
424*437bfbebSnyanmisaka         RK_U32 stated_mode              : 2;
425*437bfbebSnyanmisaka         RK_U32 rdo_smear_en             : 1;
426*437bfbebSnyanmisaka         RK_U32 reserved1                : 16;
427*437bfbebSnyanmisaka     } smear_opt_cfg;
428*437bfbebSnyanmisaka 
429*437bfbebSnyanmisaka     /* 0x00002018 reg2054 */
430*437bfbebSnyanmisaka     struct {
431*437bfbebSnyanmisaka         RK_U32 madp_cur_thd0    : 12;
432*437bfbebSnyanmisaka         RK_U32 reserved         : 4;
433*437bfbebSnyanmisaka         RK_U32 madp_cur_thd1    : 12;
434*437bfbebSnyanmisaka         RK_U32 reserved1        : 4;
435*437bfbebSnyanmisaka     } smear_madp_thd0;
436*437bfbebSnyanmisaka 
437*437bfbebSnyanmisaka     /* 0x0000201c reg2055 */
438*437bfbebSnyanmisaka     struct {
439*437bfbebSnyanmisaka         RK_U32 madp_cur_thd2    : 12;
440*437bfbebSnyanmisaka         RK_U32 reserved         : 4;
441*437bfbebSnyanmisaka         RK_U32 madp_cur_thd3    : 12;
442*437bfbebSnyanmisaka         RK_U32 reserved1        : 4;
443*437bfbebSnyanmisaka     } smear_madp_thd1;
444*437bfbebSnyanmisaka 
445*437bfbebSnyanmisaka     /* 0x00002020 reg2056 */
446*437bfbebSnyanmisaka     struct {
447*437bfbebSnyanmisaka         RK_U32 madp_around_thd0    : 12;
448*437bfbebSnyanmisaka         RK_U32 reserved            : 4;
449*437bfbebSnyanmisaka         RK_U32 madp_around_thd1    : 12;
450*437bfbebSnyanmisaka         RK_U32 reserved1           : 4;
451*437bfbebSnyanmisaka     } smear_madp_thd2;
452*437bfbebSnyanmisaka 
453*437bfbebSnyanmisaka     /* 0x00002024 reg2057 */
454*437bfbebSnyanmisaka     struct {
455*437bfbebSnyanmisaka         RK_U32 madp_around_thd2    : 12;
456*437bfbebSnyanmisaka         RK_U32 reserved            : 4;
457*437bfbebSnyanmisaka         RK_U32 madp_around_thd3    : 12;
458*437bfbebSnyanmisaka         RK_U32 reserved1           : 4;
459*437bfbebSnyanmisaka     } smear_madp_thd3;
460*437bfbebSnyanmisaka 
461*437bfbebSnyanmisaka     /* 0x00002028 reg2058 */
462*437bfbebSnyanmisaka     struct {
463*437bfbebSnyanmisaka         RK_U32 madp_around_thd4    : 12;
464*437bfbebSnyanmisaka         RK_U32 reserved            : 4;
465*437bfbebSnyanmisaka         RK_U32 madp_around_thd5    : 12;
466*437bfbebSnyanmisaka         RK_U32 reserved1           : 4;
467*437bfbebSnyanmisaka     } smear_madp_thd4;
468*437bfbebSnyanmisaka 
469*437bfbebSnyanmisaka     /* 0x0000202c reg2059 */
470*437bfbebSnyanmisaka     struct {
471*437bfbebSnyanmisaka         RK_U32 madp_ref_thd0    : 12;
472*437bfbebSnyanmisaka         RK_U32 reserved         : 4;
473*437bfbebSnyanmisaka         RK_U32 madp_ref_thd1    : 12;
474*437bfbebSnyanmisaka         RK_U32 reserved1        : 4;
475*437bfbebSnyanmisaka     } smear_madp_thd5;
476*437bfbebSnyanmisaka 
477*437bfbebSnyanmisaka     /* 0x00002030 reg2060 */
478*437bfbebSnyanmisaka     struct {
479*437bfbebSnyanmisaka         RK_U32 cnt_cur_thd0    : 4;
480*437bfbebSnyanmisaka         RK_U32 reserved        : 4;
481*437bfbebSnyanmisaka         RK_U32 cnt_cur_thd1    : 4;
482*437bfbebSnyanmisaka         RK_U32 reserved1       : 4;
483*437bfbebSnyanmisaka         RK_U32 cnt_cur_thd2    : 4;
484*437bfbebSnyanmisaka         RK_U32 reserved2       : 4;
485*437bfbebSnyanmisaka         RK_U32 cnt_cur_thd3    : 4;
486*437bfbebSnyanmisaka         RK_U32 reserved3       : 4;
487*437bfbebSnyanmisaka     } smear_cnt_thd0;
488*437bfbebSnyanmisaka 
489*437bfbebSnyanmisaka     /* 0x00002034 reg2061 */
490*437bfbebSnyanmisaka     struct {
491*437bfbebSnyanmisaka         RK_U32 cnt_around_thd0    : 4;
492*437bfbebSnyanmisaka         RK_U32 reserved           : 4;
493*437bfbebSnyanmisaka         RK_U32 cnt_around_thd1    : 4;
494*437bfbebSnyanmisaka         RK_U32 reserved1          : 4;
495*437bfbebSnyanmisaka         RK_U32 cnt_around_thd2    : 4;
496*437bfbebSnyanmisaka         RK_U32 reserved2          : 4;
497*437bfbebSnyanmisaka         RK_U32 cnt_around_thd3    : 4;
498*437bfbebSnyanmisaka         RK_U32 reserved3          : 4;
499*437bfbebSnyanmisaka     } smear_cnt_thd1;
500*437bfbebSnyanmisaka 
501*437bfbebSnyanmisaka     /* 0x00002038 reg2062 */
502*437bfbebSnyanmisaka     struct {
503*437bfbebSnyanmisaka         RK_U32 cnt_around_thd4    : 4;
504*437bfbebSnyanmisaka         RK_U32 reserved           : 4;
505*437bfbebSnyanmisaka         RK_U32 cnt_around_thd5    : 4;
506*437bfbebSnyanmisaka         RK_U32 reserved1          : 4;
507*437bfbebSnyanmisaka         RK_U32 cnt_around_thd6    : 4;
508*437bfbebSnyanmisaka         RK_U32 reserved2          : 4;
509*437bfbebSnyanmisaka         RK_U32 cnt_around_thd7    : 4;
510*437bfbebSnyanmisaka         RK_U32 reserved3          : 4;
511*437bfbebSnyanmisaka     } smear_cnt_thd2;
512*437bfbebSnyanmisaka 
513*437bfbebSnyanmisaka     /* 0x0000203c reg2063 */
514*437bfbebSnyanmisaka     struct {
515*437bfbebSnyanmisaka         RK_U32 cnt_ref_thd0    : 4;
516*437bfbebSnyanmisaka         RK_U32 reserved        : 4;
517*437bfbebSnyanmisaka         RK_U32 cnt_ref_thd1    : 4;
518*437bfbebSnyanmisaka         RK_U32 reserved1       : 20;
519*437bfbebSnyanmisaka     } smear_cnt_thd3;
520*437bfbebSnyanmisaka 
521*437bfbebSnyanmisaka     /* 0x00002040 reg2064 */
522*437bfbebSnyanmisaka     struct {
523*437bfbebSnyanmisaka         RK_U32 resi_small_cur_th0    : 6;
524*437bfbebSnyanmisaka         RK_U32 reserved              : 2;
525*437bfbebSnyanmisaka         RK_U32 resi_big_cur_th0      : 6;
526*437bfbebSnyanmisaka         RK_U32 reserved1             : 2;
527*437bfbebSnyanmisaka         RK_U32 resi_small_cur_th1    : 6;
528*437bfbebSnyanmisaka         RK_U32 reserved2             : 2;
529*437bfbebSnyanmisaka         RK_U32 resi_big_cur_th1      : 6;
530*437bfbebSnyanmisaka         RK_U32 reserved3             : 2;
531*437bfbebSnyanmisaka     } smear_resi_thd0;
532*437bfbebSnyanmisaka 
533*437bfbebSnyanmisaka     /* 0x00002044 reg2065 */
534*437bfbebSnyanmisaka     struct {
535*437bfbebSnyanmisaka         RK_U32 resi_small_around_th0    : 6;
536*437bfbebSnyanmisaka         RK_U32 reserved                 : 2;
537*437bfbebSnyanmisaka         RK_U32 resi_big_around_th0      : 6;
538*437bfbebSnyanmisaka         RK_U32 reserved1                : 2;
539*437bfbebSnyanmisaka         RK_U32 resi_small_around_th1    : 6;
540*437bfbebSnyanmisaka         RK_U32 reserved2                : 2;
541*437bfbebSnyanmisaka         RK_U32 resi_big_around_th1      : 6;
542*437bfbebSnyanmisaka         RK_U32 reserved3                : 2;
543*437bfbebSnyanmisaka     } smear_resi_thd1;
544*437bfbebSnyanmisaka 
545*437bfbebSnyanmisaka     /* 0x00002048 reg2066 */
546*437bfbebSnyanmisaka     struct {
547*437bfbebSnyanmisaka         RK_U32 resi_small_around_th2    : 6;
548*437bfbebSnyanmisaka         RK_U32 reserved                 : 2;
549*437bfbebSnyanmisaka         RK_U32 resi_big_around_th2      : 6;
550*437bfbebSnyanmisaka         RK_U32 reserved1                : 2;
551*437bfbebSnyanmisaka         RK_U32 resi_small_around_th3    : 6;
552*437bfbebSnyanmisaka         RK_U32 reserved2                : 2;
553*437bfbebSnyanmisaka         RK_U32 resi_big_around_th3      : 6;
554*437bfbebSnyanmisaka         RK_U32 reserved3                : 2;
555*437bfbebSnyanmisaka     } smear_resi_thd2;
556*437bfbebSnyanmisaka 
557*437bfbebSnyanmisaka     /* 0x0000204c reg2067 */
558*437bfbebSnyanmisaka     struct {
559*437bfbebSnyanmisaka         RK_U32 resi_small_ref_th0    : 6;
560*437bfbebSnyanmisaka         RK_U32 reserved              : 2;
561*437bfbebSnyanmisaka         RK_U32 resi_big_ref_th0      : 6;
562*437bfbebSnyanmisaka         RK_U32 reserved1             : 18;
563*437bfbebSnyanmisaka     } smear_resi_thd3;
564*437bfbebSnyanmisaka 
565*437bfbebSnyanmisaka     /* 0x00002050 reg2068 */
566*437bfbebSnyanmisaka     struct {
567*437bfbebSnyanmisaka         RK_U32 resi_th0    : 8;
568*437bfbebSnyanmisaka         RK_U32 reserved    : 8;
569*437bfbebSnyanmisaka         RK_U32 resi_th1    : 8;
570*437bfbebSnyanmisaka         RK_U32 reserved1   : 8;
571*437bfbebSnyanmisaka     } smear_resi_thd4;
572*437bfbebSnyanmisaka 
573*437bfbebSnyanmisaka     /* 0x00002054 reg2069 */
574*437bfbebSnyanmisaka     struct {
575*437bfbebSnyanmisaka         RK_U32 madp_cnt_th0    : 4;
576*437bfbebSnyanmisaka         RK_U32 madp_cnt_th1    : 4;
577*437bfbebSnyanmisaka         RK_U32 madp_cnt_th2    : 4;
578*437bfbebSnyanmisaka         RK_U32 madp_cnt_th3    : 4;
579*437bfbebSnyanmisaka         RK_U32 reserved        : 16;
580*437bfbebSnyanmisaka     } smear_st_thd;
581*437bfbebSnyanmisaka 
582*437bfbebSnyanmisaka     /* 0x2058 - 0x206c */
583*437bfbebSnyanmisaka     RK_U32 reserved2070_2075[6];
584*437bfbebSnyanmisaka 
585*437bfbebSnyanmisaka     /* 0x00002070 reg2076 - 0x0000207c reg2079*/
586*437bfbebSnyanmisaka     rdo_skip_par rdo_b16_skip;
587*437bfbebSnyanmisaka 
588*437bfbebSnyanmisaka     /* 0x00002080 reg2080 - 0x00002088 reg2082 */
589*437bfbebSnyanmisaka     RK_U32 reserved2080_2082[3];
590*437bfbebSnyanmisaka 
591*437bfbebSnyanmisaka     /* 0x0000208c reg2083 - 0x00002094 reg2085 */
592*437bfbebSnyanmisaka     rdo_noskip_par rdo_b16_inter;
593*437bfbebSnyanmisaka 
594*437bfbebSnyanmisaka     /* 0x00002098 reg2086 - 0x000020a4 reg2088 */
595*437bfbebSnyanmisaka     RK_U32 reserved2086_2088[3];
596*437bfbebSnyanmisaka 
597*437bfbebSnyanmisaka     /* 0x000020a8 reg2089 - 0x000020ac reg2091 */
598*437bfbebSnyanmisaka     rdo_noskip_par rdo_b16_intra;
599*437bfbebSnyanmisaka 
600*437bfbebSnyanmisaka     /* 0x000020b0 reg2092 */
601*437bfbebSnyanmisaka     RK_U32 reserved2092;
602*437bfbebSnyanmisaka 
603*437bfbebSnyanmisaka     /* 0x000020b4 reg2093 */
604*437bfbebSnyanmisaka     struct {
605*437bfbebSnyanmisaka         RK_U32 thd0         : 4;
606*437bfbebSnyanmisaka         RK_U32 reserved     : 4;
607*437bfbebSnyanmisaka         RK_U32 thd1         : 4;
608*437bfbebSnyanmisaka         RK_U32 reserved1    : 4;
609*437bfbebSnyanmisaka         RK_U32 thd2         : 4;
610*437bfbebSnyanmisaka         RK_U32 reserved2    : 4;
611*437bfbebSnyanmisaka         RK_U32 thd3         : 4;
612*437bfbebSnyanmisaka         RK_U32 reserved3    : 4;
613*437bfbebSnyanmisaka     } rdo_b16_intra_atf_cnt_thd;
614*437bfbebSnyanmisaka 
615*437bfbebSnyanmisaka     /* 0x000020b8 reg2094 */
616*437bfbebSnyanmisaka     struct {
617*437bfbebSnyanmisaka         RK_U32 big_th0      : 6;
618*437bfbebSnyanmisaka         RK_U32 reserved     : 2;
619*437bfbebSnyanmisaka         RK_U32 big_th1      : 6;
620*437bfbebSnyanmisaka         RK_U32 reserved1    : 2;
621*437bfbebSnyanmisaka         RK_U32 small_th0    : 6;
622*437bfbebSnyanmisaka         RK_U32 reserved2    : 2;
623*437bfbebSnyanmisaka         RK_U32 small_th1    : 6;
624*437bfbebSnyanmisaka         RK_U32 reserved3    : 2;
625*437bfbebSnyanmisaka     } rdo_atf_resi_thd;
626*437bfbebSnyanmisaka } H264eVepu510Sqi;
627*437bfbebSnyanmisaka 
628*437bfbebSnyanmisaka /* class: mmu */
629*437bfbebSnyanmisaka /* 0x0000f000 reg15360 - 0x0000f024 reg15369 */
630*437bfbebSnyanmisaka typedef struct HalVepu510Reg_t {
631*437bfbebSnyanmisaka     Vepu510ControlCfg       reg_ctl;
632*437bfbebSnyanmisaka     H264eVepu510Frame       reg_frm;
633*437bfbebSnyanmisaka     Vepu510RcRoi            reg_rc_roi;
634*437bfbebSnyanmisaka     H264eVepu510Param       reg_param;
635*437bfbebSnyanmisaka     H264eVepu510Sqi         reg_sqi;
636*437bfbebSnyanmisaka     Vepu510SclCfg           reg_scl;
637*437bfbebSnyanmisaka     Vepu510Status           reg_st;
638*437bfbebSnyanmisaka     Vepu510Dbg              reg_dbg;
639*437bfbebSnyanmisaka } HalVepu510RegSet;
640*437bfbebSnyanmisaka 
641*437bfbebSnyanmisaka #endif