xref: /OK3568_Linux_fs/external/mpp/mpp/hal/rkenc/h264e/hal_h264e_vepu540c_reg.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Copyright 2022 Rockchip Electronics Co. LTD
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef __HAL_H264E_VEPU540C_REG_H__
18 #define __HAL_H264E_VEPU540C_REG_H__
19 
20 #include "rk_type.h"
21 #include "vepu540c_common.h"
22 
23 /* class: control/link */
24 /* 0x00000000 reg0 - 0x00000120 reg72 */
25 typedef struct Vepu540cControlCfg_t {
26     /* 0x00000000 reg0 */
27     struct {
28         RK_U32 sub_ver      : 8;
29         RK_U32 cap     : 1;
30         RK_U32 hevc_cap     : 1;
31         RK_U32 reserved     : 2;
32         RK_U32 res_cap      : 4;
33         RK_U32 osd_cap      : 2;
34         RK_U32 filtr_cap    : 2;
35         RK_U32 bfrm_cap     : 1;
36         RK_U32 fbc_cap      : 2;
37         RK_U32 reserved1    : 1;
38         RK_U32 ip_id        : 8;
39     } version;
40 
41     /* 0x4 - 0xc */
42     RK_U32 reserved1_3[3];
43 
44     /* 0x00000010 reg4 */
45     struct {
46         RK_U32 lkt_num     : 8;
47         RK_U32 vepu_cmd    : 2;
48         RK_U32 reserved    : 22;
49     } enc_strt;
50 
51     /* 0x00000014 reg5 */
52     struct {
53         RK_U32 safe_clr     : 1;
54         RK_U32 force_clr    : 1;
55         RK_U32 reserved     : 30;
56     } enc_clr;
57 
58     /* 0x00000018 reg6 */
59     struct {
60         RK_U32 vswm_lcnt_soft    : 14;
61         RK_U32 vswm_fcnt_soft    : 8;
62         RK_U32 reserved          : 2;
63         RK_U32 dvbm_ack_soft     : 1;
64         RK_U32 dvbm_ack_sel      : 1;
65         RK_U32 dvbm_inf_sel      : 1;
66         RK_U32 reserved1         : 5;
67     } vs_ldly;
68 
69     /* 0x1c */
70     RK_U32 reserved_7;
71 
72     /* 0x00000020 reg8 */
73     struct {
74         RK_U32 enc_done_en          : 1;
75         RK_U32 lkt_node_done_en     : 1;
76         RK_U32 sclr_done_en         : 1;
77         RK_U32 vslc_done_en         : 1;
78         RK_U32 vbsf_oflw_en         : 1;
79         RK_U32 vbuf_lens_en         : 1;
80         RK_U32 enc_err_en           : 1;
81         RK_U32 dvbm_fcfg_en         : 1;
82         RK_U32 wdg_en               : 1;
83         RK_U32 lkt_err_int_en       : 1;
84         RK_U32 lkt_err_stop_en      : 1;
85         RK_U32 lkt_force_stop_en    : 1;
86         RK_U32 jslc_done_en         : 1;
87         RK_U32 jbsf_oflw_en         : 1;
88         RK_U32 jbuf_lens_en         : 1;
89         RK_U32 dvbm_dcnt_en         : 1;
90         RK_U32 reserved             : 16;
91     } int_en;
92 
93     /* 0x00000024 reg9 */
94     struct {
95         RK_U32 enc_done_msk          : 1;
96         RK_U32 lkt_node_done_msk     : 1;
97         RK_U32 sclr_done_msk         : 1;
98         RK_U32 vslc_done_msk         : 1;
99         RK_U32 vbsf_oflw_msk         : 1;
100         RK_U32 vbuf_lens_msk         : 1;
101         RK_U32 enc_err_msk           : 1;
102         RK_U32 dvbm_fcfg_msk         : 1;
103         RK_U32 wdg_msk               : 1;
104         RK_U32 lkt_err_int_msk       : 1;
105         RK_U32 lkt_err_stop_msk      : 1;
106         RK_U32 lkt_force_stop_msk    : 1;
107         RK_U32 jslc_done_msk         : 1;
108         RK_U32 jbsf_oflw_msk         : 1;
109         RK_U32 jbuf_lens_msk         : 1;
110         RK_U32 dvbm_dcnt_msk         : 1;
111         RK_U32 reserved              : 16;
112     } int_msk;
113 
114     /* 0x00000028 reg10 */
115     struct {
116         RK_U32 enc_done_clr          : 1;
117         RK_U32 lkt_node_done_clr     : 1;
118         RK_U32 sclr_done_clr         : 1;
119         RK_U32 vslc_done_clr         : 1;
120         RK_U32 vbsf_oflw_clr         : 1;
121         RK_U32 vbuf_lens_clr         : 1;
122         RK_U32 enc_err_clr           : 1;
123         RK_U32 dvbm_fcfg_clr         : 1;
124         RK_U32 wdg_clr               : 1;
125         RK_U32 lkt_err_int_clr       : 1;
126         RK_U32 lkt_err_stop_clr      : 1;
127         RK_U32 lkt_force_stop_clr    : 1;
128         RK_U32 jslc_done_clr         : 1;
129         RK_U32 jbsf_oflw_clr         : 1;
130         RK_U32 jbuf_lens_clr         : 1;
131         RK_U32 dvbm_dcnt_clr         : 1;
132         RK_U32 reserved              : 16;
133     } int_clr;
134 
135     /* 0x0000002c reg11 */
136     struct {
137         RK_U32 enc_done_sta          : 1;
138         RK_U32 lkt_node_done_sta     : 1;
139         RK_U32 sclr_done_sta         : 1;
140         RK_U32 vslc_done_sta         : 1;
141 
142         RK_U32 vbsf_oflw_sta         : 1;
143         RK_U32 vbuf_lens_sta         : 1;
144         RK_U32 enc_err_sta           : 1;
145         RK_U32 dvbm_fcfg_sta         : 1;
146 
147         RK_U32 wdg_sta               : 1;
148         RK_U32 lkt_err_int_sta       : 1;
149         RK_U32 lkt_err_stop_sta      : 1;
150         RK_U32 lkt_force_stop_sta    : 1;
151 
152         RK_U32 jslc_done_sta         : 1;
153         RK_U32 jbsf_oflw_sta         : 1;
154         RK_U32 jbuf_lens_sta         : 1;
155         RK_U32 dvbm_dcnt_sta         : 1;
156 
157         RK_U32 reserved              : 16;
158     } int_sta;
159 
160     /* 0x00000030 reg12 */
161     struct {
162         RK_U32 jpeg_bus_edin        : 4;
163         RK_U32 src_bus_edin         : 4;
164         RK_U32 meiw_bus_edin        : 4;
165         RK_U32 bsw_bus_edin         : 4;
166         RK_U32 lktr_bus_edin        : 4;
167         RK_U32 roir_bus_edin        : 4;
168         RK_U32 lktw_bus_edin        : 4;
169         RK_U32 rec_nfbc_bus_edin    : 4;
170     } dtrns_map;
171 
172     /* 0x00000034 reg13 */
173     struct {
174         RK_U32 reserved        : 16;
175         RK_U32 axi_brsp_cke    : 10;
176         RK_U32 reserved1       : 6;
177     } dtrns_cfg;
178 
179     /* 0x00000038 reg14 */
180     struct {
181         RK_U32 vs_load_thd     : 24;
182         RK_U32 rfp_load_thd    : 8;
183     } enc_wdg;
184 
185     /* 0x0000003c reg15 */
186     struct {
187         RK_U32 hurry_en      : 1;
188         RK_U32 hurry_low     : 3;
189         RK_U32 hurry_mid     : 3;
190         RK_U32 hurry_high    : 3;
191         RK_U32 reserved      : 22;
192     } qos_cfg;
193 
194     /* 0x00000040 reg16 */
195     struct {
196         RK_U32 qos_period    : 16;
197         RK_U32 reserved      : 16;
198     } qos_perd;
199 
200     /* 0x00000044 reg17 */
201     RK_U32 hurry_thd_low;
202 
203     /* 0x00000048 reg18 */
204     RK_U32 hurry_thd_mid;
205 
206     /* 0x0000004c reg19 */
207     RK_U32 hurry_thd_high;
208 
209     /* 0x00000050 reg20 */
210     struct {
211         RK_U32 idle_en_core    : 1;
212         RK_U32 idle_en_axi     : 1;
213         RK_U32 idle_en_ahb     : 1;
214         RK_U32 reserved        : 29;
215     } enc_idle_en;
216 
217     /* 0x00000054 reg21 */
218     struct {
219         RK_U32 cke                 : 1;
220         RK_U32 resetn_hw_en        : 1;
221         RK_U32 enc_done_tmvp_en    : 1;
222         RK_U32 sram_ckg_en         : 1;
223         RK_U32 link_err_stop       : 1;
224         RK_U32 reserved            : 27;
225     } func_en;
226 
227     /* 0x00000058 reg22 */
228     struct {
229         RK_U32 tq8_ckg           : 1;
230         RK_U32 tq4_ckg           : 1;
231         RK_U32 bits_ckg_8x8      : 1;
232         RK_U32 bits_ckg_4x4_1    : 1;
233         RK_U32 bits_ckg_4x4_0    : 1;
234         RK_U32 inter_mode_ckg    : 1;
235         RK_U32 inter_ctrl_ckg    : 1;
236         RK_U32 inter_pred_ckg    : 1;
237         RK_U32 intra8_ckg        : 1;
238         RK_U32 intra4_ckg        : 1;
239         RK_U32 reserved          : 22;
240     } rdo_ckg;
241 
242     /* 0x0000005c reg23 */
243     struct {
244         RK_U32 core_id     : 2;
245         RK_U32 reserved    : 30;
246     } enc_id;
247     /* 0x00000060 reg24 */
248     struct {
249         RK_U32 dvbm_en            : 1;
250         RK_U32 src_badr_sel       : 1;
251         RK_U32 vinf_frm_match     : 1;
252         RK_U32 reserved           : 1;
253         RK_U32 vrsp_half_cycle    : 4;
254         RK_U32 reserved1          : 24;
255     } dvbm_cfg;
256 } Vepu540cControlCfg;
257 
258 /* class: buffer/video syntax */
259 /* 0x00000280 reg160 - 0x000003f4 reg253*/
260 typedef struct Vepu540cBaseCfg_t {
261     vepu540c_online online_addr;
262     /* 0x00000280 reg160 */
263     RK_U32 adr_src0;
264 
265     /* 0x00000284 reg161 */
266     RK_U32 adr_src1;
267 
268     /* 0x00000288 reg162 */
269     RK_U32 adr_src2;
270 
271     /* 0x0000028c reg163 */
272     RK_U32 rfpw_h_addr;
273 
274     /* 0x00000290 reg164 */
275     RK_U32 rfpw_b_addr;
276 
277     /* 0x00000294 reg165 */
278     RK_U32 rfpr_h_addr;
279 
280     /* 0x00000298 reg166 */
281     RK_U32 rfpr_b_addr;
282 
283     /* 0x0000029c reg167 */
284     RK_U32 cmvw_addr;
285 
286     /* 0x000002a0 reg168 */
287     RK_U32 cmvr_addr;
288 
289     /* 0x000002a4 reg169 */
290     RK_U32 dspw_addr;
291 
292     /* 0x000002a8 reg170 */
293     RK_U32 dspr_addr;
294 
295     /* 0x000002ac reg171 */
296     RK_U32 meiw_addr;
297 
298     /* 0x000002b0 reg172 */
299     RK_U32 bsbt_addr;
300 
301     /* 0x000002b4 reg173 */
302     RK_U32 bsbb_addr;
303 
304     /* 0x000002b8 reg174 */
305     RK_U32 adr_bsbs;
306 
307     /* 0x000002bc reg175 */
308     RK_U32 bsbr_addr;
309 
310     /* 0x000002c0 reg176 */
311     RK_U32 lpfw_addr;
312 
313     /* 0x000002c4 reg177 */
314     RK_U32 lpfr_addr;
315 
316     /* 0x000002c8 reg178 */
317     RK_U32 ebuft_addr ;
318 
319     /* 0x000002cc reg179 */
320     RK_U32 ebufb_addr;
321 
322     /* 0x000002d0 reg180 */
323     RK_U32 rfpt_h_addr;
324 
325     /* 0x000002d4 reg180 */
326     RK_U32 rfpb_h_addr;
327 
328     /* 0x000002d8 reg182 */
329     RK_U32 rfpt_b_addr;
330 
331     /* 0x000002dc reg183 */
332     RK_U32 adr_rfpb_b;
333 
334     /* 0x000002e0 reg184 */
335     RK_U32 adr_smear_rd;
336 
337     /* 0x000002e4 reg185 */
338     RK_U32 adr_smear_wr;
339 
340     /* 0x000002e8 reg186 */
341     RK_U32 adr_roir ;
342 
343     /* 0x2ec - 0x2fc */
344     RK_U32 reserved187_191[5];
345 
346     /* 0x00000300 reg192 */
347     struct {
348         RK_U32 enc_stnd           : 2;
349         RK_U32 cur_frm_ref        : 1;
350         RK_U32 mei_stor           : 1;
351 
352         RK_U32 bs_scp             : 1;
353         RK_U32 reserved           : 3;
354 
355         RK_U32 pic_qp             : 6;
356         RK_U32 num_pic_tot_cur    : 5;
357         RK_U32 log2_ctu_num       : 5;
358         RK_U32 reserved1          : 6;
359         RK_U32 slen_fifo          : 1;
360         RK_U32 rec_fbc_dis        : 1;
361     } enc_pic;
362 
363     /* 0x304 */
364     RK_U32 reserved_193;
365 
366     /* 0x00000308 reg194 */
367     struct {
368         RK_U32 frame_id       : 8;
369         RK_U32 reserved       : 8;
370         RK_U32 ch_id          : 2;
371         RK_U32 vrsp_rtn_en    : 1;
372         RK_U32 reserved1      : 13;
373     } dvbm_id;
374 
375     /* 0x0000030c reg195 */
376     RK_U32 bsp_size;
377     /* 0x00000310 reg196 */
378     struct {
379         RK_U32 pic_wd8_m1    : 11;
380         RK_U32 reserved      : 5;
381         RK_U32 pic_hd8_m1    : 11;
382         RK_U32 reserved1     : 5;
383     } enc_rsl;
384 
385     /* 0x00000314 reg197 */
386     struct {
387         RK_U32 pic_wfill    : 6;
388         RK_U32 reserved     : 10;
389         RK_U32 pic_hfill    : 6;
390         RK_U32 reserved1    : 10;
391     } src_fill;
392 
393     /* 0x00000318 reg198 */
394     struct {
395         RK_U32 alpha_swap            : 1;
396         RK_U32 rbuv_swap             : 1;
397         RK_U32 src_cfmt              : 4;
398         RK_U32 src_rcne              : 1;
399         RK_U32 out_fmt               : 1;
400         RK_U32 src_range_trns_en     : 1;
401         RK_U32 src_range_trns_sel    : 1;
402         RK_U32 chroma_ds_mode        : 1;
403         RK_U32 reserved              : 21;
404     } src_fmt;
405 
406     /* 0x0000031c reg199 */
407     struct {
408         RK_U32 csc_wgt_b2y    : 9;
409         RK_U32 csc_wgt_g2y    : 9;
410         RK_U32 csc_wgt_r2y    : 9;
411         RK_U32 reserved       : 5;
412     } src_udfy;
413 
414     /* 0x00000320 reg200 */
415     struct {
416         RK_U32 csc_wgt_b2u    : 9;
417         RK_U32 csc_wgt_g2u    : 9;
418         RK_U32 csc_wgt_r2u    : 9;
419         RK_U32 reserved       : 5;
420     } src_udfu;
421 
422     /* 0x00000324 reg201 */
423     struct {
424         RK_U32 csc_wgt_b2v    : 9;
425         RK_U32 csc_wgt_g2v    : 9;
426         RK_U32 csc_wgt_r2v    : 9;
427         RK_U32 reserved       : 5;
428     } src_udfv;
429 
430     /* 0x00000328 reg202 */
431     struct {
432         RK_U32 csc_ofst_v    : 8;
433         RK_U32 csc_ofst_u    : 8;
434         RK_U32 csc_ofst_y    : 5;
435         RK_U32 reserved      : 11;
436     } src_udfo;
437 
438     /* 0x0000032c reg203 */
439     struct {
440         RK_U32 reserved     : 26;
441         RK_U32 src_mirr     : 1;
442         RK_U32 src_rot      : 2;
443         RK_U32 reserved1    : 3;
444     } src_proc;
445 
446     /* 0x00000330 reg204 */
447     struct {
448         RK_U32 pic_ofst_x    : 14;
449         RK_U32 reserved      : 2;
450         RK_U32 pic_ofst_y    : 14;
451         RK_U32 reserved1     : 2;
452     } pic_ofst;
453 
454     /* 0x00000334 reg205 */
455     struct {
456         RK_U32 src_strd0    : 17;
457         RK_U32 reserved     : 15;
458     } src_strd0;
459 
460     /* 0x00000338 reg206 */
461     struct {
462         RK_U32 src_strd1    : 16;
463         RK_U32 reserved     : 16;
464     } src_strd1;
465 
466     /* 0x0000033c reg207 */
467     struct {
468         RK_U32 pp_corner_filter_strength      : 2;
469         RK_U32 reserved                       : 2;
470         RK_U32 pp_edge_filter_strength        : 2;
471         RK_U32 reserved1                      : 2;
472         RK_U32 pp_internal_filter_strength    : 2;
473         RK_U32 reserved2                      : 22;
474     } src_flt_cfg;
475 
476     /* 0x340 - 0x34c */
477     RK_U32 reserved208_211[4];
478 
479     /* 0x00000350 reg212 */
480     struct {
481         RK_U32 rc_en         : 1;
482         RK_U32 aq_en         : 1;
483         RK_U32 aq_mode       : 1;
484         RK_U32 reserved      : 9;
485         RK_U32 rc_ctu_num    : 20;
486     } rc_cfg;
487 
488     /* 0x00000354 reg213 */
489     struct {
490         RK_U32 reserved       : 16;
491         RK_U32 rc_qp_range    : 4;
492         RK_U32 rc_max_qp      : 6;
493         RK_U32 rc_min_qp      : 6;
494     } rc_qp;
495 
496     /* 0x00000358 reg214 */
497     struct {
498         RK_U32 ctu_ebit    : 20;
499         RK_U32 reserved    : 12;
500     } rc_tgt;
501 
502     /* 0x35c */
503     RK_U32 reserved_215;
504 
505     /* 0x00000360 reg216 */
506     struct {
507         RK_U32 sli_splt          : 1;
508         RK_U32 sli_splt_mode     : 1;
509         RK_U32 sli_splt_cpst     : 1;
510         RK_U32 reserved          : 12;
511         RK_U32 sli_flsh          : 1;
512         RK_U32 sli_max_num_m1    : 15;
513         RK_U32 reserved1         : 1;
514     } sli_splt;
515 
516     /* 0x00000364 reg217 */
517     struct {
518         RK_U32 sli_splt_byte    : 20;
519         RK_U32 reserved         : 12;
520     } sli_byte;
521 
522     /* 0x00000368 reg218 */
523     struct {
524         RK_U32 sli_splt_cnum_m1    : 20;
525         RK_U32 reserved            : 12;
526     } sli_cnum;
527 
528     /* 0x36c */
529     /* 0x0000036c reg219 */
530     struct {
531         RK_U32 uvc_partition0_len    : 12;
532         RK_U32 uvc_partition_len     : 12;
533         RK_U32 uvc_skip_len          : 6;
534         RK_U32 reserved              : 2;
535     } uvc_cfg;
536 
537     /* 0x00000370 reg220 */
538     struct {
539         RK_U32 cime_srch_dwnh    : 4;
540         RK_U32 cime_srch_uph     : 4;
541         RK_U32 cime_srch_rgtw    : 4;
542         RK_U32 cime_srch_lftw    : 4;
543         RK_U32 dlt_frm_num       : 16;
544     } me_rnge;
545 
546     /* 0x00000374 reg221 */
547     struct {
548         RK_U32 srgn_max_num      : 7;
549         RK_U32 cime_dist_thre    : 13;
550         RK_U32 rme_srch_h        : 2;
551         RK_U32 rme_srch_v        : 2;
552         RK_U32 rme_dis           : 3;
553         RK_U32 reserved1         : 1;
554         RK_U32 fme_dis           : 3;
555         RK_U32 reserved2         : 1;
556     } me_cfg;
557 
558     /* 0x00000378 reg222 */
559     struct {
560         RK_U32 cime_size_rama     : 10;
561         RK_U32 reserved           : 1;
562         RK_U32 cime_hgt_rama      : 5;
563         RK_U32 reserved1          : 2;
564         RK_U32 cme_linebuf_w      : 10;
565         RK_U32 fme_prefsu_en      : 2;
566         RK_U32 colmv_stor_hevc    : 1;
567         RK_U32 colmv_load_hevc    : 1;
568     } me_cach;
569 
570     /* 0x37c - 0x39c */
571     RK_U32 reserved223_231[9];
572     /* 0x000003a0 reg232 */
573     struct {
574         RK_U32 rect_size      : 1;
575         RK_U32 reserved       : 2;
576         RK_U32 vlc_lmt        : 1;
577         RK_U32 chrm_spcl      : 1;
578         RK_U32 reserved1      : 8;
579         RK_U32 ccwa_e         : 1;
580         RK_U32 reserved2      : 1;
581         RK_U32 intra_cost_e   : 1;
582         RK_U32 reserved3      : 4;
583         RK_U32 scl_lst_sel    : 2;
584         RK_U32 reserved4      : 6;
585         RK_U32 atf_e          : 1;
586         RK_U32 atr_e          : 1;
587         RK_U32 reserved5      : 2;
588     } rdo_cfg;
589 
590     /* 0x000003a4 reg233 */
591     struct {
592         RK_U32 rdo_mark_mode    : 9;
593         RK_U32 reserved         : 23;
594     } iprd_csts;
595 
596     /* 0x3a8 - 0x3ac */
597     RK_U32 reserved234_235[2];
598 
599     /* 0x000003b0 reg236 */
600     struct {
601         RK_U32 nal_ref_idc      : 2;
602         RK_U32 nal_unit_type    : 5;
603         RK_U32 reserved         : 25;
604     } synt_nal;
605 
606     /* 0x000003b4 reg237 */
607     struct {
608         RK_U32 max_fnum    : 4;
609         RK_U32 drct_8x8    : 1;
610         RK_U32 mpoc_lm4    : 4;
611         RK_U32 reserved    : 23;
612     } synt_sps;
613 
614     /* 0x000003b8 reg238 */
615     struct {
616         RK_U32 etpy_mode       : 1;
617         RK_U32 trns_8x8        : 1;
618         RK_U32 csip_flag       : 1;
619         RK_U32 num_ref0_idx    : 2;
620         RK_U32 num_ref1_idx    : 2;
621         RK_U32 pic_init_qp     : 6;
622         RK_U32 cb_ofst         : 5;
623         RK_U32 cr_ofst         : 5;
624         RK_U32 reserved        : 1;
625         RK_U32 dbf_cp_flg      : 1;
626         RK_U32 reserved1       : 7;
627     } synt_pps;
628 
629     /* 0x000003bc reg239 */
630     struct {
631         RK_U32 sli_type        : 2;
632         RK_U32 pps_id          : 8;
633         RK_U32 drct_smvp       : 1;
634         RK_U32 num_ref_ovrd    : 1;
635         RK_U32 cbc_init_idc    : 2;
636         RK_U32 reserved        : 2;
637         RK_U32 frm_num         : 16;
638     } synt_sli0;
639 
640     /* 0x000003c0 reg240 */
641     struct {
642         RK_U32 idr_pid    : 16;
643         RK_U32 poc_lsb    : 16;
644     } synt_sli1;
645 
646     /* 0x000003c4 reg241 */
647     struct {
648         RK_U32 rodr_pic_idx      : 2;
649         RK_U32 ref_list0_rodr    : 1;
650         RK_U32 sli_beta_ofst     : 4;
651         RK_U32 sli_alph_ofst     : 4;
652         RK_U32 dis_dblk_idc      : 2;
653         RK_U32 reserved          : 3;
654         RK_U32 rodr_pic_num      : 16;
655     } synt_sli2;
656 
657     /* 0x000003c8 reg242 */
658     struct {
659         RK_U32 nopp_flg      : 1;
660         RK_U32 ltrf_flg      : 1;
661         RK_U32 arpm_flg      : 1;
662         RK_U32 mmco4_pre     : 1;
663         RK_U32 mmco_type0    : 3;
664         RK_U32 mmco_parm0    : 16;
665         RK_U32 mmco_type1    : 3;
666         RK_U32 mmco_type2    : 3;
667         RK_U32 reserved      : 3;
668     } synt_refm0;
669 
670     /* 0x000003cc reg243 */
671     struct {
672         RK_U32 mmco_parm1    : 16;
673         RK_U32 mmco_parm2    : 16;
674     } synt_refm1;
675 
676     /* 0x000003d0 reg244 */
677     struct {
678         RK_U32 long_term_frame_idx0    : 4;
679         RK_U32 long_term_frame_idx1    : 4;
680         RK_U32 long_term_frame_idx2    : 4;
681         RK_U32 reserved                : 20;
682     } synt_refm2;
683 
684     /* 0x3d4 - 0x3ec */
685     RK_U32 reserved248_251[7];
686 
687     /* 0x000003f0 reg252 */
688     struct {
689         RK_U32 mv_v_lmt_thd    : 14;
690         RK_U32 reserved        : 1;
691         RK_U32 mv_v_lmt_en     : 1;
692         RK_U32 reserved1       : 16;
693     } sli_cfg;
694 
695     /* 0x3f4 - 0x3fc */
696     RK_U32 reserved253_255[3];
697 
698     /* 0x00000400 reg256 - 0x00000480 reg288 */
699     Vepu540cJpegReg jpegReg;
700 
701 } Vepu540cBaseCfg;
702 
703 /* class: rc/roi/aq/klut */
704 /* 0x00001000 reg1024 - 0x000010e0 reg1080 */
705 typedef struct Vepu540cRcROiCfg_t {
706     /* 0x00001000 reg1024 */
707     struct {
708         RK_U32 qp_adj0     : 5;
709         RK_U32 qp_adj1     : 5;
710         RK_U32 qp_adj2     : 5;
711         RK_U32 qp_adj3     : 5;
712         RK_U32 qp_adj4     : 5;
713         RK_U32 reserved    : 7;
714     } rc_adj0;
715 
716     /* 0x00001004 reg1025 */
717     struct {
718         RK_U32 qp_adj5     : 5;
719         RK_U32 qp_adj6     : 5;
720         RK_U32 qp_adj7     : 5;
721         RK_U32 qp_adj8     : 5;
722         RK_U32 reserved    : 12;
723     } rc_adj1;
724 
725     /* 0x00001008 reg1026 - 0x00001028 reg1034 */
726     RK_U32 rc_dthd_0_8[9];
727 
728     /* 0x102c */
729     RK_U32 reserved_1035;
730 
731     /* 0x00001030 reg1036 */
732     struct {
733         RK_U32 qpmin_area0    : 6;
734         RK_U32 qpmax_area0    : 6;
735         RK_U32 qpmin_area1    : 6;
736         RK_U32 qpmax_area1    : 6;
737         RK_U32 qpmin_area2    : 6;
738         RK_U32 reserved       : 2;
739     } roi_qthd0;
740 
741     /* 0x00001034 reg1037 */
742     struct {
743         RK_U32 qpmax_area2    : 6;
744         RK_U32 qpmin_area3    : 6;
745         RK_U32 qpmax_area3    : 6;
746         RK_U32 qpmin_area4    : 6;
747         RK_U32 qpmax_area4    : 6;
748         RK_U32 reserved       : 2;
749     } roi_qthd1;
750 
751     /* 0x00001038 reg1038 */
752     struct {
753         RK_U32 qpmin_area5    : 6;
754         RK_U32 qpmax_area5    : 6;
755         RK_U32 qpmin_area6    : 6;
756         RK_U32 qpmax_area6    : 6;
757         RK_U32 qpmin_area7    : 6;
758         RK_U32 reserved       : 2;
759     } roi_qthd2;
760 
761     /* 0x0000103c reg1039 */
762     struct {
763         RK_U32 qpmax_area7    : 6;
764         RK_U32 reserved       : 24;
765         RK_U32 qpmap_mode     : 2;
766     } roi_qthd3;
767 
768     /* 0x1040 */
769     RK_U32 reserved_1040;
770 
771     /* 0x00001044 reg1041 */
772     struct {
773         RK_U32 aq_tthd0    : 8;
774         RK_U32 aq_tthd1    : 8;
775         RK_U32 aq_tthd2    : 8;
776         RK_U32 aq_tthd3    : 8;
777     } aq_tthd0;
778 
779     /* 0x00001048 reg1042 */
780     struct {
781         RK_U32 aq_tthd4    : 8;
782         RK_U32 aq_tthd5    : 8;
783         RK_U32 aq_tthd6    : 8;
784         RK_U32 aq_tthd7    : 8;
785     } aq_tthd1;
786 
787     /* 0x0000104c reg1043 */
788     struct {
789         RK_U32 aq_tthd8     : 8;
790         RK_U32 aq_tthd9     : 8;
791         RK_U32 aq_tthd10    : 8;
792         RK_U32 aq_tthd11    : 8;
793     } aq_tthd2;
794 
795     /* 0x00001050 reg1044 */
796     struct {
797         RK_U32 aq_tthd12    : 8;
798         RK_U32 aq_tthd13    : 8;
799         RK_U32 aq_tthd14    : 8;
800         RK_U32 aq_tthd15    : 8;
801     } aq_tthd3;
802 
803     /* 0x00001054 reg1045 */
804     struct {
805         RK_U32 aq_stp_s0     : 6;
806         RK_U32 reserved      : 2;
807         RK_U32 aq_stp_0t1    : 6;
808         RK_U32 reserved1     : 2;
809         RK_U32 aq_stp_1t2    : 6;
810         RK_U32 reserved2     : 2;
811         RK_U32 aq_stp_2t3    : 6;
812         RK_U32 reserved3     : 2;
813     } aq_stp0;
814 
815     /* 0x00001058 reg1046 */
816     struct {
817         RK_U32 aq_stp_3t4    : 6;
818         RK_U32 reserved      : 2;
819         RK_U32 aq_stp_4t5    : 6;
820         RK_U32 reserved1     : 2;
821         RK_U32 aq_stp_5t6    : 6;
822         RK_U32 reserved2     : 2;
823         RK_U32 aq_stp_6t7    : 6;
824         RK_U32 reserved3     : 2;
825     } aq_stp1;
826 
827     /* 0x0000105c reg1047 */
828     struct {
829         RK_U32 aq_stp_8t9      : 6;
830         RK_U32 reserved        : 2;
831         RK_U32 aq_stp_9t10     : 6;
832         RK_U32 reserved1       : 2;
833         RK_U32 aq_stp_10t11    : 6;
834         RK_U32 reserved2       : 2;
835         RK_U32 aq_stp_11t12    : 6;
836         RK_U32 reserved3       : 2;
837     } aq_stp2;
838 
839     /* 0x00001060 reg1048 */
840     struct {
841         RK_U32 aq_stp_12t13    : 6;
842         RK_U32 reserved        : 2;
843         RK_U32 aq_stp_13t14    : 6;
844         RK_U32 reserved1       : 2;
845         RK_U32 aq_stp_14t15    : 6;
846         RK_U32 reserved2       : 2;
847         RK_U32 aq_stp_b15      : 6;
848         RK_U32 reserved3       : 2;
849     } aq_stp3;
850 
851     /* 0x00001064 reg1049 */
852     struct {
853         RK_U32 madi_th0    : 8;
854         RK_U32 madi_th1    : 8;
855         RK_U32 madi_th2    : 8;
856         RK_U32 reserved    : 8;
857     } madi_st_thd;
858 
859     /* 0x00001068 reg1050 */
860     struct {
861         RK_U32 madp_th0     : 12;
862         RK_U32 reserved     : 4;
863         RK_U32 madp_th1     : 12;
864         RK_U32 reserved1    : 4;
865     } madp_st_thd0;
866 
867     /* 0x0000106c reg1051 */
868     struct {
869         RK_U32 madp_th2    : 12;
870         RK_U32 reserved    : 20;
871     } madp_st_thd1;
872 
873     /* 0x1070 - 0x1078 */
874     RK_U32 reserved1052_1054[3];
875 
876     /* 0x0000107c reg1055 */
877     struct {
878         RK_U32 chrm_klut_ofst                : 4;
879         RK_U32 reserved                      : 4;
880         RK_U32 inter_chrm_dist_multi_hevc    : 6;
881         RK_U32 reserved1                     : 18;
882     } klut_ofst;
883     /*0x00001080 reg1056 - 0x0000110c reg1091 */
884     Vepu540cRoiCfg roi_cfg;
885 } Vepu540cRcRoiCfg;
886 
887 /* class: iprd/iprd_wgt/rdo_wgta/prei_dif/sobel */
888 /* 0x00001700 reg1472 - 0x00001cd4 reg1845 */
889 typedef struct Vepu540cSection3_t {
890     /* 0x1700 */
891     /* 0x00001700 reg1472 */
892     struct {
893         RK_U32 iprd_tthdy4_0    : 12;
894         RK_U32 reserved         : 4;
895         RK_U32 iprd_tthdy4_1    : 12;
896         RK_U32 reserved1        : 4;
897     } iprd_tthdy4_0;
898 
899     /* 0x00001704 reg1473 */
900     struct {
901         RK_U32 iprd_tthdy4_2    : 12;
902         RK_U32 reserved         : 4;
903         RK_U32 iprd_tthdy4_3    : 12;
904         RK_U32 reserved1        : 4;
905     } iprd_tthdy4_1;
906 
907     /* 0x00001708 reg1474 */
908     struct {
909         RK_U32 iprd_tthdc8_0    : 12;
910         RK_U32 reserved         : 4;
911         RK_U32 iprd_tthdc8_1    : 12;
912         RK_U32 reserved1        : 4;
913     } iprd_tthdc8_0;
914 
915     /* 0x0000170c reg1475 */
916     struct {
917         RK_U32 iprd_tthdc8_2    : 12;
918         RK_U32 reserved         : 4;
919         RK_U32 iprd_tthdc8_3    : 12;
920         RK_U32 reserved1        : 4;
921     } iprd_tthdc8_1;
922 
923     /* 0x00001710 reg1476 */
924     struct {
925         RK_U32 iprd_tthdy8_0    : 12;
926         RK_U32 reserved         : 4;
927         RK_U32 iprd_tthdy8_1    : 12;
928         RK_U32 reserved1        : 4;
929     } iprd_tthdy8_0;
930 
931     /* 0x00001714 reg1477 */
932     struct {
933         RK_U32 iprd_tthdy8_2    : 12;
934         RK_U32 reserved         : 4;
935         RK_U32 iprd_tthdy8_3    : 12;
936         RK_U32 reserved1        : 4;
937     } iprd_tthdy8_1;
938 
939     /* 0x00001718 reg1478 */
940     struct {
941         RK_U32 iprd_tthd_ul    : 12;
942         RK_U32 reserved        : 20;
943     } iprd_tthd_ul;
944 
945     /* 0x0000171c reg1479 */
946     struct {
947         RK_U32 iprd_wgty8_0    : 8;
948         RK_U32 iprd_wgty8_1    : 8;
949         RK_U32 iprd_wgty8_2    : 8;
950         RK_U32 iprd_wgty8_3    : 8;
951     } iprd_wgty8;
952 
953     /* 0x00001720 reg1480 */
954     struct {
955         RK_U32 iprd_wgty4_0    : 8;
956         RK_U32 iprd_wgty4_1    : 8;
957         RK_U32 iprd_wgty4_2    : 8;
958         RK_U32 iprd_wgty4_3    : 8;
959     } iprd_wgty4;
960 
961     /* 0x00001724 reg1481 */
962     struct {
963         RK_U32 iprd_wgty16_0    : 8;
964         RK_U32 iprd_wgty16_1    : 8;
965         RK_U32 iprd_wgty16_2    : 8;
966         RK_U32 iprd_wgty16_3    : 8;
967     } iprd_wgty16;
968 
969     /* 0x00001728 reg1482 */
970     struct {
971         RK_U32 iprd_wgtc8_0    : 8;
972         RK_U32 iprd_wgtc8_1    : 8;
973         RK_U32 iprd_wgtc8_2    : 8;
974         RK_U32 iprd_wgtc8_3    : 8;
975     } iprd_wgtc8;
976 
977     /* 0x172c */
978     RK_U32 reserved_1483;
979 
980     /* 0x00001730 reg1484 */
981     struct {
982         RK_U32    quant_f_bias_I : 10;
983         RK_U32    quant_f_bias_P : 10;
984         RK_U32    reserve : 12;
985     } RDO_QUANT;
986 
987     /* 0x1734 - 0x173c */
988     RK_U32 reserved1485_1487[3];
989 
990     /* 0x00001740 reg1488 */
991     // atr
992     struct {
993         RK_U32    atr_thd0 : 12;
994         RK_U32    reserve0 : 4;
995         RK_U32    atr_thd1 : 12;
996         RK_U32    reserve1 : 4;
997     } ATR_THD0; //       only 264
998 
999     /* 0x1744 */
1000     struct {
1001         RK_U32    atr_thd2 : 12;
1002         RK_U32    reserve0 : 4;
1003         RK_U32    atr_thdqp : 6;
1004         RK_U32    reserve1 : 10;
1005     } ATR_THD1; //       only 264
1006 
1007     /* 0x1748 */
1008     struct {
1009         RK_U32    atr1_thd0 : 12;
1010         RK_U32    reserve0 : 4;
1011         RK_U32    atr1_thd1 : 12;
1012         RK_U32    reserve1 : 4;
1013     } ATR_THD10; //       only 264
1014 
1015     /* 0x174c */
1016     struct {
1017         RK_U32    atr1_thd2 : 12;
1018         RK_U32    reserve1 : 20;
1019     } ATR_THD11; //       only 264
1020 
1021     // /* 0x1748 - 0x174c */
1022     // RK_U32 reserved1490_1491[2];
1023 
1024     /* 0x00001750 reg1492 */
1025     struct {
1026         RK_U32    lvl16_atr_wgt0 : 8;
1027         RK_U32    lvl16_atr_wgt1 : 8;
1028         RK_U32    lvl16_atr_wgt2 : 8;
1029         RK_U32    reserved       : 8;
1030     } Lvl16_ATR_WGT; //      only 264
1031 
1032     /* 0x1754 */
1033     struct {
1034         RK_U32    lvl8_atr_wgt0 : 8;
1035         RK_U32    lvl8_atr_wgt1 : 8;
1036         RK_U32    lvl8_atr_wgt2 : 8;
1037         RK_U32    reserved      : 8;
1038     } Lvl8_ATR_WGT; //      only 264
1039 
1040     /* 0x1758 */
1041     struct {
1042         RK_U32    lvl4_atr_wgt0 : 8;
1043         RK_U32    lvl4_atr_wgt1 : 8;
1044         RK_U32    lvl4_atr_wgt2 : 8;
1045         RK_U32    reserved      : 8;
1046     } Lvl4_ATR_WGT; //      only 264
1047 
1048     /* 0x175c */
1049     RK_U32 reserved_1495;
1050 
1051     /* 0x00001760 reg1496 */
1052     struct {
1053         RK_U32 cime_pmv_num      : 1;
1054         RK_U32 cime_fuse         : 1;
1055         RK_U32 itp_mode          : 1;
1056         RK_U32 reserved          : 1;
1057         RK_U32 move_lambda       : 4;
1058         RK_U32 rime_lvl_mrg      : 2;
1059         RK_U32 rime_prelvl_en    : 2;
1060         RK_U32 rime_prersu_en    : 3;
1061         RK_U32 reserved1         : 17;
1062     } cime_sqi_cfg;
1063 
1064     /* 0x00001764 reg1497 */
1065     struct {
1066         RK_U32 cime_mvd_th0    : 9;
1067         RK_U32 reserved        : 1;
1068         RK_U32 cime_mvd_th1    : 9;
1069         RK_U32 reserved1       : 1;
1070         RK_U32 cime_mvd_th2    : 9;
1071         RK_U32 reserved2       : 3;
1072     }  cime_mvd_th;
1073 
1074     /* 0x00001768 reg1498 */
1075     struct {
1076         RK_U32 cime_madp_th    : 12;
1077         RK_U32 reserved        : 20;
1078     } cime_madp_th;
1079 
1080     /* 0x0000176c reg1499 */
1081     struct {
1082         RK_U32 cime_multi0    : 8;
1083         RK_U32 cime_multi1    : 8;
1084         RK_U32 cime_multi2    : 8;
1085         RK_U32 cime_multi3    : 8;
1086     } cime_multi;
1087 
1088     /* 0x00001770 reg1500 */
1089     struct {
1090         RK_U32 rime_mvd_th0    : 3;
1091         RK_U32 reserved        : 1;
1092         RK_U32 rime_mvd_th1    : 3;
1093         RK_U32 reserved1       : 9;
1094         RK_U32 fme_madp_th     : 12;
1095         RK_U32 reserved2       : 4;
1096     } rime_mvd_th;
1097 
1098     /* 0x00001774 reg1501 */
1099     struct {
1100         RK_U32 rime_madp_th0    : 12;
1101         RK_U32 reserved         : 4;
1102         RK_U32 rime_madp_th1    : 12;
1103         RK_U32 reserved1        : 4;
1104     } rime_madp_th;
1105 
1106     /* 0x00001778 reg1502 */
1107     struct {
1108         RK_U32 rime_multi0    : 10;
1109         RK_U32 rime_multi1    : 10;
1110         RK_U32 rime_multi2    : 10;
1111         RK_U32 reserved       : 2;
1112     } rime_multi;
1113 
1114     /* 0x0000177c reg1503 */
1115     struct {
1116         RK_U32 cmv_th0     : 8;
1117         RK_U32 cmv_th1     : 8;
1118         RK_U32 cmv_th2     : 8;
1119         RK_U32 reserved    : 8;
1120     }  cmv_st_th;
1121 
1122     /* 0x1780 - 0x17fc */
1123     RK_U32 reserved1504_1535[32];
1124 
1125     /* 0x00001800 - 0x18fc */
1126     RK_U32 reserved1537_1599[64];
1127 
1128     /* wgt_qp48_grpa */
1129     /* 0x00001900 reg1600 - 0x19cc */
1130     RK_U32 rdo_wgta_qp_grpa_0_51[52];
1131 } Vepu540cSection3;
1132 
1133 /* class: mmu */
1134 /* 0x0000f000 reg15360 - 0x0000f064 reg15385 */
1135 
1136 typedef struct HalVepu540cReg_t {
1137     Vepu540cControlCfg   reg_ctl;
1138     Vepu540cBaseCfg      reg_base;
1139     Vepu540cRcRoiCfg     reg_rc_roi;
1140     Vepu540cSection3     reg_s3;
1141     vepu540c_rdo_cfg     reg_rdo;
1142     vepu540c_scl_cfg     reg_scl;
1143     vepu540c_jpeg_tab    jpeg_table;
1144     vepu540c_status      reg_st;
1145 } HalVepu540cRegSet;
1146 
1147 #endif
1148