xref: /rockchip-linux_mpp/mpp/hal/rkdec/h264d/hal_h264d_vdpu2_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /*
2  * Copyright 2015 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_H264D_VDPU2_REG_TBL_H__
18 #define __HAL_H264D_VDPU2_REG_TBL_H__
19 
20 #include "rk_type.h"
21 
22 /* Number registers for the decoder */
23 #define DEC_VDPU_REGISTERS          159
24 
25 typedef struct {
26     RK_U32 sw00_49[50];
27     struct {
28         RK_U32 dec_tiled_msb : 1;
29         RK_U32 adtion_latency : 6;
30         RK_U32 dec_fixed_quant : 1;
31         RK_U32 dblk_flt_dis : 1;
32         RK_U32 skip_sel : 1;
33         RK_U32 dec_ascmd0_dis : 1;
34         RK_U32 adv_pref_dis : 1;
35         RK_U32 dec_tiled_lsb : 1;
36         RK_U32 refbuf_thrd : 12;
37         RK_U32 refbuf_pid : 5;
38         RK_U32 reverse0 : 2;
39     } sw50;
40     struct {
41         RK_U32 stream_len : 24;
42         RK_U32 stream_len_ext : 1;
43         RK_U32 qp_init_val : 6;
44         RK_U32 reverse0 : 1;
45     } sw51;
46     struct {
47         RK_U32 ydim_mbst : 8;
48         RK_U32 xdim_mbst : 9;
49         RK_U32 adv_pref_thrd : 14;
50         RK_U32 reverse0 : 1;
51     } sw52;
52     struct {
53         RK_U32 dec_fmt_sel : 4;
54         RK_U32 reverse0 : 28;
55     } sw53;
56     struct {
57         RK_U32 dec_in_endian : 1;
58         RK_U32 dec_out_endian : 1;
59         RK_U32 dec_in_wordsp : 1;
60         RK_U32 dec_out_wordsp : 1;
61         RK_U32 dec_strm_wordsp : 1;
62         RK_U32 dec_strendian_e : 1;
63         RK_U32 reverse0 : 26;
64     } sw54;
65     struct {
66         RK_U32 dec_irq : 1;
67         RK_U32 dec_irq_dis : 1;
68         RK_U32 reverse0 : 2;
69         RK_U32 dec_rdy_sts : 1;
70         RK_U32 pp_bus_sts : 1;
71         RK_U32 buf_emt_sts : 1;
72         RK_U32 reverse1 : 1;
73         RK_U32 aso_det_sts : 1;
74         RK_U32 slice_det_sts : 1;
75         RK_U32 bslice_det_sts : 1;
76         RK_U32 reverse2 : 1;
77         RK_U32 error_det_sts : 1;
78         RK_U32 timeout_det_sts : 1;
79         RK_U32 reverse3 : 18;
80     } sw55;
81     struct {
82         RK_U32 dec_axi_id_rd : 8;
83         RK_U32 dec_axi_id_wr : 8;
84         RK_U32 dec_max_burlen : 5;
85         RK_U32 bus_pos_sel : 1;
86         RK_U32 dec_data_discd_en : 1;
87         RK_U32 axi_sel : 1;
88         RK_U32 reverse0 : 8;
89     } sw56;
90     struct {
91         RK_U32 dec_st_work : 1;
92         RK_U32 refpic_buf2_en : 1;
93         RK_U32 dec_wr_extmen_dis : 1;
94         RK_U32 reverse0 : 1;
95         RK_U32 dec_clkgate_en : 1;
96         RK_U32 timeout_sts_en : 1;
97         RK_U32 rd_cnt_tab_en : 1;
98         RK_U32 sequ_mbaff_en : 1;
99         RK_U32 first_reftop_en : 1;
100         RK_U32 reftop_en : 1;
101         RK_U32 dmmv_wr_en : 1;
102         RK_U32 sorspa_en : 1;
103         RK_U32 fwd_refpic_mode_sel : 1;
104         RK_U32 pic_decfield_sel : 1;
105         RK_U32 pic_type_sel0 : 1;
106         RK_U32 pic_type_sel1 : 1;
107         RK_U32 curpic_stru_sel : 1;
108         RK_U32 curpic_code_sel : 1;
109         RK_U32 prog_jpeg_en : 1;
110         RK_U32 divx3_en : 1;
111         RK_U32 rlc_mode_en : 1;
112         RK_U32 addit_ch_fmt_wen : 1;
113         RK_U32 st_code_exit : 1;
114         RK_U32 reverse1 : 2;
115         RK_U32 inter_dblspeed : 1;
116         RK_U32 intra_dblspeed : 1;
117         RK_U32 intra_dbl3t : 1;
118         RK_U32 pref_sigchan : 1;
119         RK_U32 cache_en : 1;
120         RK_U32 reverse2 : 1;
121         RK_U32 dec_timeout_mode : 1;
122     } sw57;
123     struct {
124         RK_U32 soft_rst : 1;
125         RK_U32 reverse0 : 31;
126     } sw58;
127     struct {
128         RK_U32 reverse0 : 2;
129         RK_U32 pflt_set0_tap2 : 10;
130         RK_U32 pflt_set0_tap1 : 10;
131         RK_U32 pflt_set0_tap0 : 10;
132     } sw59;
133     struct {
134         RK_U32 addit_ch_st_adr : 32;
135     } sw60;
136     struct {
137         RK_U32 qtable_st_adr : 32;
138     } sw61;
139     struct {
140         RK_U32 dmmv_st_adr : 32;
141     } sw62;
142     struct {
143         RK_U32 dec_out_st_adr : 32;
144     } sw63;
145     struct {
146         RK_U32 rlc_vlc_st_adr : 32;
147     } sw64;
148     struct {
149         RK_U32 refbuf_y_offset : 9;
150         RK_U32 reserve0 : 3;
151         RK_U32 refbuf_fildpar_mode_e : 1;
152         RK_U32 refbuf_idcal_e : 1;
153         RK_U32 refbuf_picid : 5;
154         RK_U32 refbuf_thr_level : 12;
155         RK_U32 refbuf_e : 1;
156     } sw65;
157     RK_U32 sw66;
158     RK_U32 sw67;
159     struct {
160         RK_U32 refbuf_sum_bot : 16;
161         RK_U32 refbuf_sum_top : 16;
162     } sw68;
163     struct {
164         RK_U32 luma_sum_intra : 16;
165         RK_U32 refbuf_sum_hit : 16;
166     } sw69;
167     struct {
168         RK_U32 ycomp_mv_sum : 22;
169         RK_U32 reserve0 : 10;
170     } sw70;
171     RK_U32 sw71;
172     RK_U32 sw72;
173     RK_U32 sw73;
174     struct {
175         RK_U32 init_reflist_pf4 : 5;
176         RK_U32 init_reflist_pf5 : 5;
177         RK_U32 init_reflist_pf6 : 5;
178         RK_U32 init_reflist_pf7 : 5;
179         RK_U32 init_reflist_pf8 : 5;
180         RK_U32 init_reflist_pf9 : 5;
181         RK_U32 reverse0 : 2;
182     } sw74;
183     struct {
184         RK_U32 init_reflist_pf10 : 5;
185         RK_U32 init_reflist_pf11 : 5;
186         RK_U32 init_reflist_pf12 : 5;
187         RK_U32 init_reflist_pf13 : 5;
188         RK_U32 init_reflist_pf14 : 5;
189         RK_U32 init_reflist_pf15 : 5;
190         RK_U32 reverse0 : 2;
191     } sw75;
192     struct {
193         RK_U32 num_ref_idx0 : 16;
194         RK_U32 num_ref_idx1 : 16;
195     } sw76;
196     struct {
197         RK_U32 num_ref_idx2 : 16;
198         RK_U32 num_ref_idx3 : 16;
199     } sw77;
200     struct {
201         RK_U32 num_ref_idx4 : 16;
202         RK_U32 num_ref_idx5 : 16;
203     } sw78;
204     struct {
205         RK_U32 num_ref_idx6 : 16;
206         RK_U32 num_ref_idx7 : 16;
207     } sw79;
208     struct {
209         RK_U32 num_ref_idx8 : 16;
210         RK_U32 num_ref_idx9 : 16;
211     } sw80;
212     struct {
213         RK_U32 num_ref_idx10 : 16;
214         RK_U32 num_ref_idx11 : 16;
215     } sw81;
216     struct {
217         RK_U32 num_ref_idx12 : 16;
218         RK_U32 num_ref_idx13 : 16;
219     } sw82;
220     struct {
221         RK_U32 num_ref_idx14 : 16;
222         RK_U32 num_ref_idx15 : 16;
223     } sw83;
224     union {
225         RK_U32 ref0_st_addr;
226         struct {
227             RK_U32 ref0_closer_sel : 1;
228             RK_U32 ref0_field_en : 1;
229             RK_U32 reverse0 : 30;
230         };
231     } sw84;
232     union {
233         RK_U32 ref1_st_addr;
234         struct {
235             RK_U32 ref1_closer_sel : 1;
236             RK_U32 ref1_field_en : 1;
237             RK_U32 reverse0 : 30;
238         };
239     } sw85;
240     union {
241         RK_U32 ref2_st_addr;
242         struct {
243             RK_U32 ref2_closer_sel : 1;
244             RK_U32 ref2_field_en : 1;
245             RK_U32 reverse0 : 30;
246         };
247     } sw86;
248     union {
249         RK_U32 ref3_st_addr;
250         struct {
251             RK_U32 ref3_closer_sel : 1;
252             RK_U32 ref3_field_en : 1;
253             RK_U32 reverse0 : 30;
254         };
255     } sw87;
256     union {
257         RK_U32 ref4_st_addr;
258         struct {
259             RK_U32 ref4_closer_sel : 1;
260             RK_U32 ref4_field_en : 1;
261             RK_U32 reverse0 : 30;
262         };
263     } sw88;
264     union {
265         RK_U32 ref5_st_addr;
266         struct {
267             RK_U32 ref5_closer_sel : 1;
268             RK_U32 ref5_field_en : 1;
269             RK_U32 reverse0 : 30;
270         };
271     } sw89;
272     union {
273         RK_U32 ref6_st_addr;
274         struct {
275             RK_U32 ref6_closer_sel : 1;
276             RK_U32 ref6_field_en : 1;
277             RK_U32 reverse0 : 30;
278         };
279     } sw90;
280     union {
281         RK_U32 ref7_st_addr;
282         struct {
283             RK_U32 ref7_closer_sel : 1;
284             RK_U32 ref7_field_en : 1;
285             RK_U32 reverse0 : 30;
286         };
287     } sw91;
288     union {
289         RK_U32 ref8_st_addr;
290         struct {
291             RK_U32 ref8_closer_sel : 1;
292             RK_U32 ref8_field_en : 1;
293             RK_U32 reverse0 : 30;
294         };
295     } sw92;
296     union {
297         RK_U32 ref9_st_addr;
298         struct {
299             RK_U32 ref9_closer_sel : 1;
300             RK_U32 ref9_field_en : 1;
301             RK_U32 reverse0 : 30;
302         };
303     } sw93;
304     union {
305         RK_U32 ref10_st_addr;
306         struct {
307             RK_U32 ref10_closer_sel : 1;
308             RK_U32 ref10_field_en : 1;
309             RK_U32 reverse0 : 30;
310         };
311     } sw94;
312     union {
313         RK_U32 ref11_st_addr;
314         struct {
315             RK_U32 ref11_closer_sel : 1;
316             RK_U32 ref11_field_en : 1;
317             RK_U32 reverse0 : 30;
318         };
319     } sw95;
320     union {
321         RK_U32 ref12_st_addr;
322         struct {
323             RK_U32 ref12_closer_sel : 1;
324             RK_U32 ref12_field_en : 1;
325             RK_U32 reverse0 : 30;
326         };
327     } sw96;
328     union {
329         RK_U32 ref13_st_addr;
330         struct {
331             RK_U32 ref13_closer_sel : 1;
332             RK_U32 ref13_field_en : 1;
333             RK_U32 reverse0 : 30;
334         };
335     } sw97;
336     union {
337         RK_U32 ref14_st_addr;
338         struct {
339             RK_U32 ref14_closer_sel : 1;
340             RK_U32 ref14_field_en : 1;
341             RK_U32 reverse0 : 30;
342         };
343     } sw98;
344     union {
345         RK_U32 ref15_st_addr;
346         struct {
347             RK_U32 ref15_closer_sel : 1;
348             RK_U32 ref15_field_en : 1;
349             RK_U32 reverse0 : 30;
350         };
351     } sw99;
352     struct {
353         RK_U32 init_reflist_df0 : 5;
354         RK_U32 init_reflist_df1 : 5;
355         RK_U32 init_reflist_df2 : 5;
356         RK_U32 init_reflist_df3 : 5;
357         RK_U32 init_reflist_df4 : 5;
358         RK_U32 init_reflist_df5 : 5;
359         RK_U32 reverse0 : 2;
360     } sw100;
361     struct {
362         RK_U32 init_reflist_df6 : 5;
363         RK_U32 init_reflist_df7 : 5;
364         RK_U32 init_reflist_df8 : 5;
365         RK_U32 init_reflist_df9 : 5;
366         RK_U32 init_reflist_df10 : 5;
367         RK_U32 init_reflist_df11 : 5;
368         RK_U32 reverse0 : 2;
369     } sw101;
370     struct {
371         RK_U32 init_reflist_df12 : 5;
372         RK_U32 init_reflist_df13 : 5;
373         RK_U32 init_reflist_df14 : 5;
374         RK_U32 init_reflist_df15 : 5;
375         RK_U32 reverse0 : 12;
376     } sw102;
377     struct {
378         RK_U32 init_reflist_db0 : 5;
379         RK_U32 init_reflist_db1 : 5;
380         RK_U32 init_reflist_db2 : 5;
381         RK_U32 init_reflist_db3 : 5;
382         RK_U32 init_reflist_db4 : 5;
383         RK_U32 init_reflist_db5 : 5;
384         RK_U32 reverse0 : 2;
385     } sw103;
386     struct {
387         RK_U32 init_reflist_db6 : 5;
388         RK_U32 init_reflist_db7 : 5;
389         RK_U32 init_reflist_db8 : 5;
390         RK_U32 init_reflist_db9 : 5;
391         RK_U32 init_reflist_db10 : 5;
392         RK_U32 init_reflist_db11 : 5;
393         RK_U32 reverse0 : 2;
394     } sw104;
395     struct {
396         RK_U32 init_reflist_db12 : 5;
397         RK_U32 init_reflist_db13 : 5;
398         RK_U32 init_reflist_db14 : 5;
399         RK_U32 init_reflist_db15 : 5;
400         RK_U32 reverse0 : 12;
401     } sw105;
402     struct {
403         RK_U32 init_reflist_pf0 : 5;
404         RK_U32 init_reflist_pf1 : 5;
405         RK_U32 init_reflist_pf2 : 5;
406         RK_U32 init_reflist_pf3 : 5;
407         RK_U32 reverse0 : 12;
408     } sw106;
409     struct {
410         RK_U32 refpic_term_flag : 32;
411     } sw107;
412     struct {
413         RK_U32 refpic_valid_flag : 32;
414     } sw108;
415     struct {
416         RK_U32 strm_start_bit : 6;
417         RK_U32 reverse0 : 26;
418     } sw109;
419     struct {
420         RK_U32 pic_mb_w : 9;
421         RK_U32 pic_mb_h : 8;
422         RK_U32 flt_offset_cb_qp : 5;
423         RK_U32 flt_offset_cr_qp : 5;
424         RK_U32 reverse0 : 5;
425     } sw110;
426     struct {
427         RK_U32 max_refnum : 5;
428         RK_U32 reverse0 : 11;
429         RK_U32 wp_bslice_sel : 2;
430         RK_U32 reverse1 : 14;
431     } sw111;
432     struct {
433         RK_U32 curfrm_num : 16;
434         RK_U32 cur_frm_len : 5;
435         RK_U32 reverse0 : 9;
436         RK_U32 rpcp_flag : 1;
437         RK_U32 dblk_ctrl_flag : 1;
438     } sw112;
439     struct {
440         RK_U32 idr_pic_id : 16;
441         RK_U32 refpic_mk_len : 11;
442         RK_U32 reverse0 : 5;
443     } sw113;
444     struct {
445         RK_U32 poc_field_len : 8;
446         RK_U32 reverse0 : 6;
447         RK_U32 max_refidx0 : 5;
448         RK_U32 max_refidx1 : 5;
449         RK_U32 pps_id : 8;
450     } sw114;
451     struct {
452         RK_U32 fieldpic_flag_exist : 1;
453         RK_U32 scl_matrix_en : 1;
454         RK_U32 tranf_8x8_flag_en : 1;
455         RK_U32 const_intra_en : 1;
456         RK_U32 weight_pred_en : 1;
457         RK_U32 cabac_en : 1;
458         RK_U32 monochr_en : 1;
459         RK_U32 dlmv_method_en : 1;
460         RK_U32 idr_pic_flag : 1;
461         RK_U32 reverse0 : 23;
462     } sw115;
463     RK_U32 sw116_158[43];
464 } H264dVdpuRegs_t;
465 
466 #endif /*__HAL_H264D_VDPU_REG_TBL_H__*/
467