xref: /rockchip-linux_mpp/mpp/hal/rkdec/h264d/hal_h264d_vdpu1_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /*
2  *
3  * Copyright 2015 Rockchip Electronics Co. LTD
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef __HAL_H264D_VDPU1_REG_TBL_H__
19 #define __HAL_H264D_VDPU1_REG_TBL_H__
20 
21 #include "rk_type.h"
22 
23 /* Number registers for the decoder */
24 #define DEC_VDPU1_REGISTERS         (101)
25 
26 typedef struct {
27     RK_U32 SwReg00;
28 
29     struct {
30         RK_U32 sw_dec_en : 1;
31         RK_U32 reserve0 : 3;
32         RK_U32 sw_dec_irq_dis_cfg : 1;
33         RK_U32 reserve1 : 3;
34         RK_U32 sw_dec_irq_config : 1;
35         RK_U32 reserve2 : 3;
36         RK_U32 sw_dec_rdy_int : 1;
37         RK_U32 sw_dec_bus_int : 1;
38         RK_U32 sw_dec_buffer_int : 1;
39         RK_U32 sw_dec_aso_int : 1;
40         RK_U32 sw_dec_error_int : 1;
41         RK_U32 sw_dec_slice_int : 1;
42         RK_U32 sw_dec_timeout : 1;
43         RK_U32 reserve3 : 5;
44         RK_U32 sw_dec_pic_inf : 1;
45         RK_U32 reserve4 : 7;
46     } SwReg01;
47 
48     struct {
49         RK_U32 sw_dec_max_burst : 5;
50         RK_U32 sw_dec_scmd_dis : 1;
51         RK_U32 sw_dec_adv_pre_dis : 1;
52         RK_U32 sw_tiled_mode_lsb : 1;
53         RK_U32 sw_dec_out_endian : 1;
54         RK_U32 sw_dec_in_endian : 1;
55         RK_U32 sw_dec_clk_gate_e : 1;
56         RK_U32 sw_dec_latency : 6;
57         RK_U32 sw_tiled_mode_msb : 1;
58         RK_U32 sw_dec_data_disc_e : 1;
59         RK_U32 sw_dec_outswap32_e : 1;
60         RK_U32 sw_dec_inswap32_e : 1;
61         RK_U32 sw_dec_strendian_e : 1;
62         RK_U32 sw_dec_strswap32_e : 1;
63         RK_U32 sw_dec_timeout_e : 1;
64         RK_U32 sw_dec_axi_rd_id : 8;
65     } SwReg02;
66 
67     struct {
68         RK_U32 sw_dec_axi_wr_id : 8;
69         RK_U32 sw_dec_ahb_hlock_e : 1;
70         RK_U32 sw_picord_count_e : 1;
71         RK_U32 sw_seq_mbaff_e : 1;
72         RK_U32 sw_reftopfirst_e : 1;
73         RK_U32 sw_write_mvs_e : 1;
74         RK_U32 sw_pic_fixed_quant : 1;
75         RK_U32 sw_filtering_dis : 1;
76         RK_U32 sw_dec_out_dis : 1;
77         RK_U32 sw_ref_topfield_e : 1;
78         RK_U32 sw_sorenson_e : 1;
79         RK_U32 sw_fwd_interlace_e : 1;
80         RK_U32 sw_pic_topfield_e : 1;
81         RK_U32 sw_pic_inter_e : 1;
82         RK_U32 sw_pic_b_e : 1;
83         RK_U32 sw_pic_fieldmode_e : 1;
84         RK_U32 sw_pic_interlace_e : 1;
85         RK_U32 sw_pjpeg_e : 1;
86         RK_U32 sw_divx3_e : 1;
87         RK_U32 sw_skip_mode : 1;
88         RK_U32 sw_rlc_mode_e : 1;
89         RK_U32 sw_dec_mode : 4;
90     } SwReg03;
91 
92     struct {
93         RK_U32 sw_ref_frames : 5;
94         RK_U32 reserve0 : 6;
95         RK_U32 sw_pic_mb_height_p : 8;
96         RK_U32 reserve1 : 4;
97         RK_U32 sw_pic_mb_width : 9;
98     } SwReg04;
99 
100     struct {
101         RK_U32 sw_fieldpic_flag_e : 1;
102         RK_U32 reserve0 : 13;
103         RK_U32 sw_ch_qp_offset2 : 5;    /* Cr */
104         RK_U32 sw_ch_qp_offset : 5;     /* Cb */
105         RK_U32 sw_type1_quant_e : 1;
106         RK_U32 sw_sync_marker_e : 1;
107         RK_U32 sw_strm_start_bit : 6;
108     } SwReg05;
109 
110     struct {
111         RK_U32 sw_stream_len : 24;
112         RK_U32 sw_ch_8pix_ileav_e : 1;
113         RK_U32 sw_init_qp : 6;
114         RK_U32 sw_start_code_e : 1;
115     } SwReg06;
116 
117     struct {
118         RK_U32 sw_framenum : 16;
119         RK_U32 sw_framenum_len : 5;
120         RK_U32 reserve0 : 5;
121         RK_U32 sw_weight_bipr_idc : 2;
122         RK_U32 sw_weight_pred_e : 1;
123         RK_U32 sw_dir_8x8_infer_e : 1;
124         RK_U32 sw_blackwhite_e : 1;
125         RK_U32 sw_cabac_e : 1;
126     } SwReg07;
127 
128     struct {
129         RK_U32 sw_idr_pic_id : 16;
130         RK_U32 sw_idr_pic_e : 1;
131         RK_U32 sw_refpic_mk_len : 11;
132         RK_U32 sw_8x8trans_flag_e : 1;
133         RK_U32 sw_rdpic_cnt_pres : 1;
134         RK_U32 sw_filt_ctrl_pres : 1;
135         RK_U32 sw_const_intra_e : 1;
136     } SwReg08;
137 
138     struct {
139         RK_U32 sw_poc_length : 8;
140         RK_U32 reserve0 : 6;
141         RK_U32 sw_refidx0_active : 5;
142         RK_U32 sw_refidx1_active : 5;
143         RK_U32 sw_pps_id : 8;
144     } SwReg09;
145 
146     struct {
147         RK_U32 sw_pinit_rlist_f4 : 5;
148         RK_U32 sw_pinit_rlist_f5 : 5;
149         RK_U32 sw_pinit_rlist_f6 : 5;
150         RK_U32 sw_pinit_rlist_f7 : 5;
151         RK_U32 sw_pinit_rlist_f8 : 5;
152         RK_U32 sw_pinit_rlist_f9 : 5;
153         RK_U32 reserve0 : 2;
154     } SwReg10;
155 
156     struct {
157         RK_U32 sw_pinit_rlist_f10 : 5;
158         RK_U32 sw_pinit_rlist_f11 : 5;
159         RK_U32 sw_pinit_rlist_f12 : 5;
160         RK_U32 sw_pinit_rlist_f13 : 5;
161         RK_U32 sw_pinit_rlist_f14 : 5;
162         RK_U32 sw_pinit_rlist_f15 : 5;
163         RK_U32 sw_i4x4_or_dc_base : 2;
164     } SwReg11;
165 
166     struct {
167         RK_U32 rlc_vlc_st_adr : 32;
168     } SwReg12;
169 
170     struct {
171         RK_U32 dec_out_st_adr : 32;
172     } SwReg13;
173 
174     /* MPP passes fd of reference frame to kernel
175     * with the whole register rather than higher 30-bit.
176     * At the same time, the lower 2-bit will be assigned
177     * by kernel.
178     * */
179     struct {
180         //RK_U32 sw_refer0_topc_e    : 1;
181         //RK_U32 sw_refer0_field_e   : 1;
182         RK_U32 sw_refer0_base : 32;
183     } SwReg14;
184 
185     struct {
186         //RK_U32 sw_refer1_topc_e    : 1;
187         //RK_U32 sw_refer1_field_e   : 1;
188         RK_U32 sw_refer1_base : 32;
189     } SwReg15;
190 
191     struct {
192         //RK_U32 sw_refer2_topc_e    : 1;
193         //RK_U32 sw_refer2_field_e   : 1;
194         RK_U32 sw_refer2_base : 32;
195     } SwReg16;
196 
197     struct {
198         //RK_U32 sw_refer3_topc_e    : 1;
199         //RK_U32 sw_refer3_field_e   : 1;
200         RK_U32 sw_refer3_base : 32;
201     } SwReg17;
202 
203     struct {
204         //RK_U32 sw_refer4_topc_e    : 1;
205         //RK_U32 sw_refer4_field_e   : 1;
206         RK_U32 sw_refer4_base : 32;
207     } SwReg18;
208 
209     struct {
210         //RK_U32 sw_refer5_topc_e    : 1;
211         //RK_U32 sw_refer5_field_e   : 1;
212         RK_U32 sw_refer5_base : 32;
213     } SwReg19;
214 
215     struct {
216         //RK_U32 sw_refer6_topc_e    : 1;
217         //RK_U32 sw_refer6_field_e   : 1;
218         RK_U32 sw_refer6_base : 32;
219     } SwReg20;
220 
221     struct {
222         //RK_U32 sw_refer7_topc_e    : 1;
223         //RK_U32 sw_refer7_field_e   : 1;
224         RK_U32 sw_refer7_base : 32;
225     } SwReg21;
226 
227     struct {
228         //RK_U32 sw_refer8_topc_e    : 1;
229         //RK_U32 sw_refer8_field_e   : 1;
230         RK_U32 sw_refer8_base : 32;
231     } SwReg22;
232 
233     struct {
234         //RK_U32 sw_refer9_topc_e    : 1;
235         //RK_U32 sw_refer9_field_e   : 1;
236         RK_U32 sw_refer9_base : 32;
237     } SwReg23;
238 
239     struct {
240         //RK_U32 sw_refer10_topc_e    : 1;
241         //RK_U32 sw_refer10_field_e   : 1;
242         RK_U32 sw_refer10_base : 32;
243     } SwReg24;
244 
245     struct {
246         //RK_U32 sw_refer11_topc_e    : 1;
247         //RK_U32 sw_refer11_field_e   : 1;
248         RK_U32 sw_refer11_base : 32;
249     } SwReg25;
250 
251     struct {
252         //RK_U32 sw_refer12_topc_e    : 1;
253         //RK_U32 sw_refer12_field_e   : 1;
254         RK_U32 sw_refer12_base : 32;
255     } SwReg26;
256 
257     struct {
258         //RK_U32 sw_refer13_topc_e    : 1;
259         //RK_U32 sw_refer13_field_e   : 1;
260         RK_U32 sw_refer13_base : 32;
261     } SwReg27;
262 
263     struct {
264         //RK_U32 sw_refer14_topc_e    : 1;
265         //RK_U32 sw_refer14_field_e   : 1;
266         RK_U32 sw_refer14_base : 32;
267     } SwReg28;
268 
269     struct {
270         //RK_U32 sw_refer15_topc_e    : 1;
271         //RK_U32 sw_refer15_field_e   : 1;
272         RK_U32 sw_refer15_base : 32;
273     } SwReg29;
274 
275     struct {
276         RK_U32 sw_refer0_nbr : 16;
277         RK_U32 sw_refer1_nbr : 16;
278     } SwReg30;
279 
280     struct {
281         RK_U32 sw_refer2_nbr : 16;
282         RK_U32 sw_refer3_nbr : 16;
283     } SwReg31;
284 
285     struct {
286         RK_U32 sw_refer4_nbr : 16;
287         RK_U32 sw_refer5_nbr : 16;
288     } SwReg32;
289 
290     struct {
291         RK_U32 sw_refer6_nbr : 16;
292         RK_U32 sw_refer7_nbr : 16;
293     } SwReg33;
294 
295     struct {
296         RK_U32 sw_refer8_nbr : 16;
297         RK_U32 sw_refer9_nbr : 16;
298     } SwReg34;
299 
300     struct {
301         RK_U32 sw_refer10_nbr : 16;
302         RK_U32 sw_refer11_nbr : 16;
303     } SwReg35;
304 
305     struct {
306         RK_U32 sw_refer12_nbr : 16;
307         RK_U32 sw_refer13_nbr : 16;
308     } SwReg36;
309 
310     struct {
311         RK_U32 sw_refer14_nbr : 16;
312         RK_U32 sw_refer15_nbr : 16;
313     } SwReg37;
314 
315     struct {
316         RK_U32 refpic_term_flag : 32;
317     } SwReg38;
318 
319     struct {
320         RK_U32 refpic_valid_flag : 32;
321     } SwReg39;
322 
323     struct {
324         RK_U32 qtable_st_adr : 32;
325     } SwReg40;
326 
327     struct {
328         RK_U32 dmmv_st_adr : 32;
329     } SwReg41;
330 
331     struct {
332         RK_U32 sw_binit_rlist_f0 : 5;
333         RK_U32 sw_binit_rlist_b0 : 5;
334         RK_U32 sw_binit_rlist_f1 : 5;
335         RK_U32 sw_binit_rlist_b1 : 5;
336         RK_U32 sw_binit_rlist_f2 : 5;
337         RK_U32 sw_binit_rlist_b2 : 5;
338         RK_U32 reserve0 : 2;
339     } SwReg42;
340 
341     struct {
342         RK_U32 sw_binit_rlist_f3 : 5;
343         RK_U32 sw_binit_rlist_b3 : 5;
344         RK_U32 sw_binit_rlist_f4 : 5;
345         RK_U32 sw_binit_rlist_b4 : 5;
346         RK_U32 sw_binit_rlist_f5 : 5;
347         RK_U32 sw_binit_rlist_b5 : 5;
348         RK_U32 reserve0 : 2;
349     } SwReg43;
350 
351     struct {
352         RK_U32 sw_binit_rlist_f6 : 5;
353         RK_U32 sw_binit_rlist_b6 : 5;
354         RK_U32 sw_binit_rlist_f7 : 5;
355         RK_U32 sw_binit_rlist_b7 : 5;
356         RK_U32 sw_binit_rlist_f8 : 5;
357         RK_U32 sw_binit_rlist_b8 : 5;
358         RK_U32 reserve0 : 2;
359     } SwReg44;
360 
361     struct {
362         RK_U32 sw_binit_rlist_f9 : 5;
363         RK_U32 sw_binit_rlist_b9 : 5;
364         RK_U32 sw_binit_rlist_f10 : 5;
365         RK_U32 sw_binit_rlist_b10 : 5;
366         RK_U32 sw_binit_rlist_f11 : 5;
367         RK_U32 sw_binit_rlist_b11 : 5;
368         RK_U32 reserve0 : 2;
369     } SwReg45;
370 
371     struct {
372         RK_U32 sw_binit_rlist_f12 : 5;
373         RK_U32 sw_binit_rlist_b12 : 5;
374         RK_U32 sw_binit_rlist_f13 : 5;
375         RK_U32 sw_binit_rlist_b13 : 5;
376         RK_U32 sw_binit_rlist_f14 : 5;
377         RK_U32 sw_binit_rlist_b14 : 5;
378         RK_U32 reserve0 : 2;
379     } SwReg46;
380 
381     struct {
382         RK_U32 sw_binit_rlist_f15 : 5;
383         RK_U32 sw_binit_rlist_b15 : 5;
384         RK_U32 sw_pinit_rlist_f0 : 5;
385         RK_U32 sw_pinit_rlist_f1 : 5;
386         RK_U32 sw_pinit_rlist_f2 : 5;
387         RK_U32 sw_pinit_rlist_f3 : 5;
388         RK_U32 reserve0 : 2;
389     } SwReg47;
390 
391     struct {
392         RK_U32 reserve0 : 15;
393         RK_U32 sw_startmb_y : 8;
394         RK_U32 sw_startmb_x : 9;
395     } SwReg48;
396 
397     struct {
398         RK_U32 reserve0 : 2;
399         RK_U32 sw_pred_bc_tap_0_2 : 10;
400         RK_U32 sw_pred_bc_tap_0_1 : 10;
401         RK_U32 sw_pred_bc_tap_0_0 : 10;
402     } SwReg49;
403 
404     RK_U32 SwReg50_54[5];
405 
406     struct {
407         RK_U32 sw_apf_threshold : 14;
408         RK_U32 sw_refbu2_picid : 5;
409         RK_U32 sw_refbu2_thr : 12;
410         RK_U32 sw_refbu2_buf_e : 1;
411     } SwReg55;
412 
413     RK_U32 SwReg56;
414 
415     struct {
416         RK_U32 sw_stream_len_hi : 1;
417         RK_U32 sw_inter_dblspeed : 1;
418         RK_U32 sw_intra_dblspeed : 1;
419         RK_U32 sw_intra_dbl3t : 1;
420         RK_U32 sw_paral_bus : 1;
421         RK_U32 sw_axiwr_sel : 1;
422         RK_U32 sw_pref_sigchan : 1;
423         RK_U32 sw_cache_en : 1;
424         RK_U32 reserve0 : 24;
425     } SwReg57;
426 
427     RK_U32 SwReg58_100[43];
428 } H264dVdpu1Regs_t;
429 
430 #endif /*__HAL_H264D_VDPU1_REG_TBL_H__*/
431