xref: /rockchip-linux_mpp/mpp/hal/rkenc/common/vepu510_common.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /* SPDX-License-Identifier: Apache-2.0 */
2 /*
3  * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
4  */
5 
6 #ifndef __VEPU510_COMMON_H__
7 #define __VEPU510_COMMON_H__
8 
9 #include "rk_venc_cmd.h"
10 
11 #define VEPU510_CTL_OFFSET           (0 * sizeof(RK_U32))       /* 0x00000000 reg0    - 0x00000120 reg72 */
12 #define VEPU510_FRAME_OFFSET         (156 * sizeof(RK_U32))     /* 0x00000270 reg156  - 0x000003f4 reg253 */
13 #define VEPU510_RC_ROI_OFFSET        (1024 * sizeof(RK_U32))    /* 0x00001000 reg1024 - 0x0000110c reg1091 */
14 #define VEPU510_PARAM_OFFSET         (1472 * sizeof(RK_U32))    /* 0x00001700 reg1472 - 0x000019cc reg1651 */
15 #define VEPU510_SQI_OFFSET           (2048 * sizeof(RK_U32))    /* 0x00002000 reg2048 - 0x0000212c reg2123 */
16 #define VEPU510_SCL_OFFSET           (2176 * sizeof(RK_U32))    /* 0x00002200 reg2176 - 0x00002584 reg2401 */
17 #define VEPU510_STATUS_OFFSET        (4096 * sizeof(RK_U32))    /* 0x00004000 reg4096 - 0x0000424c reg4243 */
18 #define VEPU510_DBG_OFFSET           (5120 * sizeof(RK_U32))    /* 0x00005000 reg5120 - 0x00005230 reg5260 */
19 #define VEPU510_REG_BASE_HW_STATUS   (0x2c)
20 #define VEPU510_MAX_ROI_NUM          8
21 #define VEPU510_SLICE_FIFO_LEN       8
22 
23 typedef struct Vepu510Online_t {
24     /* 0x00000270 reg156 */
25     struct {
26         RK_U32 reserved     : 4;
27         RK_U32 adr_vsy_t    : 28;
28     } adr_vsy_t;
29 
30     /* 0x00000274 reg157 */
31     struct {
32         RK_U32 reserved     : 4;
33         RK_U32 adr_vsc_t    : 28;
34     } adr_vsc_t;
35 
36     /* 0x00000278 reg158 */
37     struct {
38         RK_U32 reserved     : 4;
39         RK_U32 adr_vsy_b    : 28;
40     } adr_vsy_b;
41 
42     /* 0x0000027c reg159 */
43     struct {
44         RK_U32 reserved     : 4;
45         RK_U32 adr_vsc_b    : 28;
46     } adr_vsc_b;
47 } vepu510_online;
48 
49 typedef struct RdoSkipPar_t {
50     struct {
51         RK_U32 madp_thd0    : 12;
52         RK_U32 reserved     : 4;
53         RK_U32 madp_thd1    : 12;
54         RK_U32 reserved1    : 4;
55     } atf_thd0;
56 
57     /* 0x00002064 reg2073 */
58     struct {
59         RK_U32 madp_thd2    : 12;
60         RK_U32 reserved     : 4;
61         RK_U32 madp_thd3    : 12;
62         RK_U32 reserved1    : 4;
63     } atf_thd1;
64 
65     /* 0x00002068 reg2074 */
66     struct {
67         RK_U32 wgt0    : 8;
68         RK_U32 wgt1    : 8;
69         RK_U32 wgt2    : 8;
70         RK_U32 wgt3    : 8;
71     } atf_wgt0;
72 
73     /* 0x0000206c reg2075 */
74     struct {
75         RK_U32 wgt4         : 8;
76         RK_U32 reserved     : 24;
77     } atf_wgt1;
78 } rdo_skip_par;
79 
80 typedef struct RdoNoSkipPar_t {
81     /* 0x00002080 reg2080 */
82     struct {
83         RK_U32 madp_thd0    : 12;
84         RK_U32 reserved     : 4;
85         RK_U32 madp_thd1    : 12;
86         RK_U32 reserved1    : 4;
87     } ratf_thd0;
88 
89     /* 0x00002084 reg2081 */
90     struct {
91         RK_U32 madp_thd2             : 12;
92         RK_U32 reserved              : 4;
93         RK_U32 atf_bypass_pri_flag   : 1;
94         RK_U32 reserved1             : 15;
95     } ratf_thd1;
96 
97     /* 0x00002088 reg2082 */
98     struct {
99         RK_U32 wgt0    : 8;
100         RK_U32 wgt1    : 8;
101         RK_U32 wgt2    : 8;
102         RK_U32 wgt3    : 8;
103     } atf_wgt;
104 } rdo_noskip_par;
105 
106 typedef struct Vepu510RoiRegion_t {
107     struct {
108         RK_U32 roi_lt_x    : 10;
109         RK_U32 reserved     : 6;
110         RK_U32 roi_lt_y    : 10;
111         RK_U32 reserved1    : 6;
112     } roi_pos_lt;
113 
114     struct {
115         RK_U32 roi_rb_x    : 10;
116         RK_U32 reserved     : 6;
117         RK_U32 roi_rb_y    : 10;
118         RK_U32 reserved1    : 6;
119     } roi_pos_rb;
120 
121     struct {
122         RK_U32 roi_qp_value       : 7;
123         RK_U32 roi_qp_adj_mode    : 1;
124         RK_U32 roi_pri            : 5;
125         RK_U32 roi_en             : 1;
126         RK_U32 reserved           : 18;
127     } roi_base;
128 
129     struct {
130         RK_U32 roi_mdc_inter16         : 4;
131         RK_U32 roi_mdc_skip16          : 4;
132         RK_U32 roi_mdc_intra16         : 4;
133         RK_U32 roi0_mdc_inter32_hevc   : 4;
134         RK_U32 roi0_mdc_skip32_hevc    : 4;
135         RK_U32 roi0_mdc_intra32_hevc   : 4;
136         RK_U32 roi0_mdc_dpth_hevc      : 1;
137         RK_U32 reserved                : 7;
138     } roi_mdc;
139 } Vepu510RoiRegion;
140 
141 typedef struct Vepu510RoiCfg_t {
142     /* 0x00001080 reg1056 */
143     struct {
144         RK_U32 fmdc_adju_inter16         : 4;
145         RK_U32 fmdc_adju_skip16          : 4;
146         RK_U32 fmdc_adju_intra16         : 4;
147         RK_U32 fmdc_adju_inter32         : 4;
148         RK_U32 fmdc_adju_skip32          : 4;
149         RK_U32 fmdc_adju_intra32         : 4;
150         RK_U32 fmdc_adj_pri              : 5;
151         RK_U32 reserved                  : 3;
152     } fmdc_adj0;
153 
154     /* 0x00001084 reg1057 */
155     struct {
156         RK_U32 fmdc_adju_inter8         : 4;
157         RK_U32 fmdc_adju_skip8          : 4;
158         RK_U32 fmdc_adju_intra8         : 4;
159         RK_U32 reserved                 : 20;
160     } fmdc_adj1;
161 
162     RK_U32 reserved_1058;
163 
164     /* 0x0000108c reg1059 */
165     struct {
166         RK_U32 bmap_en               : 1;
167         RK_U32 bmap_pri              : 5;
168         RK_U32 bmap_qpmin            : 6;
169         RK_U32 bmap_qpmax            : 6;
170         RK_U32 bmap_mdc_dpth         : 1;
171         RK_U32 reserved              : 13;
172     } bmap_cfg;
173 
174     /* 0x00001090 reg1060 - 0x0000110c reg1091 */
175     Vepu510RoiRegion regions[8];
176 } Vepu510RoiCfg;
177 
178 /* class: control/link */
179 /* 0x00000000 reg0 - 0x00000120 reg72 */
180 typedef struct Vepu510ControlCfg_t {
181     /* 0x00000000 reg0 */
182     struct {
183         RK_U32 sub_ver      : 8;
184         RK_U32 h264_cap     : 1;
185         RK_U32 hevc_cap     : 1;
186         RK_U32 reserved     : 2;
187         RK_U32 res_cap      : 4;
188         RK_U32 osd_cap      : 2;
189         RK_U32 filtr_cap    : 2;
190         RK_U32 bfrm_cap     : 1;
191         RK_U32 fbc_cap      : 2;
192         RK_U32 reserved1    : 1;
193         RK_U32 ip_id        : 8;
194     } version;
195 
196     /* 0x00000004 - 0x0000000c */
197     RK_U32 reserved1_3[3];
198 
199     /* 0x00000010 reg4 */
200     struct {
201         RK_U32 lkt_num     : 8;
202         RK_U32 vepu_cmd    : 3;
203         RK_U32 reserved    : 21;
204     } enc_strt;
205 
206     /* 0x00000014 reg5 */
207     struct {
208         RK_U32 safe_clr     : 1;
209         RK_U32 force_clr    : 1;
210         RK_U32 reserved     : 30;
211     } enc_clr;
212 
213     /* 0x00000018 reg6 */
214     struct {
215         RK_U32 vswm_lcnt_soft    : 14;
216         RK_U32 vswm_fcnt_soft    : 8;
217         RK_U32 reserved          : 2;
218         RK_U32 dvbm_ack_soft     : 1;
219         RK_U32 dvbm_ack_sel      : 1;
220         RK_U32 dvbm_inf_sel      : 1;
221         RK_U32 reserved1         : 5;
222     } vs_ldly;
223 
224     /* 0x0000001c */
225     RK_U32 reserved_7;
226 
227     /* 0x00000020 reg8 */
228     struct {
229         RK_U32 enc_done_en          : 1;
230         RK_U32 lkt_node_done_en     : 1;
231         RK_U32 sclr_done_en         : 1;
232         RK_U32 vslc_done_en         : 1;
233         RK_U32 vbsf_oflw_en         : 1;
234         RK_U32 vbuf_lens_en         : 1;
235         RK_U32 enc_err_en           : 1;
236         RK_U32 vsrc_err_en          : 1;
237         RK_U32 wdg_en               : 1;
238         RK_U32 lkt_err_int_en       : 1;
239         RK_U32 lkt_err_stop_en      : 1;
240         RK_U32 lkt_force_stop_en    : 1;
241         RK_U32 jslc_done_en         : 1;
242         RK_U32 jbsf_oflw_en         : 1;
243         RK_U32 jbuf_lens_en         : 1;
244         RK_U32 dvbm_err_en          : 1;
245         RK_U32 reserved             : 16;
246     } int_en;
247 
248     /* 0x00000024 reg9 */
249     struct {
250         RK_U32 enc_done_msk          : 1;
251         RK_U32 lkt_node_done_msk     : 1;
252         RK_U32 sclr_done_msk         : 1;
253         RK_U32 vslc_done_msk         : 1;
254         RK_U32 vbsf_oflw_msk         : 1;
255         RK_U32 vbuf_lens_msk         : 1;
256         RK_U32 enc_err_msk           : 1;
257         RK_U32 vsrc_err_msk          : 1;
258         RK_U32 wdg_msk               : 1;
259         RK_U32 lkt_err_int_msk       : 1;
260         RK_U32 lkt_err_stop_msk      : 1;
261         RK_U32 lkt_force_stop_msk    : 1;
262         RK_U32 jslc_done_msk         : 1;
263         RK_U32 jbsf_oflw_msk         : 1;
264         RK_U32 jbuf_lens_msk         : 1;
265         RK_U32 dvbm_err_msk          : 1;
266         RK_U32 reserved              : 16;
267     } int_msk;
268 
269     /* 0x00000028 reg10 */
270     struct {
271         RK_U32 enc_done_clr          : 1;
272         RK_U32 lkt_node_done_clr     : 1;
273         RK_U32 sclr_done_clr         : 1;
274         RK_U32 vslc_done_clr         : 1;
275         RK_U32 vbsf_oflw_clr         : 1;
276         RK_U32 vbuf_lens_clr         : 1;
277         RK_U32 enc_err_clr           : 1;
278         RK_U32 vsrc_err_clr          : 1;
279         RK_U32 wdg_clr               : 1;
280         RK_U32 lkt_err_int_clr       : 1;
281         RK_U32 lkt_err_stop_clr      : 1;
282         RK_U32 lkt_force_stop_clr    : 1;
283         RK_U32 jslc_done_clr         : 1;
284         RK_U32 jbsf_oflw_clr         : 1;
285         RK_U32 jbuf_lens_clr         : 1;
286         RK_U32 dvbm_err_clr          : 1;
287         RK_U32 reserved              : 16;
288     } int_clr;
289 
290     /* 0x0000002c reg11 */
291     struct {
292         RK_U32 enc_done_sta          : 1;
293         RK_U32 lkt_node_done_sta     : 1;
294         RK_U32 sclr_done_sta         : 1;
295         RK_U32 vslc_done_sta         : 1;
296         RK_U32 vbsf_oflw_sta         : 1;
297         RK_U32 vbuf_lens_sta         : 1;
298         RK_U32 enc_err_sta           : 1;
299         RK_U32 vsrc_err_sta          : 1;
300         RK_U32 wdg_sta               : 1;
301         RK_U32 lkt_err_int_sta       : 1;
302         RK_U32 lkt_err_stop_sta      : 1;
303         RK_U32 lkt_force_stop_sta    : 1;
304         RK_U32 jslc_done_sta         : 1;
305         RK_U32 jbsf_oflw_sta         : 1;
306         RK_U32 jbuf_lens_sta         : 1;
307         RK_U32 dvbm_err_sta          : 1;
308         RK_U32 reserved              : 16;
309     } int_sta;
310 
311     /* 0x00000030 reg12 */
312     struct {
313         RK_U32 jpeg_bus_edin        : 4;
314         RK_U32 src_bus_edin         : 4;
315         RK_U32 meiw_bus_edin        : 4;
316         RK_U32 bsw_bus_edin         : 4;
317         RK_U32 reserved             : 8;
318         RK_U32 lktw_bus_edin        : 4;
319         RK_U32 rec_nfbc_bus_edin    : 4;
320     } dtrns_map;
321 
322     /* 0x00000034 reg13 */
323     struct {
324         RK_U32 reserved        : 16;
325         RK_U32 axi_brsp_cke    : 10;
326         RK_U32 reserved1       : 6;
327     } dtrns_cfg;
328 
329     /* 0x00000038 reg14 */
330     struct {
331         RK_U32 vs_load_thd    : 24;
332         RK_U32 reserved       : 8;
333     } enc_wdg;
334 
335     /* 0x0000003c - 0x0000004c */
336     RK_U32 reserved15_19[5];
337 
338     /* 0x00000050 reg20 */
339     struct {
340         RK_U32 idle_en_core    : 1;
341         RK_U32 idle_en_axi     : 1;
342         RK_U32 idle_en_ahb     : 1;
343         RK_U32 reserved        : 29;
344     } enc_idle_en;
345 
346     /* 0x00000054 reg21 */
347     struct {
348         RK_U32 cke              : 1;
349         RK_U32 resetn_hw_en     : 1;
350         RK_U32 rfpr_err_e       : 1;
351         RK_U32 sram_ckg_en      : 1;
352         RK_U32 link_err_stop    : 1;
353         RK_U32 reserved         : 27;
354     } opt_strg;
355 
356     /* 0x00000058 reg22 */
357     union {
358         struct {
359             RK_U32 tq8_ckg           : 1;
360             RK_U32 tq4_ckg           : 1;
361             RK_U32 bits_ckg_8x8      : 1;
362             RK_U32 bits_ckg_4x4_1    : 1;
363             RK_U32 bits_ckg_4x4_0    : 1;
364             RK_U32 inter_mode_ckg    : 1;
365             RK_U32 inter_ctrl_ckg    : 1;
366             RK_U32 inter_pred_ckg    : 1;
367             RK_U32 intra8_ckg        : 1;
368             RK_U32 intra4_ckg        : 1;
369             RK_U32 reserved          : 22;
370         } h264;
371         struct {
372             RK_U32 recon32_ckg       : 1;
373             RK_U32 iqit32_ckg        : 1;
374             RK_U32 q32_ckg           : 1;
375             RK_U32 t32_ckg           : 1;
376             RK_U32 cabac32_ckg       : 1;
377             RK_U32 recon16_ckg       : 1;
378             RK_U32 iqit16_ckg        : 1;
379             RK_U32 q16_ckg           : 1;
380             RK_U32 t16_ckg           : 1;
381             RK_U32 cabac16_ckg       : 1;
382             RK_U32 recon8_ckg        : 1;
383             RK_U32 iqit8_ckg         : 1;
384             RK_U32 q8_ckg            : 1;
385             RK_U32 t8_ckg            : 1;
386             RK_U32 cabac8_ckg        : 1;
387             RK_U32 recon4_ckg        : 1;
388             RK_U32 iqit4_ckg         : 1;
389             RK_U32 q4_ckg            : 1;
390             RK_U32 t4_ckg            : 1;
391             RK_U32 cabac4_ckg        : 1;
392             RK_U32 intra32_ckg       : 1;
393             RK_U32 intra16_ckg       : 1;
394             RK_U32 intra8_ckg        : 1;
395             RK_U32 intra4_ckg        : 1;
396             RK_U32 inter_pred_ckg    : 1;
397             RK_U32 reserved          : 7;
398         } hevc;
399     } rdo_ckg;
400 
401     /* 0x0000005c reg23 */
402     struct {
403         RK_U32 core_id     : 2;
404         RK_U32 reserved    : 30;
405     } core_id;
406 } Vepu510ControlCfg;
407 
408 /* 0x00000270 reg156  - 0x0000039c reg231 */
409 typedef struct Vepu510FrmCommon_t {
410     /* 0x00000270 reg156 - 0x0000027c reg159 */
411     vepu510_online online_addr;
412 
413     /* 0x00000280 reg160 */
414     RK_U32 adr_src0;
415 
416     /* 0x00000284 reg161 */
417     RK_U32 adr_src1;
418 
419     /* 0x00000288 reg162 */
420     RK_U32 adr_src2;
421 
422     /* 0x0000028c reg163 */
423     RK_U32 rfpw_h_addr;
424 
425     /* 0x00000290 reg164 */
426     RK_U32 rfpw_b_addr;
427 
428     /* 0x00000294 reg165 */
429     RK_U32 rfpr_h_addr;
430 
431     /* 0x00000298 reg166 */
432     RK_U32 rfpr_b_addr;
433 
434     /* 0x0000029c reg167 */
435     RK_U32 colmvw_addr;
436 
437     /* 0x000002a0 reg168 */
438     RK_U32 colmvr_addr;
439 
440     /* 0x000002a4 reg169 */
441     RK_U32 dspw_addr;
442 
443     /* 0x000002a8 reg170 */
444     RK_U32 dspr_addr;
445 
446     /* 0x000002ac reg171 */
447     RK_U32 meiw_addr;
448 
449     /* 0x000002b0 reg172 */
450     RK_U32 bsbt_addr;
451 
452     /* 0x000002b4 reg173 */
453     RK_U32 bsbb_addr;
454 
455     /* 0x000002b8 reg174 */
456     RK_U32 adr_bsbs;
457 
458     /* 0x000002bc reg175 */
459     RK_U32 bsbr_addr;
460 
461     /* 0x000002c0 reg176 */
462     RK_U32 lpfw_addr;
463 
464     /* 0x000002c4 reg177 */
465     RK_U32 lpfr_addr;
466 
467     /* 0x000002c8 reg178 */
468     RK_U32 ebuft_addr;
469 
470     /* 0x000002cc reg179 */
471     RK_U32 ebufb_addr;
472 
473     /* 0x000002d0 reg180 */
474     RK_U32 rfpt_h_addr;
475 
476     /* 0x000002d4 reg181 */
477     RK_U32 rfpb_h_addr;
478 
479     /* 0x000002d8 reg182 */
480     RK_U32 rfpt_b_addr;
481 
482     /* 0x000002dc reg183 */
483     RK_U32 adr_rfpb_b;
484 
485     /* 0x000002e0 reg184 */
486     RK_U32 adr_smear_rd;
487 
488     /* 0x000002e4 reg185 */
489     RK_U32 adr_smear_wr;
490 
491     /* 0x000002e8 reg186 */
492     RK_U32 adr_roir;
493 
494     /* 0x2ec - 0x2fc */
495     RK_U32 reserved187_191[5];
496 
497     /* 0x00000300 reg192 */
498     struct {
499         RK_U32 enc_stnd                : 2;
500         RK_U32 cur_frm_ref             : 1;
501         RK_U32 mei_stor                : 1;
502         RK_U32 bs_scp                  : 1;
503         RK_U32 reserved                : 3;
504         RK_U32 pic_qp                  : 6;
505         RK_U32 num_pic_tot_cur_hevc    : 5;
506         RK_U32 log2_ctu_num_hevc       : 5;
507         RK_U32 reserved1               : 6;
508         RK_U32 slen_fifo               : 1;
509         RK_U32 rec_fbc_dis             : 1;
510     } enc_pic;
511 
512     /* 0x00000304 reg193 */
513     struct {
514         RK_U32 dchs_txid    : 2;
515         RK_U32 dchs_rxid    : 2;
516         RK_U32 dchs_txe     : 1;
517         RK_U32 dchs_rxe     : 1;
518         RK_U32 reserved     : 2;
519         RK_U32 dchs_dly     : 8;
520         RK_U32 dchs_ofst    : 10;
521         RK_U32 reserved1    : 6;
522     } dual_core;
523 
524     /* 0x00000308 reg194 */
525     struct {
526         RK_U32 frame_id        : 8;
527         RK_U32 frm_id_match    : 1;
528         RK_U32 reserved        : 7;
529         RK_U32 ch_id           : 2;
530         RK_U32 vrsp_rtn_en     : 1;
531         RK_U32 vinf_req_en     : 1;
532         RK_U32 reserved1       : 12;
533     } enc_id;
534 
535     /* 0x0000030c reg195 */
536     RK_U32 bsp_size;
537 
538     /* 0x00000310 reg196 */
539     struct {
540         RK_U32 pic_wd8_m1    : 11;
541         RK_U32 reserved      : 5;
542         RK_U32 pic_hd8_m1    : 11;
543         RK_U32 reserved1     : 5;
544     } enc_rsl;
545 
546     /* 0x00000314 reg197 */
547     struct {
548         RK_U32 pic_wfill    : 6;
549         RK_U32 reserved     : 10;
550         RK_U32 pic_hfill    : 6;
551         RK_U32 reserved1    : 10;
552     } src_fill;
553 
554     /* 0x00000318 reg198 */
555     struct {
556         RK_U32 alpha_swap            : 1;
557         RK_U32 rbuv_swap             : 1;
558         RK_U32 src_cfmt              : 4;
559         RK_U32 src_rcne              : 1;
560         RK_U32 out_fmt               : 1;
561         RK_U32 src_range_trns_en     : 1;
562         RK_U32 src_range_trns_sel    : 1;
563         RK_U32 chroma_ds_mode        : 1;
564         RK_U32 reserved              : 21;
565     } src_fmt;
566 
567     /* 0x0000031c reg199 */
568     struct {
569         RK_U32 csc_wgt_b2y    : 9;
570         RK_U32 csc_wgt_g2y    : 9;
571         RK_U32 csc_wgt_r2y    : 9;
572         RK_U32 reserved       : 5;
573     } src_udfy;
574 
575     /* 0x00000320 reg200 */
576     struct {
577         RK_U32 csc_wgt_b2u    : 9;
578         RK_U32 csc_wgt_g2u    : 9;
579         RK_U32 csc_wgt_r2u    : 9;
580         RK_U32 reserved       : 5;
581     } src_udfu;
582 
583     /* 0x00000324 reg201 */
584     struct {
585         RK_U32 csc_wgt_b2v    : 9;
586         RK_U32 csc_wgt_g2v    : 9;
587         RK_U32 csc_wgt_r2v    : 9;
588         RK_U32 reserved       : 5;
589     } src_udfv;
590 
591     /* 0x00000328 reg202 */
592     struct {
593         RK_U32 csc_ofst_v    : 8;
594         RK_U32 csc_ofst_u    : 8;
595         RK_U32 csc_ofst_y    : 5;
596         RK_U32 reserved      : 11;
597     } src_udfo;
598 
599     /* 0x0000032c reg203 */
600     struct {
601         RK_U32 cr_force_value     : 8;
602         RK_U32 cb_force_value     : 8;
603         RK_U32 chroma_force_en    : 1;
604         RK_U32 reserved           : 9;
605         RK_U32 src_mirr           : 1;
606         RK_U32 src_rot            : 2;
607         RK_U32 tile4x4_en         : 1;
608         RK_U32 reserved1          : 2;
609     } src_proc;
610 
611     /* 0x00000330 reg204 */
612     struct {
613         RK_U32 pic_ofst_x    : 14;
614         RK_U32 reserved      : 2;
615         RK_U32 pic_ofst_y    : 14;
616         RK_U32 reserved1     : 2;
617     } pic_ofst;
618 
619     /* 0x00000334 reg205 */
620     struct {
621         RK_U32 src_strd0    : 21;
622         RK_U32 reserved     : 11;
623     } src_strd0;
624 
625     /* 0x00000338 reg206 */
626     struct {
627         RK_U32 src_strd1    : 16;
628         RK_U32 reserved     : 16;
629     } src_strd1;
630 
631     /* 0x33c - 0x34c */
632     RK_U32 reserved207_211[5];
633 
634     /* 0x00000350 reg212 */
635     struct {
636         RK_U32 rc_en         : 1;
637         RK_U32 aq_en         : 1;
638         RK_U32 reserved      : 10;
639         RK_U32 rc_ctu_num    : 20;
640     } rc_cfg;
641 
642     /* 0x00000354 reg213 */
643     struct {
644         RK_U32 reserved       : 16;
645         RK_U32 rc_qp_range    : 4;
646         RK_U32 rc_max_qp      : 6;
647         RK_U32 rc_min_qp      : 6;
648     } rc_qp;
649 
650     /* 0x00000358 reg214 */
651     struct {
652         RK_U32 ctu_ebit    : 20;
653         RK_U32 reserved    : 12;
654     } rc_tgt;
655 
656     /* 0x35c */
657     RK_U32 reserved_215;
658 
659     /* 0x00000360 reg216 */
660     struct {
661         RK_U32 sli_splt          : 1;
662         RK_U32 sli_splt_mode     : 1;
663         RK_U32 sli_splt_cpst     : 1;
664         RK_U32 reserved          : 12;
665         RK_U32 sli_flsh          : 1;
666         RK_U32 sli_max_num_m1    : 15;
667         RK_U32 reserved1         : 1;
668     } sli_splt;
669 
670     /* 0x00000364 reg217 */
671     struct {
672         RK_U32 sli_splt_byte    : 20;
673         RK_U32 reserved         : 12;
674     } sli_byte;
675 
676     /* 0x00000368 reg218 */
677     struct {
678         RK_U32 sli_splt_cnum_m1    : 20;
679         RK_U32 reserved            : 12;
680     } sli_cnum;
681 
682     /* 0x0000036c reg219 */
683     struct {
684         RK_U32 uvc_partition0_len    : 12;
685         RK_U32 uvc_partition_len     : 12;
686         RK_U32 uvc_skip_len          : 6;
687         RK_U32 reserved              : 2;
688     } vbs_pad;
689 
690     /* 0x00000370 reg220 */
691     struct {
692         RK_U32 cime_srch_dwnh    : 4;
693         RK_U32 cime_srch_uph     : 4;
694         RK_U32 cime_srch_rgtw    : 4;
695         RK_U32 cime_srch_lftw    : 4;
696         RK_U32 dlt_frm_num       : 16;
697     } me_rnge;
698 
699     /* 0x00000374 reg221 */
700     struct {
701         RK_U32 srgn_max_num      : 7;
702         RK_U32 cime_dist_thre    : 13;
703         RK_U32 rme_srch_h        : 2;
704         RK_U32 rme_srch_v        : 2;
705         RK_U32 rme_dis           : 3;
706         RK_U32 reserved          : 1;
707         RK_U32 fme_dis           : 3;
708         RK_U32 reserved1         : 1;
709     } me_cfg;
710 
711     /* 0x00000378 reg222 */
712     struct {
713         RK_U32 cime_zero_thre     : 13;
714         RK_U32 reserved           : 15;
715         RK_U32 fme_prefsu_en      : 2;
716         RK_U32 colmv_stor_hevc    : 1;
717         RK_U32 colmv_load_hevc    : 1;
718     } me_cach;
719 
720     /* 0x37c - 0x39c */
721     RK_U32 reserved223_231[9];
722 } Vepu510FrmCommon;
723 
724 /* class: rc/roi/aq/klut */
725 /* 0x00001000 reg1024 - 0x0000110c reg1091 */
726 typedef struct Vepu510RcRoi_t {
727     /* 0x00001000 reg1024 */
728     struct {
729         RK_U32 qp_adj0     : 5;
730         RK_U32 qp_adj1     : 5;
731         RK_U32 qp_adj2     : 5;
732         RK_U32 qp_adj3     : 5;
733         RK_U32 qp_adj4     : 5;
734         RK_U32 reserved    : 7;
735     } rc_adj0;
736 
737     /* 0x00001004 reg1025 */
738     struct {
739         RK_U32 qp_adj5     : 5;
740         RK_U32 qp_adj6     : 5;
741         RK_U32 qp_adj7     : 5;
742         RK_U32 qp_adj8     : 5;
743         RK_U32 reserved    : 12;
744     } rc_adj1;
745 
746     /* 0x00001008 reg1026 - 0x00001028 reg1034 */
747     RK_U32 rc_dthd_0_8[9];
748 
749     /* 0x102c */
750     RK_U32 reserved_1035;
751 
752     /* 0x00001030 reg1036 */
753     struct {
754         RK_U32 qpmin_area0    : 6;
755         RK_U32 qpmax_area0    : 6;
756         RK_U32 qpmin_area1    : 6;
757         RK_U32 qpmax_area1    : 6;
758         RK_U32 qpmin_area2    : 6;
759         RK_U32 reserved       : 2;
760     } roi_qthd0;
761 
762     /* 0x00001034 reg1037 */
763     struct {
764         RK_U32 qpmax_area2    : 6;
765         RK_U32 qpmin_area3    : 6;
766         RK_U32 qpmax_area3    : 6;
767         RK_U32 qpmin_area4    : 6;
768         RK_U32 qpmax_area4    : 6;
769         RK_U32 reserved       : 2;
770     } roi_qthd1;
771 
772     /* 0x00001038 reg1038 */
773     struct {
774         RK_U32 qpmin_area5    : 6;
775         RK_U32 qpmax_area5    : 6;
776         RK_U32 qpmin_area6    : 6;
777         RK_U32 qpmax_area6    : 6;
778         RK_U32 qpmin_area7    : 6;
779         RK_U32 reserved       : 2;
780     } roi_qthd2;
781 
782     /* 0x0000103c reg1039 */
783     struct {
784         RK_U32 qpmax_area7    : 6;
785         RK_U32 reserved       : 24;
786         RK_U32 qpmap_mode     : 2;
787     } roi_qthd3;
788 
789     /* 0x00001040 reg1040 */
790     RK_U32 reserved_1040;
791 
792     /* 0x00001044 reg1041 - 0x00001050 reg1044 */
793     RK_U8 aq_tthd[16];
794 
795     /* 0x00001054 reg1045 */
796     struct {
797         RK_S32 aq_stp_s0     : 5;
798         RK_S32 aq_stp_0t1    : 5;
799         RK_S32 aq_stp_1t2    : 5;
800         RK_S32 aq_stp_2t3    : 5;
801         RK_S32 aq_stp_3t4    : 5;
802         RK_S32 aq_stp_4t5    : 5;
803         RK_S32 reserved      : 2;
804     } aq_stp0;
805 
806     /* 0x00001058 reg1046 */
807     struct {
808         RK_S32 aq_stp_5t6      : 5;
809         RK_S32 aq_stp_6t7      : 5;
810         RK_S32 aq_stp_7t8      : 5;
811         RK_S32 aq_stp_8t9      : 5;
812         RK_S32 aq_stp_9t10     : 5;
813         RK_S32 aq_stp_10t11    : 5;
814         RK_S32 reserved        : 2;
815     } aq_stp1;
816 
817     /* 0x0000105c reg1047 */
818     struct {
819         RK_S32 aq_stp_11t12    : 5;
820         RK_S32 aq_stp_12t13    : 5;
821         RK_S32 aq_stp_13t14    : 5;
822         RK_S32 aq_stp_14t15    : 5;
823         RK_S32 aq_stp_b15      : 5;
824         RK_U32 reserved        : 7;
825     } aq_stp2;
826 
827     /* 0x00001060 reg1048 */
828     struct {
829         RK_U32 aq16_rnge         : 4;
830         RK_U32 aq32_rnge         : 4;
831         RK_U32 aq8_rnge          : 5;
832         RK_U32 aq16_dif0         : 5;
833         RK_U32 aq16_dif1         : 5;
834         RK_U32 reserved          : 1;
835         RK_U32 aq_cme_en         : 1;
836         RK_U32 aq_subj_cme_en    : 1;
837         RK_U32 aq_rme_en         : 1;
838         RK_U32 aq_subj_rme_en    : 1;
839         RK_U32 reserved1         : 4;
840     } aq_clip;
841 
842     /* 0x00001064 reg1049 */
843     struct {
844         RK_U32 madi_th0    : 8;
845         RK_U32 madi_th1    : 8;
846         RK_U32 madi_th2    : 8;
847         RK_U32 reserved    : 8;
848     } madi_st_thd;
849 
850     /* 0x00001068 reg1050 */
851     struct {
852         RK_U32 madp_th0     : 12;
853         RK_U32 reserved     : 4;
854         RK_U32 madp_th1     : 12;
855         RK_U32 reserved1    : 4;
856     } madp_st_thd0;
857 
858     /* 0x0000106c reg1051 */
859     struct {
860         RK_U32 madp_th2    : 12;
861         RK_U32 reserved    : 20;
862     } madp_st_thd1;
863 
864     /* 0x1070 - 0x1078 */
865     RK_U32 reserved1052_1054[3];
866 
867     /* 0x0000107c reg1055 */
868     struct {
869         RK_U32 chrm_klut_ofst                : 4;
870         RK_U32 reserved                      : 4;
871         RK_U32 inter_chrm_dist_multi         : 6;
872         RK_U32 reserved1                     : 18;
873     } klut_ofst;
874 
875     /*0x00001080 reg1056 - 0x0000110c reg1091 */
876     Vepu510RoiCfg roi_cfg;
877 } Vepu510RcRoi;
878 
879 /* class: scaling list  */
880 /* 0x00002200 reg2176- 0x00002584 reg2401*/
881 typedef struct Vepu510SclCfg_t {
882     /* 0x2200 - 0x221F, valid for h.264/h.h265, jpeg no use */
883     RK_U32 tu8_intra_y[16];
884     RK_U32 tu8_intra_u[16]; /* tu8_inter_y[16] for h.264 */
885 
886     /* 0x2220 - 0x2584, valid for h.265 only */
887     RK_U32 tu8_intra_v[16];
888     RK_U32 tu8_inter_y[16];
889     RK_U32 tu8_inter_u[16];
890     RK_U32 tu8_inter_v[16];
891     RK_U32 tu16_intra_y_ac[16];
892     RK_U32 tu16_intra_u_ac[16];
893     RK_U32 tu16_intra_v_ac[16];
894     RK_U32 tu16_inter_y_ac[16];
895     RK_U32 tu16_inter_u_ac[16];
896     RK_U32 tu16_inter_v_ac[16];
897     RK_U32 tu32_intra_y_ac[16];
898     RK_U32 tu32_inter_y_ac[16];
899 
900     /* 0x2580 */
901     struct {
902         RK_U32 tu16_intra_y_dc  : 8;
903         RK_U32 tu16_intra_u_dc  : 8;
904         RK_U32 tu16_intra_v_dc  : 8;
905         RK_U32 tu16_inter_y_dc  : 8;
906     } tu_dc0;
907 
908     /* 0x2584 */
909     struct {
910         RK_U32 tu16_inter_u_dc  : 8;
911         RK_U32 tu16_inter_v_dc  : 8;
912         RK_U32 tu32_intra_y_dc  : 8;
913         RK_U32 tu32_inter_y_dc  : 8;
914     } tu_dc1;
915 } Vepu510SclCfg;
916 
917 /* class: st */
918 /* 0x00004000 reg4096 - 0x0000424c reg4243*/
919 typedef struct Vepu510Status_t {
920     /* 0x00004000 reg4096 */
921     RK_U32 bs_lgth_l32;
922 
923     /* 0x00004004 reg4097 */
924     struct {
925         RK_U32 bs_lgth_h8    : 8;
926         RK_U32 reserved      : 8;
927         RK_U32 sse_l16       : 16;
928     } st_sse_bsl;
929 
930     /* 0x00004008 reg4098 */
931     RK_U32 sse_h32;
932 
933     /* 0x0000400c reg4099 */
934     RK_U32 qp_sum;
935 
936     /* 0x00004010 reg4100 */
937     struct {
938         RK_U32 sao_cnum    : 16;
939         RK_U32 sao_ynum    : 16;
940     } st_sao;
941 
942     /* 0x00004014 reg4101 */
943     RK_U32 rdo_head_bits;
944 
945     /* 0x00004018 reg4102 */
946     struct {
947         RK_U32 rdo_head_bits_h8    : 8;
948         RK_U32 reserved            : 8;
949         RK_U32 rdo_res_bits_l16    : 16;
950     } st_head_res_bl;
951 
952     /* 0x0000401c reg4103 */
953     RK_U32 rdo_res_bits_h24;
954 
955     /* 0x00004020 reg4104 */
956     struct {
957         RK_U32 st_enc             : 2;
958         RK_U32 st_sclr            : 1;
959         RK_U32 isp_src_oflw       : 1;
960         RK_U32 vepu_src_oflw      : 1;
961         RK_U32 vepu_fcnt_nmch     : 1;
962         RK_U32 vepu_fbd_err       : 5;
963         RK_U32 reserved           : 5;
964         RK_U32 dvbm_finf_wful     : 1;
965         RK_U32 dvbm_linf_wful     : 1;
966         RK_U32 dvbm_fcnt_late     : 1;
967         RK_U32 dvbm_fcnt_early    : 1;
968         RK_U32 dvbm_isp_oflw      : 1;
969         RK_U32 dvbm_vepu_oflw     : 1;
970         RK_U32 isp_time_out       : 1;
971         RK_U32 dvbm_vsrc_fcnt     : 1;
972         RK_U32 reserved1          : 8;
973     } st_enc;
974 
975     /* 0x00004024 reg4105 */
976     struct {
977         RK_U32 fnum_cfg_done    : 8;
978         RK_U32 fnum_cfg         : 8;
979         RK_U32 fnum_int         : 8;
980         RK_U32 fnum_enc_done    : 8;
981     } st_lkt;
982 
983     /* 0x00004028 reg4106 */
984     struct {
985         RK_U32 reserved     : 4;
986         RK_U32 node_addr    : 28;
987     } st_nadr;
988 
989     /* 0x0000402c reg4107 */
990     struct {
991         RK_U32 bsbw_ovfl    : 1;
992         RK_U32 reserved     : 2;
993         RK_U32 bsbw_addr    : 28;
994         RK_U32 reserved1    : 1;
995     } st_bsb;
996 
997     /* 0x00004030 reg4108 */
998     struct {
999         RK_U32 axib_idl     : 8;
1000         RK_U32 axib_ovfl    : 8;
1001         RK_U32 axib_err     : 8;
1002         RK_U32 axir_err     : 8;
1003     } st_bus;
1004 
1005     /* 0x00004034 reg4109 */
1006     struct {
1007         RK_U32 sli_num_video     : 6;
1008         RK_U32 sli_num_jpeg      : 6;
1009         RK_U32 reserved          : 4;
1010         RK_U32 bpkt_num_video    : 7;
1011         RK_U32 bpkt_lst_video    : 1;
1012         RK_U32 bpkt_num_jpeg     : 7;
1013         RK_U32 bpkt_lst_jpeg     : 1;
1014     } st_snum;
1015 
1016     /* 0x00004038 reg4110 */
1017     struct {
1018         RK_U32 sli_len    : 31;
1019         RK_U32 sli_lst    : 1;
1020     } st_slen;
1021 
1022     /* 0x403c - reg4111 */
1023     struct {
1024         RK_U32 task_id_proc     : 12;
1025         RK_U32 task_id_done     : 12;
1026         RK_U32 task_done        : 1;
1027         RK_U32 task_lkt_err     : 3;
1028         RK_U32 reserved         : 4;
1029     } st_link_task;
1030 
1031     /* 0x4040 - 0x405c */
1032     RK_U32 reserved4111_4119[8];
1033 
1034     /* 0x00004060 reg4120 */
1035     struct {
1036         RK_U32 sli_len_jpeg    : 31;
1037         RK_U32 sli_lst_jpeg    : 1;
1038     } st_slen_jpeg;
1039 
1040     /* 0x00004064 reg4121 */
1041     RK_U32 jpeg_head_bits_l32;
1042 
1043     /* 0x00004068 reg4122 */
1044     struct {
1045         RK_U32 jpeg_head_bits_h8    : 1;
1046         RK_U32 reserved             : 31;
1047     } st_bsl_h8_jpeg;
1048 
1049     /* 0x0000406c reg4123 */
1050     struct {
1051         RK_U32 jbsbw_ovfl    : 1;
1052         RK_U32 reserved      : 2;
1053         RK_U32 jbsbw_addr    : 28;
1054         RK_U32 reserved1     : 1;
1055     } st_jbsb;
1056 
1057     /* 0x4070 - 0x407c */
1058     RK_U32 reserved4124_4127[4];
1059 
1060     /* 0x00004080 reg4128 */
1061     struct {
1062         RK_U32 pnum_p64    : 17;
1063         RK_U32 reserved    : 15;
1064     } st_pnum_p64;
1065 
1066     /* 0x00004084 reg4129 */
1067     struct {
1068         RK_U32 pnum_p32    : 19;
1069         RK_U32 reserved    : 13;
1070     } st_pnum_p32;
1071 
1072     /* 0x00004088 reg4130 */
1073     struct {
1074         RK_U32 pnum_p16    : 21;
1075         RK_U32 reserved    : 11;
1076     } st_pnum_p16;
1077 
1078     /* 0x0000408c reg4131 */
1079     struct {
1080         RK_U32 pnum_p8     : 23;
1081         RK_U32 reserved    : 9;
1082     } st_pnum_p8;
1083 
1084     /* 0x00004090 reg4132 */
1085     struct {
1086         RK_U32 pnum_i32    : 19;
1087         RK_U32 reserved    : 13;
1088     } st_pnum_i32;
1089 
1090     /* 0x00004094 reg4133 */
1091     struct {
1092         RK_U32 pnum_i16    : 21;
1093         RK_U32 reserved    : 11;
1094     } st_pnum_i16;
1095 
1096     /* 0x00004098 reg4134 */
1097     struct {
1098         RK_U32 pnum_i8     : 23;
1099         RK_U32 reserved    : 9;
1100     } st_pnum_i8;
1101 
1102     /* 0x0000409c reg4135 */
1103     struct {
1104         RK_U32 pnum_i4     : 23;
1105         RK_U32 reserved    : 9;
1106     } st_pnum_i4;
1107 
1108     /* 0x000040a0 reg4136 */
1109     struct {
1110         RK_U32 num_b16     : 23;
1111         RK_U32 reserved    : 9;
1112     } st_bnum_b16;
1113 
1114     /* 0x000040a4 reg4137 */
1115     struct {
1116         RK_U32 rdo_smear_cnt0  : 8;
1117         RK_U32 rdo_smear_cnt1  : 8;
1118         RK_U32 rdo_smear_cnt2  : 8;
1119         RK_U32 rdo_smear_cnt3  : 8;
1120     } st_smear_cnt;
1121 
1122     /* 0x000040a8 reg4138 */
1123     RK_U32 madi16_sum;
1124 
1125     /* 0x000040ac reg4139 */
1126     RK_U32 madi32_sum;
1127 
1128     /* 0x000040b0 reg4140 */
1129     RK_U32 madp16_sum;
1130 
1131     /* 0x40b4 - 0x40bc */
1132     RK_U32 reserved4141_4143[3];
1133 
1134     /* 0x000040c0 reg4144 */
1135     struct {
1136         RK_U32 madi_th_lt_cnt0    : 16;
1137         RK_U32 madi_th_lt_cnt1    : 16;
1138     } st_madi_lt_num0;
1139 
1140     /* 0x000040c4 reg4145 */
1141     struct {
1142         RK_U32 madi_th_lt_cnt2    : 16;
1143         RK_U32 madi_th_lt_cnt3    : 16;
1144     } st_madi_lt_num1;
1145 
1146     /* 0x000040c8 reg4146 */
1147     struct {
1148         RK_U32 madi_th_rt_cnt0    : 16;
1149         RK_U32 madi_th_rt_cnt1    : 16;
1150     } st_madi_rt_num0;
1151 
1152     /* 0x000040cc reg4147 */
1153     struct {
1154         RK_U32 madi_th_rt_cnt2    : 16;
1155         RK_U32 madi_th_rt_cnt3    : 16;
1156     } st_madi_rt_num1;
1157 
1158     /* 0x000040d0 reg4148 */
1159     struct {
1160         RK_U32 madi_th_lb_cnt0    : 16;
1161         RK_U32 madi_th_lb_cnt1    : 16;
1162     } st_madi_lb_num0;
1163 
1164     /* 0x000040d4 reg4149 */
1165     struct {
1166         RK_U32 madi_th_lb_cnt2    : 16;
1167         RK_U32 madi_th_lb_cnt3    : 16;
1168     } st_madi_lb_num1;
1169 
1170     /* 0x000040d8 reg4150 */
1171     struct {
1172         RK_U32 madi_th_rb_cnt0    : 16;
1173         RK_U32 madi_th_rb_cnt1    : 16;
1174     } st_madi_rb_num0;
1175 
1176     /* 0x000040dc reg4151 */
1177     struct {
1178         RK_U32 madi_th_rb_cnt2    : 16;
1179         RK_U32 madi_th_rb_cnt3    : 16;
1180     } st_madi_rb_num1;
1181 
1182     /* 0x000040e0 reg4152 */
1183     struct {
1184         RK_U32 madp_th_lt_cnt0    : 16;
1185         RK_U32 madp_th_lt_cnt1    : 16;
1186     } st_madp_lt_num0;
1187 
1188     /* 0x000040e4 reg4153 */
1189     struct {
1190         RK_U32 madp_th_lt_cnt2    : 16;
1191         RK_U32 madp_th_lt_cnt3    : 16;
1192     } st_madp_lt_num1;
1193 
1194     /* 0x000040e8 reg4154 */
1195     struct {
1196         RK_U32 madp_th_rt_cnt0    : 16;
1197         RK_U32 madp_th_rt_cnt1    : 16;
1198     } st_madp_rt_num0;
1199 
1200     /* 0x000040ec reg4155 */
1201     struct {
1202         RK_U32 madp_th_rt_cnt2    : 16;
1203         RK_U32 madp_th_rt_cnt3    : 16;
1204     } st_madp_rt_num1;
1205 
1206     /* 0x000040f0 reg4156 */
1207     struct {
1208         RK_U32 madp_th_lb_cnt0    : 16;
1209         RK_U32 madp_th_lb_cnt1    : 16;
1210     } st_madp_lb_num0;
1211 
1212     /* 0x000040f4 reg4157 */
1213     struct {
1214         RK_U32 madp_th_lb_cnt2    : 16;
1215         RK_U32 madp_th_lb_cnt3    : 16;
1216     } st_madp_lb_num1;
1217 
1218     /* 0x000040f8 reg4158 */
1219     struct {
1220         RK_U32 madp_th_rb_cnt0    : 16;
1221         RK_U32 madp_th_rb_cnt1    : 16;
1222     } st_madp_rb_num0;
1223 
1224     /* 0x000040fc reg4159 */
1225     struct {
1226         RK_U32 madp_th_rb_cnt2    : 16;
1227         RK_U32 madp_th_rb_cnt3    : 16;
1228     } st_madp_rb_num1;
1229 
1230     /* 0x00004100 reg4160 */
1231     struct {
1232         RK_U32 cmv_th_lt_cnt0    : 16;
1233         RK_U32 cmv_th_lt_cnt1    : 16;
1234     } st_cmv_lt_num0;
1235 
1236     /* 0x00004104 reg4161 */
1237     struct {
1238         RK_U32 cmv_th_lt_cnt2    : 16;
1239         RK_U32 cmv_th_lt_cnt3    : 16;
1240     } st_cmv_lt_num1;
1241 
1242     /* 0x00004108 reg4162 */
1243     struct {
1244         RK_U32 cmv_th_rt_cnt0    : 16;
1245         RK_U32 cmv_th_rt_cnt1    : 16;
1246     } st_cmv_rt_num0;
1247 
1248     /* 0x0000410c reg4163 */
1249     struct {
1250         RK_U32 cmv_th_rt_cnt2    : 16;
1251         RK_U32 cmv_th_rt_cnt3    : 16;
1252     } st_cmv_rt_num1;
1253 
1254     /* 0x00004110 reg4164 */
1255     struct {
1256         RK_U32 cmv_th_lb_cnt0    : 16;
1257         RK_U32 cmv_th_lb_cnt1    : 16;
1258     } st_cmv_lb_num0;
1259 
1260     /* 0x00004114 reg4165 */
1261     struct {
1262         RK_U32 cmv_th_lb_cnt2    : 16;
1263         RK_U32 cmv_th_lb_cnt3    : 16;
1264     } st_cmv_lb_num1;
1265 
1266     /* 0x00004118 reg4166 */
1267     struct {
1268         RK_U32 cmv_th_rb_cnt0    : 16;
1269         RK_U32 cmv_th_rb_cnt1    : 16;
1270     } st_cmv_rb_num0;
1271 
1272     /* 0x0000411c reg4167 */
1273     struct {
1274         RK_U32 cmv_th_rb_cnt2    : 16;
1275         RK_U32 cmv_th_rb_cnt3    : 16;
1276     } st_cmv_rb_num1;
1277 
1278     /* 0x00004120 reg4168 */
1279     struct {
1280         RK_U32 org_y_r_max_value    : 8;
1281         RK_U32 org_y_r_min_value    : 8;
1282         RK_U32 org_u_g_max_value    : 8;
1283         RK_U32 org_u_g_min_value    : 8;
1284     } st_vsp_org_value0;
1285 
1286     /* 0x00004124 reg4169 */
1287     struct {
1288         RK_U32 org_v_b_max_value    : 8;
1289         RK_U32 org_v_b_min_value    : 8;
1290         RK_U32 reserved             : 16;
1291     } st_vsp_org_value1;
1292 
1293     /* 0x4128 - 0x412c */
1294     RK_U32 reserved4170_4171[2];
1295 
1296     /* 0x00004130 reg4172 */
1297     RK_U32 dsp_y_sum;
1298 
1299     /* 0x00004134 reg4173 */
1300     RK_U32 acc_zero_mv;
1301 
1302     /* 0x00004138 reg4174 */
1303     RK_U32 acc_dist0;
1304 
1305     /* 0x0000413c reg4175 */
1306     RK_U32 acc_block_num;
1307 
1308     /* 0x00004140 reg4176 */
1309     struct {
1310         RK_U32 num0_point_skin    : 15;
1311         RK_U32 acc_cmplx_num      : 17;
1312     } st_skin_sum0;
1313 
1314     /* 0x00004144 reg4177 */
1315     struct {
1316         RK_U32 num1_point_skin    : 15;
1317         RK_U32 acc_cover16_num    : 17;
1318     } st_skin_sum1;
1319 
1320     /* 0x00004148 reg4178 */
1321     struct {
1322         RK_U32 num2_point_skin    : 15;
1323         RK_U32 acc_bndry16_num    : 17;
1324     } st_skin_sum2;
1325 
1326     /* 0x0000414c reg4179 */
1327     RK_U32 num0_grdnt_point_dep0;
1328 
1329     /* 0x00004150 reg4180 */
1330     RK_U32 num1_grdnt_point_dep0;
1331 
1332     /* 0x00004154 reg4181 */
1333     RK_U32 num2_grdnt_point_dep0;
1334 
1335     /* 0x4158 - 0x417c */
1336     RK_U32 reserved4182_4191[10];
1337 
1338     /* 0x00004180 reg4192 - 0x0000424c reg4243*/
1339     RK_U32 st_b8_qp[52];
1340 } Vepu510Status;
1341 
1342 /* class: dbg/st/axipn */
1343 /* 0x00005000 reg5120 - 0x0000230 reg5260*/
1344 //TODO:
1345 typedef struct Vepu510Dbg_t {
1346     /* 0x00005000 reg5120 */
1347     struct {
1348         RK_U32 vsp0_pos_x    : 16;
1349         RK_U32 vsp0_pos_y    : 16;
1350     } st_ppl_pos_vsp0;
1351 
1352     /* 0x00005004 reg5121 */
1353     struct {
1354         RK_U32 vsp1_pos_x    : 16;
1355         RK_U32 vsp1_pos_y    : 16;
1356     } st_ppl_pos_vsp1;
1357 
1358     /* 0x00005008 reg5122 */
1359     struct {
1360         RK_U32 cme_pos_x    : 16;
1361         RK_U32 cme_pos_y    : 16;
1362     } st_ppl_pos_cme;
1363 
1364     /* 0x0000500c reg5123 */
1365     struct {
1366         RK_U32 swin_cmd_x    : 16;
1367         RK_U32 swin_cmd_y    : 16;
1368     } st_ppl_cmd_swin;
1369 
1370     /* 0x00005010 reg5124 */
1371     struct {
1372         RK_U32 swin_pos_x    : 16;
1373         RK_U32 swin_pos_y    : 16;
1374     } st_ppl_pos_swin;
1375 
1376     /* 0x00005014 reg5125 */
1377     struct {
1378         RK_U32 pren_pos_x    : 16;
1379         RK_U32 pren_pos_y    : 16;
1380     } st_ppl_pos_pren;
1381 
1382     /* 0x00005018 reg5126 */
1383     struct {
1384         RK_U32 rfme_pos_x    : 16;
1385         RK_U32 rfme_pos_y    : 16;
1386     } st_ppl_pos_rfme;
1387 
1388     /* 0x0000501c reg5127 */
1389     struct {
1390         RK_U32 rdo_pos_x    : 16;
1391         RK_U32 rdo_pos_y    : 16;
1392     } st_ppl_pos_rdo;
1393 
1394     /* 0x00005020 reg5128 */
1395     struct {
1396         RK_U32 lpf_pos_x    : 16;
1397         RK_U32 lpf_pos_y    : 16;
1398     } st_ppl_pos_lpf;
1399 
1400     /* 0x00005024 reg5129 */
1401     struct {
1402         RK_U32 etpy_pos_x    : 16;
1403         RK_U32 etpy_pos_y    : 16;
1404     } st_ppl_pos_etpy;
1405 
1406     /* 0x00005028 reg5130 */
1407     struct {
1408         RK_U32 vsp0_pos_x    : 16;
1409         RK_U32 vsp0_pos_y    : 16;
1410     } st_ppl_pos_jsp0;
1411 
1412     /* 0x0000502c reg5131 */
1413     struct {
1414         RK_U32 vsp1_pos_x    : 16;
1415         RK_U32 vsp1_pos_y    : 16;
1416     } st_ppl_pos_jsp1;
1417 
1418     /* 0x00005030 reg5132 */
1419     struct {
1420         RK_U32 jpeg_pos_x    : 16;
1421         RK_U32 jpeg_pos_y    : 16;
1422     } st_ppl_pos_jpeg;
1423 
1424     /* 0x5034 - 0x503c */
1425     RK_U32 reserved5133_5135[3];
1426     /* 0x00005040 reg5136 */
1427     struct {
1428         RK_U32 vsp0_org_err     : 1;
1429         RK_U32 vsp0_vsld_err    : 1;
1430         RK_U32 pp0_pp1_err      : 1;
1431         RK_U32 vsp0_cmd_err     : 1;
1432         RK_U32 reserved         : 24;
1433         RK_U32 vsp0_wrk         : 1;
1434         RK_U32 vsp0_tout        : 1;
1435         RK_U32 reserved1        : 2;
1436     } dbg_ctrl_vsp0;
1437 
1438     /* 0x00005044 reg5137 */
1439     struct {
1440         RK_U32 vsp1_org_err    : 1;
1441         RK_U32 vsp1_rdo_err    : 1;
1442         RK_U32 reserved        : 26;
1443         RK_U32 vsp1_wrk        : 1;
1444         RK_U32 vsp1_tout       : 1;
1445         RK_U32 reserved1       : 2;
1446     } dbg_ctrl_vsp1;
1447 
1448     /* 0x00005048 reg5138 */
1449     struct {
1450         RK_U32 cme_org_err     : 1;
1451         RK_U32 cme_roi_err     : 1;
1452         RK_U32 cme_win_err     : 1;
1453         RK_U32 cme_cmmv_err    : 1;
1454         RK_U32 cme_smvp_err    : 1;
1455         RK_U32 cme_meiw_err    : 1;
1456         RK_U32 cme_dist_err    : 1;
1457         RK_U32 cme_rdo_err     : 1;
1458         RK_U32 cme_madp_err    : 1;
1459         RK_U32 cme_mv_err      : 1;
1460         RK_U32 reserved        : 18;
1461         RK_U32 cme_wrk         : 1;
1462         RK_U32 cme_tout        : 1;
1463         RK_U32 reserved1       : 2;
1464     } dbg_ctrl_cme;
1465 
1466     /* 0x0000504c reg5139 */
1467     struct {
1468         RK_U32 swin_org_err    : 1;
1469         RK_U32 swin_ref_err    : 1;
1470         RK_U32 swin_cmd_err    : 1;
1471         RK_U32 reserved        : 25;
1472         RK_U32 swin_wrk        : 1;
1473         RK_U32 swin_tout       : 1;
1474         RK_U32 reserved1       : 2;
1475     } dbg_ctrl_swin;
1476 
1477     /* 0x00005050 reg5140 */
1478     struct {
1479         RK_U32 swin_buff_ptr     : 2;
1480         RK_U32 swin_buff_num0    : 2;
1481         RK_U32 swin_buff_num1    : 2;
1482         RK_U32 swin_buff_num2    : 2;
1483         RK_U32 reserved          : 24;
1484     } dbg_ppl_swin;
1485 
1486     /* 0x00005054 reg5141 */
1487     struct {
1488         RK_U32 pnra_org_err     : 1;
1489         RK_U32 pnra_dist_err    : 1;
1490         RK_U32 pnra_olm_err     : 1;
1491         RK_U32 reserved         : 25;
1492         RK_U32 pnra_wrk         : 1;
1493         RK_U32 pnra_tout        : 1;
1494         RK_U32 reserved1        : 2;
1495     } dbg_ctrl_pren;
1496 
1497     /* 0x00005058 reg5142 */
1498     struct {
1499         RK_U32 rfme_org_err     : 1;
1500         RK_U32 rfme_ref_err     : 1;
1501         RK_U32 rfme_cmmv_err    : 1;
1502         RK_U32 rfme_rfmv_err    : 1;
1503         RK_U32 rfme_tmvp_err    : 1;
1504         RK_U32 reserved         : 23;
1505         RK_U32 rfme_wrk         : 1;
1506         RK_U32 rfme_tout        : 1;
1507         RK_U32 reserved1        : 2;
1508     } dbg_ctrl_rfme;
1509 
1510     /* 0x0000505c reg5143 */
1511     struct {
1512         RK_U32 rdo_org_err        : 1;
1513         RK_U32 rdo_ref_err        : 1;
1514         RK_U32 rdo_inf_err        : 1;
1515         RK_U32 rdo_roi_err        : 1;
1516         RK_U32 rdo_rfmv_err       : 1;
1517         RK_U32 rdo_lbfr_err       : 1;
1518         RK_U32 rdo_lbfw_err       : 1;
1519         RK_U32 rdo_tmvp_rd_err    : 1;
1520         RK_U32 rdo_tmvp_wr_err    : 1;
1521         RK_U32 rdo_st_err         : 1;
1522         RK_U32 rdo_pnra_err       : 1;
1523         RK_U32 rdo_lpf_err        : 1;
1524         RK_U32 rdo_ent_err        : 1;
1525         RK_U32 reserved           : 15;
1526         RK_U32 rdo_wrk            : 1;
1527         RK_U32 rdo_tout           : 1;
1528         RK_U32 reserved1          : 2;
1529     } dbg_ctrl_rdo;
1530 
1531     /* 0x00005060 reg5144 */
1532     struct {
1533         RK_U32 lpf_org_err     : 1;
1534         RK_U32 lpf_lbfr_err    : 1;
1535         RK_U32 lpf_lbfw_err    : 1;
1536         RK_U32 lpf_rcol_err    : 1;
1537         RK_U32 reserved        : 24;
1538         RK_U32 lpf_wrk         : 1;
1539         RK_U32 lpf_tout        : 1;
1540         RK_U32 reserved1       : 2;
1541     } dbg_ctrl_lpf;
1542 
1543     /* 0x00005064 reg5145 */
1544     struct {
1545         RK_U32 etpy_bsw_err    : 1;
1546         RK_U32 reserved        : 27;
1547         RK_U32 etpy_wrk        : 1;
1548         RK_U32 etpy_tout       : 1;
1549         RK_U32 reserved1       : 2;
1550     } dbg_ctrl_etpy;
1551 
1552     /* 0x00005068 reg5146 */
1553     struct {
1554         RK_U32 jsp0_org_err     : 1;
1555         RK_U32 jsp0_vsld_err    : 1;
1556         RK_U32 pp0_pp1_err      : 1;
1557         RK_U32 jsp0_cmd_err     : 1;
1558         RK_U32 reserved         : 24;
1559         RK_U32 jsp0_wrk         : 1;
1560         RK_U32 jsp0_tout        : 1;
1561         RK_U32 reserved1        : 2;
1562     } dbg_ctrl_jsp0;
1563 
1564     /* 0x0000506c reg5147 */
1565     struct {
1566         RK_U32 jsp1_org_err     : 1;
1567         RK_U32 jsp1_madi_err    : 1;
1568         RK_U32 reserved         : 26;
1569         RK_U32 jsp1_wrk         : 1;
1570         RK_U32 jsp1_tout        : 1;
1571         RK_U32 reserved1        : 2;
1572     } dbg_ctrl_jsp1;
1573 
1574     /* 0x00005070 reg5148 */
1575     struct {
1576         RK_U32 jpeg_org_err    : 1;
1577         RK_U32 reserved        : 27;
1578         RK_U32 jpeg_wrk        : 1;
1579         RK_U32 jpeg_tout       : 1;
1580         RK_U32 reserved1       : 2;
1581     } dbg_ctrl_jpeg;
1582 
1583     /* 0x00005074 reg5149 */
1584     struct {
1585         RK_U32 dma_brsp_idle     : 1;
1586         RK_U32 jpeg_frm_done     : 1;
1587         RK_U32 rdo_frm_done      : 1;
1588         RK_U32 lpf_frm_done      : 1;
1589         RK_U32 ent_frm_done      : 1;
1590         RK_U32 ppl_ctrl_done     : 1;
1591         RK_U32 criw_frm_done     : 1;
1592         RK_U32 meiw_frm_done     : 1;
1593         RK_U32 smiw_frm_done     : 1;
1594         RK_U32 strg_rsrc_done    : 1;
1595         RK_U32 reserved          : 18;
1596         RK_U32 frm_wrk           : 1;
1597         RK_U32 frm_tout          : 1;
1598         RK_U32 reserved1         : 2;
1599     } dbg_tctrl0;
1600 
1601     /* 0x00005078 reg5150 */
1602     struct {
1603         RK_U32 pp0_cmd_vld      : 1;
1604         RK_U32 pp0_cmd_rdy      : 1;
1605         RK_U32 pp0_cmd_eid      : 1;
1606         RK_U32 cme_madp_vld     : 1;
1607         RK_U32 cme_madp_rdy0    : 1;
1608         RK_U32 cmd_madp_rdy1    : 1;
1609         RK_U32 cme_mv16_vld     : 1;
1610         RK_U32 cmd_mv16_rdy     : 1;
1611         RK_U32 swin_cmd_vld     : 1;
1612         RK_U32 swin_cmd_rdy     : 1;
1613         RK_U32 pnra_olm_vld     : 1;
1614         RK_U32 pnra_olm_rdy     : 1;
1615         RK_U32 lpf_rcol_vld     : 1;
1616         RK_U32 lpf_rcol_rdy     : 1;
1617         RK_U32 bsw_dat_vld      : 1;
1618         RK_U32 bsw_dat_rdy      : 1;
1619         RK_U32 slc_fifo_full    : 1;
1620         RK_U32 reserved         : 15;
1621     } dbg_tctrl1;
1622 
1623     /* 0x507c */
1624     RK_U32 reserved_5151;
1625 
1626     /* 0x00005080 reg5152 */
1627     struct {
1628         RK_U32 sli_num     : 15;
1629         RK_U32 reserved    : 17;
1630     } st_sli_num;
1631 
1632     /* 0x5084 - 0x50fc */
1633     RK_U32 reserved5153_5183[31];
1634 
1635     /* 0x00005100 reg5184 */
1636     struct {
1637         RK_U32 empty_oafifo        : 1;
1638         RK_U32 full_cmd_oafifo     : 1;
1639         RK_U32 full_data_oafifo    : 1;
1640         RK_U32 empty_iafifo        : 1;
1641 
1642         RK_U32 full_cmd_iafifo     : 1;
1643         RK_U32 full_info_iafifo    : 1;
1644         RK_U32 fbd_brq_st          : 4;
1645         RK_U32 fbd_hdr_vld         : 1;
1646         RK_U32 fbd_bmng_end        : 1;
1647 
1648         RK_U32 nfbd_req_st         : 4;
1649         RK_U32 acc_axi_cmd         : 8;
1650         RK_U32 reserved            : 8;
1651     } dbg_pp_st;
1652 
1653     /* 0x00005104 reg5185 */
1654     struct {
1655         RK_U32 r_ena_lambd        : 1;
1656         RK_U32 r_fst_swinw_end    : 1;
1657         RK_U32 r_swinw_end        : 1;
1658         RK_U32 r_cnt_swinw        : 1;
1659 
1660         RK_U32 r_dspw_end         : 1;
1661         RK_U32 r_dspw_cnt         : 1;
1662         RK_U32 i_sjgen_work       : 1;
1663         RK_U32 r_end_rspgen       : 1;
1664 
1665         RK_U32 r_cost_gate        : 1;
1666         RK_U32 r_ds_gate          : 1;
1667         RK_U32 r_mvp_gate         : 1;
1668         RK_U32 i_smvp_arrdy       : 1;
1669 
1670         RK_U32 i_smvp_arvld       : 1;
1671         RK_U32 i_stptr_wrdy       : 1;
1672         RK_U32 i_stptr_wvld       : 1;
1673         RK_U32 i_rdy_atf          : 1;
1674 
1675         RK_U32 i_vld_atf          : 1;
1676         RK_U32 i_rdy_bmv16        : 1;
1677         RK_U32 i_vld_bmv16        : 1;
1678         RK_U32 i_wr_dsp           : 1;
1679 
1680         RK_U32 i_rdy_dsp          : 1;
1681         RK_U32 i_vld_dsp          : 1;
1682         RK_U32 r_rdy_org          : 1;
1683         RK_U32 i_vld_org          : 1;
1684 
1685         RK_U32 i_rdy_state        : 1;
1686         RK_U32 i_vld_state        : 1;
1687         RK_U32 i_rdy_madp         : 1;
1688         RK_U32 i_vld_madp         : 1;
1689 
1690         RK_U32 i_rdy_diff         : 1;
1691         RK_U32 i_vld_diff         : 1;
1692         RK_U32 reserved           : 2;
1693     } dbg_cime_st;
1694 
1695     /* 0x00005108 reg5186 */
1696     RK_U32 swin_dbg_inf;
1697 
1698     /* 0x0000510c reg5187 */
1699     struct {
1700         RK_U32 bbrq_cmps_left_len2    : 1;
1701         RK_U32 bbrq_cmps_left_len1    : 1;
1702         RK_U32 cmps_left_len0         : 1;
1703         RK_U32 bbrq_rdy2              : 1;
1704         RK_U32 dcps_vld2              : 1;
1705         RK_U32 bbrq_rdy1              : 1;
1706         RK_U32 dcps_vld1              : 1;
1707         RK_U32 bbrq_rdy0              : 1;
1708         RK_U32 dcps_vld0              : 1;
1709         RK_U32 hb_rdy2                : 1;
1710         RK_U32 bbrq_vld2              : 1;
1711         RK_U32 hb_rdy1                : 1;
1712         RK_U32 bbrq_vld1              : 1;
1713         RK_U32 hb_rdy0                : 1;
1714         RK_U32 bbrq_vld0              : 1;
1715         RK_U32 idle_msb2              : 1;
1716         RK_U32 idle_msb1              : 1;
1717         RK_U32 idle_msb0              : 1;
1718         RK_U32 cur_state_dcps         : 1;
1719         RK_U32 cur_state_bbrq         : 1;
1720         RK_U32 cur_state_hb           : 1;
1721         RK_U32 cke_bbrq_dcps          : 1;
1722         RK_U32 cke_dcps               : 1;
1723         RK_U32 cke_bbrq               : 1;
1724         RK_U32 rdy_lwcd_rsp           : 1;
1725         RK_U32 vld_lwcd_rsp           : 1;
1726         RK_U32 rdy_lwcd_req           : 1;
1727         RK_U32 vld_lwcd_req           : 1;
1728         RK_U32 rdy_lwrsp              : 1;
1729         RK_U32 vld_lwrsp              : 1;
1730         RK_U32 rdy_lwreq              : 1;
1731         RK_U32 vld_lwreq              : 1;
1732     } dbg_fbd_hhit0;
1733 
1734     /* 0x00005110 reg5188 */
1735     RK_U32 rfme_dbg_inf;
1736 
1737     /* 0x00005114 reg5189 */
1738     struct {
1739         RK_U32 mscnt_clr    : 1;
1740         RK_U32 reserved     : 31;
1741     } dbg_cach_clr;
1742 
1743     /* 0x00005118 reg5190 */
1744     RK_U32 l1_mis;
1745 
1746     /* 0x0000511c reg5191 */
1747     RK_U32 l2_mis;
1748 
1749     /* 0x00005120 reg5192 */
1750     RK_U32 rdo_dbg0;
1751 
1752     /* 0x00005124 reg5193 */
1753     RK_U32 rdo_dbg1;
1754 
1755     /* 0x00005128 reg5194 */
1756     struct {
1757         RK_U32 h264_sh_st_cs    : 4;
1758         RK_U32 rsd_st_cs        : 4;
1759         RK_U32 h264_sd_st_cs    : 5;
1760         RK_U32 etpy_rdy         : 1;
1761         RK_U32 reserved         : 18;
1762     } dbg_etpy;
1763 
1764     /* 0x0000512c reg5195 */
1765     struct {
1766         RK_U32 chl_aw_vld        : 10;
1767         RK_U32 chl_aw_rdy        : 10;
1768         RK_U32 aw_vld_arb        : 1;
1769         RK_U32 aw_rdy_arb        : 1;
1770         RK_U32 aw_vld_crosclk    : 1;
1771         RK_U32 aw_rdy_crosclk    : 1;
1772         RK_U32 aw_rdy_mmu        : 1;
1773         RK_U32 aw_vld_mmu        : 1;
1774         RK_U32 aw_rdy_axi        : 1;
1775         RK_U32 aw_vld_axi        : 1;
1776         RK_U32 reserved          : 4;
1777     } dbg_dma_aw;
1778 
1779     /* 0x00005130 reg5196 */
1780     struct {
1781         RK_U32 chl_w_vld        : 10;
1782         RK_U32 chl_w_rdy        : 10;
1783         RK_U32 w_vld_arb        : 1;
1784         RK_U32 w_rdy_arb        : 1;
1785         RK_U32 w_vld_crosclk    : 1;
1786         RK_U32 w_rdy_crosclk    : 1;
1787         RK_U32 w_rdy_mmu        : 1;
1788         RK_U32 w_vld_mmu        : 1;
1789         RK_U32 w_rdy_axi        : 1;
1790         RK_U32 w_vld_axi        : 1;
1791         RK_U32 reserved         : 4;
1792     } dbg_dma_w;
1793 
1794     /* 0x00005134 reg5197 */
1795     struct {
1796         RK_U32 chl_ar_vld        : 9;
1797         RK_U32 chl_ar_rdy        : 9;
1798         RK_U32 reserved          : 2;
1799         RK_U32 ar_vld_arb        : 1;
1800         RK_U32 ar_rdy_arb        : 1;
1801         RK_U32 ar_vld_crosclk    : 1;
1802         RK_U32 ar_rdy_crosclk    : 1;
1803         RK_U32 ar_rdy_mmu        : 1;
1804         RK_U32 ar_vld_mmu        : 1;
1805         RK_U32 ar_rdy_axi        : 1;
1806         RK_U32 ar_vld_axi        : 1;
1807         RK_U32 reserved1         : 4;
1808     } dbg_dma_ar;
1809 
1810     /* 0x00005138 reg5198 */
1811     struct {
1812         RK_U32 chl_r_vld        : 9;
1813         RK_U32 chl_r_rdy        : 9;
1814         RK_U32 reserved         : 2;
1815         RK_U32 r_vld_arb        : 1;
1816         RK_U32 r_rdy_arb        : 1;
1817         RK_U32 r_vld_crosclk    : 1;
1818         RK_U32 r_rdy_crosclk    : 1;
1819         RK_U32 r_rdy_mmu        : 1;
1820         RK_U32 r_vld_mmu        : 1;
1821         RK_U32 r_rdy_axi        : 1;
1822         RK_U32 r_vld_axi        : 1;
1823         RK_U32 b_rdy_mmu        : 1;
1824         RK_U32 b_vld_mmu        : 1;
1825         RK_U32 b_rdy_axi        : 1;
1826         RK_U32 b_vld_axi        : 1;
1827     } dbg_dma_r;
1828 
1829     /* 0x513c */
1830     RK_U32 reserved_5199;
1831 
1832     /* 0x00005140 reg5200 */
1833     struct {
1834         RK_U32 bsw_fsm_stus     : 4;
1835         RK_U32 bsw_aw_full      : 1;
1836         RK_U32 bsw_rdy_ent      : 1;
1837         RK_U32 bsw_vld_ent      : 1;
1838         RK_U32 jpg_bsw_stus     : 4;
1839         RK_U32 jpg_aw_full      : 1;
1840         RK_U32 jpg_bsw_rdy      : 1;
1841         RK_U32 jpg_bsw_vld      : 1;
1842         RK_U32 crpw_fsm_stus    : 3;
1843         RK_U32 hdwr_rdy         : 1;
1844         RK_U32 hdwr_vld         : 1;
1845         RK_U32 bdwr_rdy         : 1;
1846         RK_U32 bdwr_vld         : 1;
1847         RK_U32 nfbc_rdy         : 1;
1848         RK_U32 nfbc_vld         : 1;
1849         RK_U32 dsp_fsm_stus     : 2;
1850         RK_U32 dsp_wr_flg       : 1;
1851         RK_U32 dsp_rsy          : 1;
1852         RK_U32 dsp_vld          : 1;
1853         RK_U32 lpfw_fsm_stus    : 3;
1854         RK_U32 reserved         : 1;
1855     } dbg_dma_dbg1;
1856 
1857     /* 0x5144 */
1858     RK_U32 reserved_5201;
1859 
1860     /* 0x00005148 reg5202 */
1861     struct {
1862         RK_U32 rdo_st      : 20;
1863         RK_U32 reserved    : 12;
1864     } dbg_rdo_st;
1865 
1866     /* 0x0000514c reg5203 */
1867     struct {
1868         RK_U32 lpf_work               : 1;
1869         RK_U32 rdo_par_nrdy           : 1;
1870         RK_U32 rdo_rcn_nrdy           : 1;
1871         RK_U32 lpf_rcn_rdy            : 1;
1872         RK_U32 dblk_work              : 1;
1873         RK_U32 sao_work               : 1;
1874         RK_U32 reserved               : 18;
1875         RK_U32 tile_bdry_read         : 1;
1876         RK_U32 tile_bdry_write        : 1;
1877         RK_U32 tile_bdry_rrdy         : 1;
1878         RK_U32 rdo_read_tile_bdry     : 1;
1879         RK_U32 rdo_write_tile_bdry    : 1;
1880         RK_U32 reserved1              : 3;
1881     } dbg_lpf;
1882 
1883     /* 0x5150 */
1884     RK_U32 reserved_5204;
1885 
1886     /* 0x00005154 reg5205 */
1887     RK_U32 dbg0_cache;
1888 
1889     /* 0x00005158 reg5206 */
1890     RK_U32 dbg1_cache;
1891 
1892     /* 0x0000515c reg5207 */
1893     RK_U32 dbg2_cache;
1894 
1895     /* 0x00005160 reg5208 */
1896     struct {
1897         RK_U32 ebuf_diff_cmd    : 8;
1898         RK_U32 lbuf_lpf_ncnt    : 7;
1899         RK_U32 lbuf_lpf_cien    : 1;
1900         RK_U32 lbuf_rdo_ncnt    : 7;
1901         RK_U32 lbuf_rdo_cien    : 1;
1902         RK_U32 reserved         : 8;
1903     } dbg_lbuf0;
1904 
1905     /* 0x00005164 reg5209 */
1906     struct {
1907         RK_U32 rvld_ebfr          : 1;
1908         RK_U32 rrdy_ebfr          : 1;
1909         RK_U32 arvld_ebfr         : 1;
1910         RK_U32 arrdy_ebfr         : 1;
1911         RK_U32 wvld_ebfw          : 1;
1912         RK_U32 wrdy_ebfw          : 1;
1913         RK_U32 awvld_ebfw         : 1;
1914         RK_U32 awrdy_ebfw         : 1;
1915         RK_U32 lpf_lbuf_rvld      : 1;
1916         RK_U32 lpf_lbuf_rrdy      : 1;
1917         RK_U32 lpf_lbuf_wvld      : 1;
1918         RK_U32 lpf_lbuf_wrdy      : 1;
1919         RK_U32 rdo_lbuf_rvld      : 1;
1920         RK_U32 rdo_lbuf_rrdy      : 1;
1921         RK_U32 rdo_lbuf_wvld      : 1;
1922         RK_U32 rdo_lbuf_wrdy      : 1;
1923         RK_U32 fme_lbuf_rvld      : 1;
1924         RK_U32 fme_lbuf_rrdy      : 1;
1925         RK_U32 cme_lbuf_rvld      : 1;
1926         RK_U32 cme_lbuf_rrdy      : 1;
1927         RK_U32 smear_lbuf_rvld    : 1;
1928         RK_U32 smear_lbuf_rrdy    : 1;
1929         RK_U32 smear_lbuf_wvld    : 1;
1930         RK_U32 smear_lbuf_wrdy    : 1;
1931         RK_U32 rdo_lbufw_flag     : 1;
1932         RK_U32 rdo_lbufr_flag     : 1;
1933         RK_U32 cme_lbufr_flag     : 1;
1934         RK_U32 reserved           : 5;
1935     } dbg_lbuf1;
1936 
1937     /* 0x00005168 reg5210 */
1938     struct {
1939         RK_U32 dbg_isp_fcnt    : 8;
1940         RK_U32 dbg_isp_fcyc    : 24;
1941     } dbg_dvbm_isp0;
1942 
1943     /* 0x0000516c reg5211 */
1944     struct {
1945         RK_U32 dbg_isp_lcnt    : 14;
1946         RK_U32 reserved        : 1;
1947         RK_U32 dbg_isp_ltgl    : 1;
1948         RK_U32 dbg_isp_fcnt    : 8;
1949         RK_U32 dbg_isp_oflw    : 1;
1950         RK_U32 dbg_isp_ftgl    : 1;
1951         RK_U32 dbg_isp_full    : 1;
1952         RK_U32 dbg_isp_work    : 1;
1953         RK_U32 dbg_isp_lvld    : 1;
1954         RK_U32 dbg_isp_lrdy    : 1;
1955         RK_U32 dbg_isp_fvld    : 1;
1956         RK_U32 dbg_isp_frdy    : 1;
1957     } dbg_dvbm_isp1;
1958 
1959     /* 0x00005170 reg5212 */
1960     struct {
1961         RK_U32 dbg_bf0_isp_lcnt    : 14;
1962         RK_U32 dbg_bf0_isp_llst    : 1;
1963         RK_U32 dbg_bf0_isp_sofw    : 1;
1964         RK_U32 dbg_bf0_isp_fcnt    : 8;
1965         RK_U32 dbg_bf0_isp_pnt     : 1;
1966         RK_U32 reserved            : 3;
1967         RK_U32 dbg_bf0_vpu_pnt     : 1;
1968         RK_U32 reserved1           : 3;
1969     } dbg_dvbm_buf0_inf0;
1970 
1971     /* 0x00005174 reg5213 */
1972     struct {
1973         RK_U32 dbg_bf0_src_lcnt    : 14;
1974         RK_U32 dbg_bf0_src_llst    : 1;
1975         RK_U32 reserved            : 1;
1976         RK_U32 dbg_bf0_vpu_lcnt    : 14;
1977         RK_U32 dbg_bf0_vpu_llst    : 1;
1978         RK_U32 dbg_bf0_vpu_vofw    : 1;
1979     } dbg_dvbm_buf0_inf1;
1980 
1981     /* 0x00005178 reg5214 */
1982     struct {
1983         RK_U32 dbg_bf1_isp_lcnt    : 14;
1984         RK_U32 dbg_bf1_isp_llst    : 1;
1985         RK_U32 dbg_bf1_isp_sofw    : 1;
1986         RK_U32 dbg_bf1_isp_fcnt    : 1;
1987         RK_U32 reserved            : 7;
1988         RK_U32 dbg_bf1_isp_pnt     : 1;
1989         RK_U32 reserved1           : 3;
1990         RK_U32 dbg_bf1_vpu_pnt     : 1;
1991         RK_U32 reserved2           : 3;
1992     } dbg_dvbm_buf1_inf0;
1993 
1994     /* 0x0000517c reg5215 */
1995     struct {
1996         RK_U32 dbg_bf1_src_lcnt    : 14;
1997         RK_U32 dbg_bf1_src_llst    : 1;
1998         RK_U32 reserved            : 1;
1999         RK_U32 dbg_bf1_vpu_lcnt    : 14;
2000         RK_U32 dbg_bf1_vpu_llst    : 1;
2001         RK_U32 dbg_bf1_vpu_vofw    : 1;
2002     } dbg_dvbm_buf1_inf1;
2003 
2004     /* 0x00005180 reg5216 */
2005     struct {
2006         RK_U32 dbg_bf2_isp_lcnt    : 14;
2007         RK_U32 dbg_bf2_isp_llst    : 1;
2008         RK_U32 dbg_bf2_isp_sofw    : 1;
2009         RK_U32 dbg_bf2_isp_fcnt    : 1;
2010         RK_U32 reserved            : 7;
2011         RK_U32 dbg_bf2_isp_pnt     : 1;
2012         RK_U32 reserved1           : 3;
2013         RK_U32 dbg_bf2_vpu_pnt     : 1;
2014         RK_U32 reserved2           : 3;
2015     } dbg_dvbm_buf2_inf0;
2016 
2017     /* 0x00005184 reg5217 */
2018     struct {
2019         RK_U32 dbg_bf2_src_lcnt    : 14;
2020         RK_U32 dbg_bf2_src_llst    : 1;
2021         RK_U32 reserved            : 1;
2022         RK_U32 dbg_bf2_vpu_lcnt    : 14;
2023         RK_U32 dbg_bf2_vpu_llst    : 1;
2024         RK_U32 dbg_bf2_vpu_vofw    : 1;
2025     } dbg_dvbm_buf2_inf1;
2026 
2027     /* 0x00005188 reg5218 */
2028     struct {
2029         RK_U32 dbg_bf3_isp_lcnt    : 14;
2030         RK_U32 dbg_bf3_isp_llst    : 1;
2031         RK_U32 dbg_bf3_isp_sofw    : 1;
2032         RK_U32 dbg_bf3_isp_fcnt    : 1;
2033         RK_U32 reserved            : 7;
2034         RK_U32 dbg_bf3_isp_pnt     : 1;
2035         RK_U32 reserved1           : 3;
2036         RK_U32 dbg_bf3_vpu_pnt     : 1;
2037         RK_U32 reserved2           : 3;
2038     } dbg_dvbm_buf3_inf0;
2039 
2040     /* 0x0000518c reg5219 */
2041     struct {
2042         RK_U32 dbg_bf3_src_lcnt    : 14;
2043         RK_U32 dbg_bf3_src_llst    : 1;
2044         RK_U32 reserved            : 1;
2045         RK_U32 dbg_bf3_vpu_lcnt    : 14;
2046         RK_U32 dbg_bf3_vpu_llst    : 1;
2047         RK_U32 dbg_bf3_vpu_vofw    : 1;
2048     } dbg_dvbm_buf3_inf1;
2049 
2050     /* 0x00005190 reg5220 */
2051     struct {
2052         RK_U32 dbg_isp_fptr     : 3;
2053         RK_U32 dbg_isp_full     : 1;
2054         RK_U32 dbg_src_fptr     : 3;
2055         RK_U32 reserved         : 1;
2056         RK_U32 dbg_vpu_fptr     : 3;
2057         RK_U32 dbg_vpu_empt     : 1;
2058         RK_U32 dbg_vpu_lvld     : 1;
2059         RK_U32 dbg_vpu_lrdy     : 1;
2060         RK_U32 dbg_vpu_fvld     : 1;
2061         RK_U32 dbg_vpu_frdy     : 1;
2062         RK_U32 dbg_fcnt_misp    : 4;
2063         RK_U32 dbg_fcnt_mvpu    : 4;
2064         RK_U32 dbg_fcnt_sofw    : 4;
2065         RK_U32 dbg_fcnt_vofw    : 4;
2066     } dbg_dvbm_ctrl;
2067 
2068     /* 0x5194 - 0x519c */
2069     RK_U32 reserved5221_5223[3];
2070 
2071     /* 0x000051a0 reg5224 */
2072     RK_U32 dbg_dvbm_buf0_yadr;
2073 
2074     /* 0x000051a4 reg5225 */
2075     RK_U32 dbg_dvbm_buf0_cadr;
2076 
2077     /* 0x000051a8 reg5226 */
2078     RK_U32 dbg_dvbm_buf1_yadr;
2079 
2080     /* 0x000051ac reg5227 */
2081     RK_U32 dbg_dvbm_buf1_cadr;
2082 
2083     /* 0x000051b0 reg5228 */
2084     RK_U32 dbg_dvbm_buf2_yadr;
2085 
2086     /* 0x000051b4 reg5229 */
2087     RK_U32 dbg_dvbm_buf2_cadr;
2088 
2089     /* 0x000051b8 reg5230 */
2090     RK_U32 dbg_dvbm_buf3_yadr;
2091 
2092     /* 0x000051bc reg5231 */
2093     RK_U32 dbg_dvbm_buf3_cadr;
2094 
2095     /* 0x000051c0 reg5232 */
2096     struct {
2097         RK_U32 dchs_rx_cnt    : 11;
2098         RK_U32 dchs_rx_id     : 2;
2099         RK_U32 dchs_rx_en     : 1;
2100         RK_U32 dchs_rx_ack    : 1;
2101         RK_U32 dchs_rx_req    : 1;
2102         RK_U32 dchs_tx_cnt    : 11;
2103         RK_U32 dchs_tx_id     : 2;
2104         RK_U32 dchs_tx_en     : 1;
2105         RK_U32 dchs_tx_ack    : 1;
2106         RK_U32 dchs_tx_req    : 1;
2107     } dbg_dchs_intfc;
2108 
2109     /* 0x000051c4 reg5233 */
2110     struct {
2111         RK_U32 lpfw_tx_cnt       : 11;
2112         RK_U32 lpfw_tx_en        : 1;
2113         RK_U32 crpw_tx_cnt       : 11;
2114         RK_U32 crpw_tx_en        : 1;
2115         RK_U32 dual_err_updt     : 1;
2116         RK_U32 dlyc_fifo_oflw    : 1;
2117         RK_U32 dlyc_tx_vld       : 1;
2118         RK_U32 dlyc_tx_rdy       : 1;
2119         RK_U32 dlyc_tx_empty     : 1;
2120         RK_U32 dchs_tx_idle      : 1;
2121         RK_U32 dchs_tx_asy       : 1;
2122         RK_U32 dchs_tx_syn       : 1;
2123     } dbg_dchs_tx_inf0;
2124 
2125     /* 0x000051c8 reg5234 */
2126     struct {
2127         RK_U32 criw_tx_cnt    : 11;
2128         RK_U32 criw_tx_en     : 1;
2129         RK_U32 smrw_tx_cnt    : 11;
2130         RK_U32 smrw_tx_en     : 1;
2131         RK_U32 reserved       : 8;
2132     } dbg_dchs_tx_inf1;
2133 
2134     /* 0x000051cc reg5235 */
2135     struct {
2136         RK_U32 dual_rx_cnt        : 11;
2137         RK_U32 dual_rx_id         : 2;
2138         RK_U32 dual_rx_en         : 1;
2139         RK_U32 dual_rx_syn        : 1;
2140         RK_U32 dual_rx_lock       : 1;
2141         RK_U32 dual_lpfr_dule     : 1;
2142         RK_U32 dual_cime_dule     : 1;
2143         RK_U32 dual_clomv_dule    : 1;
2144         RK_U32 dual_smear_dule    : 1;
2145         RK_U32 reserved           : 12;
2146     } dbg_dchs_rx_inf0;
2147 
2148     /* 0x51d0 - 0x51fc */
2149     RK_U32 reserved5236_5247[12];
2150 
2151     /* 0x00005200 reg5248 */
2152     RK_U32 frame_cyc;
2153 
2154     /* 0x00005204 reg5249 */
2155     RK_U32 vsp0_fcyc;
2156 
2157     /* 0x00005208 reg5250 */
2158     RK_U32 vsp1_fcyc;
2159 
2160     /* 0x0000520c reg5251 */
2161     RK_U32 cme_fcyc;
2162 
2163     /* 0x00005210 reg5252 */
2164     RK_U32 ldr_fcyc;
2165 
2166     /* 0x00005214 reg5253 */
2167     RK_U32 rfme_fcyc;
2168 
2169     /* 0x00005218 reg5254 */
2170     RK_U32 fme_fcyc;
2171 
2172     /* 0x0000521c reg5255 */
2173     RK_U32 rdo_fcyc;
2174 
2175     /* 0x00005220 reg5256 */
2176     RK_U32 lpf_fcyc;
2177 
2178     /* 0x00005224 reg5257 */
2179     RK_U32 etpy_fcyc;
2180 
2181     /* 0x00005228 reg5258 */
2182     RK_U32 jsp0_fcyc;
2183 
2184     /* 0x0000522c reg5259 */
2185     RK_U32 jsp1_fcyc;
2186 
2187     /* 0x00005230 reg5260 */
2188     RK_U32 jpeg_fcyc;
2189 } Vepu510Dbg;
2190 
2191 /* ROI block configuration */
2192 typedef struct Vepu510H264RoiBlkCfg {
2193     RK_U32 qp_adju        : 8;
2194     RK_U32 mdc_adju_inter : 4;
2195     RK_U32 mdc_adju_skip  : 4;
2196     RK_U32 mdc_adju_intra : 4;
2197     RK_U32 reserved       : 12;
2198 } Vepu510H264RoiBlkCfg;
2199 
2200 typedef struct Vepu510H265RoiBlkCfg {
2201     RK_U32 qp_adju        : 8;
2202     RK_U32 reserved       : 12;
2203     RK_U32 mdc_adju_inter : 4;
2204     RK_U32 mdc_adju_skip  : 4;
2205     RK_U32 mdc_adju_intra : 4;
2206 } Vepu510H265RoiBlkCfg;
2207 
2208 typedef struct Vepu510NpuOut_t {
2209     RK_S32 found_objects;
2210     /* npu object flag: one byte for each block16x16 */
2211     RK_U8 *object_seg_map;
2212 } Vepu510NpuOut;
2213 
2214 #ifdef __cplusplus
2215 extern "C" {
2216 #endif
2217 
2218 MPP_RET vepu510_set_roi(void *roi_reg_base, MppEncROICfg * roi, RK_S32 w,
2219                         RK_S32 h);
2220 
2221 #ifdef __cplusplus
2222 }
2223 #endif
2224 
2225 #endif /* __VEPU510_COMMON_H__ */
2226