xref: /rockchip-linux_mpp/mpp/hal/rkenc/common/vepu540c_common.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /*
2  * Copyright 2022 Rockchip Electronics Co. LTD
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef __VEPU540C_COMMON_H__
18 #define __VEPU540C_COMMON_H__
19 
20 #include "rk_venc_cmd.h"
21 #include "mpp_device.h"
22 
23 #define VEPU540C_CTL_OFFSET          (0 * sizeof(RK_U32))
24 #define VEPU540C_BASE_OFFSET         (156 * sizeof(RK_U32))
25 #define VEPU540C_RCROI_OFFSET        (1024 * sizeof(RK_U32))
26 #define VEPU540C_WEG_OFFSET          (1472 * sizeof(RK_U32))
27 #define VEPU540C_RDOCFG_OFFSET       (2048 * sizeof(RK_U32))
28 #define VEPU540C_SCLCFG_OFFSET       (2168 * sizeof(RK_U32))
29 #define VEPU540C_JPEGTAB_OFFSET      (2848 * sizeof(RK_U32))
30 
31 #define VEPU540C_OSD_OFFSET          (3072 * sizeof(RK_U32))
32 #define VEPU540C_STATUS_OFFSET       (4096 * sizeof(RK_U32))
33 #define VEPU540C_DEBUG_OFFSET        (5120 * sizeof(RK_U32))
34 #define VEPU540C_REG_BASE_HW_STATUS  0x2c
35 
36 #define VEPU540C_MAX_ROI_NUM         8
37 #define VEPU540C_SLICE_FIFO_LEN      8
38 
39 typedef union {
40     struct {
41         RK_U32 enc_done_sta          : 1;
42         RK_U32 lkt_node_done_sta     : 1;
43         RK_U32 sclr_done_sta         : 1;
44         RK_U32 vslc_done_sta         : 1;
45         RK_U32 vbsf_oflw_sta         : 1;
46         RK_U32 vbuf_lens_sta         : 1;
47         RK_U32 enc_err_sta           : 1;
48         RK_U32 dvbm_fcfg_sta         : 1;
49         RK_U32 wdg_sta               : 1;
50         RK_U32 lkt_err_int_sta       : 1;
51         RK_U32 lkt_err_stop_sta      : 1;
52         RK_U32 lkt_force_stop_sta    : 1;
53         RK_U32 jslc_done_sta         : 1;
54         RK_U32 jbsf_oflw_sta         : 1;
55         RK_U32 jbuf_lens_sta         : 1;
56         RK_U32 dvbm_dcnt_sta         : 1;
57         RK_U32 reserved              : 16;
58     } int_sta;
59 
60     RK_U32 val;
61 } vepu540c_hw_status;
62 
63 typedef struct Vepu540cOnline_t {
64     /* 0x00000270 reg156 */
65     RK_U32 reg0156_adr_vsy_t;
66     /* 0x00000274 reg157 */
67     RK_U32 reg0157_adr_vsc_t;
68     /* 0x00000278 reg158 */
69     RK_U32 reg0158_adr_vsy_b;
70     /* 0x0000027c reg159 */
71     RK_U32 reg0159_adr_vsc_b;
72 } vepu540c_online;
73 
74 typedef struct IpRaw8_t {
75     RK_U8 intra_val[8];
76     RK_U8 inter_val[8];
77 } ip_raw8;
78 
79 typedef struct IpRaw32_16_t {
80     RK_U16 q_intra16[4];
81     RK_U16 q_intra32[2];
82     RK_U8  iq_intra16[4];
83 } ip_raw32_16;
84 
85 /* 0x000021e0 reg2168 - 0x00002c7c reg2847*/
86 typedef struct Vepu540cSclCfg_t {
87     /* 0x000021e0 reg2168 */
88     RK_U32  q_dc_y16;
89     RK_U32  q_dc_u16;
90     RK_U32  q_dc_v16;
91     RK_U32  q_dc_y32;
92     RK_U32  iq_dc_0;
93     RK_U32  iq_dc_1;
94 
95     /* 0x000021f8 reg2174 */
96     struct {
97         RK_U32 scal_clk_sel    : 1;
98         RK_U32 reserved        : 31;
99     } scal_cfg;
100     /* 0x21fc */
101     RK_U32 reserved_2175;
102     /* 0x00002200 reg2176 - 0x0000227c reg2207*/
103     RK_U16 q_intra_y8[64];
104     /* 0x00002280 reg2208 - 0x000022fc reg2239*/
105     RK_U16 q_intra_u8[64];
106     /* 0x00002300 reg2240 - 0x0000237c reg2271*/
107     RK_U16 q_intra_v8[64];
108 
109     /* 0x00002380 reg2272 - 0x000023fc reg2303*/
110     RK_U16 q_inter_y8[64];
111     /* 0x00002400 reg2304 - 0x0000247c reg2335*/
112     RK_U16 q_inter_u8[64];
113     /* 0x00002480 reg2336 - 0x000024fc reg2367*/
114     RK_U16 q_inter_v8[64];
115 
116     /* 0x00002500 reg2368 - 0x000025fc reg2431*/
117     ip_raw32_16 q_intra_y[16];
118     /* 0x00002600 reg2432 - 0x000026fc reg2495*/
119     ip_raw32_16 q_intra_u[16];
120     /* 0x00002700 reg2496 - 0x000027fc reg2559 */
121     ip_raw32_16 q_intra_v[16];
122 
123     /*0x00002800 reg2560 - 0x000028fc reg2623*/
124     ip_raw32_16 q_inter_y[16];
125     /*0x00002900 reg2624  - 0x000029fc reg2687*/
126     ip_raw32_16 q_inter_u[16];
127     /*0x00002a00 reg2688 - 0x00002afc reg2751 */
128     ip_raw32_16 q_inter_v[16];
129 
130     /* 0x00002b00 reg2752 - 0x00002b7c reg2783 */
131     ip_raw8  ip_y8[8];
132     /* 0x00002b80 reg2784 - 0x00002bfc reg2815 */
133     ip_raw8  ip_u8[8];
134     /* 0x00002c00 reg2816 - 0x00002c7c reg2847 */
135     ip_raw8  ip_v8[8];
136 } vepu540c_scl_cfg;
137 
138 typedef struct PreCstPar_t {
139     struct {
140         RK_U32 madi_thd0    : 8;
141         RK_U32 madi_thd1    : 8;
142         RK_U32 madi_thd2    : 8;
143         RK_U32 madi_thd3    : 8;
144     } cst_madi_thd0;
145 
146     /* 0x000020c4 reg2097 */
147     struct {
148         RK_U32 madi_thd4    : 8;
149         RK_U32 madi_thd5    : 8;
150         RK_U32 reserved     : 16;
151     } cst_madi_thd1;
152 
153     /* 0x000020c8 reg2098 */
154     struct {
155         RK_U32 wgt0    : 8;
156         RK_U32 wgt1    : 8;
157         RK_U32 wgt2    : 8;
158         RK_U32 wgt3    : 8;
159     } cst_wgt0;
160 
161     /* 0x000020cc reg2099 */
162     struct {
163         RK_U32 wgt4    : 8;
164         RK_U32 wgt5    : 8;
165         RK_U32 wgt6    : 8;
166         RK_U32 wgt7    : 8;
167     } cst_wgt1;
168 
169     /* 0x000020d0 reg2100 */
170     struct {
171         RK_U32 wgt8        : 8;
172         RK_U32 wgt9        : 8;
173         RK_U32 mode_th     : 3;
174         RK_U32 reserved    : 13;
175     } cst_wgt2;
176 } pre_cst_par;
177 
178 typedef struct RdoSkipPar_t {
179     struct {
180         RK_U32 madp_thd0    : 12;
181         RK_U32 reserved     : 4;
182         RK_U32 madp_thd1    : 12;
183         RK_U32 reserved1    : 4;
184     } atf_thd0;
185 
186     /* 0x00002064 reg2073 */
187     struct {
188         RK_U32 madp_thd2    : 12;
189         RK_U32 reserved     : 4;
190         RK_U32 madp_thd3    : 12;
191         RK_U32 reserved1    : 4;
192     } atf_thd1;
193 
194     /* 0x00002068 reg2074 */
195     struct {
196         RK_U32 wgt0    : 8;
197         RK_U32 wgt1    : 8;
198         RK_U32 wgt2    : 8;
199         RK_U32 wgt3    : 8;
200     } atf_wgt0;
201 
202     /* 0x0000206c reg2075 */
203     struct {
204         RK_U32 wgt4    : 8;
205         RK_U32 reserved                  : 24;
206     } atf_wgt1;
207 } rdo_skip_par;
208 
209 typedef struct RdoNoSkipPar_t {
210     /* 0x00002080 reg2080 */
211     struct {
212         RK_U32 madp_thd0    : 12;
213         RK_U32 reserved     : 4;
214         RK_U32 madp_thd1    : 12;
215         RK_U32 reserved1    : 4;
216     } ratf_thd0;
217 
218     /* 0x00002084 reg2081 */
219     struct {
220         RK_U32 madp_thd2    : 12;
221         RK_U32 reserved     : 20;
222     } ratf_thd1;
223 
224     /* 0x00002088 reg2082 */
225     struct {
226         RK_U32 wgt0    : 8;
227         RK_U32 wgt1    : 8;
228         RK_U32 wgt2    : 8;
229         RK_U32 wgt3    : 8;
230     } atf_wgt;
231 } rdo_noskip_par;
232 
233 /* class: rdo/q_i */
234 /* 0x00002000 reg2048 - 0x00002c7c reg2847*/
235 typedef struct Vepu540cRdoCfg_t {
236 
237     /* 0x2000 - 0x200c */
238     RK_U32 reserved2048_2051[4];
239 
240     /* 0x00002010 reg2052 */
241     struct {
242         RK_U32 rdo_segment_multi       : 8;
243         RK_U32 rdo_segment_en          : 1;
244         RK_U32 reserved                : 7;
245         RK_U32 rdo_smear_lvl4_multi    : 8;
246         RK_U32 rdo_smear_lvl8_multi    : 8;
247     } rdo_segment_cfg;
248 
249     /* 0x00002014 reg2053 */
250     struct {
251         RK_U32 rdo_smear_lvl16_multi    : 8;
252         RK_U32 rdo_smear_dlt_qp         : 4;
253         RK_U32 rdo_smear_order_state    : 1;
254         RK_U32 stated_mode              : 2;
255         RK_U32 rdo_smear_en             : 1;
256         RK_U32 online_en                : 1;
257         RK_U32 reserved                 : 3;
258         RK_U32 smear_stride             : 12;
259     } rdo_smear_cfg_comb;
260 
261     /* 0x00002018 reg2054 */
262     struct {
263         RK_U32 rdo_smear_madp_cur_thd0    : 12;
264         RK_U32 reserved                   : 4;
265         RK_U32 rdo_smear_madp_cur_thd1    : 12;
266         RK_U32 reserved1                  : 4;
267     } rdo_smear_madp_thd0_comb;
268 
269     /* 0x0000201c reg2055 */
270     struct {
271         RK_U32 rdo_smear_madp_cur_thd2    : 12;
272         RK_U32 reserved                   : 4;
273         RK_U32 rdo_smear_madp_cur_thd3    : 12;
274         RK_U32 reserved1                  : 4;
275     } rdo_smear_madp_thd1_comb;
276 
277     /* 0x00002020 reg2056 */
278     struct {
279         RK_U32 rdo_smear_madp_around_thd0    : 12;
280         RK_U32 reserved                      : 4;
281         RK_U32 rdo_smear_madp_around_thd1    : 12;
282         RK_U32 reserved1                     : 4;
283     } rdo_smear_madp_thd2_comb;
284 
285     /* 0x00002024 reg2057 */
286     struct {
287         RK_U32 rdo_smear_madp_around_thd2    : 12;
288         RK_U32 reserved                      : 4;
289         RK_U32 rdo_smear_madp_around_thd3    : 12;
290         RK_U32 reserved1                     : 4;
291     } rdo_smear_madp_thd3_comb;
292 
293     /* 0x00002028 reg2058 */
294     struct {
295         RK_U32 rdo_smear_madp_around_thd4    : 12;
296         RK_U32 reserved                      : 4;
297         RK_U32 rdo_smear_madp_around_thd5    : 12;
298         RK_U32 reserved1                     : 4;
299     } rdo_smear_madp_thd4_comb;
300 
301     /* 0x0000202c reg2059 */
302     struct {
303         RK_U32 rdo_smear_madp_ref_thd0    : 12;
304         RK_U32 reserved                   : 4;
305         RK_U32 rdo_smear_madp_ref_thd1    : 12;
306         RK_U32 reserved1                  : 4;
307     } rdo_smear_madp_thd5_comb;
308 
309     /* 0x00002030 reg2060 */
310     struct {
311         RK_U32 rdo_smear_cnt_cur_thd0    : 4;
312         RK_U32 reserved                  : 4;
313         RK_U32 rdo_smear_cnt_cur_thd1    : 4;
314         RK_U32 reserved1                 : 4;
315         RK_U32 rdo_smear_cnt_cur_thd2    : 4;
316         RK_U32 reserved2                 : 4;
317         RK_U32 rdo_smear_cnt_cur_thd3    : 4;
318         RK_U32 reserved3                 : 4;
319     } rdo_smear_cnt_thd0_comb;
320 
321     /* 0x00002034 reg2061 */
322     struct {
323         RK_U32 rdo_smear_cnt_around_thd0    : 4;
324         RK_U32 reserved                     : 4;
325         RK_U32 rdo_smear_cnt_around_thd1    : 4;
326         RK_U32 reserved1                    : 4;
327         RK_U32 rdo_smear_cnt_around_thd2    : 4;
328         RK_U32 reserved2                    : 4;
329         RK_U32 rdo_smear_cnt_around_thd3    : 4;
330         RK_U32 reserved3                    : 4;
331     } rdo_smear_cnt_thd1_comb;
332 
333     /* 0x00002038 reg2062 */
334     struct {
335         RK_U32 rdo_smear_cnt_around_thd4    : 4;
336         RK_U32 reserved                     : 4;
337         RK_U32 rdo_smear_cnt_around_thd5    : 4;
338         RK_U32 reserved1                    : 4;
339         RK_U32 rdo_smear_cnt_around_thd6    : 4;
340         RK_U32 reserved2                    : 4;
341         RK_U32 rdo_smear_cnt_around_thd7    : 4;
342         RK_U32 reserved3                    : 4;
343     } rdo_smear_cnt_thd2_comb;
344 
345     /* 0x0000203c reg2063 */
346     struct {
347         RK_U32 rdo_smear_cnt_ref_thd0    : 4;
348         RK_U32 reserved                  : 4;
349         RK_U32 rdo_smear_cnt_ref_thd1    : 4;
350         RK_U32 reserved1                 : 20;
351     } rdo_smear_cnt_thd3_comb;
352 
353     /* 0x00002040 reg2064 */
354     struct {
355         RK_U32 rdo_smear_resi_small_cur_th0    : 6;
356         RK_U32 reserved                        : 2;
357         RK_U32 rdo_smear_resi_big_cur_th0      : 6;
358         RK_U32 reserved1                       : 2;
359         RK_U32 rdo_smear_resi_small_cur_th1    : 6;
360         RK_U32 reserved2                       : 2;
361         RK_U32 rdo_smear_resi_big_cur_th1      : 6;
362         RK_U32 reserved3                       : 2;
363     } rdo_smear_resi_thd0_comb;
364 
365     /* 0x00002044 reg2065 */
366     struct {
367         RK_U32 rdo_smear_resi_small_around_th0    : 6;
368         RK_U32 reserved                           : 2;
369         RK_U32 rdo_smear_resi_big_around_th0      : 6;
370         RK_U32 reserved1                          : 2;
371         RK_U32 rdo_smear_resi_small_around_th1    : 6;
372         RK_U32 reserved2                          : 2;
373         RK_U32 rdo_smear_resi_big_around_th1      : 6;
374         RK_U32 reserved3                          : 2;
375     } rdo_smear_resi_thd1_comb;
376 
377     /* 0x00002048 reg2066 */
378     struct {
379         RK_U32 rdo_smear_resi_small_around_th2    : 6;
380         RK_U32 reserved                           : 2;
381         RK_U32 rdo_smear_resi_big_around_th2      : 6;
382         RK_U32 reserved1                          : 2;
383         RK_U32 rdo_smear_resi_small_around_th3    : 6;
384         RK_U32 reserved2                          : 2;
385         RK_U32 rdo_smear_resi_big_around_th3      : 6;
386         RK_U32 reserved3                          : 2;
387     } rdo_smear_resi_thd2_comb;
388 
389     /* 0x0000204c reg2067 */
390     struct {
391         RK_U32 rdo_smear_resi_small_ref_th0    : 6;
392         RK_U32 reserved                        : 2;
393         RK_U32 rdo_smear_resi_big_ref_th0      : 6;
394         RK_U32 reserved1                       : 18;
395     } rdo_smear_resi_thd3_comb;
396 
397     /* 0x00002050 reg2068 */
398     struct {
399         RK_U32 rdo_smear_resi_th0    : 8;
400         RK_U32 reserved              : 8;
401         RK_U32 rdo_smear_resi_th1    : 8;
402         RK_U32 reserved1             : 8;
403     } rdo_smear_st_thd0_comb;
404 
405     /* 0x00002054 reg2069 */
406     struct {
407         RK_U32 rdo_smear_madp_cnt_th0    : 4;
408         RK_U32 rdo_smear_madp_cnt_th1    : 4;
409         RK_U32 rdo_smear_madp_cnt_th2    : 4;
410         RK_U32 rdo_smear_madp_cnt_th3    : 4;
411         RK_U32 rdo_smear_madp_cnt_th4    : 4;
412         RK_U32 rdo_smear_madp_cnt_th5    : 4;
413         RK_U32 reserved                  : 8;
414     } rdo_smear_st_thd1_comb;
415 
416     /* 0x2058 - 0x205c */
417     RK_U32 reserved2070_2071[2];
418     /* 0x00002060 reg2072 - 0x0000206c reg2075 */
419     rdo_skip_par rdo_b32_skip;
420     /* 0x00002070 reg2076 - 0x0000207c reg2079*/
421     rdo_skip_par rdo_b16_skip;
422 
423     /* 0x00002080 reg2080 - 0x00002088 reg2082 */
424     rdo_noskip_par rdo_b32_inter;
425 
426     /* 0x0000208c reg2083 - 0x00002094 reg2085 */
427     rdo_noskip_par rdo_b16_inter;
428 
429     /* 0x00002098 reg2086 - 0x000020a4 reg2089 */
430     rdo_noskip_par rdo_b32_intra;
431 
432     /* 0x000020a8 reg2090 - 0x000020ac reg2091 */
433     rdo_noskip_par rdo_b16_intra;
434 
435     /* 0x000020b0 reg2092 */
436     struct {
437         RK_U32 thd0    : 6;
438         RK_U32 reserved                       : 2;
439         RK_U32 thd1    : 6;
440         RK_U32 reserved1                      : 2;
441         RK_U32 thd2    : 6;
442         RK_U32 reserved2                      : 2;
443         RK_U32 thd3    : 6;
444         RK_U32 reserved3                      : 2;
445     } rdo_b32_intra_atf_cnt_thd;
446 
447     /* 0x000020b4 reg2093 */
448     struct {
449         RK_U32 thd0    : 4;
450         RK_U32 reserved                       : 4;
451         RK_U32 thd1    : 4;
452         RK_U32 reserved1                      : 4;
453         RK_U32 thd2    : 4;
454         RK_U32 reserved2                      : 4;
455         RK_U32 thd3    : 4;
456         RK_U32 reserved3                      : 4;
457     } rdo_b16_intra_atf_cnt_thd_comb;
458 
459     /* 0x000020b8 reg2094 */
460     struct {
461         RK_U32 big_th0      : 6;
462         RK_U32 reserved                  : 2;
463         RK_U32 big_th1      : 6;
464         RK_U32 reserved1                 : 2;
465         RK_U32 small_th0    : 6;
466         RK_U32 reserved2                 : 2;
467         RK_U32 small_th1    : 6;
468         RK_U32 reserved3                 : 2;
469     } rdo_atf_resi_thd_comb;
470 
471     /* 0x20bc */
472     RK_U32 reserved_2095;
473 
474     /* 0x000020c0 reg2096 - 0x000020d0 reg2100 */
475     pre_cst_par preintra32_cst;
476     /* 0x000020d4 reg2101 - 0x000020e4 reg2105 */
477     pre_cst_par preintra16_cst;
478 
479     /* 0x20e8 - 0x20ec */
480     RK_U32 reserved2106_2107[2];
481 
482     /* 0x000020f0 reg2108 */
483     struct {
484         RK_U32 pre_intra_qp_thd             : 6;
485         RK_U32 reserved                     : 2;
486         RK_U32 pre_intra4_lambda_mv_bit     : 3;
487         RK_U32 reserved1                    : 1;
488         RK_U32 pre_intra8_lambda_mv_bit     : 3;
489         RK_U32 reserved2                    : 1;
490         RK_U32 pre_intra16_lambda_mv_bit    : 3;
491         RK_U32 reserved3                    : 1;
492         RK_U32 pre_intra32_lambda_mv_bit    : 3;
493         RK_U32 reserved4                    : 9;
494     } preintra_sqi_cfg;
495 
496     /* 0x000020f4 reg2109 */
497     struct {
498         RK_U32 i_cu32_madi_thd0    : 8;
499         RK_U32 i_cu32_madi_thd1    : 8;
500         RK_U32 i_cu32_madi_thd2    : 8;
501         RK_U32 reserved            : 8;
502     } rdo_atr_i_cu32_madi_cfg0;
503 
504     /* 0x000020f8 reg2110 */
505     struct {
506         RK_U32 i_cu32_madi_cnt_thd3      : 5;
507         RK_U32 reserved                  : 3;
508         RK_U32 i_cu32_madi_thd4          : 8;
509         RK_U32 i_cu32_madi_cost_multi    : 8;
510         RK_U32 reserved1                 : 8;
511     } rdo_atr_i_cu32_madi_cfg1;
512 
513     /* 0x000020fc reg2111 */
514     struct {
515         RK_U32 i_cu16_madi_thd0          : 8;
516         RK_U32 i_cu16_madi_thd1          : 8;
517         RK_U32 i_cu16_madi_cost_multi    : 8;
518         RK_U32 reserved                  : 8;
519     } rdo_atr_i_cu16_madi_cfg0;
520 } vepu540c_rdo_cfg;
521 
522 typedef struct Vepu540cJpegReg_t {
523 
524     RK_U32  reg0256_adr_bsbt;
525 
526     /* 0x00000404 reg257 */
527     RK_U32  reg0257_adr_bsbb;
528 
529     /* 0x00000408 reg258 */
530     RK_U32 reg0258_adr_bsbs;
531 
532     /* 0x0000040c reg259 */
533     RK_U32 reg0259_adr_bsbr;
534 
535     /* 0x00000410 reg260 */
536     RK_U32 reg0260_adr_vsy_b;
537 
538     /* 0x00000414 reg261 */
539     RK_U32 reg0261_adr_vsc_b;
540 
541     /* 0x00000418 reg262 */
542     RK_U32 reg0262_adr_vsy_t;
543 
544     /* 0x0000041c reg263 */
545     RK_U32 reg0263_adr_vsc_t;
546 
547     /* 0x00000420 reg264 */
548     RK_U32 reg0264_adr_src0;
549 
550     /* 0x00000424 reg265 */
551     RK_U32 reg0265_adr_src1;
552 
553     /* 0x00000428 reg266 */
554     RK_U32 reg0266_adr_src2;
555 
556     /* 0x0000042c reg267 */
557     struct {
558         RK_U32 bsp_size_jpeg    : 1;
559         RK_U32 reserved         : 31;
560     } bsp_size_jpeg;
561 
562     /* 0x430 - 0x43c */
563     RK_U32 reserved268_271[4];
564 
565     /* 0x00000440 reg272 */
566     struct {
567         RK_U32 pic_wd8_m1         : 11;
568         RK_U32 reserved           : 5;
569         RK_U32 pic_hd8_m1         : 11;
570         RK_U32 reserved1          : 5;
571     } reg0272_enc_rsl;
572 
573     /* 0x00000444 reg273 */
574     struct {
575         RK_U32 pic_wfill         : 6;
576         RK_U32 reserved          : 10;
577         RK_U32 pic_hfill         : 6;
578         RK_U32 reserved1         : 10;
579     } reg0273_src_fill;
580 
581     /* 0x00000448 reg274 */
582     struct {
583         RK_U32 alpha_swap            : 1;
584         RK_U32 rbuv_swap             : 1;
585         RK_U32 src_cfmt              : 4;
586         RK_U32 reserved              : 1;
587         RK_U32 out_fmt               : 1;
588         RK_U32 src_range_trns_en     : 1;
589         RK_U32 src_range_trns_sel    : 1;
590         RK_U32 chroma_ds_mode        : 1;
591         RK_U32 reserved1             : 21;
592     } reg0274_src_fmt;
593 
594     /* 0x0000044c reg275 */
595     struct {
596         RK_U32 csc_wgt_b2y    : 9;
597         RK_U32 csc_wgt_g2y    : 9;
598         RK_U32 csc_wgt_r2y    : 9;
599         RK_U32 reserved            : 5;
600     } reg0275_src_udfy;
601 
602     /* 0x00000450 reg276 */
603     struct {
604         RK_U32 csc_wgt_b2u    : 9;
605         RK_U32 csc_wgt_g2u    : 9;
606         RK_U32 csc_wgt_r2u    : 9;
607         RK_U32 reserved            : 5;
608     } reg0276_src_udfu;
609 
610     /* 0x00000454 reg277 */
611     struct {
612         RK_U32 csc_wgt_b2v    : 9;
613         RK_U32 csc_wgt_g2v    : 9;
614         RK_U32 csc_wgt_r2v    : 9;
615         RK_U32 reserved            : 5;
616     } reg0277_src_udfv;
617 
618     /* 0x00000458 reg278 */
619     struct {
620         RK_U32 csc_ofst_v    : 8;
621         RK_U32 csc_ofst_u    : 8;
622         RK_U32 csc_ofst_y    : 5;
623         RK_U32 reserved           : 11;
624     } reg0278_src_udfo;
625 
626     /* 0x0000045c reg279 */
627     struct {
628         RK_U32 reserved         : 26;
629         RK_U32 src_mirr    : 1;
630         RK_U32 src_rot     : 2;
631         RK_U32 reserved1        : 3;
632     } reg0279_src_proc;
633 
634     /* 0x00000460 reg280 */
635     struct {
636         RK_U32 pic_ofst_x    : 14;
637         RK_U32 reserved           : 2;
638         RK_U32 pic_ofst_y    : 14;
639         RK_U32 reserved1          : 2;
640     } reg0280_pic_ofst;
641 
642     /* 0x00000464 reg281 */
643     struct {
644         RK_U32 src_strd0    : 17;
645         RK_U32 reserved          : 15;
646     } reg0281_src_strd0;
647 
648     /* 0x00000468 reg282 */
649     struct {
650         RK_U32 src_strd1    : 16;
651         RK_U32 reserved          : 16;
652     } reg0282_src_strd1;
653 
654     /* 0x0000046c reg283 */
655     struct {
656         RK_U32 pp_corner_filter_strength      : 2;
657         RK_U32 reserved                            : 2;
658         RK_U32 pp_edge_filter_strength        : 2;
659         RK_U32 reserved1                           : 2;
660         RK_U32 pp_internal_filter_strength    : 2;
661         RK_U32 reserved2                           : 22;
662     } reg0283_src_flt;
663 
664     /* 0x00000470 reg284 */
665     struct {
666         RK_U32 bias_y    : 15;
667         RK_U32 reserved       : 17;
668     } reg0284_y_cfg;
669 
670     /* 0x00000474 reg285 */
671     struct {
672         RK_U32 bias_u    : 15;
673         RK_U32 reserved       : 17;
674     } reg0285_u_cfg;
675 
676     /* 0x00000478 reg286 */
677     struct {
678         RK_U32 bias_v    : 15;
679         RK_U32 reserved       : 17;
680     } reg0286_v_cfg;
681 
682     /* 0x0000047c reg287 */
683     struct {
684         RK_U32 jpeg_ri              : 25;
685         RK_U32 jpeg_out_mode        : 1;
686         RK_U32 jpeg_start_rst_m     : 3;
687         RK_U32 jpeg_pic_last_ecs    : 1;
688         RK_U32 jpeg_slen_fifo       : 1;
689         RK_U32 jpeg_stnd            : 1;
690     } reg0287_base_cfg;
691 
692     /* 0x00000480 reg288 */
693     struct {
694         RK_U32 uvc_partition0_len    : 12;
695         RK_U32 uvc_partition_len     : 12;
696         RK_U32 uvc_skip_len          : 6;
697         RK_U32 reserved              : 2;
698     } reg0288_uvc_cfg;
699 } Vepu540cJpegReg;
700 
701 /* 0x00002c80 reg2848 - - 0x00002dfc reg2943*/
702 typedef struct Vepu540cJpegTab_t {
703     /* 0x00002c80 reg2848 - 0x00002cfc reg2879 */
704     RK_U16 qua_tab0[64];
705     /*  0x00002d00 reg2880 -  0x00002d7c reg2911 */
706     RK_U16 qua_tab1[64];
707     /* 0x00002d80 reg2912 - 0x00002dfc reg2943 */
708     RK_U16 qua_tab2[64];
709 } vepu540c_jpeg_tab;
710 
711 typedef struct Vepu540cRoiRegion_t {
712 
713     struct {
714         RK_U32 roi_lt_x    : 10;
715         RK_U32 reserved     : 6;
716         RK_U32 roi_lt_y    : 10;
717         RK_U32 reserved1    : 6;
718     } roi_pos_lt;
719 
720     struct {
721         RK_U32 roi_rb_x    : 10;
722         RK_U32 reserved     : 6;
723         RK_U32 roi_rb_y    : 10;
724         RK_U32 reserved1    : 6;
725     } roi_pos_rb;
726 
727     struct {
728         RK_U32 roi_qp_value       : 7;
729         RK_U32 roi_qp_adj_mode    : 1;
730         RK_U32 roi_pri            : 5;
731         RK_U32 roi_en             : 1;
732         RK_U32 reserved           : 18;
733     } roi_base;
734     struct {
735         RK_U32 roi_mdc_inter16         : 4;
736         RK_U32 roi_mdc_skip16          : 4;
737         RK_U32 roi_mdc_intra16         : 4;
738         RK_U32 roi0_mdc_inter32_hevc   : 4;
739         RK_U32 roi0_mdc_skip32_hevc    : 4;
740         RK_U32 roi0_mdc_intra32_hevc   : 4;
741         RK_U32 roi0_mdc_dpth_hevc      : 1;
742         RK_U32 reserved                : 7;
743     } roi_mdc;
744 } Vepu540cRoiRegion;
745 
746 /*
747  * Vepu540cRoiCfg
748  *
749  */
750 typedef struct Vepu540cRoiCfg_t {
751     struct {
752         RK_U32 fmdc_adju_inter16         : 4;
753         RK_U32 fmdc_adju_skip16          : 4;
754         RK_U32 fmdc_adju_intra16         : 4;
755         RK_U32 fmdc_adju_inter32         : 4;
756         RK_U32 fmdc_adju_skip32          : 4;
757         RK_U32 fmdc_adju_intra32         : 4;
758         RK_U32 fmdc_adj_pri              : 5;
759         RK_U32 reserved                  : 3;
760     } fmdc_adj0;
761 
762     /* 0x00001084 reg1057 */
763     struct {
764         RK_U32 fmdc_adju_inter8         : 4;
765         RK_U32 fmdc_adju_skip8          : 4;
766         RK_U32 fmdc_adju_intra8         : 4;
767         RK_U32 reserved                 : 20;
768     } fmdc_adj1;
769 
770     RK_U32 reserved_1058;
771 
772     /* 0x0000108c reg1059 */
773     struct {
774         RK_U32 bmap_en               : 1;
775         RK_U32 bmap_pri              : 5;
776         RK_U32 bmap_qpmin            : 6;
777         RK_U32 bmap_qpmax            : 6;
778         RK_U32 bmap_mdc_dpth         : 1;
779         RK_U32 reserved              : 13;
780     } bmap_cfg;
781 
782     Vepu540cRoiRegion regions[8];
783 } Vepu540cRoiCfg;
784 
785 /* class: st */
786 /* 0x00004000 reg4096 - 0x000042cc reg4275 */
787 typedef struct Vepu540cStatus_t {
788     /* 0x00004000 reg4096 */
789     RK_U32 bs_lgth_l32;
790 
791     /* 0x00004004 reg4097 */
792     struct {
793         RK_U32 bs_lgth_h8    : 8;
794         RK_U32 reserved      : 8;
795         RK_U32 sse_l16       : 16;
796     } st_sse_bsl;
797 
798     /* 0x00004008 reg4098 */
799     RK_U32 sse_h32;
800 
801     /* 0x0000400c reg4099 */
802     RK_U32 qp_sum;
803 
804     /* 0x00004010 reg4100 */
805     struct {
806         RK_U32 sao_cnum    : 16;
807         RK_U32 sao_ynum    : 16;
808     } st_sao;
809 
810     /* 0x00004014 reg4101 */
811     RK_U32 rdo_head_bits;
812 
813     /* 0x00004018 reg4102 */
814     struct {
815         RK_U32 rdo_head_bits_h8    : 8;
816         RK_U32 reserved            : 8;
817         RK_U32 rdo_res_bits_l16    : 16;
818     } st_head_res_bl;
819 
820     /* 0x0000401c reg4103 */
821     RK_U32 rdo_res_bits_h24;
822 
823     /* 0x00004020 reg4104 */
824     struct {
825         RK_U32 st_enc      : 2;
826         RK_U32 st_sclr     : 1;
827         RK_U32 reserved    : 29;
828     } st_enc;
829 
830     /* 0x00004024 reg4105 */
831     struct {
832         RK_U32 fnum_cfg_done    : 8;
833         RK_U32 fnum_cfg         : 8;
834         RK_U32 fnum_int         : 8;
835         RK_U32 fnum_enc_done    : 8;
836     } st_lkt;
837 
838     /* 0x00004028 reg4106 */
839     RK_U32 node_addr;
840 
841     /* 0x0000402c reg4107 */
842     struct {
843         RK_U32 bsbw_ovfl    : 1;
844         RK_U32 reserved     : 2;
845         RK_U32 bsbw_addr    : 28;
846         RK_U32 reserved1    : 1;
847     } st_bsb;
848 
849     /* 0x00004030 reg4108 */
850     struct {
851         RK_U32 axib_idl     : 8;
852         RK_U32 axib_ovfl    : 8;
853         RK_U32 axib_err     : 8;
854         RK_U32 axir_err     : 7;
855         RK_U32 reserved     : 1;
856     } st_bus;
857 
858     /* 0x00004034 reg4109 */
859     struct {
860         RK_U32 sli_num_video     : 6;
861         RK_U32 sli_num_jpeg      : 6;
862         RK_U32 reserved          : 4;
863         RK_U32 bpkt_num_video    : 7;
864         RK_U32 bpkt_lst_video    : 1;
865         RK_U32 bpkt_num_jpeg     : 7;
866         RK_U32 bpkt_lst_jpeg     : 1;
867     } st_snum;
868 
869     /* 0x00004038 reg4110 */
870     RK_U32 sli_len;
871 
872     /* 0x403c - 0x40fc */
873     struct {
874         RK_U32 task_id_proc     : 12;
875         RK_U32 task_id_done     : 12;
876         RK_U32 task_done        : 1;
877         RK_U32 task_lkt_err     : 3;
878         RK_U32 dvbm_enc_err     : 1;
879         RK_U32 dvbm_fmch_err    : 1;
880         RK_U32 reserved         : 1;
881         RK_U32 rfpr_ovrb_err    : 1;
882     } st_link_task;
883 
884     /* 0x4040 - 0x405c */
885     RK_U32 reserved4111_4119[8];
886 
887     RK_U32 sli_len_jpeg;
888 
889     /* 0x00004064 reg4121 */
890     RK_U32 jpeg_head_bits_l32;
891 
892     /* 0x00004068 reg4122 */
893     struct {
894         RK_U32 jpeg_head_bits_h8    : 1;
895         RK_U32 reserved             : 31;
896     } st_bsl_h8_jpeg;
897 
898     /* 0x0000406c reg4123 */
899     struct {
900         RK_U32 jbsbw_ovfl    : 1;
901         RK_U32 reserved      : 2;
902         RK_U32 jbsbw_addr    : 28;
903         RK_U32 reserved1     : 1;
904     } st_jbsb;
905 
906     /* 0x4070 - 0x407c */
907     RK_U32 reserved4124_4127[4];
908 
909     /* 0x00004080 reg4128 */
910     struct {
911         RK_U32 pnum_p64    : 17;
912         RK_U32 reserved    : 15;
913     } st_pnum_p64;
914 
915     /* 0x00004084 reg4129 */
916     struct {
917         RK_U32 pnum_p32    : 19;
918         RK_U32 reserved    : 13;
919     } st_pnum_p32;
920 
921     /* 0x00004088 reg4130 */
922     struct {
923         RK_U32 pnum_p16    : 21;
924         RK_U32 reserved    : 11;
925     } st_pnum_p16;
926 
927     /* 0x0000408c reg4131 */
928     struct {
929         RK_U32 pnum_p8     : 23;
930         RK_U32 reserved    : 9;
931     } st_pnum_p8;
932 
933     /* 0x00004090 reg4132 */
934     struct {
935         RK_U32 pnum_i32    : 19;
936         RK_U32 reserved    : 13;
937     } st_pnum_i32;
938 
939     /* 0x00004094 reg4133 */
940     struct {
941         RK_U32 pnum_i16    : 21;
942         RK_U32 reserved    : 11;
943     } st_pnum_i16;
944 
945     /* 0x00004098 reg4134 */
946     struct {
947         RK_U32 pnum_i8     : 23;
948         RK_U32 reserved    : 9;
949     } st_pnum_i8;
950 
951     /* 0x0000409c reg4135 */
952     struct {
953         RK_U32 pnum_i4     : 23;
954         RK_U32 reserved    : 9;
955     } st_pnum_i4;
956 
957     /* 0x000040a0 reg4136 */
958     struct {
959         RK_U32 num_b16     : 23;
960         RK_U32 reserved    : 9;
961     } st_bnum_b16;
962 
963     /* 0x000040a4 reg4137 */
964     struct {
965         RK_U32 rdo_smear_cnt0    : 8;
966         RK_U32 rdo_smear_cnt1    : 8;
967         RK_U32 rdo_smear_cnt2    : 8;
968         RK_U32 rdo_smear_cnt3    : 8;
969     } st_smear_cnt;
970 
971     /* 0x000040a8 reg4138 */
972     RK_U32 madi_sum;
973 
974     /* 0x40ac - 0x40bc */
975     RK_U32 reserved4139_4143[5];
976 
977     /* 0x000040c0 reg4144 */
978     struct {
979         RK_U32 madi_th_lt_cnt0    : 16;
980         RK_U32 madi_th_lt_cnt1    : 16;
981     } st_madi_lt_num0;
982 
983     /* 0x000040c4 reg4145 */
984     struct {
985         RK_U32 madi_th_lt_cnt2    : 16;
986         RK_U32 madi_th_lt_cnt3    : 16;
987     } st_madi_lt_num1;
988 
989     /* 0x000040c8 reg4146 */
990     struct {
991         RK_U32 madi_th_rt_cnt0    : 16;
992         RK_U32 madi_th_rt_cnt1    : 16;
993     } st_madi_rt_num0;
994 
995     /* 0x000040cc reg4147 */
996     struct {
997         RK_U32 madi_th_rt_cnt2    : 16;
998         RK_U32 madi_th_rt_cnt3    : 16;
999     } st_madi_rt_num1;
1000 
1001     /* 0x000040d0 reg4148 */
1002     struct {
1003         RK_U32 madi_th_lb_cnt0    : 16;
1004         RK_U32 madi_th_lb_cnt1    : 16;
1005     } st_madi_lb_num0;
1006 
1007     /* 0x000040d4 reg4149 */
1008     struct {
1009         RK_U32 madi_th_lb_cnt2    : 16;
1010         RK_U32 madi_th_lb_cnt3    : 16;
1011     } st_madi_lb_num1;
1012 
1013     /* 0x000040d8 reg4150 */
1014     struct {
1015         RK_U32 madi_th_rb_cnt0    : 16;
1016         RK_U32 madi_th_rb_cnt1    : 16;
1017     } st_madi_rb_num0;
1018 
1019     /* 0x000040dc reg4151 */
1020     struct {
1021         RK_U32 madi_th_rb_cnt2    : 16;
1022         RK_U32 madi_th_rb_cnt3    : 16;
1023     } st_madi_rb_num1;
1024 
1025     /* 0x000040e0 reg4152 */
1026     struct {
1027         RK_U32 madp_th_lt_cnt0    : 16;
1028         RK_U32 madp_th_lt_cnt1    : 16;
1029     } st_madp_lt_num0;
1030 
1031     /* 0x000040e4 reg4153 */
1032     struct {
1033         RK_U32 madp_th_lt_cnt2    : 16;
1034         RK_U32 madp_th_lt_cnt3    : 16;
1035     } st_madp_lt_num1;
1036 
1037     /* 0x000040e8 reg4154 */
1038     struct {
1039         RK_U32 madp_th_rt_cnt0    : 16;
1040         RK_U32 madp_th_rt_cnt1    : 16;
1041     } st_madp_rt_num0;
1042 
1043     /* 0x000040ec reg4155 */
1044     struct {
1045         RK_U32 madp_th_rt_cnt2    : 16;
1046         RK_U32 madp_th_rt_cnt3    : 16;
1047     } st_madp_rt_num1;
1048 
1049     /* 0x000040f0 reg4156 */
1050     struct {
1051         RK_U32 madp_th_lb_cnt0    : 16;
1052         RK_U32 madp_th_lb_cnt1    : 16;
1053     } st_madp_lb_num0;
1054 
1055     /* 0x000040f4 reg4157 */
1056     struct {
1057         RK_U32 madp_th_lb_cnt2    : 16;
1058         RK_U32 madp_th_lb_cnt3    : 16;
1059     } st_madp_lb_num1;
1060 
1061     /* 0x000040f8 reg4158 */
1062     struct {
1063         RK_U32 madp_th_rb_cnt0    : 16;
1064         RK_U32 madp_th_rb_cnt1    : 16;
1065     } st_madp_rb_num0;
1066 
1067     /* 0x000040fc reg4159 */
1068     struct {
1069         RK_U32 madp_th_rb_cnt2    : 16;
1070         RK_U32 madp_th_rb_cnt3    : 16;
1071     } st_madp_rb_num1;
1072 
1073     /* 0x00004100 reg4160 */
1074     struct {
1075         RK_U32 cmv_th_lt_cnt0    : 16;
1076         RK_U32 cmv_th_lt_cnt1    : 16;
1077     } st_cmv_lt_num0;
1078 
1079     /* 0x00004104 reg4161 */
1080     struct {
1081         RK_U32 cmv_th_lt_cnt2    : 16;
1082         RK_U32 cmv_th_lt_cnt3    : 16;
1083     } st_cmv_lt_num1;
1084 
1085     /* 0x00004108 reg4162 */
1086     struct {
1087         RK_U32 cmv_th_rt_cnt0    : 16;
1088         RK_U32 cmv_th_rt_cnt1    : 16;
1089     } st_cmv_rt_num0;
1090 
1091     /* 0x0000410c reg4163 */
1092     struct {
1093         RK_U32 cmv_th_rt_cnt2    : 16;
1094         RK_U32 cmv_th_rt_cnt3    : 16;
1095     } st_cmv_rt_num1;
1096 
1097     /* 0x00004110 reg4164 */
1098     struct {
1099         RK_U32 cmv_th_lb_cnt0    : 16;
1100         RK_U32 cmv_th_lb_cnt1    : 16;
1101     } st_cmv_lb_num0;
1102 
1103     /* 0x00004114 reg4165 */
1104     struct {
1105         RK_U32 cmv_th_lb_cnt2    : 16;
1106         RK_U32 cmv_th_lb_cnt3    : 16;
1107     } st_cmv_lb_num1;
1108 
1109     /* 0x00004118 reg4166 */
1110     struct {
1111         RK_U32 cmv_th_rb_cnt0    : 16;
1112         RK_U32 cmv_th_rb_cnt1    : 16;
1113     } st_cmv_rb_num0;
1114 
1115     /* 0x0000411c reg4167 */
1116     struct {
1117         RK_U32 cmv_th_rb_cnt2    : 16;
1118         RK_U32 cmv_th_rb_cnt3    : 16;
1119     } st_cmv_rb_num1;
1120 
1121     /* 0x00004120 reg4168 */
1122     struct {
1123         RK_U32 org_y_r_max_value    : 8;
1124         RK_U32 org_y_r_min_value    : 8;
1125         RK_U32 org_u_g_max_value    : 8;
1126         RK_U32 org_u_g_min_value    : 8;
1127     } st_vsp_org_value0;
1128 
1129     /* 0x00004124 reg4169 */
1130     struct {
1131         RK_U32 org_v_b_max_value    : 8;
1132         RK_U32 org_v_b_min_value    : 8;
1133         RK_U32 reserved             : 16;
1134     } st_vsp_org_value1;
1135 
1136     /* 0x00004128 reg4170 */
1137     struct {
1138         RK_U32 jpeg_y_r_max_value    : 8;
1139         RK_U32 jpeg_y_r_min_value    : 8;
1140         RK_U32 jpeg_u_g_max_value    : 8;
1141         RK_U32 jpeg_u_g_min_value    : 8;
1142     } st_vsp_jpeg_value0;
1143 
1144     /* 0x0000412c reg4171 */
1145     struct {
1146         RK_U32 jpeg_v_b_max_value    : 8;
1147         RK_U32 jpeg_v_b_min_value    : 8;
1148         RK_U32 reserved              : 16;
1149     } st_vsp_jpeg_value1;
1150 
1151     /* 0x4130 - 0x417c */
1152     RK_U32 reserved4172_4191[20];
1153 
1154     /* 0x00004180 reg4192 - 0x0000424c reg4243*/
1155     RK_U32 st_b8_qp[52];
1156 
1157 } vepu540c_status;
1158 
1159 /* class: dbg/st/axipn */
1160 /* 0x00005000 reg5120 - 0x00005354 reg5333*/
1161 typedef struct Vepu540cDbg_t {
1162     struct {
1163         RK_U32 pp0_tout     : 1;
1164         RK_U32 pp1_out      : 1;
1165         RK_U32 cme_tout     : 1;
1166         RK_U32 swn_tout     : 1;
1167         RK_U32 rfme_tout    : 1;
1168         RK_U32 pren_tout    : 1;
1169         RK_U32 rdo_tout     : 1;
1170         RK_U32 lpf_tout     : 1;
1171         RK_U32 etpy_tout    : 1;
1172         RK_U32 jpeg_tout    : 1;
1173         RK_U32 frm_tout     : 1;
1174         RK_U32 reserved     : 21;
1175     } st_wdg;
1176 
1177     /* 0x00005004 reg5121 */
1178     struct {
1179         RK_U32 pp0_wrk     : 1;
1180         RK_U32 pp1_wrk     : 1;
1181         RK_U32 cme_wrk     : 1;
1182         RK_U32 swn_wrk     : 1;
1183         RK_U32 rfme_wrk    : 1;
1184         RK_U32 pren_wrk    : 1;
1185         RK_U32 rdo_wrk     : 1;
1186         RK_U32 lpf_wrk     : 1;
1187         RK_U32 etpy_wrk    : 1;
1188         RK_U32 jpeg_wrk    : 1;
1189         RK_U32 frm_wrk     : 1;
1190         RK_U32 reserved    : 21;
1191     } st_ppl;
1192 
1193     /* 0x00005008 reg5122 */
1194     struct {
1195         RK_U32 vsp0_pos_x    : 16;
1196         RK_U32 vsp0_pos_y    : 16;
1197     } st_ppl_pos_vsp0;
1198 
1199     /* 0x0000500c reg5123 */
1200     struct {
1201         RK_U32 vsp1_pos_x    : 16;
1202         RK_U32 vsp1_pos_y    : 16;
1203     } st_ppl_pos_vsp1;
1204 
1205     /* 0x00005010 reg5124 */
1206     struct {
1207         RK_U32 cme_pos_x    : 16;
1208         RK_U32 cme_pos_y    : 16;
1209     } st_ppl_pos_cme;
1210 
1211     /* 0x00005014 reg5125 */
1212     struct {
1213         RK_U32 swin_pos_x    : 16;
1214         RK_U32 swin_pos_y    : 16;
1215     } st_ppl_pos_swin;
1216 
1217     /* 0x00005018 reg5126 */
1218     struct {
1219         RK_U32 rfme_pos_x    : 16;
1220         RK_U32 rfme_pos_y    : 16;
1221     } st_ppl_pos_rfme;
1222 
1223     /* 0x0000501c reg5127 */
1224     struct {
1225         RK_U32 pren_pos_x    : 16;
1226         RK_U32 pren_pos_y    : 16;
1227     } st_ppl_pos_pren;
1228 
1229     /* 0x00005020 reg5128 */
1230     struct {
1231         RK_U32 rdo_pos_x    : 16;
1232         RK_U32 rdo_pos_y    : 16;
1233     } st_ppl_pos_rdo;
1234 
1235     /* 0x00005024 reg5129 */
1236     struct {
1237         RK_U32 lpf_pos_x    : 16;
1238         RK_U32 lpf_pos_y    : 16;
1239     } st_ppl_pos_lpf;
1240 
1241     /* 0x00005028 reg5130 */
1242     struct {
1243         RK_U32 etpy_pos_x    : 16;
1244         RK_U32 etpy_pos_y    : 16;
1245     } st_ppl_pos_etpy;
1246 
1247     /* 0x0000502c reg5131 */
1248     struct {
1249         RK_U32 vsp0_pos_x    : 16;
1250         RK_U32 vsp0_pos_y    : 16;
1251     } st_ppl_pos_jsp0;
1252 
1253     /* 0x00005030 reg5132 */
1254     struct {
1255         RK_U32 vsp1_pos_x    : 16;
1256         RK_U32 vsp1_pos_y    : 16;
1257     } st_ppl_pos_jsp1;
1258 
1259     /* 0x00005034 reg5133 */
1260     struct {
1261         RK_U32 jpeg_pos_x    : 16;
1262         RK_U32 jpeg_pos_y    : 16;
1263     } st_ppl_pos_jpeg;
1264 
1265     /* 0x5038 - 0x503c */
1266     RK_U32 reserved5134_5135[2];
1267 
1268     /* 0x00005040 reg5136 */
1269     struct {
1270         RK_U32 sli_num     : 15;
1271         RK_U32 reserved    : 17;
1272     } st_sli_num;
1273 
1274     /* 0x5044 - 0x50fc */
1275     RK_U32 reserved5137_5183[47];
1276 
1277     /* 0x00005100 reg5184 */
1278     struct {
1279         RK_U32 empty_oafifo        : 1;
1280         RK_U32 full_cmd_oafifo     : 1;
1281         RK_U32 full_data_oafifo    : 1;
1282         RK_U32 empty_iafifo        : 1;
1283 
1284         RK_U32 full_cmd_iafifo     : 1;
1285         RK_U32 full_info_iafifo    : 1;
1286         RK_U32 fbd_brq_st          : 4;
1287         RK_U32 fbd_hdr_vld         : 1;
1288         RK_U32 fbd_bmng_end        : 1;
1289 
1290         RK_U32 nfbd_req_st         : 4;
1291         RK_U32 acc_axi_cmd         : 8;
1292         RK_U32 reserved            : 8;
1293     } dbg_pp_st;
1294 
1295     /* 0x00005104 reg5185 */
1296     struct {
1297         RK_U32 r_ena_lambd        : 1;
1298         RK_U32 r_fst_swinw_end    : 1;
1299         RK_U32 r_swinw_end        : 1;
1300         RK_U32 r_cnt_swinw        : 1;
1301 
1302         RK_U32 r_dspw_end         : 1;
1303         RK_U32 r_dspw_cnt         : 1;
1304         RK_U32 i_sjgen_work       : 1;
1305         RK_U32 r_end_rspgen       : 1;
1306 
1307         RK_U32 r_cost_gate        : 1;
1308         RK_U32 r_ds_gate          : 1;
1309         RK_U32 r_mvp_gate         : 1;
1310         RK_U32 i_smvp_arrdy       : 1;
1311 
1312         RK_U32 i_smvp_arvld       : 1;
1313         RK_U32 i_stptr_wrdy       : 1;
1314         RK_U32 i_stptr_wvld       : 1;
1315         RK_U32 i_rdy_atf          : 1;
1316 
1317         RK_U32 i_vld_atf          : 1;
1318         RK_U32 i_rdy_bmv16        : 1;
1319         RK_U32 i_vld_bmv16        : 1;
1320         RK_U32 i_wr_dsp           : 1;
1321 
1322         RK_U32 i_rdy_dsp          : 1;
1323         RK_U32 i_vld_dsp          : 1;
1324         RK_U32 r_rdy_org          : 1;
1325         RK_U32 i_vld_org          : 1;
1326 
1327         RK_U32 i_rdy_state        : 1;
1328         RK_U32 i_vld_state        : 1;
1329         RK_U32 i_rdy_madp         : 1;
1330         RK_U32 i_vld_madp         : 1;
1331 
1332         RK_U32 i_rdy_diff         : 1;
1333         RK_U32 i_vld_diff         : 1;
1334         RK_U32 reserved           : 2;
1335     } dbg_cime_st;
1336 
1337     /* 0x00005108 reg5186 */
1338     RK_U32 swin_dbg_inf;
1339 
1340     /* 0x0000510c reg5187 */
1341     struct {
1342         RK_U32 bbrq_cmps_left_len2    : 1;
1343         RK_U32 bbrq_cmps_left_len1    : 1;
1344         RK_U32 cmps_left_len0         : 1;
1345         RK_U32 bbrq_rdy2              : 1;
1346         RK_U32 dcps_vld2              : 1;
1347         RK_U32 bbrq_rdy1              : 1;
1348         RK_U32 dcps_vld1              : 1;
1349         RK_U32 bbrq_rdy0              : 1;
1350         RK_U32 dcps_vld0              : 1;
1351         RK_U32 hb_rdy2                : 1;
1352         RK_U32 bbrq_vld2              : 1;
1353         RK_U32 hb_rdy1                : 1;
1354         RK_U32 bbrq_vld1              : 1;
1355         RK_U32 hb_rdy0                : 1;
1356         RK_U32 bbrq_vld0              : 1;
1357         RK_U32 idle_msb2              : 1;
1358         RK_U32 idle_msb1              : 1;
1359         RK_U32 idle_msb0              : 1;
1360         RK_U32 cur_state_dcps         : 1;
1361         RK_U32 cur_state_bbrq         : 1;
1362         RK_U32 cur_state_hb           : 1;
1363         RK_U32 cke_bbrq_dcps          : 1;
1364         RK_U32 cke_dcps               : 1;
1365         RK_U32 cke_bbrq               : 1;
1366         RK_U32 rdy_lwcd_rsp           : 1;
1367         RK_U32 vld_lwcd_rsp           : 1;
1368         RK_U32 rdy_lwcd_req           : 1;
1369         RK_U32 vld_lwcd_req           : 1;
1370         RK_U32 rdy_lwrsp              : 1;
1371         RK_U32 vld_lwrsp              : 1;
1372         RK_U32 rdy_lwreq              : 1;
1373         RK_U32 vld_lwreq              : 1;
1374     } dbg_fbd_hhit0;
1375 
1376     /* 0x5110 */
1377     RK_U32 reserved_5188;
1378 
1379     /* 0x00005114 reg5189 */
1380     struct {
1381         RK_U32 mscnt_clr    : 1;
1382         RK_U32 reserved     : 31;
1383     } dbg_cach_clr;
1384 
1385     /* 0x00005118 reg5190 */
1386     RK_U32 l1_mis;
1387 
1388     /* 0x0000511c reg5191 */
1389     RK_U32 l2_mis;
1390 
1391     /* 0x00005120 reg5192 */
1392     RK_U32 rdo_st;
1393 
1394     /* 0x00005124 reg5193 */
1395     RK_U32 rdo_if;
1396 
1397     /* 0x00005128 reg5194 */
1398     struct {
1399         RK_U32 h264_sh_st_cs    : 4;
1400         RK_U32 rsd_st_cs        : 4;
1401         RK_U32 h264_sd_st_cs    : 5;
1402         RK_U32 etpy_rdy         : 1;
1403         RK_U32 reserved         : 18;
1404     } dbg_etpy;
1405 
1406     /* 0x0000512c reg5195 */
1407     struct {
1408         RK_U32 crdy_ppr    : 1;
1409         RK_U32 cvld_ppr    : 1;
1410         RK_U32 drdy_ppw    : 1;
1411         RK_U32 dvld_ppw    : 1;
1412         RK_U32 crdy_ppw    : 1;
1413         RK_U32 cvld_ppw    : 1;
1414         RK_U32 reserved    : 26;
1415     } dbg_dma_pp;
1416 
1417     /* 0x00005130 reg5196 */
1418     struct {
1419         RK_U32 axi_wrdy     : 8;
1420         RK_U32 axi_wvld     : 8;
1421         RK_U32 axi_awrdy    : 8;
1422         RK_U32 axi_awvld    : 8;
1423     } dbg_dma_w;
1424 
1425     /* 0x00005134 reg5197 */
1426     struct {
1427         RK_U32 axi_otsd_read    : 16;
1428         RK_U32 axi_arrdy        : 7;
1429         RK_U32 reserved         : 1;
1430         RK_U32 axi_arvld        : 7;
1431         RK_U32 reserved1        : 1;
1432     } dbg_dma_ar;
1433 
1434     /* 0x00005138 reg5198 */
1435     struct {
1436         RK_U32 dfifo0_lvl    : 4;
1437         RK_U32 dfifo1_lvl    : 4;
1438         RK_U32 dfifo2_lvl    : 4;
1439         RK_U32 dfifo3_lvl    : 4;
1440         RK_U32 dfifo4_lvl    : 4;
1441         RK_U32 dfifo5_lvl    : 4;
1442         RK_U32 reserved      : 6;
1443         RK_U32 cmd_vld       : 1;
1444         RK_U32 reserved1     : 1;
1445     } dbg_dma_r;
1446 
1447     /* 0x0000513c reg5199 */
1448     struct {
1449         RK_U32 meiw_busy    : 1;
1450         RK_U32 dspw_busy    : 1;
1451         RK_U32 bsw_rdy      : 1;
1452         RK_U32 bsw_flsh     : 1;
1453         RK_U32 bsw_busy     : 1;
1454         RK_U32 crpw_busy    : 1;
1455         RK_U32 lktw_busy    : 1;
1456         RK_U32 lpfw_busy    : 1;
1457         RK_U32 roir_busy    : 1;
1458         RK_U32 dspr_crdy    : 1;
1459         RK_U32 dspr_cvld    : 1;
1460         RK_U32 lktr_busy    : 1;
1461         RK_U32 lpfr_otsd    : 4;
1462         RK_U32 rfpr_otsd    : 12;
1463         RK_U32 dspr_otsd    : 4;
1464     } dbg_dma_dbg0;
1465 
1466     /* 0x00005140 reg5200 */
1467     struct {
1468         RK_U32 cpip_st     : 2;
1469         RK_U32 mvp_st      : 3;
1470         RK_U32 qpd6_st     : 2;
1471         RK_U32 cmd_st      : 2;
1472         RK_U32 reserved    : 23;
1473     } dbg_dma_dbg1;
1474 
1475     /* 0x00005144 reg5201 */
1476     struct {
1477         RK_U32 cme_byps    : 3;
1478         RK_U32 reserved    : 29;
1479     } dbg_tctrl;
1480 
1481     /* 0x5148 */
1482     RK_U32 reserved_5202;
1483 
1484     /* 0x0000514c reg5203 */
1485     struct {
1486         RK_U32 lpf_work               : 1;
1487         RK_U32 rdo_par_nrdy           : 1;
1488         RK_U32 rdo_rcn_nrdy           : 1;
1489         RK_U32 lpf_rcn_rdy            : 1;
1490         RK_U32 dblk_work              : 1;
1491         RK_U32 sao_work               : 1;
1492         RK_U32 reserved               : 18;
1493         RK_U32 tile_bdry_read         : 1;
1494         RK_U32 tile_bdry_write        : 1;
1495         RK_U32 tile_bdry_rrdy         : 1;
1496         RK_U32 rdo_read_tile_bdry     : 1;
1497         RK_U32 rdo_write_tile_bdry    : 1;
1498         RK_U32 reserved1              : 3;
1499     } dbg_lpf;
1500 
1501     /* 0x00005150 reg5204 */
1502     RK_U32 dbg_topc_lpfr;
1503 
1504     /* 0x00005154 reg5205 */
1505     RK_U32 dbg0_cache;
1506 
1507     /* 0x00005158 reg5206 */
1508     RK_U32 dbg1_cache;
1509 
1510     /* 0x0000515c reg5207 */
1511     RK_U32 dbg2_cache;
1512 
1513     /* 0x00005160 reg5208 */
1514     struct {
1515         RK_U32 ebuf_diff_cmd    : 8;
1516         RK_U32 lbuf_lpf_ncnt    : 7;
1517         RK_U32 lbuf_lpf_cien    : 1;
1518         RK_U32 lbuf_rdo_ncnt    : 7;
1519         RK_U32 lbuf_rdo_cien    : 1;
1520         RK_U32 reserved         : 8;
1521     } dbg_lbuf0;
1522 
1523     /* 0x00005164 reg5209 */
1524     struct {
1525         RK_U32 rvld_ebfr          : 1;
1526         RK_U32 rrdy_ebfr          : 1;
1527         RK_U32 arvld_ebfr         : 1;
1528         RK_U32 arrdy_ebfr         : 1;
1529         RK_U32 wvld_ebfw          : 1;
1530         RK_U32 wrdy_ebfw          : 1;
1531         RK_U32 awvld_ebfw         : 1;
1532         RK_U32 awrdy_ebfw         : 1;
1533         RK_U32 lpf_lbuf_rvld      : 1;
1534         RK_U32 lpf_lbuf_rrdy      : 1;
1535         RK_U32 lpf_lbuf_wvld      : 1;
1536         RK_U32 lpf_lbuf_wrdy      : 1;
1537         RK_U32 rdo_lbuf_rvld      : 1;
1538         RK_U32 rdo_lbuf_rrdy      : 1;
1539         RK_U32 rdo_lbuf_wvld      : 1;
1540         RK_U32 rdo_lbuf_wrdy      : 1;
1541         RK_U32 fme_lbuf_rvld      : 1;
1542         RK_U32 fme_lbuf_rrdy      : 1;
1543         RK_U32 cme_lbuf_rvld      : 1;
1544         RK_U32 cme_lbuf_rrdy      : 1;
1545         RK_U32 smear_lbuf_rvld    : 1;
1546         RK_U32 smear_lbuf_rrdy    : 1;
1547         RK_U32 smear_lbuf_wvld    : 1;
1548         RK_U32 smear_lbuf_wrdy    : 1;
1549         RK_U32 rdo_lbufw_flag     : 1;
1550         RK_U32 rdo_lbufr_flag     : 1;
1551         RK_U32 cme_lbufr_flag     : 1;
1552         RK_U32 reserved           : 5;
1553     } dbg_lbuf1;
1554 
1555     /* 0x00005168 reg5210 */
1556     struct {
1557         RK_U32 vinf_lcnt_dvbm    : 14;
1558         RK_U32 vinf_fcnt_dvbm    : 8;
1559         RK_U32 vinf_rdy_dvbm     : 1;
1560         RK_U32 vinf_vld_dvbm     : 1;
1561         RK_U32 st_cur_vinf       : 3;
1562         RK_U32 st_cur_vrsp       : 2;
1563         RK_U32 vcnt_req_sync     : 1;
1564         RK_U32 vcnt_ack_dvbm     : 1;
1565         RK_U32 vcnt_req_dvbm     : 1;
1566     } dbg_dvbm0;
1567 
1568     /* 0x0000516c reg5211 */
1569     struct {
1570         RK_U32 vrsp_lcnt_dvbm    : 14;
1571         RK_U32 vrsp_fcnt_dvbm    : 8;
1572         RK_U32 vrsp_tgl_dvbm     : 1;
1573         RK_U32 reserved          : 9;
1574     } dbg_dvbm1;
1575 
1576     /* 0x00005170 reg5212 */
1577     struct {
1578         RK_U32 dvbm_src_lcnt     : 12;
1579         RK_U32 jbuf_dvbm_rdy     : 1;
1580         RK_U32 vbuf_dvbm_rdy     : 1;
1581         RK_U32 work_dvbm_rdy     : 1;
1582         RK_U32 fmch_dvbm_rdy     : 1;
1583         RK_U32 vrsp_lcnt_vsld    : 14;
1584         RK_U32 vrsp_rdy_vsld     : 1;
1585         RK_U32 vrsp_vld_vsld     : 1;
1586     } dbg_dvbm2;
1587 
1588     /* 0x00005174 reg5213 */
1589     struct {
1590         RK_U32 vsp_ctu_flag     : 4;
1591         RK_U32 reserved         : 4;
1592         RK_U32 cime_ctu_flag    : 8;
1593         RK_U32 swin_ctu_flag    : 2;
1594         RK_U32 rfme_ctu_flag    : 6;
1595         RK_U32 pnra_ctu_flag    : 1;
1596         RK_U32 rdo_ctu_flg0     : 7;
1597     } dbg_tctrl0;
1598 
1599     /* 0x00005178 reg5214 */
1600     struct {
1601         RK_U32 rdo_ctu_flg1     : 8;
1602         RK_U32 jpeg_ctu_flag    : 3;
1603         RK_U32 lpf_ctu_flag     : 1;
1604         RK_U32 reserved         : 4;
1605         RK_U32 dma_brsp_idle    : 1;
1606         RK_U32 jpeg_frm_done    : 1;
1607         RK_U32 rdo_frm_done     : 1;
1608         RK_U32 lpf_frm_done     : 1;
1609         RK_U32 ent_frm_done     : 1;
1610         RK_U32 ppl_ctrl_done    : 1;
1611         RK_U32 reserved1        : 10;
1612     } dbg_tctrl1;
1613 
1614     /* 0x0000517c reg5215 */
1615     struct {
1616         RK_U32 criw_frm_done     : 1;
1617         RK_U32 meiw_frm_done     : 1;
1618         RK_U32 smiw_frm_done     : 1;
1619         RK_U32 strg_rsrc_done    : 1;
1620         RK_U32 reserved          : 28;
1621     } dbg_tctrl2;
1622 
1623     /* 0x5180 - 0x51fc */
1624     RK_U32 reserved5216_5247[32];
1625 
1626     /* 0x00005200 reg5248 */
1627     RK_U32 frame_cyc;
1628 
1629     /* 0x00005204 reg5249 */
1630     RK_U32 pp0_fcyc;
1631 
1632     /* 0x00005208 reg5250 */
1633     RK_U32 pp1_fcyc;
1634 
1635     /* 0x0000520c reg5251 */
1636     RK_U32 cme_fcyc;
1637 
1638     /* 0x00005210 reg5252 */
1639     RK_U32 ldr_fcyc;
1640 
1641     /* 0x00005214 reg5253 */
1642     RK_U32 rfme_fcyc;
1643 
1644     /* 0x00005218 reg5254 */
1645     RK_U32 fme_fcyc;
1646 
1647     /* 0x0000521c reg5255 */
1648     RK_U32 rdo_fcyc;
1649 
1650     /* 0x00005220 reg5256 */
1651     RK_U32 lpf_fcyc;
1652 
1653     /* 0x00005224 reg5257 */
1654     RK_U32 etpy_fcyc;
1655 
1656     /* 0x00005228 reg5258 */
1657     RK_U32 jpeg_fcyc;
1658 
1659     /* 0x522c - 0x52fc */
1660     RK_U32 reserved5259_5311[53];
1661 
1662     /* 0x00005300 reg5312 */
1663     struct {
1664         RK_U32 axip_e      : 1;
1665         RK_U32 axip_clr    : 1;
1666         RK_U32 axip_mod    : 1;
1667         RK_U32 reserved    : 29;
1668     } axip0_cmd;
1669 
1670     /* 0x00005304 reg5313 */
1671     struct {
1672         RK_U32 axip_ltcy_id     : 4;
1673         RK_U32 axip_ltcy_thd    : 12;
1674         RK_U32 reserved         : 16;
1675     } axip0_ltcy;
1676 
1677     /* 0x00005308 reg5314 */
1678     struct {
1679         RK_U32 axip_cnt_typ    : 1;
1680         RK_U32 axip_cnt_ddr    : 2;
1681         RK_U32 axip_cnt_rid    : 5;
1682         RK_U32 axip_cnt_wid    : 5;
1683         RK_U32 reserved        : 19;
1684     } axip0_cnt;
1685 
1686     /* 0x530c */
1687     RK_U32 reserved_5315;
1688 
1689     /* 0x00005310 reg5316 */
1690     struct {
1691         RK_U32 axip_e      : 1;
1692         RK_U32 axip_clr    : 1;
1693         RK_U32 axip_mod    : 1;
1694         RK_U32 reserved    : 29;
1695     } axip1_cmd;
1696 
1697     /* 0x00005314 reg5317 */
1698     struct {
1699         RK_U32 axip_ltcy_id     : 4;
1700         RK_U32 axip_ltcy_thd    : 12;
1701         RK_U32 reserved         : 16;
1702     } axip1_ltcy;
1703 
1704     /* 0x00005318 reg5318 */
1705     struct {
1706         RK_U32 axip_cnt_typ    : 1;
1707         RK_U32 axip_cnt_ddr    : 2;
1708         RK_U32 axip_cnt_rid    : 5;
1709         RK_U32 axip_cnt_wid    : 5;
1710         RK_U32 reserved        : 19;
1711     } axip1_cnt;
1712 
1713     /* 0x531c */
1714     RK_U32 reserved_5319;
1715 
1716     /* 0x00005320 reg5320 */
1717     struct {
1718         RK_U32 axip_max_ltcy    : 16;
1719         RK_U32 reserved         : 16;
1720     } st_axip0_maxl;
1721 
1722     /* 0x00005324 reg5321 */
1723     RK_U32 axip_num_ltcy;
1724 
1725     /* 0x00005328 reg5322 */
1726     RK_U32 axip_sum_ltcy;
1727 
1728     /* 0x0000532c reg5323 */
1729     RK_U32 axip_rbyt;
1730 
1731     /* 0x00005330 reg5324 */
1732     RK_U32 axip_wbyt;
1733 
1734     /* 0x00005334 reg5325 */
1735     RK_U32 axip_wrk_cyc;
1736 
1737     /* 0x5338 - 0x533c */
1738     RK_U32 reserved5326_5327[2];
1739 
1740     /* 0x00005340 reg5328 */
1741     struct {
1742         RK_U32 axip_max_ltcy    : 16;
1743         RK_U32 reserved         : 16;
1744     } st_axip1_maxl;
1745 
1746     /* 0x00005344 reg5329 */
1747     RK_U32 axip1_num_ltcy;
1748 
1749     /* 0x00005348 reg5330 */
1750     RK_U32 axip1_sum_ltcy;
1751 
1752     /* 0x0000534c reg5331 */
1753     RK_U32 axip1_rbyt;
1754 
1755     /* 0x00005350 reg5332 */
1756     RK_U32 axip1_wbyt;
1757 
1758     /* 0x00005354 reg5333 */
1759     RK_U32 axip1_wrk_cyc;
1760 } vepu540c_dbg;
1761 
1762 typedef struct Vepu540cJpegCfg_t {
1763     MppDev dev;
1764     void *jpeg_reg_base;
1765     void *reg_tab;
1766     void *enc_task;
1767     void *input_fmt;
1768 } Vepu540cJpegCfg;
1769 
1770 #ifdef __cplusplus
1771 extern "C" {
1772 #endif
1773 
1774 MPP_RET vepu540c_set_jpeg_reg(Vepu540cJpegCfg *cfg);
1775 MPP_RET vepu540c_set_roi(void *roi_reg_base, MppEncROICfg * roi, RK_S32 w,
1776                          RK_S32 h);
1777 
1778 #ifdef __cplusplus
1779 }
1780 #endif
1781 #endif              /* __VEPU540C_COMMON_H__ */
1782