xref: /rockchip-linux_mpp/mpp/hal/rkenc/jpege/hal_jpege_vepu540c_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /*
2  * Copyright 2022 Rockchip Electronics Co. LTD
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef __HAL_JPEGE_VEPU540C_REG_H__
18 #define __HAL_JPEGE_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 JpegVepu540cControlCfg_t {
26     /* 0x00000000 reg0 */
27     struct {
28         RK_U32 sub_ver      : 8;
29         RK_U32 h264_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     } reg0001_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    : 3;
48         RK_U32 reserved    : 21;
49     } reg0004_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     } reg0005_enc_clr;
57 
58     /* 0x18 */
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 reserved1         : 6;
66     } reg0006_vs_ldly;
67 
68     /* 0x1c */
69     RK_U32 reserved007;
70 
71     /* 0x00000020 reg8 */
72     struct {
73         RK_U32 enc_done_en         : 1;
74         RK_U32 lkt_node_done_en    : 1;
75         RK_U32 sclr_done_en        : 1;
76         RK_U32 slc_done_en         : 1;
77         RK_U32 bsf_oflw_en         : 1;
78         RK_U32 brsp_otsd_en        : 1;
79         RK_U32 wbus_err_en         : 1;
80         RK_U32 rbus_err_en         : 1;
81         RK_U32 wdg_en              : 1;
82         RK_U32 lkt_err_int_en      : 1;
83         RK_U32 lkt_err_stop_en     : 1;
84         RK_U32 lkt_force_stop_en   : 1;
85         RK_U32 jslc_done_en        : 1;
86         RK_U32 jbsf_oflw_en        : 1;
87         RK_U32 reserved            : 18;
88     } reg0008_int_en;
89 
90     /* 0x00000024 reg9 */
91     struct {
92         RK_U32 enc_done_msk         : 1;
93         RK_U32 lkt_node_done_msk    : 1;
94         RK_U32 sclr_done_msk        : 1;
95         RK_U32 slc_done_msk         : 1;
96         RK_U32 bsf_oflw_msk         : 1;
97         RK_U32 brsp_otsd_msk        : 1;
98         RK_U32 wbus_err_msk         : 1;
99         RK_U32 rbus_err_msk         : 1;
100         RK_U32 wdg_msk              : 1;
101         RK_U32 lkt_err_msk          : 1;
102         RK_U32 lkt_err_stop_msk     : 1;
103         RK_U32 lkt_force_stop_msk   : 1;
104         RK_U32 jslc_done_msk        : 1;
105         RK_U32 jbsf_oflw_msk        : 1;
106         RK_U32 reserved             : 18;
107     } reg0009_int_msk;
108 
109     /* 0x00000028 reg10 */
110     struct {
111         RK_U32 enc_done_clr         : 1;
112         RK_U32 lkt_node_done_clr    : 1;
113         RK_U32 sclr_done_clr        : 1;
114         RK_U32 slc_done_clr         : 1;
115         RK_U32 bsf_oflw_clr         : 1;
116         RK_U32 brsp_otsd_clr        : 1;
117         RK_U32 wbus_err_clr         : 1;
118         RK_U32 rbus_err_clr         : 1;
119         RK_U32 wdg_clr              : 1;
120         RK_U32 lkt_err_clr          : 1;
121         RK_U32 lkt_err_stop_msk     : 1;
122         RK_U32 lkt_force_stop_msk   : 1;
123         RK_U32 jslc_done_clr        : 1;
124         RK_U32 jbsf_oflw_clr        : 1;
125         RK_U32 reserved             : 18;
126     } reg0010_int_clr;
127 
128     /* 0x0000002c reg11 */
129     struct {
130         RK_U32 enc_done_sta         : 1;
131         RK_U32 lkt_node_done_sta    : 1;
132         RK_U32 sclr_done_sta        : 1;
133         RK_U32 slc_done_sta         : 1;
134         RK_U32 bsf_oflw_sta         : 1;
135         RK_U32 brsp_otsd_sta        : 1;
136         RK_U32 wbus_err_sta         : 1;
137         RK_U32 rbus_err_sta         : 1;
138         RK_U32 wdg_sta              : 1;
139         RK_U32 lkt_err_sta          : 1;
140         RK_U32 lkt_err_stop_sta     : 1;
141         RK_U32 lkt_force_stop_sta   : 1;
142         RK_U32 jslc_done_sta        : 1;
143         RK_U32 jbsf_oflw_sta        : 1;
144         RK_U32 reserved             : 18;
145     } reg0011_int_sta;
146 
147     /* 0x00000030 reg12 */
148     struct {
149         RK_U32 jpeg_bus_edin        : 4;
150         RK_U32 src_bus_edin         : 4;
151         RK_U32 meiw_bus_edin        : 4;
152         RK_U32 bsw_bus_edin         : 4;
153         RK_U32 lktr_bus_edin        : 4;
154         RK_U32 roir_bus_edin        : 4;
155         RK_U32 lktw_bus_edin        : 4;
156         RK_U32 rec_nfbc_bus_edin    : 4;
157     } reg0012_dtrns_map;
158 
159     /* 0x00000034 reg13 */
160     struct {
161         RK_U32 reserved        : 16;
162         RK_U32 axi_brsp_cke    : 10;
163         RK_U32 reserved1       : 6;
164     } reg0013_dtrns_cfg;
165 
166     /* 0x00000038 reg14 */
167     struct {
168         RK_U32 vs_load_thd     : 24;
169         RK_U32 rfp_load_thd    : 8;
170     } reg0014_enc_wdg;
171 
172     /* 0x0000003c reg15 */
173     struct {
174         RK_U32 hurry_en      : 1;
175         RK_U32 hurry_low     : 3;
176         RK_U32 hurry_mid     : 3;
177         RK_U32 hurry_high    : 3;
178         RK_U32 reserved      : 22;
179     } reg0015_qos_cfg;
180 
181     /* 0x00000040 reg16 */
182     struct {
183         RK_U32 qos_period    : 16;
184         RK_U32 reserved      : 16;
185     } reg0016_qos_perd;
186 
187     /* 0x00000044 reg17 */
188     RK_U32 reg0017_hurry_thd_low;
189 
190     /* 0x00000048 reg18 */
191     RK_U32 reg0018_hurry_thd_mid;
192 
193     /* 0x0000004c reg19 */
194     RK_U32 reg0019_hurry_thd_high;
195 
196     /* 0x00000050 reg20 */
197     struct {
198         RK_U32 idle_en_core    : 1;
199         RK_U32 idle_en_axi     : 1;
200         RK_U32 idle_en_ahb     : 1;
201         RK_U32 reserved        : 29;
202     } reg0020_enc_idle_en;
203 
204     /* 0x00000054 reg21 */
205     struct {
206         RK_U32 cke                 : 1;
207         RK_U32 resetn_hw_en        : 1;
208         RK_U32 enc_done_tmvp_en    : 1;
209         RK_U32 sram_ckg_en         : 1;
210         RK_U32 link_err_stop       : 1;
211         RK_U32 reserved            : 27;
212     } reg0021_func_en;
213 
214     /* 0x00000058 reg22 */
215     struct {
216         RK_U32 recon32_ckg       : 1;
217         RK_U32 iqit32_ckg        : 1;
218         RK_U32 q32_ckg           : 1;
219         RK_U32 t32_ckg           : 1;
220         RK_U32 cabac32_ckg       : 1;
221         RK_U32 recon16_ckg       : 1;
222         RK_U32 iqit16_ckg        : 1;
223         RK_U32 q16_ckg           : 1;
224         RK_U32 t16_ckg           : 1;
225         RK_U32 cabac16_ckg       : 1;
226         RK_U32 recon8_ckg        : 1;
227         RK_U32 iqit8_ckg         : 1;
228         RK_U32 q8_ckg            : 1;
229         RK_U32 t8_ckg            : 1;
230         RK_U32 cabac8_ckg        : 1;
231         RK_U32 recon4_ckg        : 1;
232         RK_U32 iqit4_ckg         : 1;
233         RK_U32 q4_ckg            : 1;
234         RK_U32 t4_ckg            : 1;
235         RK_U32 cabac4_ckg        : 1;
236         RK_U32 intra32_ckg       : 1;
237         RK_U32 intra16_ckg       : 1;
238         RK_U32 intra8_ckg        : 1;
239         RK_U32 intra4_ckg        : 1;
240         RK_U32 inter_pred_ckg    : 1;
241         RK_U32 reserved          : 7;
242     } reg0022_rdo_ckg;
243 
244     /* 0x0000005c reg23 */
245     struct {
246         RK_U32 core_id     : 2;
247         RK_U32 reserved    : 30;
248     } reg0023_enc_id;
249 
250 
251     /* 0x00000060 reg24 */
252     struct {
253         RK_U32 dvbm_en          : 1;
254         RK_U32 reserved0        : 1;
255         RK_U32 vinf_frm_match   : 1;
256         RK_U32 vrsp_rtn_en      : 1;
257         RK_U32 vrsp_half_cycle  : 4;
258         RK_U32 reserved         : 24;
259     } reg0024_dvbm_cfg;
260 
261     /* 0x00000064 - 0x6c*/
262     RK_U32 reg025_027[3];
263 
264     /* 0x00000070*/
265     struct {
266         RK_U32 reserved    : 4;
267         RK_U32 lkt_addr    : 28;
268     } reg0028_lkt_base_addr;
269 
270     /* 0x74 - 0xfc */
271     RK_U32 reserved29_63[35];
272 
273     struct {
274         RK_U32 node_core_id    : 2;
275         RK_U32 node_int        : 1;
276         RK_U32 reserved        : 1;
277         RK_U32 task_id         : 12;
278         RK_U32 reserved1       : 16;
279     } reg0064_lkt_node_cfg;
280 
281     /* 0x00000104 reg65 */
282     struct {
283         RK_U32 pcfg_rd_en       : 1;
284         RK_U32 reserved         : 3;
285         RK_U32 lkt_addr_pcfg    : 28;
286     } reg0065_lkt_addr_pcfg;
287 
288     /* 0x00000108 reg66 */
289     struct {
290         RK_U32 rc_cfg_rd_en       : 1;
291         RK_U32 reserved           : 3;
292         RK_U32 lkt_addr_rc_cfg    : 28;
293     } reg0066_lkt_addr_rc_cfg;
294 
295     /* 0x0000010c reg67 */
296     struct {
297         RK_U32 par_cfg_rd_en       : 1;
298         RK_U32 reserved            : 3;
299         RK_U32 lkt_addr_par_cfg    : 28;
300     } reg0067_lkt_addr_par_cfg;
301 
302     /* 0x00000110 reg68 */
303     struct {
304         RK_U32 sqi_cfg_rd_en       : 1;
305         RK_U32 reserved            : 3;
306         RK_U32 lkt_addr_sqi_cfg    : 28;
307     } reg0068_lkt_addr_sqi_cfg;
308 
309     /* 0x00000114 reg69 */
310     struct {
311         RK_U32 scal_cfg_rd_en       : 1;
312         RK_U32 reserved             : 3;
313         RK_U32 lkt_addr_scal_cfg    : 28;
314     } reg0069_lkt_addr_scal_cfg;
315 
316     /* 0x00000118 reg70 */
317     struct {
318         RK_U32 pp_cfg_rd_en       : 1;
319         RK_U32 reserved           : 3;
320         RK_U32 lkt_addr_pp_cfg    : 28;
321     } reg0070_lkt_addr_osd_cfg;
322 
323     /* 0x0000011c reg71 */
324     struct {
325         RK_U32 st_out_en      : 1;
326         RK_U32 reserved       : 3;
327         RK_U32 lkt_addr_st    : 28;
328     } reg0071_lkt_addr_st;
329 
330     /* 0x00000120 reg72 */
331     struct {
332         RK_U32 nxt_node_vld    : 1;
333         RK_U32 reserved        : 3;
334         RK_U32 lkt_addr_nxt    : 28;
335     } reg0072_lkt_addr_nxt;
336 
337 
338 } jpeg_vepu540c_control_cfg;
339 
340 /* class: buffer/video syntax */
341 /* 0x00000280 reg160 - 0x000003f4 reg253*/
342 typedef struct JpegVepu540cBase_t {
343     vepu540c_online online_addr;
344     /* 0x00000280 reg160 */
345     RK_U32 reg0160_adr_src0;
346 
347     /* 0x00000284 reg161 */
348     RK_U32 reg0161_adr_src1;
349 
350     /* 0x00000288 reg162 */
351     RK_U32 reg0162_adr_src2;
352 
353     /* 0x0000028c reg163 */
354     RK_U32 reg0163_rfpw_h_addr;
355 
356     /* 0x00000290 reg164 */
357     RK_U32 reg0164_rfpw_b_addr;
358 
359     /* 0x00000294 reg165 */
360     RK_U32 reg0165_rfpr_h_addr;
361 
362     /* 0x00000298 reg166 */
363     RK_U32 reg0166_rfpr_b_addr;
364 
365     /* 0x0000029c reg167 */
366     RK_U32 reg0167_cmvw_addr;
367 
368     /* 0x000002a0 reg168 */
369     RK_U32 reg0168_cmvr_addr;
370 
371     /* 0x000002a4 reg169 */
372     RK_U32 reg0169_dspw_addr;
373 
374     /* 0x000002a8 reg170 */
375     RK_U32 reg0170_dspr_addr;
376 
377     /* 0x000002ac reg171 */
378     RK_U32 reg0171_meiw_addr;
379 
380     /* 0x000002b0 reg172 */
381     RK_U32 reg0172_bsbt_addr;
382 
383     /* 0x000002b4 reg173 */
384     RK_U32 reg0173_bsbb_addr;
385 
386     /* 0x000002b8 reg174 */
387     RK_U32 reg0174_bsbr_addr;
388 
389     /* 0x000002bc reg175 */
390     RK_U32 reg0175_adr_bsbs;
391 
392     /* 0x000002c0 reg176 */
393     RK_U32 reg0176_lpfw_addr;
394 
395     /* 0x000002c4 reg177 */
396     RK_U32 reg0177_lpfr_addr;
397 
398     /* 0x000002c8 reg178 */
399     RK_U32 reg0178_adr_ebuft;
400 
401     /* 0x000002cc reg179 */
402     RK_U32 reg0179_adr_ebufb;
403 
404     /* 0x000002d0 reg180 */
405     RK_U32 reg0180_adr_rfpt_h;
406 
407     /* 0x000002d4 reg181 */
408     RK_U32 reg0181_adr_rfpb_h;
409 
410     /* 0x000002d8 reg182 */
411     RK_U32 reg0182_adr_rfpt_b;
412 
413     /* 0x000002dc reg183 */
414     RK_U32 reg0183_adr_rfpb_b;
415 
416     /* 0x000002e0 reg184 */
417     RK_U32 reg0184_adr_smr_rd;
418 
419     /* 0x000002e4 reg185 */
420     RK_U32 reg0185_adr_smr_wr;
421 
422     /* 0x000002e8 reg186 */
423     RK_U32 reg0186_adr_roir;
424 
425     /* 0x2ec - 0x2fc */
426     RK_U32 reserved187_191[5];
427 
428     /* 0x00000300 reg192 */
429     struct {
430         RK_U32 enc_stnd                : 2;
431         RK_U32 cur_frm_ref             : 1;
432         RK_U32 mei_stor                : 1;
433         RK_U32 bs_scp                  : 1;
434         RK_U32 reserved                : 3;
435         RK_U32 pic_qp                  : 6;
436         RK_U32 num_pic_tot_cur         : 5;
437         RK_U32 log2_ctu_num            : 5;
438         RK_U32 reserved1               : 6;
439         RK_U32 slen_fifo               : 1;
440         RK_U32 rec_fbc_dis             : 1;
441     } reg0192_enc_pic;
442 
443 
444     /* 0x304 */
445     RK_U32 reserved_193;
446 
447     /* 0x00000308 reg194 */
448     struct {
449         RK_U32 frame_id     : 8;
450         RK_U32 reserved     : 8;
451         RK_U32 ch_id        : 2;
452         RK_U32 reserved1    : 14;
453     } reg0194_dvbm_id;
454 
455     /* 0x0000030c reg195 */
456     RK_U32 bsp_size;
457 
458     /* 0x00000310 reg196 */
459     struct {
460         RK_U32 pic_wd8_m1    : 11;
461         RK_U32 reserved      : 5;
462         RK_U32 pic_hd8_m1    : 11;
463         RK_U32 reserved1     : 5;
464     } reg0196_enc_rsl;
465 
466     /* 0x00000314 reg197 */
467     struct {
468         RK_U32 pic_wfill    : 6;
469         RK_U32 reserved     : 10;
470         RK_U32 pic_hfill    : 6;
471         RK_U32 reserved1    : 10;
472     } reg0197_src_fill;
473 
474     /* 0x00000318 reg198 */
475     struct {
476         RK_U32 alpha_swap            : 1;
477         RK_U32 rbuv_swap             : 1;
478         RK_U32 src_cfmt              : 4;
479         RK_U32 src_rcne              : 1;
480         RK_U32 out_fmt               : 1;
481         RK_U32 src_range_trns_en     : 1;
482         RK_U32 src_range_trns_sel    : 1;
483         RK_U32 chroma_ds_mode        : 1;
484         RK_U32 reserved              : 21;
485     }  reg0198_src_fmt;
486 
487     /* 0x0000031c reg199 */
488     struct {
489         RK_U32 csc_wgt_b2y    : 9;
490         RK_U32 csc_wgt_g2y    : 9;
491         RK_U32 csc_wgt_r2y    : 9;
492         RK_U32 reserved       : 5;
493     } reg0199_src_udfy;
494 
495     /* 0x00000320 reg200 */
496     struct {
497         RK_U32 csc_wgt_b2u    : 9;
498         RK_U32 csc_wgt_g2u    : 9;
499         RK_U32 csc_wgt_r2u    : 9;
500         RK_U32 reserved       : 5;
501     } reg0200_src_udfu;
502 
503     /* 0x00000324 reg201 */
504     struct {
505         RK_U32 csc_wgt_b2v    : 9;
506         RK_U32 csc_wgt_g2v    : 9;
507         RK_U32 csc_wgt_r2v    : 9;
508         RK_U32 reserved       : 5;
509     } reg0201_src_udfv;
510 
511     /* 0x00000328 reg202 */
512     struct {
513         RK_U32 csc_ofst_v    : 8;
514         RK_U32 csc_ofst_u    : 8;
515         RK_U32 csc_ofst_y    : 5;
516         RK_U32 reserved      : 11;
517     } reg0202_src_udfo;
518 
519     /* 0x0000032c reg203 */
520     struct {
521         RK_U32 reserved     : 26;
522         RK_U32 src_mirr     : 1;
523         RK_U32 src_rot      : 2;
524         RK_U32 reserved1    : 3;
525     } reg0203_src_proc;
526 
527     /* 0x00000330 reg204 */
528     struct {
529         RK_U32 pic_ofst_x    : 14;
530         RK_U32 reserved      : 2;
531         RK_U32 pic_ofst_y    : 14;
532         RK_U32 reserved1     : 2;
533     } reg0204_pic_ofst;
534 
535     /* 0x00000334 reg205 */
536     struct {
537         RK_U32 src_strd0    : 17;
538         RK_U32 reserved     : 15;
539     } reg0205_src_strd0;
540 
541     /* 0x00000338 reg206 */
542     struct {
543         RK_U32 src_strd1    : 16;
544         RK_U32 reserved     : 16;
545     } reg0206_src_strd1;
546 
547     /* 0x0000033c reg207 */
548     struct {
549         RK_U32 pp_corner_filter_strength      : 2;
550         RK_U32 reserved                       : 2;
551         RK_U32 pp_edge_filter_strength        : 2;
552         RK_U32 reserved1                      : 2;
553         RK_U32 pp_internal_filter_strength    : 2;
554         RK_U32 reserved2                      : 22;
555     } reg0207_src_flt_cfg;
556 
557     /* 0x340 - 0x34c */
558     RK_U32 reserved208_211[4];
559 
560     /* 0x00000350 reg212 */
561     struct {
562         RK_U32 rc_en         : 1;
563         RK_U32 aq_en         : 1;
564         RK_U32 aq_mode       : 1;
565         RK_U32 reserved      : 9;
566         RK_U32 rc_ctu_num    : 20;
567     } reg212_rc_cfg;
568 
569     /* 0x00000354 reg213 */
570     struct {
571         RK_U32 reserved       : 16;
572         RK_U32 rc_qp_range    : 4;
573         RK_U32 rc_max_qp      : 6;
574         RK_U32 rc_min_qp      : 6;
575     } reg213_rc_qp;
576 
577     /* 0x00000358 reg214 */
578     struct {
579         RK_U32 ctu_ebit    : 20;
580         RK_U32 reserved    : 12;
581     } reg214_rc_tgt;
582 
583     /* 0x35c */
584     RK_U32 reserved_215;
585 
586     /* 0x00000360 reg216 */
587     struct {
588         RK_U32 sli_splt          : 1;
589         RK_U32 sli_splt_mode     : 1;
590         RK_U32 sli_splt_cpst     : 1;
591         RK_U32 reserved          : 12;
592         RK_U32 sli_flsh          : 1;
593         RK_U32 sli_max_num_m1    : 15;
594         RK_U32 reserved1         : 1;
595     } reg0216_sli_splt;
596 
597     /* 0x00000364 reg217 */
598     struct {
599         RK_U32 sli_splt_byte    : 20;
600         RK_U32 reserved         : 12;
601     } reg0217_sli_byte;
602 
603     /* 0x00000368 reg218 */
604     struct {
605         RK_U32 sli_splt_cnum_m1    : 20;
606         RK_U32 reserved            : 12;
607     } reg0218_sli_cnum;
608 
609     /* 0x0000036c reg219 */
610     struct {
611         RK_U32 uvc_partition0_len    : 12;
612         RK_U32 uvc_partition_len     : 12;
613         RK_U32 uvc_skip_len          : 6;
614         RK_U32 reserved              : 2;
615     } reg0218_uvc_cfg;
616 
617     /* 0x00000370 reg220 */
618     struct {
619         RK_U32 cime_srch_dwnh    : 4;
620         RK_U32 cime_srch_uph     : 4;
621         RK_U32 cime_srch_rgtw    : 4;
622         RK_U32 cime_srch_lftw    : 4;
623         RK_U32 dlt_frm_num       : 16;
624     } reg0220_me_rnge;
625 
626     /* 0x00000374 reg221 */
627     struct {
628         RK_U32 srgn_max_num      : 7;
629         RK_U32 cime_dist_thre    : 10;
630         RK_U32 reserved          : 3;
631         RK_U32 rme_srch_h        : 2;
632         RK_U32 rme_srch_v        : 2;
633         RK_U32 rme_dis           : 3;
634         RK_U32 reserved1         : 1;
635         RK_U32 fme_dis           : 3;
636         RK_U32 reserved2         : 1;
637     } reg0221_me_cfg;
638 
639     /* 0x00000378 reg222 */
640     struct {
641         RK_U32 cime_size_rama     : 10;
642         RK_U32 reserved           : 1;
643         RK_U32 cime_hgt_rama      : 5;
644         RK_U32 reserved1          : 2;
645         RK_U32 cme_linebuf_w      : 10;
646         RK_U32 fme_prefsu_en      : 2;
647         RK_U32 colmv_stor         : 1;
648         RK_U32 colmv_load         : 1;
649     } reg0222_me_cach;
650 
651 
652     /* 0x37c - 0x39c */
653     RK_U32 reserved223_231[9];
654 
655     /* 0x000003a0 reg232 */
656     struct {
657         RK_U32 ltm_col                        : 1;
658         RK_U32 ltm_idx0l0                     : 1;
659         RK_U32 chrm_spcl                      : 1;
660         RK_U32 cu_inter_e                     : 12;
661         RK_U32 reserved                       : 4;
662         RK_U32 cu_intra_e                     : 4;
663         RK_U32 ccwa_e                         : 1;
664         RK_U32 scl_lst_sel                    : 2;
665         RK_U32 lambda_qp_use_avg_cu16_flag    : 1;
666         RK_U32 yuvskip_calc_en                : 1;
667         RK_U32 atf_e                          : 1;
668         RK_U32 atr_e                          : 1;
669         RK_U32 reserved1                      : 2;
670     }  reg0232_rdo_cfg;
671 
672     /* 0x000003a4 reg233 */
673     struct {
674         RK_U32 rdo_mark_mode    : 9;
675         RK_U32 reserved         : 23;
676     }  reg0233_iprd_csts;
677 
678     /* 0x3a8 - 0x3ac */
679     RK_U32 reserved234_235[2];
680 
681     /* 0x000003b0 reg236 */
682 
683     struct {
684         RK_U32 nal_unit_type    : 6;
685         RK_U32 reserved         : 26;
686     } reg0236_synt_nal;
687 
688     /* 0x000003b4 reg237 */
689     struct {
690         RK_U32 smpl_adpt_ofst_e    : 1;
691         RK_U32 num_st_ref_pic      : 7;
692         RK_U32 lt_ref_pic_prsnt    : 1;
693         RK_U32 num_lt_ref_pic      : 6;
694         RK_U32 tmpl_mvp_e          : 1;
695         RK_U32 log2_max_poc_lsb    : 4;
696         RK_U32 strg_intra_smth     : 1;
697         RK_U32 reserved            : 11;
698     } reg0237_synt_sps;
699 
700     /* 0x000003b8 reg238 */
701     struct {
702         RK_U32 dpdnt_sli_seg_en       : 1;
703         RK_U32 out_flg_prsnt_flg      : 1;
704         RK_U32 num_extr_sli_hdr       : 3;
705         RK_U32 sgn_dat_hid_en         : 1;
706         RK_U32 cbc_init_prsnt_flg     : 1;
707         RK_U32 pic_init_qp            : 6;
708         RK_U32 cu_qp_dlt_en           : 1;
709         RK_U32 chrm_qp_ofst_prsn      : 1;
710         RK_U32 lp_fltr_acrs_sli       : 1;
711         RK_U32 dblk_fltr_ovrd_en      : 1;
712         RK_U32 lst_mdfy_prsnt_flg     : 1;
713         RK_U32 sli_seg_hdr_extn       : 1;
714         RK_U32 cu_qp_dlt_depth        : 2;
715         RK_U32 lpf_fltr_acrs_til      : 1;
716         RK_U32 reserved               : 10;
717     } reg0238_synt_pps;
718 
719     /* 0x000003bc reg239 */
720     struct {
721         RK_U32 cbc_init_flg           : 1;
722         RK_U32 mvd_l1_zero_flg        : 1;
723         RK_U32 mrg_up_flg             : 1;
724         RK_U32 mrg_lft_flg            : 1;
725         RK_U32 reserved               : 1;
726         RK_U32 ref_pic_lst_mdf_l0     : 1;
727         RK_U32 num_refidx_l1_act      : 2;
728         RK_U32 num_refidx_l0_act      : 2;
729         RK_U32 num_refidx_act_ovrd    : 1;
730         RK_U32 sli_sao_chrm_flg       : 1;
731         RK_U32 sli_sao_luma_flg       : 1;
732         RK_U32 sli_tmprl_mvp_e        : 1;
733         RK_U32 pic_out_flg            : 1;
734         RK_U32 sli_type               : 2;
735         RK_U32 sli_rsrv_flg           : 7;
736         RK_U32 dpdnt_sli_seg_flg      : 1;
737         RK_U32 sli_pps_id             : 6;
738         RK_U32 no_out_pri_pic         : 1;
739     } reg0239_synt_sli0;
740 
741     /* 0x000003c0 reg240 */
742     struct {
743         RK_U32 sp_tc_ofst_div2         : 4;
744         RK_U32 sp_beta_ofst_div2       : 4;
745         RK_U32 sli_lp_fltr_acrs_sli    : 1;
746         RK_U32 sp_dblk_fltr_dis        : 1;
747         RK_U32 dblk_fltr_ovrd_flg      : 1;
748         RK_U32 sli_cb_qp_ofst          : 5;
749         RK_U32 sli_qp                  : 6;
750         RK_U32 max_mrg_cnd             : 2;
751         RK_U32 reserved                : 1;
752         RK_U32 col_ref_idx             : 1;
753         RK_U32 col_frm_l0_flg          : 1;
754         RK_U32 lst_entry_l0            : 4;
755         RK_U32 reserved1               : 1;
756     } reg0240_synt_sli1;
757 
758     /* 0x000003c4 reg241 */
759     struct {
760         RK_U32 sli_poc_lsb        : 16;
761         RK_U32 sli_hdr_ext_len    : 9;
762         RK_U32 reserved           : 7;
763     } reg0241_synt_sli2;
764 
765     /* 0x000003c8 reg242 */
766 
767     struct {
768         RK_U32 st_ref_pic_flg    : 1;
769         RK_U32 poc_lsb_lt0       : 16;
770         RK_U32 lt_idx_sps        : 5;
771         RK_U32 num_lt_pic        : 2;
772         RK_U32 st_ref_pic_idx    : 6;
773         RK_U32 num_lt_sps        : 2;
774     } reg0242_synt_refm0;
775 
776     /* 0x000003cc reg243 */
777     struct {
778         RK_U32 used_by_s0_flg        : 4;
779         RK_U32 num_pos_pic           : 1;
780         RK_U32 num_negative_pics     : 5;
781         RK_U32 dlt_poc_msb_cycl0     : 16;
782         RK_U32 dlt_poc_msb_prsnt0    : 1;
783         RK_U32 dlt_poc_msb_prsnt1    : 1;
784         RK_U32 dlt_poc_msb_prsnt2    : 1;
785         RK_U32 used_by_lt_flg0       : 1;
786         RK_U32 used_by_lt_flg1       : 1;
787         RK_U32 used_by_lt_flg2       : 1;
788     } reg0243_synt_refm1;
789 
790     /* 0x000003d0 reg244 */
791     struct {
792         RK_U32 dlt_poc_s0_m10    : 16;
793         RK_U32 dlt_poc_s0_m11    : 16;
794     } reg0244_synt_refm2;
795     /* 0x000003d4 reg245 */
796     struct {
797         RK_U32 dlt_poc_s0_m12    : 16;
798         RK_U32 dlt_poc_s0_m13    : 16;
799     } reg0245_synt_refm3;
800 
801     /* 0x000003d8 reg246 */
802     struct {
803         RK_U32 poc_lsb_lt1    : 16;
804         RK_U32 poc_lsb_lt2    : 16;
805     } reg0246_synt_long_refm0;
806 
807     /* 0x000003dc reg247 */
808     struct {
809         RK_U32 dlt_poc_msb_cycl1    : 16;
810         RK_U32 dlt_poc_msb_cycl2    : 16;
811     } reg0247_synt_long_refm1;
812 
813     struct {
814         RK_U32 sao_lambda_multi    : 4;
815         RK_U32 reserved            : 20;
816         RK_U32 reserved1           : 8;
817     } reg0248_sao_cfg;
818 
819     /* 0x3e4 - 0x3ec */
820     RK_U32 reserved249_251[3];
821 
822     /* 0x000003f0 reg252 */
823     struct {
824         RK_U32 tile_w_m1    : 8;
825         RK_U32 reserved     : 8;
826         RK_U32 tile_h_m1    : 8;
827         RK_U32 reserved1    : 7;
828         RK_U32 tile_en      : 1;
829     } reg0252_tile_cfg;
830     /* 0x000003f4 reg253 */
831     struct {
832         RK_U32 tile_x       : 8;
833         RK_U32 reserved     : 8;
834         RK_U32 tile_y       : 8;
835         RK_U32 reserved1    : 8;
836     } reg0253_tile_pos;
837 
838     /* 0x3f8 - 0x3fc */
839     RK_U32 reserved254_255[2];
840 
841     /* 0x00000400 reg256 - 0x00000480 reg288 */
842     Vepu540cJpegReg jpegReg;
843 
844 } jpeg_vepu540c_base;
845 
846 typedef struct JpegV540cRegSet_t {
847     jpeg_vepu540c_control_cfg reg_ctl;
848     jpeg_vepu540c_base reg_base;
849     vepu540c_jpeg_tab jpeg_table;
850     vepu540c_dbg reg_dbg;
851 } JpegV540cRegSet;
852 
853 typedef struct JpegV540cStatus_t {
854     vepu540c_hw_status hw_status;
855     vepu540c_status st;
856 } JpegV540cStatus;
857 
858 #endif
859