xref: /rockchip-linux_mpp/mpp/hal/rkenc/h264e/hal_h264e_vepu511_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /* SPDX-License-Identifier: Apache-2.0 */
2 /*
3  * Copyright (c) 2025 Rockchip Electronics Co., Ltd.
4  */
5 
6 #ifndef __HAL_H264E_VEPU511_REG_H__
7 #define __HAL_H264E_VEPU511_REG_H__
8 
9 #include "rk_type.h"
10 #include "vepu511_common.h"
11 
12 /* class: buffer/video syntax */
13 /* 0x00000270 reg156 - 0x00000538 reg334 */
14 typedef struct H264eVepu511Frame_t {
15     /* 0x00000270 reg156  - 0x0000039c reg231 */
16     Vepu511FrmCommon common;
17 
18     /* 0x000003a0 reg232 */
19     struct {
20         RK_U32 rect_size         : 1;
21         RK_U32 reserved          : 2;
22         RK_U32 vlc_lmt           : 1;
23         RK_U32 reserved1         : 9;
24         RK_U32 ccwa_e            : 1;
25         RK_U32 reserved2         : 1;
26         RK_U32 atr_e             : 1;
27         RK_U32 reserved3         : 4;
28         RK_U32 scl_lst_sel       : 2;
29         RK_U32 reserved4         : 6;
30         RK_U32 atf_e             : 1;
31         RK_U32 atr_mult_sel_e    : 1;
32         RK_U32 reserved5         : 2;
33     } rdo_cfg;
34 
35     /* 0x000003a4 reg233 */
36     struct {
37         RK_U32 rdo_mark_mode         : 9;
38         RK_U32 reserved              : 5;
39         RK_U32 p16_interp_num        : 2;
40         RK_U32 p16t8_rdo_num         : 2;
41         RK_U32 p16t4_rmd_num         : 2;
42         RK_U32 p8_interp_num         : 2;
43         RK_U32 p8t8_rdo_num          : 2;
44         RK_U32 p8t4_rmd_num          : 2;
45         RK_U32 iframe_i16_rdo_num    : 2;
46         RK_U32 i8_rdo_num            : 2;
47         RK_U32 iframe_i4_rdo_num     : 2;
48     } rdo_mark_mode;
49 
50     /* 0x3a8 - 0x3ac */
51     RK_U32 reserved234_235[2];
52 
53     /* 0x000003b0 reg236 */
54     struct {
55         RK_U32 nal_ref_idc      : 2;
56         RK_U32 nal_unit_type    : 5;
57         RK_U32 reserved         : 25;
58     } synt_nal;
59 
60     /* 0x000003b4 reg237 */
61     struct {
62         RK_U32 max_fnum    : 4;
63         RK_U32 drct_8x8    : 1;
64         RK_U32 mpoc_lm4    : 4;
65         RK_U32 poc_type    : 2;
66         RK_U32 reserved    : 21;
67     } synt_sps;
68 
69     /* 0x000003b8 reg238 */
70     struct {
71         RK_U32 etpy_mode       : 1;
72         RK_U32 trns_8x8        : 1;
73         RK_U32 csip_flag       : 1;
74         RK_U32 num_ref0_idx    : 2;
75         RK_U32 num_ref1_idx    : 2;
76         RK_U32 pic_init_qp     : 6;
77         RK_U32 cb_ofst         : 5;
78         RK_U32 cr_ofst         : 5;
79         RK_U32 reserved        : 1;
80         RK_U32 dbf_cp_flg      : 1;
81         RK_U32 reserved1       : 7;
82     } synt_pps;
83 
84     /* 0x000003bc reg239 */
85     struct {
86         RK_U32 sli_type        : 2;
87         RK_U32 pps_id          : 8;
88         RK_U32 drct_smvp       : 1;
89         RK_U32 num_ref_ovrd    : 1;
90         RK_U32 cbc_init_idc    : 2;
91         RK_U32 reserved        : 2;
92         RK_U32 frm_num         : 16;
93     } synt_sli0;
94 
95     /* 0x000003c0 reg240 */
96     struct {
97         RK_U32 idr_pid    : 16;
98         RK_U32 poc_lsb    : 16;
99     } synt_sli1;
100 
101     /* 0x000003c4 reg241 */
102     struct {
103         RK_U32 rodr_pic_idx      : 2;
104         RK_U32 ref_list0_rodr    : 1;
105         RK_U32 sli_beta_ofst     : 4;
106         RK_U32 sli_alph_ofst     : 4;
107         RK_U32 dis_dblk_idc      : 2;
108         RK_U32 reserved          : 3;
109         RK_U32 rodr_pic_num      : 16;
110     } synt_sli2;
111 
112     /* 0x000003c8 reg242 */
113     struct {
114         RK_U32 nopp_flg      : 1;
115         RK_U32 ltrf_flg      : 1;
116         RK_U32 arpm_flg      : 1;
117         RK_U32 mmco4_pre     : 1;
118         RK_U32 mmco_type0    : 3;
119         RK_U32 mmco_parm0    : 16;
120         RK_U32 mmco_type1    : 3;
121         RK_U32 mmco_type2    : 3;
122         RK_U32 reserved      : 3;
123     } synt_refm0;
124 
125     /* 0x000003cc reg243 */
126     struct {
127         RK_U32 mmco_parm1    : 16;
128         RK_U32 mmco_parm2    : 16;
129     } synt_refm1;
130 
131     /* 0x000003d0 reg244 */
132     struct {
133         RK_U32 long_term_frame_idx0    : 4;
134         RK_U32 long_term_frame_idx1    : 4;
135         RK_U32 long_term_frame_idx2    : 4;
136         RK_U32 reserved                : 20;
137     } synt_refm2;
138 
139     /* 0x000003d4 reg245 - 0x0x00000 reg251 */
140     RK_U32 reserved245_251[7];
141 
142     /* 0x000003f0 reg252 */
143     struct {
144         RK_U32 mv_v_lmt_thd    : 14;
145         RK_U32 reserved        : 1;
146         RK_U32 mv_v_lmt_en     : 1;
147         RK_U32 reserved1       : 16;
148     } sli_cfg;
149 
150     /* 0x000003f4 reg253 */
151     RK_U32 reserved253;
152 
153     /* 0x000003f8 reg254 */
154     struct {
155         RK_U32 slice_sta_x      : 9;
156         RK_U32 reserved1        : 7;
157         RK_U32 slice_sta_y      : 10;
158         RK_U32 reserved2        : 5;
159         RK_U32 slice_enc_ena    : 1;
160     } slice_enc_cfg0;
161 
162     /* 0x000003fc reg255 */
163     struct {
164         RK_U32 slice_end_x    : 9;
165         RK_U32 reserved       : 7;
166         RK_U32 slice_end_y    : 10;
167         RK_U32 reserved1      : 6;
168     } slice_enc_cfg1;
169 
170     /* 0x00000400 reg256 */
171     struct {
172         RK_U32 reserved          : 8;
173         RK_U32 bsbt_addr_jpeg    : 24;
174     } adr_bsbt_jpeg;
175 
176     /* 0x00000404 reg257 */
177     struct {
178         RK_U32 reserved          : 8;
179         RK_U32 bsbb_addr_jpeg    : 24;
180     } adr_bsbb_jpeg;
181 
182     /* 0x00000408 reg258 */
183     RK_U32 adr_bsbs_jpeg;
184 
185     /* 0x0000040c reg259 */
186     struct {
187         RK_U32 bsadr_msk_jpeg    : 4;
188         RK_U32 reserved          : 4;
189         RK_U32 bsbr_addr_jpeg    : 24;
190     } adr_bsbr_jpeg;
191 
192     /* 0x00000410 reg260 */
193     struct {
194         RK_U32 reserved          : 4;
195         RK_U32 adr_vsy_b_jpeg    : 28;
196     } adr_vsy_b_jpeg;
197 
198     /* 0x00000414 reg261 */
199     struct {
200         RK_U32 reserved          : 4;
201         RK_U32 adr_vsc_b_jpeg    : 28;
202     } adr_vsc_b_jpeg;
203 
204     /* 0x00000418 reg262 */
205     struct {
206         RK_U32 reserved          : 4;
207         RK_U32 adr_vsy_t_jpeg    : 28;
208     } adr_vsy_t_jpeg;
209 
210     /* 0x0000041c reg263 */
211     struct {
212         RK_U32 reserved          : 4;
213         RK_U32 adr_vsc_t_jpeg    : 28;
214     } adr_vsc_t_jpeg;
215 
216     /* 0x00000420 reg264 */
217     RK_U32 adr_src0_jpeg;
218 
219     /* 0x00000424 reg265 */
220     RK_U32 adr_src1_jpeg;
221 
222     /* 0x00000428 reg266 */
223     RK_U32 adr_src2_jpeg;
224 
225     /* 0x0000042c reg267 */
226     RK_U32 bsp_size_jpeg;
227 
228     /* 0x430 - 0x43c */
229     RK_U32 reserved268_271[4];
230 
231     /* 0x00000440 reg272 */
232     struct {
233         RK_U32 pic_wd8_m1    : 11;
234         RK_U32 reserved      : 1;
235         RK_U32 pp0_vnum_m1   : 4;
236         RK_U32 pic_hd8_m1    : 11;
237         RK_U32 reserved1     : 1;
238         RK_U32 pp0_jnum_m1   : 4;
239     } enc_rsl_jpeg;
240 
241     /* 0x00000444 reg273 */
242     struct {
243         RK_U32 pic_wfill_jpeg    : 6;
244         RK_U32 reserved          : 10;
245         RK_U32 pic_hfill_jpeg    : 6;
246         RK_U32 reserved1         : 10;
247     } src_fill_jpeg;
248 
249     /* 0x00000448 reg274 */
250     struct {
251         RK_U32 alpha_swap_jpeg            : 1;
252         RK_U32 rbuv_swap_jpeg             : 1;
253         RK_U32 src_cfmt_jpeg              : 4;
254         RK_U32 reserved                   : 2;
255         RK_U32 src_range_trns_en_jpeg     : 1;
256         RK_U32 src_range_trns_sel_jpeg    : 1;
257         RK_U32 chroma_ds_mode_jpeg        : 1;
258         RK_U32 reserved1                  : 21;
259     } src_fmt_jpeg;
260 
261     /* 0x0000044c reg275 */
262     struct {
263         RK_U32 csc_wgt_b2y_jpeg    : 9;
264         RK_U32 csc_wgt_g2y_jpeg    : 9;
265         RK_U32 csc_wgt_r2y_jpeg    : 9;
266         RK_U32 reserved            : 5;
267     } src_udfy_jpeg;
268 
269     /* 0x00000450 reg276 */
270     struct {
271         RK_U32 csc_wgt_b2u_jpeg    : 9;
272         RK_U32 csc_wgt_g2u_jpeg    : 9;
273         RK_U32 csc_wgt_r2u_jpeg    : 9;
274         RK_U32 reserved            : 5;
275     } src_udfu_jpeg;
276 
277     /* 0x00000454 reg277 */
278     struct {
279         RK_U32 csc_wgt_b2v_jpeg    : 9;
280         RK_U32 csc_wgt_g2v_jpeg    : 9;
281         RK_U32 csc_wgt_r2v_jpeg    : 9;
282         RK_U32 reserved            : 5;
283     } src_udfv_jpeg;
284 
285     /* 0x00000458 reg278 */
286     struct {
287         RK_U32 csc_ofst_v_jpeg    : 8;
288         RK_U32 csc_ofst_u_jpeg    : 8;
289         RK_U32 csc_ofst_y_jpeg    : 5;
290         RK_U32 reserved           : 11;
291     } src_udfo_jpeg;
292 
293     /* 0x0000045c reg279 */
294     struct {
295         RK_U32 cr_force_value_jpeg     : 8;
296         RK_U32 cb_force_value_jpeg     : 8;
297         RK_U32 chroma_force_en_jpeg    : 1;
298         RK_U32 reserved                : 9;
299         RK_U32 src_mirr_jpeg           : 1;
300         RK_U32 src_rot_jpeg            : 2;
301         RK_U32 reserved1               : 1;
302         RK_U32 rkfbcd_en_jpeg          : 1;
303         RK_U32 reserved2               : 1;
304     } src_proc_jpeg;
305 
306     /* 0x00000460 reg280 */
307     struct {
308         RK_U32 pic_ofst_x_jpeg    : 14;
309         RK_U32 reserved           : 2;
310         RK_U32 pic_ofst_y_jpeg    : 14;
311         RK_U32 reserved1          : 2;
312     } pic_ofst_jpeg;
313 
314     /* 0x00000464 reg281 */
315     struct {
316         RK_U32 src_strd0_jpeg    : 21;
317         RK_U32 reserved          : 11;
318     } src_strd0_jpeg;
319 
320     /* 0x00000468 reg282 */
321     struct {
322         RK_U32 src_strd1_jpeg    : 16;
323         RK_U32 reserved          : 16;
324     } src_strd1_jpeg;
325 
326     /* 0x0000046c reg283 */
327     struct {
328         RK_U32 pp_corner_filter_strength_jpeg      : 2;
329         RK_U32 reserved                            : 2;
330         RK_U32 pp_edge_filter_strength_jpeg        : 2;
331         RK_U32 reserved1                           : 2;
332         RK_U32 pp_internal_filter_strength_jpeg    : 2;
333         RK_U32 reserved2                           : 22;
334     } src_flt_cfg_jpeg;
335 
336     /* 0x00000470 reg284 */
337     struct {
338         RK_U32 jpeg_bias_y    : 15;
339         RK_U32 reserved       : 17;
340     } jpeg_y_cfg;
341 
342     /* 0x00000474 reg285 */
343     struct {
344         RK_U32 jpeg_bias_u    : 15;
345         RK_U32 reserved       : 17;
346     } jpeg_u_cfg;
347 
348     /* 0x00000478 reg286 */
349     struct {
350         RK_U32 jpeg_bias_v    : 15;
351         RK_U32 reserved       : 17;
352     } jpeg_v_cfg;
353 
354     /* 0x0000047c reg287 */
355     struct {
356         RK_U32 jpeg_ri              : 25;
357         RK_U32 jpeg_out_mode        : 1;
358         RK_U32 jpeg_start_rst_m     : 3;
359         RK_U32 jpeg_pic_last_ecs    : 1;
360         RK_U32 reserved             : 1;
361         RK_U32 jpeg_stnd            : 1;
362     } jpeg_base_cfg;
363 
364     /* 0x00000480 reg288 */
365     struct {
366         RK_U32 uvc_partition0_len_jpeg    : 12;
367         RK_U32 uvc_partition_len_jpeg     : 12;
368         RK_U32 uvc_skip_len_jpeg          : 6;
369         RK_U32 reserved                   : 2;
370     } uvc_cfg_jpeg;
371 
372     /* 0x00000484 reg289 */
373     struct {
374         RK_U32 reserved          : 4;
375         RK_U32 eslf_badr_jpeg    : 28;
376     } adr_eslf_jpeg;
377 
378     /* 0x00000488 reg290 */
379     struct {
380         RK_U32 eslf_rptr_jpeg    : 10;
381         RK_U32 eslf_wptr_jpeg    : 10;
382         RK_U32 eslf_blen_jpeg    : 10;
383         RK_U32 eslf_updt_jpeg    : 2;
384     } eslf_buf_jpeg;
385 
386     /* 0x48c */
387     RK_U32 reserved_291;
388 
389     /* 0x00000490 reg292 */
390     struct {
391         RK_U32 roi0_rdoq_start_x    : 11;
392         RK_U32 roi0_rdoq_start_y    : 11;
393         RK_U32 reserved             : 3;
394         RK_U32 roi0_rdoq_level      : 6;
395         RK_U32 roi0_rdoq_en         : 1;
396     } jpeg_roi0_cfg0;
397 
398     /* 0x00000494 reg293 */
399     struct {
400         RK_U32 roi0_rdoq_width_m1     : 11;
401         RK_U32 roi0_rdoq_height_m1    : 11;
402         RK_U32 reserved               : 3;
403         RK_U32 frm_rdoq_level         : 6;
404         RK_U32 frm_rdoq_en            : 1;
405     } jpeg_roi0_cfg1;
406 
407     /* 0x00000498 reg294 */
408     struct {
409         RK_U32 roi1_rdoq_start_x    : 11;
410         RK_U32 roi1_rdoq_start_y    : 11;
411         RK_U32 reserved             : 3;
412         RK_U32 roi1_rdoq_level      : 6;
413         RK_U32 roi1_rdoq_en         : 1;
414     } jpeg_roi1_cfg0;
415 
416     /* 0x0000049c reg295 */
417     struct {
418         RK_U32 roi1_rdoq_width_m1     : 11;
419         RK_U32 roi1_rdoq_height_m1    : 11;
420         RK_U32 reserved               : 10;
421     } jpeg_roi1_cfg1;
422 
423     /* 0x000004a0 reg296 */
424     struct {
425         RK_U32 roi2_rdoq_start_x    : 11;
426         RK_U32 roi2_rdoq_start_y    : 11;
427         RK_U32 reserved             : 3;
428         RK_U32 roi2_rdoq_level      : 6;
429         RK_U32 roi2_rdoq_en         : 1;
430     } jpeg_roi2_cfg0;
431 
432     /* 0x000004a4 reg297 */
433     struct {
434         RK_U32 roi2_rdoq_width_m1     : 11;
435         RK_U32 roi2_rdoq_height_m1    : 11;
436         RK_U32 reserved               : 10;
437     } jpeg_roi2_cfg1;
438 
439     /* 0x000004a8 reg298 */
440     struct {
441         RK_U32 roi3_rdoq_start_x    : 11;
442         RK_U32 roi3_rdoq_start_y    : 11;
443         RK_U32 reserved             : 3;
444         RK_U32 roi3_rdoq_level      : 6;
445         RK_U32 roi3_rdoq_en         : 1;
446     } jpeg_roi3_cfg0;
447 
448     /* 0x000004ac reg299 */
449     struct {
450         RK_U32 roi3_rdoq_width_m1     : 11;
451         RK_U32 roi3_rdoq_height_m1    : 11;
452         RK_U32 reserved               : 10;
453     } jpeg_roi3_cfg1;
454 
455     /* 0x000004b0 reg300 */
456     struct {
457         RK_U32 roi4_rdoq_start_x    : 11;
458         RK_U32 roi4_rdoq_start_y    : 11;
459         RK_U32 reserved             : 3;
460         RK_U32 roi4_rdoq_level      : 6;
461         RK_U32 roi4_rdoq_en         : 1;
462     } jpeg_roi4_cfg0;
463 
464     /* 0x000004b4 reg301 */
465     struct {
466         RK_U32 roi4_rdoq_width_m1     : 11;
467         RK_U32 roi4_rdoq_height_m1    : 11;
468         RK_U32 reserved               : 10;
469     } jpeg_roi4_cfg1;
470 
471     /* 0x000004b8 reg302 */
472     struct {
473         RK_U32 roi5_rdoq_start_x    : 11;
474         RK_U32 roi5_rdoq_start_y    : 11;
475         RK_U32 reserved             : 3;
476         RK_U32 roi5_rdoq_level      : 6;
477         RK_U32 roi5_rdoq_en         : 1;
478     } jpeg_roi5_cfg0;
479 
480     /* 0x000004bc reg303 */
481     struct {
482         RK_U32 roi5_rdoq_width_m1     : 11;
483         RK_U32 roi5_rdoq_height_m1    : 11;
484         RK_U32 reserved               : 10;
485     } jpeg_roi5_cfg1;
486 
487     /* 0x000004c0 reg304 */
488     struct {
489         RK_U32 roi6_rdoq_start_x    : 11;
490         RK_U32 roi6_rdoq_start_y    : 11;
491         RK_U32 reserved             : 3;
492         RK_U32 roi6_rdoq_level      : 6;
493         RK_U32 roi6_rdoq_en         : 1;
494     } jpeg_roi6_cfg0;
495 
496     /* 0x000004c4 reg305 */
497     struct {
498         RK_U32 roi6_rdoq_width_m1     : 11;
499         RK_U32 roi6_rdoq_height_m1    : 11;
500         RK_U32 reserved               : 10;
501     } jpeg_roi6_cfg1;
502 
503     /* 0x000004c8 reg306 */
504     struct {
505         RK_U32 roi7_rdoq_start_x    : 11;
506         RK_U32 roi7_rdoq_start_y    : 11;
507         RK_U32 reserved             : 3;
508         RK_U32 roi7_rdoq_level      : 6;
509         RK_U32 roi7_rdoq_en         : 1;
510     } jpeg_roi7_cfg0;
511 
512     /* 0x000004cc reg307 */
513     struct {
514         RK_U32 roi7_rdoq_width_m1     : 11;
515         RK_U32 roi7_rdoq_height_m1    : 11;
516         RK_U32 reserved               : 10;
517     } jpeg_roi7_cfg1;
518 
519     /* 0x000004d0 reg308 */
520     struct {
521         RK_U32 roi8_rdoq_start_x    : 11;
522         RK_U32 roi8_rdoq_start_y    : 11;
523         RK_U32 reserved             : 3;
524         RK_U32 roi8_rdoq_level      : 6;
525         RK_U32 roi8_rdoq_en         : 1;
526     } jpeg_roi8_cfg0;
527 
528     /* 0x000004d4 reg309 */
529     struct {
530         RK_U32 roi8_rdoq_width_m1     : 11;
531         RK_U32 roi8_rdoq_height_m1    : 11;
532         RK_U32 reserved               : 10;
533     } jpeg_roi8_cfg1;
534 
535     /* 0x000004d8 reg310 */
536     struct {
537         RK_U32 roi9_rdoq_start_x    : 11;
538         RK_U32 roi9_rdoq_start_y    : 11;
539         RK_U32 reserved             : 3;
540         RK_U32 roi9_rdoq_level      : 6;
541         RK_U32 roi9_rdoq_en         : 1;
542     } jpeg_roi9_cfg0;
543 
544     /* 0x000004dc reg311 */
545     struct {
546         RK_U32 roi9_rdoq_width_m1     : 11;
547         RK_U32 roi9_rdoq_height_m1    : 11;
548         RK_U32 reserved               : 10;
549     } jpeg_roi9_cfg1;
550 
551     /* 0x000004e0 reg312 */
552     struct {
553         RK_U32 roi10_rdoq_start_x    : 11;
554         RK_U32 roi10_rdoq_start_y    : 11;
555         RK_U32 reserved              : 3;
556         RK_U32 roi10_rdoq_level      : 6;
557         RK_U32 roi10_rdoq_en         : 1;
558     } jpeg_roi10_cfg0;
559 
560     /* 0x000004e4 reg313 */
561     struct {
562         RK_U32 roi10_rdoq_width_m1     : 11;
563         RK_U32 roi10_rdoq_height_m1    : 11;
564         RK_U32 reserved                : 10;
565     } jpeg_roi10_cfg1;
566 
567     /* 0x000004e8 reg314 */
568     struct {
569         RK_U32 roi11_rdoq_start_x    : 11;
570         RK_U32 roi11_rdoq_start_y    : 11;
571         RK_U32 reserved              : 3;
572         RK_U32 roi11_rdoq_level      : 6;
573         RK_U32 roi11_rdoq_en         : 1;
574     } jpeg_roi11_cfg0;
575 
576     /* 0x000004ec reg315 */
577     struct {
578         RK_U32 roi11_rdoq_width_m1     : 11;
579         RK_U32 roi11_rdoq_height_m1    : 11;
580         RK_U32 reserved                : 10;
581     } jpeg_roi11_cfg1;
582 
583     /* 0x000004f0 reg316 */
584     struct {
585         RK_U32 roi12_rdoq_start_x    : 11;
586         RK_U32 roi12_rdoq_start_y    : 11;
587         RK_U32 reserved              : 3;
588         RK_U32 roi12_rdoq_level      : 6;
589         RK_U32 roi12_rdoq_en         : 1;
590     } jpeg_roi12_cfg0;
591 
592     /* 0x000004f4 reg317 */
593     struct {
594         RK_U32 roi12_rdoq_width_m1     : 11;
595         RK_U32 roi12_rdoq_height_m1    : 11;
596         RK_U32 reserved                : 10;
597     } jpeg_roi12_cfg1;
598 
599     /* 0x000004f8 reg318 */
600     struct {
601         RK_U32 roi13_rdoq_start_x    : 11;
602         RK_U32 roi13_rdoq_start_y    : 11;
603         RK_U32 reserved              : 3;
604         RK_U32 roi13_rdoq_level      : 6;
605         RK_U32 roi13_rdoq_en         : 1;
606     } jpeg_roi13_cfg0;
607 
608     /* 0x000004fc reg319 */
609     struct {
610         RK_U32 roi13_rdoq_width_m1     : 11;
611         RK_U32 roi13_rdoq_height_m1    : 11;
612         RK_U32 reserved                : 10;
613     } jpeg_roi13_cfg1;
614 
615     /* 0x00000500 reg320 */
616     struct {
617         RK_U32 roi14_rdoq_start_x    : 11;
618         RK_U32 roi14_rdoq_start_y    : 11;
619         RK_U32 reserved              : 3;
620         RK_U32 roi14_rdoq_level      : 6;
621         RK_U32 roi14_rdoq_en         : 1;
622     } jpeg_roi14_cfg0;
623 
624     /* 0x00000504 reg321 */
625     struct {
626         RK_U32 roi14_rdoq_width_m1     : 11;
627         RK_U32 roi14_rdoq_height_m1    : 11;
628         RK_U32 reserved                : 10;
629     } jpeg_roi14_cfg1;
630 
631     /* 0x00000508 reg322 */
632     struct {
633         RK_U32 roi15_rdoq_start_x    : 11;
634         RK_U32 roi15_rdoq_start_y    : 11;
635         RK_U32 reserved              : 3;
636         RK_U32 roi15_rdoq_level      : 6;
637         RK_U32 roi15_rdoq_en         : 1;
638     } jpeg_roi15_cfg0;
639 
640     /* 0x0000050c reg323 */
641     struct {
642         RK_U32 roi15_rdoq_width_m1     : 11;
643         RK_U32 roi15_rdoq_height_m1    : 11;
644         RK_U32 reserved                : 10;
645     } jpeg_roi15_cfg1;
646 
647     /* 0x510 - 0x51c */
648     RK_U32 reserved324_327[4];
649 
650     /* 0x00000520 reg328 */
651     struct {
652         RK_U32 reserved        : 4;
653         RK_U32 base_addr_md    : 28;
654     } adr_md_vpp;
655 
656     /* 0x00000524 reg329 */
657     struct {
658         RK_U32 reserved        : 4;
659         RK_U32 base_addr_od    : 28;
660     } adr_od_vpp;
661 
662     /* 0x00000528 reg330 */
663     struct {
664         RK_U32 reserved             : 4;
665         RK_U32 base_addr_ref_mdw    : 28;
666     } adr_ref_mdw;
667 
668     /* 0x0000052c reg331 */
669     struct {
670         RK_U32 reserved             : 4;
671         RK_U32 base_addr_ref_mdr    : 28;
672     } adr_ref_mdr;
673 
674     /* 0x00000530 reg332 */
675     struct {
676         RK_U32 sto_stride_md          : 8;
677         RK_U32 sto_stride_od          : 8;
678         RK_U32 cur_frm_en_md          : 1;
679         RK_U32 ref_frm_en_md          : 1;
680         RK_U32 switch_sad_md          : 2;
681         RK_U32 night_mode_en_md       : 1;
682         RK_U32 flycatkin_flt_en_md    : 1;
683         RK_U32 en_od                  : 1;
684         RK_U32 background_en_od       : 1;
685         RK_U32 sad_comp_en_od         : 1;
686         RK_U32 reserved               : 6;
687         RK_U32 vepu_pp_en             : 1;
688     } vpp_base_cfg;
689 
690     /* 0x00000534 reg333 */
691     struct {
692         RK_U32 thres_sad_md          : 12;
693         RK_U32 thres_move_md         : 3;
694         RK_U32 reserved              : 1;
695         RK_U32 thres_dust_move_md    : 4;
696         RK_U32 thres_dust_blk_md     : 3;
697         RK_U32 reserved1             : 1;
698         RK_U32 thres_dust_chng_md    : 8;
699     } thd_md_vpp;
700 
701     /* 0x00000538 reg334 */
702     struct {
703         RK_U32 thres_complex_od        : 12;
704         RK_U32 thres_complex_cnt_od    : 3;
705         RK_U32 thres_sad_od            : 14;
706         RK_U32 reserved                : 3;
707     } thd_od_vpp;
708 } H264eVepu511Frame;
709 
710 /* class: param */
711 /* 0x00001700 reg1472 - 0x000019cc reg1651 */
712 typedef struct H264eVepu511Param_t {
713     /* 0x00001700 reg1472 */
714     struct {
715         RK_U32 iprd_tthdy4_0    : 12;
716         RK_U32 reserved         : 4;
717         RK_U32 iprd_tthdy4_1    : 12;
718         RK_U32 reserved1        : 4;
719     } iprd_tthdy4_0;
720 
721     /* 0x00001704 reg1473 */
722     struct {
723         RK_U32 iprd_tthdy4_2    : 12;
724         RK_U32 reserved         : 4;
725         RK_U32 iprd_tthdy4_3    : 12;
726         RK_U32 reserved1        : 4;
727     } iprd_tthdy4_1;
728 
729     /* 0x00001708 reg1474 */
730     struct {
731         RK_U32 iprd_tthdc8_0    : 12;
732         RK_U32 reserved         : 4;
733         RK_U32 iprd_tthdc8_1    : 12;
734         RK_U32 reserved1        : 4;
735     } iprd_tthdc8_0;
736 
737     /* 0x0000170c reg1475 */
738     struct {
739         RK_U32 iprd_tthdc8_2    : 12;
740         RK_U32 reserved         : 4;
741         RK_U32 iprd_tthdc8_3    : 12;
742         RK_U32 reserved1        : 4;
743     } iprd_tthdc8_1;
744 
745     /* 0x00001710 reg1476 */
746     struct {
747         RK_U32 iprd_tthdy8_0    : 12;
748         RK_U32 reserved         : 4;
749         RK_U32 iprd_tthdy8_1    : 12;
750         RK_U32 reserved1        : 4;
751     } iprd_tthdy8_0;
752 
753     /* 0x00001714 reg1477 */
754     struct {
755         RK_U32 iprd_tthdy8_2    : 12;
756         RK_U32 reserved         : 4;
757         RK_U32 iprd_tthdy8_3    : 12;
758         RK_U32 reserved1        : 4;
759     } iprd_tthdy8_1;
760 
761     /* 0x00001718 reg1478 */
762     struct {
763         RK_U32 iprd_tthd_ul    : 12;
764         RK_U32 reserved        : 20;
765     } iprd_tthd_ul;
766 
767     /* 0x0000171c reg1479 */
768     struct {
769         RK_U32 iprd_wgty8_0    : 8;
770         RK_U32 iprd_wgty8_1    : 8;
771         RK_U32 iprd_wgty8_2    : 8;
772         RK_U32 iprd_wgty8_3    : 8;
773     } iprd_wgty8;
774 
775     /* 0x00001720 reg1480 */
776     struct {
777         RK_U32 iprd_wgty4_0    : 8;
778         RK_U32 iprd_wgty4_1    : 8;
779         RK_U32 iprd_wgty4_2    : 8;
780         RK_U32 iprd_wgty4_3    : 8;
781     } iprd_wgty4;
782 
783     /* 0x00001724 reg1481 */
784     struct {
785         RK_U32 iprd_wgty16_0    : 8;
786         RK_U32 iprd_wgty16_1    : 8;
787         RK_U32 iprd_wgty16_2    : 8;
788         RK_U32 iprd_wgty16_3    : 8;
789     } iprd_wgty16;
790 
791     /* 0x00001728 reg1482 */
792     struct {
793         RK_U32 iprd_wgtc8_0    : 8;
794         RK_U32 iprd_wgtc8_1    : 8;
795         RK_U32 iprd_wgtc8_2    : 8;
796         RK_U32 iprd_wgtc8_3    : 8;
797     } iprd_wgtc8;
798 
799     /* 0x172c */
800     RK_U32 reserved_1483;
801 
802     /* 0x00001730 reg1484 */
803     struct {
804         RK_U32 bias_madi_th0    : 8;
805         RK_U32 bias_madi_th1    : 8;
806         RK_U32 bias_madi_th2    : 8;
807         RK_U32 reserved         : 8;
808     } bias_madi_thd_comb;
809 
810     /* 0x00001738 reg1486 */
811     struct {
812         RK_U32 bias_i_val3    : 10;
813         RK_U32 reserved       : 22;
814     } qnt1_i_bias_comb;
815 
816     /* 0x0000173c reg1487 */
817     struct {
818         RK_U32 bias_p_val0    : 10;
819         RK_U32 bias_p_val1    : 10;
820         RK_U32 bias_p_val2    : 10;
821         RK_U32 reserved       : 2;
822     } qnt0_p_bias_comb;
823 
824     /* 0x00001740 reg1488 */
825     struct {
826         RK_U32 bias_p_val3    : 10;
827         RK_U32 reserved       : 22;
828     } qnt1_p_bias_comb;
829 
830     /* 0x1744 - 0x175c */
831     RK_U32 reserved1489_1495[7];
832 
833     /* 0x00001760 reg1496 */
834     struct {
835         RK_U32 cime_pmv_num      : 1;
836         RK_U32 cime_fuse         : 1;
837         RK_U32 reserved          : 2;
838         RK_U32 move_lambda       : 4;
839         RK_U32 rime_lvl_mrg      : 2;
840         RK_U32 rime_prelvl_en    : 2;
841         RK_U32 rime_prersu_en    : 3;
842         RK_U32 fme_lvl_mrg       : 1;
843         RK_U32 reserved1         : 16;
844     } me_sqi_comb;
845 
846     /* 0x00001764 reg1497 */
847     struct {
848         RK_U32 cime_mvd_th0    : 9;
849         RK_U32 reserved        : 1;
850         RK_U32 cime_mvd_th1    : 9;
851         RK_U32 reserved1       : 1;
852         RK_U32 cime_mvd_th2    : 9;
853         RK_U32 reserved2       : 3;
854     }  cime_mvd_th_comb;
855 
856     /* 0x00001768 reg1498 */
857     struct {
858         RK_U32 cime_madp_th       : 12;
859         RK_U32 ratio_consi_cfg    : 4;
860         RK_U32 ratio_bmv_dist     : 4;
861         RK_U32 reserved           : 12;
862     } cime_madp_th_comb;
863 
864     /* 0x0000176c reg1499 */
865     struct {
866         RK_U32 cime_multi0    : 8;
867         RK_U32 cime_multi1    : 8;
868         RK_U32 cime_multi2    : 8;
869         RK_U32 cime_multi3    : 8;
870     } cime_multi_comb;
871 
872     /* 0x00001770 reg1500 */
873     struct {
874         RK_U32 rime_mvd_th0    : 3;
875         RK_U32 reserved        : 1;
876         RK_U32 rime_mvd_th1    : 3;
877         RK_U32 reserved1       : 9;
878         RK_U32 fme_madp_th     : 12;
879         RK_U32 reserved2       : 4;
880     } rime_mvd_th_comb;
881 
882     /* 0x00001774 reg1501 */
883     struct {
884         RK_U32 rime_madp_th0    : 12;
885         RK_U32 reserved         : 4;
886         RK_U32 rime_madp_th1    : 12;
887         RK_U32 reserved1        : 4;
888     } rime_madp_th_comb;
889 
890     /* 0x00001778 reg1502 */
891     struct {
892         RK_U32 rime_multi0    : 10;
893         RK_U32 rime_multi1    : 10;
894         RK_U32 rime_multi2    : 10;
895         RK_U32 reserved       : 2;
896     } rime_multi_comb;
897 
898     /* 0x0000177c reg1503 */
899     struct {
900         RK_U32 cmv_th0     : 8;
901         RK_U32 cmv_th1     : 8;
902         RK_U32 cmv_th2     : 8;
903         RK_U32 reserved    : 8;
904     } cmv_st_th_comb;
905 
906     /* 0x1780 - 0x18fc */
907     RK_U32 reserved1504_1599[96];
908 
909     /* 0x00001900 reg1600 - 0x000019cc reg1651*/
910     RK_U32 rdo_wgta_qp_grpa_0_51[52];
911 } H264eVepu511Param;
912 
913 /* class: rdo/q_i */
914 /* 0x00002000 reg2048 - 0x000020b8 reg2094 */
915 typedef struct H264eVepu511SqiCfg_t {
916     /* 0x00002000 reg2048 - 0x00002010 reg2052*/
917     RK_U32 reserved_2048_2052[5];
918 
919     /* 0x00002014 reg2053 */
920     struct {
921         RK_U32 rdo_smear_lvl16_multi    : 8;
922         RK_U32 rdo_smear_dlt_qp         : 4;
923         RK_U32 reserved                 : 1;
924         RK_U32 stated_mode              : 2;
925         RK_U32 rdo_smear_en             : 1;
926         RK_U32 reserved1                : 16;
927     } smear_opt_cfg;
928 
929     /* 0x00002018 reg2054 */
930     struct {
931         RK_U32 madp_cur_thd0    : 12;
932         RK_U32 reserved         : 4;
933         RK_U32 madp_cur_thd1    : 12;
934         RK_U32 reserved1        : 4;
935     } smear_madp_thd0;
936 
937     /* 0x0000201c reg2055 */
938     struct {
939         RK_U32 madp_cur_thd2    : 12;
940         RK_U32 reserved         : 4;
941         RK_U32 madp_cur_thd3    : 12;
942         RK_U32 reserved1        : 4;
943     } smear_madp_thd1;
944 
945     /* 0x00002020 reg2056 */
946     struct {
947         RK_U32 madp_around_thd0    : 12;
948         RK_U32 reserved            : 4;
949         RK_U32 madp_around_thd1    : 12;
950         RK_U32 reserved1           : 4;
951     } smear_madp_thd2;
952 
953     /* 0x00002024 reg2057 */
954     struct {
955         RK_U32 madp_around_thd2    : 12;
956         RK_U32 reserved            : 4;
957         RK_U32 madp_around_thd3    : 12;
958         RK_U32 reserved1           : 4;
959     } smear_madp_thd3;
960 
961     /* 0x00002028 reg2058 */
962     struct {
963         RK_U32 madp_around_thd4    : 12;
964         RK_U32 reserved            : 4;
965         RK_U32 madp_around_thd5    : 12;
966         RK_U32 reserved1           : 4;
967     } smear_madp_thd4;
968 
969     /* 0x0000202c reg2059 */
970     struct {
971         RK_U32 madp_ref_thd0    : 12;
972         RK_U32 reserved         : 4;
973         RK_U32 madp_ref_thd1    : 12;
974         RK_U32 reserved1        : 4;
975     } smear_madp_thd5;
976 
977     /* 0x00002030 reg2060 */
978     struct {
979         RK_U32 cnt_cur_thd0    : 4;
980         RK_U32 reserved        : 4;
981         RK_U32 cnt_cur_thd1    : 4;
982         RK_U32 reserved1       : 4;
983         RK_U32 cnt_cur_thd2    : 4;
984         RK_U32 reserved2       : 4;
985         RK_U32 cnt_cur_thd3    : 4;
986         RK_U32 reserved3       : 4;
987     } smear_cnt_thd0;
988 
989     /* 0x00002034 reg2061 */
990     struct {
991         RK_U32 cnt_around_thd0    : 4;
992         RK_U32 reserved           : 4;
993         RK_U32 cnt_around_thd1    : 4;
994         RK_U32 reserved1          : 4;
995         RK_U32 cnt_around_thd2    : 4;
996         RK_U32 reserved2          : 4;
997         RK_U32 cnt_around_thd3    : 4;
998         RK_U32 reserved3          : 4;
999     } smear_cnt_thd1;
1000 
1001     /* 0x00002038 reg2062 */
1002     struct {
1003         RK_U32 cnt_around_thd4    : 4;
1004         RK_U32 reserved           : 4;
1005         RK_U32 cnt_around_thd5    : 4;
1006         RK_U32 reserved1          : 4;
1007         RK_U32 cnt_around_thd6    : 4;
1008         RK_U32 reserved2          : 4;
1009         RK_U32 cnt_around_thd7    : 4;
1010         RK_U32 reserved3          : 4;
1011     } smear_cnt_thd2;
1012 
1013     /* 0x0000203c reg2063 */
1014     struct {
1015         RK_U32 cnt_ref_thd0    : 4;
1016         RK_U32 reserved        : 4;
1017         RK_U32 cnt_ref_thd1    : 4;
1018         RK_U32 reserved1       : 20;
1019     } smear_cnt_thd3;
1020 
1021     /* 0x00002040 reg2064 */
1022     struct {
1023         RK_U32 resi_small_cur_th0    : 6;
1024         RK_U32 reserved              : 2;
1025         RK_U32 resi_big_cur_th0      : 6;
1026         RK_U32 reserved1             : 2;
1027         RK_U32 resi_small_cur_th1    : 6;
1028         RK_U32 reserved2             : 2;
1029         RK_U32 resi_big_cur_th1      : 6;
1030         RK_U32 reserved3             : 2;
1031     } smear_resi_thd0;
1032 
1033     /* 0x00002044 reg2065 */
1034     struct {
1035         RK_U32 resi_small_around_th0    : 6;
1036         RK_U32 reserved                 : 2;
1037         RK_U32 resi_big_around_th0      : 6;
1038         RK_U32 reserved1                : 2;
1039         RK_U32 resi_small_around_th1    : 6;
1040         RK_U32 reserved2                : 2;
1041         RK_U32 resi_big_around_th1      : 6;
1042         RK_U32 reserved3                : 2;
1043     } smear_resi_thd1;
1044 
1045     /* 0x00002048 reg2066 */
1046     struct {
1047         RK_U32 resi_small_around_th2    : 6;
1048         RK_U32 reserved                 : 2;
1049         RK_U32 resi_big_around_th2      : 6;
1050         RK_U32 reserved1                : 2;
1051         RK_U32 resi_small_around_th3    : 6;
1052         RK_U32 reserved2                : 2;
1053         RK_U32 resi_big_around_th3      : 6;
1054         RK_U32 reserved3                : 2;
1055     } smear_resi_thd2;
1056 
1057     /* 0x0000204c reg2067 */
1058     struct {
1059         RK_U32 resi_small_ref_th0    : 6;
1060         RK_U32 reserved              : 2;
1061         RK_U32 resi_big_ref_th0      : 6;
1062         RK_U32 reserved1             : 18;
1063     } smear_resi_thd3;
1064 
1065     /* 0x00002050 reg2068 */
1066     struct {
1067         RK_U32 resi_th0    : 8;
1068         RK_U32 reserved    : 8;
1069         RK_U32 resi_th1    : 8;
1070         RK_U32 reserved1   : 8;
1071     } smear_resi_thd4;
1072 
1073     /* 0x00002054 reg2069 */
1074     struct {
1075         RK_U32 madp_cnt_th0    : 4;
1076         RK_U32 madp_cnt_th1    : 4;
1077         RK_U32 madp_cnt_th2    : 4;
1078         RK_U32 madp_cnt_th3    : 4;
1079         RK_U32 reserved        : 16;
1080     } smear_st_thd;
1081 
1082     /* 0x2058 - 0x206c */
1083     RK_U32 reserved_2070;
1084 
1085     /* 0x0000205c reg2071 */
1086     struct {
1087         RK_U32 lid_grdn_blk_cu16_th       : 8;
1088         RK_U32 lid_rmd_intra_jcoef_ang    : 5;
1089         RK_U32 lid_rdo_intra_rcoef_ang    : 5;
1090         RK_U32 lid_rmd_intra_jcoef_dp     : 6;
1091         RK_U32 lid_rdo_intra_rcoef_dp     : 6;
1092         RK_U32 lid_en                     : 1;
1093         RK_U32 reserved                   : 1;
1094     } line_intra_dir_cfg;
1095 
1096     RK_U32 reserved2072_2075[4];
1097 
1098     /* 0x00002070 reg2076 - 0x0000207c reg2079*/
1099     rdo_skip_par rdo_b16_skip;
1100 
1101     /* 0x00002080 reg2080 - 0x00002088 reg2082 */
1102     RK_U32 reserved2080_2082[3];
1103 
1104     /* 0x0000208c reg2083 - 0x00002094 reg2085 */
1105     rdo_noskip_par rdo_b16_inter;
1106 
1107     /* 0x00002098 reg2086 - 0x000020a4 reg2088 */
1108     RK_U32 reserved2086_2088[3];
1109 
1110     /* 0x000020a8 reg2089 - 0x000020ac reg2091 */
1111     rdo_noskip_par rdo_b16_intra;
1112 
1113     /* 0x000020b0 reg2092 */
1114     RK_U32 reserved2092;
1115 
1116     /* 0x000020b4 reg2093 */
1117     struct {
1118         RK_U32 thd0         : 4;
1119         RK_U32 reserved     : 4;
1120         RK_U32 thd1         : 4;
1121         RK_U32 reserved1    : 4;
1122         RK_U32 thd2         : 4;
1123         RK_U32 reserved2    : 4;
1124         RK_U32 thd3         : 4;
1125         RK_U32 reserved3    : 4;
1126     } rdo_b16_intra_atf_cnt_thd;
1127 
1128     /* 0x000020b8 reg2094 */
1129     struct {
1130         RK_U32 big_th0      : 6;
1131         RK_U32 reserved     : 2;
1132         RK_U32 big_th1      : 6;
1133         RK_U32 reserved1    : 2;
1134         RK_U32 small_th0    : 6;
1135         RK_U32 reserved2    : 2;
1136         RK_U32 small_th1    : 6;
1137         RK_U32 reserved3    : 2;
1138     } rdo_atf_resi_thd;
1139 
1140     /* 0x000020bc reg2095 - 0x0000215c reg2135*/
1141     RK_U32 reserved_2095_2135[40];
1142 
1143     /* 0x00002160 reg2136 */
1144     struct {
1145         RK_U32 atr_thd0    : 8;
1146         RK_U32 atr_thd1    : 8;
1147         RK_U32 atr_thd2    : 8;
1148         RK_U32 atr_qp      : 6;
1149         RK_U32 reserved    : 2;
1150     } atr_thd;
1151 
1152     /* 0x00002164 reg2137 */
1153     struct {
1154         RK_U32 atr_lv16_wgt0    : 8;
1155         RK_U32 atr_lv16_wgt1    : 8;
1156         RK_U32 atr_lv16_wgt2    : 8;
1157         RK_U32 reserved         : 8;
1158     } atr_wgt16;
1159 
1160     /* 0x00002168 reg2138 */
1161     struct {
1162         RK_U32 atr_lv8_wgt0    : 8;
1163         RK_U32 atr_lv8_wgt1    : 8;
1164         RK_U32 atr_lv8_wgt2    : 8;
1165         RK_U32 reserved        : 8;
1166     } atr_wgt8;
1167 
1168     /* 0x0000216c reg2139 */
1169     struct {
1170         RK_U32 atr_lv4_wgt0    : 8;
1171         RK_U32 atr_lv4_wgt1    : 8;
1172         RK_U32 atr_lv4_wgt2    : 8;
1173         RK_U32 reserved        : 8;
1174     } atr_wgt4;
1175 } H264eVepu511Sqi;
1176 
1177 /* class: scaling list  */
1178 /* 0x00002200 reg2176- 0x0000268c reg2467*/
1179 typedef struct H264eVepu511SclCfg_t {
1180     /* 0x2200 - 0x227c, valid for h.264 iq_scal_t8_intra0~15 iq_scal_t8_inter0~15*/
1181     RK_U32 tu8_intra_y[16];
1182     RK_U32 tu8_intra_u[16];
1183 
1184     /* 0x2280 - 0x258c*/
1185     RK_U32 reserved_2208_2215[196];
1186 
1187     /* 0x2590 - 0x268c, valid for h.264 q_scal_t8_intra0~31 q_scal_t8_inter0~31*/
1188     RK_U32 q_t8_intra[32];
1189     RK_U32 q_t8_inter[32];
1190 } H264eVepu511SclCfg;
1191 
1192 typedef struct HalVepu511Reg_t {
1193     Vepu511ControlCfg       reg_ctl;
1194     H264eVepu511Frame       reg_frm;
1195     Vepu511RcRoi            reg_rc_roi;
1196     H264eVepu511Param       reg_param;
1197     H264eVepu511Sqi         reg_sqi;
1198     H264eVepu511SclCfg      reg_scl;
1199     Vepu511OsdRegs          reg_osd;
1200     Vepu511Status           reg_st;
1201     Vepu511Dbg              reg_dbg;
1202 } HalVepu511RegSet;
1203 
1204 #endif