xref: /rockchip-linux_mpp/mpp/hal/rkdec/avsd/hal_avsd_plus_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  * Copyright 2015 Rockchip Electronics Co. LTD
3*437bfbebSnyanmisaka  *
4*437bfbebSnyanmisaka  * Licensed under the Apache License, Version 2.0 (the "License");
5*437bfbebSnyanmisaka  * you may not use this file except in compliance with the License.
6*437bfbebSnyanmisaka  * You may obtain a copy of the License at
7*437bfbebSnyanmisaka  *
8*437bfbebSnyanmisaka  *      http://www.apache.org/licenses/LICENSE-2.0
9*437bfbebSnyanmisaka  *
10*437bfbebSnyanmisaka  * Unless required by applicable law or agreed to in writing, software
11*437bfbebSnyanmisaka  * distributed under the License is distributed on an "AS IS" BASIS,
12*437bfbebSnyanmisaka  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*437bfbebSnyanmisaka  * See the License for the specific language governing permissions and
14*437bfbebSnyanmisaka  * limitations under the License.
15*437bfbebSnyanmisaka  */
16*437bfbebSnyanmisaka 
17*437bfbebSnyanmisaka #ifndef __HAL_AVSD_REG_H__
18*437bfbebSnyanmisaka #define __HAL_AVSD_REG_H__
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka #include "mpp_debug.h"
21*437bfbebSnyanmisaka #include "mpp_device.h"
22*437bfbebSnyanmisaka 
23*437bfbebSnyanmisaka #include "parser_api.h"
24*437bfbebSnyanmisaka #include "hal_avsd_api.h"
25*437bfbebSnyanmisaka #include "avsd_syntax.h"
26*437bfbebSnyanmisaka 
27*437bfbebSnyanmisaka #define AVSD_REGISTERS     60
28*437bfbebSnyanmisaka 
29*437bfbebSnyanmisaka typedef struct {
30*437bfbebSnyanmisaka     RK_U32 sw00;
31*437bfbebSnyanmisaka     struct {
32*437bfbebSnyanmisaka         RK_U32 dec_e : 1;
33*437bfbebSnyanmisaka         RK_U32 reserve0 : 3;
34*437bfbebSnyanmisaka         RK_U32 dec_irq_dis : 1;
35*437bfbebSnyanmisaka         RK_U32 dec_abort_e : 1;
36*437bfbebSnyanmisaka         RK_U32 reserve1 : 2;
37*437bfbebSnyanmisaka         RK_U32 dec_irq : 1;
38*437bfbebSnyanmisaka         RK_U32 reserve2 : 2;
39*437bfbebSnyanmisaka         RK_U32 dec_abort_int : 1;
40*437bfbebSnyanmisaka         RK_U32 dec_rdy_int : 1;
41*437bfbebSnyanmisaka         RK_U32 dec_bus_int : 1;
42*437bfbebSnyanmisaka         RK_U32 dec_buffer_int : 1;
43*437bfbebSnyanmisaka         RK_U32 reserve3 : 1;
44*437bfbebSnyanmisaka         RK_U32 dec_error_int : 1;
45*437bfbebSnyanmisaka         RK_U32 reserve4 : 1;
46*437bfbebSnyanmisaka         RK_U32 dec_timeout : 1;
47*437bfbebSnyanmisaka         RK_U32 reserve5 : 5;
48*437bfbebSnyanmisaka         RK_U32 dec_pic_inf : 1;
49*437bfbebSnyanmisaka         RK_U32 reserve6 : 7;
50*437bfbebSnyanmisaka     } sw01;
51*437bfbebSnyanmisaka     struct {
52*437bfbebSnyanmisaka         RK_U32 dec_max_burst : 5;
53*437bfbebSnyanmisaka         RK_U32 dec_scmd_dis : 1;
54*437bfbebSnyanmisaka         RK_U32 dec_adv_pre_dis : 1;
55*437bfbebSnyanmisaka         RK_U32 tiled_mode_lsb : 1;
56*437bfbebSnyanmisaka         RK_U32 dec_out_endian : 1;
57*437bfbebSnyanmisaka         RK_U32 dec_in_endian : 1;
58*437bfbebSnyanmisaka         RK_U32 dec_clk_gate_e : 1;
59*437bfbebSnyanmisaka         RK_U32 dec_latency : 6;
60*437bfbebSnyanmisaka         RK_U32 dec_out_tiled_e : 1;
61*437bfbebSnyanmisaka         RK_U32 dec_data_disc_e : 1;
62*437bfbebSnyanmisaka         RK_U32 dec_outswap32_e : 1;
63*437bfbebSnyanmisaka         RK_U32 dec_inswap32_e : 1;
64*437bfbebSnyanmisaka         RK_U32 dec_strendian_e : 1;
65*437bfbebSnyanmisaka         RK_U32 dec_strswap32_e : 1;
66*437bfbebSnyanmisaka         RK_U32 dec_timeout_e : 1;
67*437bfbebSnyanmisaka         RK_U32 dec_axi_rd_id : 8;
68*437bfbebSnyanmisaka     } sw02;
69*437bfbebSnyanmisaka     struct {
70*437bfbebSnyanmisaka         RK_U32 dec_axi_wr_id : 8;
71*437bfbebSnyanmisaka         RK_U32 dec_ahb_hlock_e : 1;
72*437bfbebSnyanmisaka         RK_U32 picord_count_e : 1;
73*437bfbebSnyanmisaka         RK_U32 reserve0 : 1;
74*437bfbebSnyanmisaka         RK_U32 reftopfirst_e : 1;
75*437bfbebSnyanmisaka         RK_U32 write_mvs_e : 1;
76*437bfbebSnyanmisaka         RK_U32 pic_fixed_quant : 1;
77*437bfbebSnyanmisaka         RK_U32 filtering_dis : 1;
78*437bfbebSnyanmisaka         RK_U32 dec_out_dis : 1;
79*437bfbebSnyanmisaka         RK_U32 ref_topfield_e : 1;
80*437bfbebSnyanmisaka         RK_U32 reserve1 : 1;
81*437bfbebSnyanmisaka         RK_U32 fwd_interlace_e : 1;
82*437bfbebSnyanmisaka         RK_U32 pic_topfiled_e : 1;
83*437bfbebSnyanmisaka         RK_U32 pic_inter_e : 1;
84*437bfbebSnyanmisaka         RK_U32 pic_b_e : 1;
85*437bfbebSnyanmisaka         RK_U32 pic_fieldmode_e : 1;
86*437bfbebSnyanmisaka         RK_U32 pic_interlace_e : 1;
87*437bfbebSnyanmisaka         RK_U32 reserve2 : 2;
88*437bfbebSnyanmisaka         RK_U32 skip_mode : 1;
89*437bfbebSnyanmisaka         RK_U32 rlc_mode_e : 1;
90*437bfbebSnyanmisaka         RK_U32 dec_mode : 4;
91*437bfbebSnyanmisaka     } sw03;
92*437bfbebSnyanmisaka     struct {
93*437bfbebSnyanmisaka         RK_U32 pic_refer_flag : 1;
94*437bfbebSnyanmisaka         RK_U32 reverse0 : 10;
95*437bfbebSnyanmisaka         RK_U32 pic_mb_height_p : 8;
96*437bfbebSnyanmisaka         RK_U32 mb_width_off : 4;
97*437bfbebSnyanmisaka         RK_U32 pic_mb_width : 9;
98*437bfbebSnyanmisaka     } sw04;
99*437bfbebSnyanmisaka     struct {
100*437bfbebSnyanmisaka         RK_U32 beta_offset : 5;
101*437bfbebSnyanmisaka         RK_U32 alpha_offset : 5;
102*437bfbebSnyanmisaka         RK_U32 reserve1 : 16;
103*437bfbebSnyanmisaka         RK_U32 strm_start_bit : 6;
104*437bfbebSnyanmisaka     } sw05;
105*437bfbebSnyanmisaka     struct {
106*437bfbebSnyanmisaka         RK_U32 stream_len : 24;
107*437bfbebSnyanmisaka         RK_U32 stream_len_ext : 1;
108*437bfbebSnyanmisaka         RK_U32 init_qp : 6;
109*437bfbebSnyanmisaka         RK_U32 start_code_e : 1;
110*437bfbebSnyanmisaka     } sw06;
111*437bfbebSnyanmisaka     struct {
112*437bfbebSnyanmisaka         RK_U32 reserve0 : 25;
113*437bfbebSnyanmisaka         RK_U32 avs_h_ext : 1;
114*437bfbebSnyanmisaka         RK_U32 reserve1 : 6;
115*437bfbebSnyanmisaka     } sw07;
116*437bfbebSnyanmisaka     RK_U32 sw08;
117*437bfbebSnyanmisaka     RK_U32 sw09;
118*437bfbebSnyanmisaka     RK_U32 sw10;
119*437bfbebSnyanmisaka     RK_U32 sw11;
120*437bfbebSnyanmisaka     struct {
121*437bfbebSnyanmisaka         RK_U32 rlc_vlc_base;
122*437bfbebSnyanmisaka     } sw12;
123*437bfbebSnyanmisaka     struct {
124*437bfbebSnyanmisaka         RK_U32 dec_out_base;
125*437bfbebSnyanmisaka     } sw13;
126*437bfbebSnyanmisaka     union {
127*437bfbebSnyanmisaka         RK_U32 refer0_base;
128*437bfbebSnyanmisaka         struct {
129*437bfbebSnyanmisaka             RK_U32 refer0_topc_e    : 1;
130*437bfbebSnyanmisaka             RK_U32 refer0_field_e   : 1;
131*437bfbebSnyanmisaka         };
132*437bfbebSnyanmisaka     } sw14;
133*437bfbebSnyanmisaka     union {
134*437bfbebSnyanmisaka         RK_U32 refer1_base;
135*437bfbebSnyanmisaka         struct {
136*437bfbebSnyanmisaka             RK_U32 refer1_topc_e    : 1;
137*437bfbebSnyanmisaka             RK_U32 refer1_field_e   : 1;
138*437bfbebSnyanmisaka         };
139*437bfbebSnyanmisaka     } sw15;
140*437bfbebSnyanmisaka     union {
141*437bfbebSnyanmisaka         RK_U32 refer2_base;
142*437bfbebSnyanmisaka         struct {
143*437bfbebSnyanmisaka             RK_U32 refer2_topc_e    : 1;
144*437bfbebSnyanmisaka             RK_U32 refer2_field_e   : 1;
145*437bfbebSnyanmisaka         };
146*437bfbebSnyanmisaka     } sw16;
147*437bfbebSnyanmisaka     union {
148*437bfbebSnyanmisaka         RK_U32 refer3_base;
149*437bfbebSnyanmisaka         struct {
150*437bfbebSnyanmisaka             RK_U32 refer3_topc_e : 1;
151*437bfbebSnyanmisaka             RK_U32 refer3_field_e : 1;
152*437bfbebSnyanmisaka         };
153*437bfbebSnyanmisaka     } sw17;
154*437bfbebSnyanmisaka     struct {
155*437bfbebSnyanmisaka         RK_U32 prev_anc_type : 1;
156*437bfbebSnyanmisaka         RK_U32 reverse0 : 31;
157*437bfbebSnyanmisaka     } sw18;
158*437bfbebSnyanmisaka     RK_U32 sw19_27[9];
159*437bfbebSnyanmisaka     struct {
160*437bfbebSnyanmisaka         RK_U32 ref_invd_cur_0 : 16;
161*437bfbebSnyanmisaka         RK_U32 ref_invd_cur_1 : 16;
162*437bfbebSnyanmisaka     } sw28;
163*437bfbebSnyanmisaka     struct {
164*437bfbebSnyanmisaka         RK_U32 ref_invd_cur_2 : 16;
165*437bfbebSnyanmisaka         RK_U32 ref_invd_cur_3 : 16;
166*437bfbebSnyanmisaka     } sw29;
167*437bfbebSnyanmisaka     struct {
168*437bfbebSnyanmisaka         RK_U32 ref_dist_cur_0 : 16;
169*437bfbebSnyanmisaka         RK_U32 ref_dist_cur_1 : 16;
170*437bfbebSnyanmisaka     } sw30;
171*437bfbebSnyanmisaka     struct {
172*437bfbebSnyanmisaka         RK_U32 ref_dist_cur_2 : 16;
173*437bfbebSnyanmisaka         RK_U32 ref_dist_cur_3 : 16;
174*437bfbebSnyanmisaka     } sw31;
175*437bfbebSnyanmisaka     struct {
176*437bfbebSnyanmisaka         RK_U32 ref_invd_col_0 : 16;
177*437bfbebSnyanmisaka         RK_U32 ref_invd_col_1 : 16;
178*437bfbebSnyanmisaka     } sw32;
179*437bfbebSnyanmisaka     struct {
180*437bfbebSnyanmisaka         RK_U32 ref_invd_col_2 : 16;
181*437bfbebSnyanmisaka         RK_U32 ref_invd_col_3 : 16;
182*437bfbebSnyanmisaka     } sw33;
183*437bfbebSnyanmisaka     struct {
184*437bfbebSnyanmisaka         RK_U32 reserve0 : 2;
185*437bfbebSnyanmisaka         RK_U32 pred_bc_tap_1_1 : 10;
186*437bfbebSnyanmisaka         RK_U32 pred_bc_tap_1_0 : 10;
187*437bfbebSnyanmisaka         RK_U32 pred_bc_tap_0_3 : 10;
188*437bfbebSnyanmisaka     } sw34;
189*437bfbebSnyanmisaka     struct {
190*437bfbebSnyanmisaka         RK_U32 reserve0 : 12;
191*437bfbebSnyanmisaka         RK_U32 pred_bc_tap_1_3 : 10;
192*437bfbebSnyanmisaka         RK_U32 pred_bc_tap_1_2 : 10;
193*437bfbebSnyanmisaka     } sw35;
194*437bfbebSnyanmisaka     RK_U32 sw36_40[5];
195*437bfbebSnyanmisaka     struct {
196*437bfbebSnyanmisaka         RK_U32 dir_mv_base : 32;
197*437bfbebSnyanmisaka     } sw41;
198*437bfbebSnyanmisaka     struct {
199*437bfbebSnyanmisaka         RK_U32 ref_delta_cur_3 : 3;
200*437bfbebSnyanmisaka         RK_U32 ref_delta_cur_2 : 3;
201*437bfbebSnyanmisaka         RK_U32 ref_delta_cur_1 : 3;
202*437bfbebSnyanmisaka         RK_U32 ref_delta_cur_0 : 3;
203*437bfbebSnyanmisaka         RK_U32 ref_delta_col_3 : 3;
204*437bfbebSnyanmisaka         RK_U32 ref_delta_col_2 : 3;
205*437bfbebSnyanmisaka         RK_U32 ref_delta_col_1 : 3;
206*437bfbebSnyanmisaka         RK_U32 ref_delta_col_0 : 3;
207*437bfbebSnyanmisaka         RK_U32 weight_qp_1 : 8;
208*437bfbebSnyanmisaka     } sw42;
209*437bfbebSnyanmisaka     struct {
210*437bfbebSnyanmisaka         RK_U32 weight_qp_5 : 8;
211*437bfbebSnyanmisaka         RK_U32 weight_qp_4 : 8;
212*437bfbebSnyanmisaka         RK_U32 weight_qp_3 : 8;
213*437bfbebSnyanmisaka         RK_U32 weight_qp_2 : 8;
214*437bfbebSnyanmisaka     } sw43;
215*437bfbebSnyanmisaka     struct {
216*437bfbebSnyanmisaka         RK_U32 weight_qp_0 : 8;
217*437bfbebSnyanmisaka         RK_U32 qp_delta_cr : 6;
218*437bfbebSnyanmisaka         RK_U32 qp_delta_cb : 6;
219*437bfbebSnyanmisaka         RK_U32 pb_field_enhance_e : 1;
220*437bfbebSnyanmisaka         RK_U32 no_fwd_ref_e : 1;
221*437bfbebSnyanmisaka         RK_U32 avs_aec_e : 1;
222*437bfbebSnyanmisaka         RK_U32 weight_qp_model : 2;
223*437bfbebSnyanmisaka         RK_U32 weight_qp_e : 1;
224*437bfbebSnyanmisaka         RK_U32 dec_avsp_ena : 1;
225*437bfbebSnyanmisaka         RK_U32 reserve0 : 5;
226*437bfbebSnyanmisaka     } sw44;
227*437bfbebSnyanmisaka     struct {
228*437bfbebSnyanmisaka         RK_U32 dir_mv_base2 : 32;
229*437bfbebSnyanmisaka     } sw45;
230*437bfbebSnyanmisaka     RK_U32 sw46;
231*437bfbebSnyanmisaka     RK_U32 sw47;
232*437bfbebSnyanmisaka     struct {
233*437bfbebSnyanmisaka         RK_U32 reserve0 : 14;
234*437bfbebSnyanmisaka         RK_U32 startmb_y : 9;
235*437bfbebSnyanmisaka         RK_U32 startmb_x : 9;
236*437bfbebSnyanmisaka     } sw48;
237*437bfbebSnyanmisaka     struct {
238*437bfbebSnyanmisaka         RK_U32 reserve0 : 2;
239*437bfbebSnyanmisaka         RK_U32 pred_bc_tap_0_2 : 10;
240*437bfbebSnyanmisaka         RK_U32 pred_bc_tap_0_1 : 10;
241*437bfbebSnyanmisaka         RK_U32 pred_bc_tap_0_0 : 10;
242*437bfbebSnyanmisaka     } sw49;
243*437bfbebSnyanmisaka     RK_U32 sw50;
244*437bfbebSnyanmisaka     struct {
245*437bfbebSnyanmisaka         RK_U32 refbu_y_offset : 9;
246*437bfbebSnyanmisaka         RK_U32 reserve0 : 3;
247*437bfbebSnyanmisaka         RK_U32 refbu_fparmod_e : 1;
248*437bfbebSnyanmisaka         RK_U32 refbu_eval_e : 1;
249*437bfbebSnyanmisaka         RK_U32 refbu_picid : 5;
250*437bfbebSnyanmisaka         RK_U32 refbu_thr : 12;
251*437bfbebSnyanmisaka         RK_U32 refbu_e : 1;
252*437bfbebSnyanmisaka     } sw51;
253*437bfbebSnyanmisaka     struct {
254*437bfbebSnyanmisaka         RK_U32 refbu_intra_sum : 16;
255*437bfbebSnyanmisaka         RK_U32 refbu_hit_sum : 16;
256*437bfbebSnyanmisaka     } sw52;
257*437bfbebSnyanmisaka     struct {
258*437bfbebSnyanmisaka         RK_U32 refbu_y_mv_sum : 22;
259*437bfbebSnyanmisaka         RK_U32 reserve0 : 10;
260*437bfbebSnyanmisaka     } sw53;
261*437bfbebSnyanmisaka     RK_U32 sw54;
262*437bfbebSnyanmisaka     struct {
263*437bfbebSnyanmisaka         RK_U32 apf_threshold : 14;
264*437bfbebSnyanmisaka         RK_U32 refbu2_picid : 5;
265*437bfbebSnyanmisaka         RK_U32 refbu2_thr : 12;
266*437bfbebSnyanmisaka         RK_U32 refbu2_buf_e : 1;
267*437bfbebSnyanmisaka     } sw55;
268*437bfbebSnyanmisaka 
269*437bfbebSnyanmisaka     struct {
270*437bfbebSnyanmisaka         RK_U32 refbu_bot_sum : 16;
271*437bfbebSnyanmisaka         RK_U32 refbu_top_sum : 16;
272*437bfbebSnyanmisaka     } sw56;
273*437bfbebSnyanmisaka     RK_U32 sw57;
274*437bfbebSnyanmisaka     struct {
275*437bfbebSnyanmisaka         RK_U32 reserve0 : 31;
276*437bfbebSnyanmisaka         RK_U32 serv_merge_dis : 1;
277*437bfbebSnyanmisaka     } sw58;
278*437bfbebSnyanmisaka     RK_U32 sw59;
279*437bfbebSnyanmisaka } AvsdPlusRegs_t;
280*437bfbebSnyanmisaka 
281*437bfbebSnyanmisaka #endif /*__HAL_AVSD_PLUS_REG_H__*/
282