xref: /rockchip-linux_mpp/mpp/hal/vpu/jpegd/hal_jpegd_vdpu1_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  * Copyright 2017 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 #ifndef __HAL_JPEGD_VDPU1_REG_H__
17*437bfbebSnyanmisaka #define __HAL_JPEGD_VDPU1_REG_H__
18*437bfbebSnyanmisaka 
19*437bfbebSnyanmisaka #include "vcodec_service.h"
20*437bfbebSnyanmisaka 
21*437bfbebSnyanmisaka #define JPEGD_REG_NUM                       (101)
22*437bfbebSnyanmisaka 
23*437bfbebSnyanmisaka #define DEC_VDPU1_LITTLE_ENDIAN             (1)
24*437bfbebSnyanmisaka #define DEC_VDPU1_BIG_ENDIAN                (0)
25*437bfbebSnyanmisaka 
26*437bfbebSnyanmisaka #define DEC_VDPU1_BUS_BURST_LENGTH_16       (16)
27*437bfbebSnyanmisaka 
28*437bfbebSnyanmisaka #define DEC_VDPU1_SCMD_DISABLE              (0)
29*437bfbebSnyanmisaka #define DEC_VDPU1_LATENCY_COMPENSATION      (0)
30*437bfbebSnyanmisaka #define DEC_VDPU1_DATA_DISCARD_ENABLE       (0)
31*437bfbebSnyanmisaka 
32*437bfbebSnyanmisaka typedef struct {
33*437bfbebSnyanmisaka     struct {
34*437bfbebSnyanmisaka         RK_U32  sw_pp_e             : 1;
35*437bfbebSnyanmisaka         RK_U32  sw_pp_pipeline_e    : 1;
36*437bfbebSnyanmisaka         RK_U32  reserved3           : 2;
37*437bfbebSnyanmisaka         RK_U32  sw_pp_irq_dis       : 1;
38*437bfbebSnyanmisaka         RK_U32  reserved2           : 3;
39*437bfbebSnyanmisaka         RK_U32  sw_pp_irq           : 1;
40*437bfbebSnyanmisaka         RK_U32  reserved1           : 3;
41*437bfbebSnyanmisaka         RK_U32  sw_pp_rdy_int       : 1;
42*437bfbebSnyanmisaka         RK_U32  sw_pp_bus_int       : 1;
43*437bfbebSnyanmisaka         RK_U32  reserved0           : 18;
44*437bfbebSnyanmisaka     } reg60_interrupt;
45*437bfbebSnyanmisaka 
46*437bfbebSnyanmisaka     struct {
47*437bfbebSnyanmisaka         RK_U32  sw_pp_max_burst     : 5;
48*437bfbebSnyanmisaka         RK_U32  sw_pp_out_swap32_e  : 1;
49*437bfbebSnyanmisaka         RK_U32  sw_pp_out_endian    : 1;
50*437bfbebSnyanmisaka         RK_U32  sw_pp_in_endian     : 1;
51*437bfbebSnyanmisaka         RK_U32  sw_pp_clk_gate_e    : 1;
52*437bfbebSnyanmisaka         RK_U32  sw_pp_data_disc_e   : 1;
53*437bfbebSnyanmisaka         RK_U32  sw_pp_in_swap32_e   : 1;
54*437bfbebSnyanmisaka         RK_U32  sw_pp_in_a1_endian  : 1;
55*437bfbebSnyanmisaka         RK_U32  sw_pp_in_a1_swap32  : 1;
56*437bfbebSnyanmisaka         RK_U32  sw_pp_in_a2_endsel  : 1;
57*437bfbebSnyanmisaka         RK_U32  sw_pp_scmd_dis      : 1;
58*437bfbebSnyanmisaka         RK_U32  sw_pp_ahb_hlock_e   : 1;
59*437bfbebSnyanmisaka         RK_U32  sw_pp_axi_wr_id     : 8;
60*437bfbebSnyanmisaka         RK_U32  sw_pp_axi_rd_id     : 8;
61*437bfbebSnyanmisaka     } reg61_dev_conf;
62*437bfbebSnyanmisaka 
63*437bfbebSnyanmisaka     struct {
64*437bfbebSnyanmisaka         RK_U32  sw_deint_edge_det   : 15;
65*437bfbebSnyanmisaka         RK_U32  sw_deint_blend_e    : 1;
66*437bfbebSnyanmisaka         RK_U32  sw_deint_threshold  : 14;
67*437bfbebSnyanmisaka         RK_U32  reserved0           : 1;
68*437bfbebSnyanmisaka         RK_U32  sw_deint_e          : 1;
69*437bfbebSnyanmisaka     } reg62_deinterlace;
70*437bfbebSnyanmisaka 
71*437bfbebSnyanmisaka     RK_U32 reg63_pp_in_lu_base;
72*437bfbebSnyanmisaka     RK_U32 reg64_pp_in_cb_base;
73*437bfbebSnyanmisaka     RK_U32 reg65_pp_in_cr_base;
74*437bfbebSnyanmisaka     RK_U32 reg66_pp_out_lu_base;
75*437bfbebSnyanmisaka     RK_U32 reg67_pp_out_ch_base;
76*437bfbebSnyanmisaka 
77*437bfbebSnyanmisaka     struct {
78*437bfbebSnyanmisaka         RK_U32  sw_contrast_off1    : 10;
79*437bfbebSnyanmisaka         RK_U32  sw_contrast_off2    : 10;
80*437bfbebSnyanmisaka         RK_U32  reserved0           : 4;
81*437bfbebSnyanmisaka         RK_U32  sw_contrast_thr1    : 8;
82*437bfbebSnyanmisaka     } reg68_contrast_adjust;
83*437bfbebSnyanmisaka 
84*437bfbebSnyanmisaka     struct {
85*437bfbebSnyanmisaka         RK_U32  sw_contrast_thr2    : 8;
86*437bfbebSnyanmisaka         RK_U32  sw_color_coeffa1    : 10;
87*437bfbebSnyanmisaka         RK_U32  sw_color_coeffa2    : 10;
88*437bfbebSnyanmisaka         RK_U32  sw_pp_out_cr_first  : 1;
89*437bfbebSnyanmisaka         RK_U32  sw_pp_out_start_ch  : 1;
90*437bfbebSnyanmisaka         RK_U32  sw_pp_in_cr_first   : 1;
91*437bfbebSnyanmisaka         RK_U32  sw_pp_in_start_ch   : 1;
92*437bfbebSnyanmisaka     } reg69;
93*437bfbebSnyanmisaka 
94*437bfbebSnyanmisaka     struct {
95*437bfbebSnyanmisaka         RK_U32  sw_color_coeffb     : 10;
96*437bfbebSnyanmisaka         RK_U32  sw_color_coeffc     : 10;
97*437bfbebSnyanmisaka         RK_U32  sw_color_coeffd     : 10;
98*437bfbebSnyanmisaka         RK_U32  reserved0           : 2;
99*437bfbebSnyanmisaka     } reg70_color_coeff_0;
100*437bfbebSnyanmisaka 
101*437bfbebSnyanmisaka     struct {
102*437bfbebSnyanmisaka         RK_U32  sw_color_coeffe     : 10;
103*437bfbebSnyanmisaka         RK_U32  sw_color_coefff     : 8;
104*437bfbebSnyanmisaka         RK_U32  sw_rotation_mode    : 3;
105*437bfbebSnyanmisaka         RK_U32  sw_crop_startx      : 9;
106*437bfbebSnyanmisaka         RK_U32  reserved0           : 2;
107*437bfbebSnyanmisaka     } reg71_color_coeff_1;
108*437bfbebSnyanmisaka 
109*437bfbebSnyanmisaka     struct {
110*437bfbebSnyanmisaka         RK_U32  sw_pp_in_width      : 9;
111*437bfbebSnyanmisaka         RK_U32  sw_pp_in_height     : 8;
112*437bfbebSnyanmisaka         RK_U32  reserved1           : 1;
113*437bfbebSnyanmisaka         RK_U32  sw_rangemap_coef_y  : 5;
114*437bfbebSnyanmisaka         RK_U32  reserved0           : 1;
115*437bfbebSnyanmisaka         RK_U32  sw_crop_starty      : 8;
116*437bfbebSnyanmisaka     } reg72_crop;
117*437bfbebSnyanmisaka 
118*437bfbebSnyanmisaka     RK_U32 reg73_pp_bot_yin_base;
119*437bfbebSnyanmisaka     RK_U32 reg74_pp_bot_cin_base;
120*437bfbebSnyanmisaka 
121*437bfbebSnyanmisaka     RK_U32 reg75_reg78[4];
122*437bfbebSnyanmisaka 
123*437bfbebSnyanmisaka     struct {
124*437bfbebSnyanmisaka         RK_U32   sw_scale_wratio    : 18;
125*437bfbebSnyanmisaka         RK_U32   sw_rgb_g_padd      : 5;
126*437bfbebSnyanmisaka         RK_U32   sw_rgb_r_padd      : 5;
127*437bfbebSnyanmisaka         RK_U32   sw_rgb_pix_in32    : 1;
128*437bfbebSnyanmisaka         RK_U32   sw_ycbcr_range     : 1;
129*437bfbebSnyanmisaka         RK_U32   sw_rangemap_c_e    : 1;
130*437bfbebSnyanmisaka         RK_U32   sw_rangemap_y_e    : 1;
131*437bfbebSnyanmisaka     } reg79_scaling_0;
132*437bfbebSnyanmisaka 
133*437bfbebSnyanmisaka     struct {
134*437bfbebSnyanmisaka         RK_U32   sw_scale_hratio    : 18;
135*437bfbebSnyanmisaka         RK_U32   sw_rgb_b_padd      : 5;
136*437bfbebSnyanmisaka         RK_U32   sw_ver_scale_mode  : 2;
137*437bfbebSnyanmisaka         RK_U32   sw_hor_scale_mode  : 2;
138*437bfbebSnyanmisaka         RK_U32   sw_pp_in_struct    : 3;
139*437bfbebSnyanmisaka         RK_U32   sw_pp_fast_scale_e : 1;
140*437bfbebSnyanmisaka         RK_U32   reserved0          : 1;
141*437bfbebSnyanmisaka     } reg80_scaling_1;
142*437bfbebSnyanmisaka 
143*437bfbebSnyanmisaka     struct {
144*437bfbebSnyanmisaka         RK_U32  sw_wscale_invra     : 16;
145*437bfbebSnyanmisaka         RK_U32  sw_hscale_invra     : 16;
146*437bfbebSnyanmisaka     } reg81_scaling_2;
147*437bfbebSnyanmisaka 
148*437bfbebSnyanmisaka     RK_U32 reg82_r_mask;
149*437bfbebSnyanmisaka     RK_U32 reg83_g_mask;
150*437bfbebSnyanmisaka     RK_U32 reg84_b_mask;
151*437bfbebSnyanmisaka 
152*437bfbebSnyanmisaka     struct {
153*437bfbebSnyanmisaka         RK_U32  sw_pp_crop8_d_e     : 1;
154*437bfbebSnyanmisaka         RK_U32  sw_pp_crop8_r_e     : 1;
155*437bfbebSnyanmisaka         RK_U32  sw_pp_out_swap16_e  : 1;
156*437bfbebSnyanmisaka         RK_U32  sw_pp_out_tiled_e   : 1;
157*437bfbebSnyanmisaka         RK_U32  sw_pp_out_width     : 11;
158*437bfbebSnyanmisaka         RK_U32  sw_pp_out_height    : 11;
159*437bfbebSnyanmisaka         RK_U32  sw_pp_out_format    : 3;
160*437bfbebSnyanmisaka         RK_U32  sw_pp_in_format     : 3;
161*437bfbebSnyanmisaka     } reg85_ctrl;
162*437bfbebSnyanmisaka 
163*437bfbebSnyanmisaka     struct {
164*437bfbebSnyanmisaka         RK_U32  sw_mask1_startx     : 11;
165*437bfbebSnyanmisaka         RK_U32  sw_mask1_starty     : 11;
166*437bfbebSnyanmisaka         RK_U32  sw_mask1_ablend_e   : 1;
167*437bfbebSnyanmisaka         RK_U32  sw_rangemap_coef_c  : 5;
168*437bfbebSnyanmisaka         RK_U32  reserved0           : 1;
169*437bfbebSnyanmisaka         RK_U32  sw_pp_in_format_es  : 3;
170*437bfbebSnyanmisaka     } reg86_mask_1;
171*437bfbebSnyanmisaka 
172*437bfbebSnyanmisaka     struct {
173*437bfbebSnyanmisaka         RK_U32  sw_mask2_startx     : 11;
174*437bfbebSnyanmisaka         RK_U32  sw_mask2_starty     : 11;
175*437bfbebSnyanmisaka         RK_U32  sw_mask2_ablend_e   : 1;
176*437bfbebSnyanmisaka         RK_U32  reserved            : 9;
177*437bfbebSnyanmisaka     } reg87_mask_2;
178*437bfbebSnyanmisaka 
179*437bfbebSnyanmisaka     struct {
180*437bfbebSnyanmisaka         RK_U32  sw_mask1_endx       : 11;
181*437bfbebSnyanmisaka         RK_U32  sw_mask1_endy       : 11;
182*437bfbebSnyanmisaka         RK_U32  sw_mask1_e          : 1;
183*437bfbebSnyanmisaka         RK_U32  sw_ext_orig_width   : 9;
184*437bfbebSnyanmisaka     } reg88_mask_1_size;
185*437bfbebSnyanmisaka 
186*437bfbebSnyanmisaka     struct {
187*437bfbebSnyanmisaka         RK_U32  sw_mask2_endx       : 11;
188*437bfbebSnyanmisaka         RK_U32  sw_mask2_endy       : 11;
189*437bfbebSnyanmisaka         RK_U32  sw_mask2_e          : 1;
190*437bfbebSnyanmisaka         RK_U32  reserved0           : 9;
191*437bfbebSnyanmisaka     } reg89_mask_2_size;
192*437bfbebSnyanmisaka 
193*437bfbebSnyanmisaka     struct {
194*437bfbebSnyanmisaka         RK_U32  sw_down_cross       : 11;
195*437bfbebSnyanmisaka         RK_U32  reserved1           : 4;
196*437bfbebSnyanmisaka         RK_U32  sw_up_cross         : 11;
197*437bfbebSnyanmisaka         RK_U32  sw_down_cross_e     : 1;
198*437bfbebSnyanmisaka         RK_U32  sw_up_cross_e       : 1;
199*437bfbebSnyanmisaka         RK_U32  sw_left_cross_e     : 1;
200*437bfbebSnyanmisaka         RK_U32  sw_right_cross_e    : 1;
201*437bfbebSnyanmisaka         RK_U32  reserved0           : 2;
202*437bfbebSnyanmisaka     } reg90_pip_1;
203*437bfbebSnyanmisaka 
204*437bfbebSnyanmisaka     struct {
205*437bfbebSnyanmisaka         RK_U32  sw_left_cross       : 11;
206*437bfbebSnyanmisaka         RK_U32  sw_right_cross      : 11;
207*437bfbebSnyanmisaka         RK_U32  sw_pp_tiled_mode    : 2;
208*437bfbebSnyanmisaka         RK_U32  sw_dither_select_b  : 2;
209*437bfbebSnyanmisaka         RK_U32  sw_dither_select_g  : 2;
210*437bfbebSnyanmisaka         RK_U32  sw_dither_select_r  : 2;
211*437bfbebSnyanmisaka     } reg91_pip_2;
212*437bfbebSnyanmisaka 
213*437bfbebSnyanmisaka     struct {
214*437bfbebSnyanmisaka         RK_U32  sw_display_width    : 12;
215*437bfbebSnyanmisaka         RK_U32  reserved0           : 8;
216*437bfbebSnyanmisaka         RK_U32  sw_crop_startx_ext  : 3;
217*437bfbebSnyanmisaka         RK_U32  sw_crop_starty_ext  : 3;
218*437bfbebSnyanmisaka         RK_U32  sw_pp_in_w_ext      : 3;
219*437bfbebSnyanmisaka         RK_U32  sw_pp_in_h_ext      : 3;
220*437bfbebSnyanmisaka     } reg92_display;
221*437bfbebSnyanmisaka 
222*437bfbebSnyanmisaka     RK_U32 reg93_ablend1_base;
223*437bfbebSnyanmisaka     RK_U32 reg94_ablend2_base;
224*437bfbebSnyanmisaka     RK_U32 reg95_ablend2_scanl;
225*437bfbebSnyanmisaka 
226*437bfbebSnyanmisaka     RK_U32 reg96_reg97[2];
227*437bfbebSnyanmisaka 
228*437bfbebSnyanmisaka     struct {
229*437bfbebSnyanmisaka         RK_U32  sw_pp_out_w_ext     : 1;
230*437bfbebSnyanmisaka         RK_U32  sw_pp_out_h_ext     : 1;
231*437bfbebSnyanmisaka         RK_U32  reserved            : 30;
232*437bfbebSnyanmisaka     } reg98_pp_out_ext;
233*437bfbebSnyanmisaka 
234*437bfbebSnyanmisaka     RK_U32 reg99_fuse;
235*437bfbebSnyanmisaka     RK_U32 reg100_synthesis;
236*437bfbebSnyanmisaka } post_processor_reg;
237*437bfbebSnyanmisaka 
238*437bfbebSnyanmisaka typedef struct  {
239*437bfbebSnyanmisaka     struct {
240*437bfbebSnyanmisaka         RK_U32  build_version   : 3;
241*437bfbebSnyanmisaka         RK_U32  product_IDen    : 1;
242*437bfbebSnyanmisaka         RK_U32  minor_version   : 8;
243*437bfbebSnyanmisaka         RK_U32  major_version   : 4;
244*437bfbebSnyanmisaka         RK_U32  product_numer   : 16;
245*437bfbebSnyanmisaka     } reg0_id;
246*437bfbebSnyanmisaka 
247*437bfbebSnyanmisaka     struct {
248*437bfbebSnyanmisaka         RK_U32  sw_dec_e            : 1;
249*437bfbebSnyanmisaka         RK_U32  reserved4           : 3;
250*437bfbebSnyanmisaka         RK_U32  sw_dec_irq_dis      : 1;
251*437bfbebSnyanmisaka         RK_U32  reserved3           : 3;
252*437bfbebSnyanmisaka         RK_U32  sw_dec_irq          : 1;
253*437bfbebSnyanmisaka         RK_U32  reserved2           : 3;
254*437bfbebSnyanmisaka         RK_U32  sw_dec_rdy_int      : 1;
255*437bfbebSnyanmisaka         RK_U32  sw_dec_bus_int      : 1;
256*437bfbebSnyanmisaka         RK_U32  sw_dec_buffer_int   : 1;
257*437bfbebSnyanmisaka         RK_U32  sw_dec_aso_int      : 1;
258*437bfbebSnyanmisaka         RK_U32  sw_dec_error_int    : 1;
259*437bfbebSnyanmisaka         RK_U32  sw_dec_slice_int    : 1;
260*437bfbebSnyanmisaka         RK_U32  sw_dec_timeout      : 1;
261*437bfbebSnyanmisaka         RK_U32  reserved1           : 5;
262*437bfbebSnyanmisaka         RK_U32  sw_dec_pic_inf      : 1;
263*437bfbebSnyanmisaka         RK_U32  reserved0           : 7;
264*437bfbebSnyanmisaka     } reg1_interrupt;
265*437bfbebSnyanmisaka 
266*437bfbebSnyanmisaka     struct {
267*437bfbebSnyanmisaka         RK_U32  sw_dec_max_burst    : 5;
268*437bfbebSnyanmisaka         RK_U32  sw_dec_scmd_dis     : 1;
269*437bfbebSnyanmisaka         RK_U32  sw_dec_adv_pre_dis  : 1;
270*437bfbebSnyanmisaka         RK_U32  sw_priority_mode    : 1; /* Not used */
271*437bfbebSnyanmisaka         RK_U32  sw_dec_out_endian   : 1;
272*437bfbebSnyanmisaka         RK_U32  sw_dec_in_endian    : 1;
273*437bfbebSnyanmisaka         RK_U32  sw_dec_clk_gate_e   : 1;
274*437bfbebSnyanmisaka         RK_U32  sw_dec_latency      : 6;
275*437bfbebSnyanmisaka         RK_U32  sw_dec_out_tiled_e  : 1;
276*437bfbebSnyanmisaka         RK_U32  sw_dec_data_disc_e  : 1;
277*437bfbebSnyanmisaka         RK_U32  sw_dec_outswap32_e  : 1;
278*437bfbebSnyanmisaka         RK_U32  sw_dec_inswap32_e   : 1;
279*437bfbebSnyanmisaka         RK_U32  sw_dec_strendian_e  : 1;
280*437bfbebSnyanmisaka         RK_U32  sw_dec_strswap32_e  : 1;
281*437bfbebSnyanmisaka         RK_U32  sw_dec_timeout_e    : 1;
282*437bfbebSnyanmisaka         RK_U32  sw_dec_axi_rn_id    : 8;
283*437bfbebSnyanmisaka     } reg2_dec_ctrl;
284*437bfbebSnyanmisaka 
285*437bfbebSnyanmisaka     struct {
286*437bfbebSnyanmisaka         RK_U32  sw_dec_axi_wr_id    : 8;
287*437bfbebSnyanmisaka         RK_U32  sw_dec_ahb_hlock_e  : 1; /* Not used */
288*437bfbebSnyanmisaka         RK_U32  sw_picord_count_e   : 1;
289*437bfbebSnyanmisaka         RK_U32  sw_seq_mbaff_e      : 1;
290*437bfbebSnyanmisaka         RK_U32  sw_reftopfirst_e    : 1;
291*437bfbebSnyanmisaka         RK_U32  sw_write_mvs_e      : 1;
292*437bfbebSnyanmisaka         RK_U32  sw_pic_fixed_quant  : 1;
293*437bfbebSnyanmisaka         RK_U32  sw_filtering_dis    : 1;
294*437bfbebSnyanmisaka         RK_U32  sw_dec_out_dis      : 1;
295*437bfbebSnyanmisaka         RK_U32  sw_ref_topfield_e   : 1;
296*437bfbebSnyanmisaka         RK_U32  sw_sorenson_e       : 1;
297*437bfbebSnyanmisaka         RK_U32  sw_fwd_interlace_e  : 1;
298*437bfbebSnyanmisaka         RK_U32  sw_pic_topfield_e   : 1;
299*437bfbebSnyanmisaka         RK_U32  sw_pic_inter_e      : 1;
300*437bfbebSnyanmisaka         RK_U32  sw_pic_b_e          : 1;
301*437bfbebSnyanmisaka         RK_U32  sw_pic_fieldmode_e  : 1;
302*437bfbebSnyanmisaka         RK_U32  sw_pic_interlace_e  : 1;
303*437bfbebSnyanmisaka         RK_U32  sw_pjpeg_e          : 1;
304*437bfbebSnyanmisaka         RK_U32  sw_divx3_e          : 1; /* Not used */
305*437bfbebSnyanmisaka         RK_U32  sw_skip_mode        : 1;
306*437bfbebSnyanmisaka         RK_U32  sw_rlc_mode_e       : 1;
307*437bfbebSnyanmisaka         RK_U32  sw_dec_mode         : 4;
308*437bfbebSnyanmisaka     } reg3;
309*437bfbebSnyanmisaka 
310*437bfbebSnyanmisaka     struct {
311*437bfbebSnyanmisaka         RK_U32  sw_pic_mb_h_ext     : 3;
312*437bfbebSnyanmisaka         RK_U32  sw_pic_mb_w_ext     : 3;
313*437bfbebSnyanmisaka         RK_U32  sw_alt_scan_e       : 1;
314*437bfbebSnyanmisaka         RK_U32  sw_mb_height_off    : 4;
315*437bfbebSnyanmisaka         RK_U32  sw_pic_mb_height_p  : 8;
316*437bfbebSnyanmisaka         RK_U32  sw_mb_width_off     : 4;
317*437bfbebSnyanmisaka         RK_U32  sw_pic_mb_width     : 9;
318*437bfbebSnyanmisaka     } reg4;
319*437bfbebSnyanmisaka 
320*437bfbebSnyanmisaka     /* stream decoding table selects */
321*437bfbebSnyanmisaka     struct {
322*437bfbebSnyanmisaka         RK_U32  sw_cb_dc_vlctable3 : 1;
323*437bfbebSnyanmisaka         RK_U32  sw_cr_dc_vlctable3 : 1;
324*437bfbebSnyanmisaka         RK_U32  sw_cb_dc_vlctable  : 1;
325*437bfbebSnyanmisaka         RK_U32  sw_cr_dc_vlctable  : 1;
326*437bfbebSnyanmisaka         RK_U32  sw_cb_ac_vlctable  : 1;
327*437bfbebSnyanmisaka         RK_U32  sw_cr_ac_vlctable  : 1;
328*437bfbebSnyanmisaka         RK_U32  sw_jpeg_stream_all : 1;
329*437bfbebSnyanmisaka         RK_U32  sw_jpeg_filright_e : 1;
330*437bfbebSnyanmisaka         RK_U32  sw_jpeg_mode       : 3;
331*437bfbebSnyanmisaka         RK_U32  sw_jpeg_qtables    : 2;
332*437bfbebSnyanmisaka         RK_U32  reserved0          : 12;
333*437bfbebSnyanmisaka         RK_U32  sw_sync_marker_e   : 1;
334*437bfbebSnyanmisaka         RK_U32  sw_strm0_start_bit : 6;
335*437bfbebSnyanmisaka     } reg5;
336*437bfbebSnyanmisaka 
337*437bfbebSnyanmisaka     struct {
338*437bfbebSnyanmisaka         RK_U32  sw_stream_len       : 24;
339*437bfbebSnyanmisaka         RK_U32  sw_ch_8pix_ileav_e  : 1;
340*437bfbebSnyanmisaka         RK_U32  sw_init_qp          : 6;
341*437bfbebSnyanmisaka         RK_U32  sw_start_code_e     : 1;
342*437bfbebSnyanmisaka     } reg6_stream_info;
343*437bfbebSnyanmisaka 
344*437bfbebSnyanmisaka     struct {
345*437bfbebSnyanmisaka         RK_U32  sw_pjpeg_se         : 8;
346*437bfbebSnyanmisaka         RK_U32  sw_pjpeg_ss         : 8;
347*437bfbebSnyanmisaka         RK_U32  sw_pjpeg_al         : 4;
348*437bfbebSnyanmisaka         RK_U32  sw_pjpeg_ah         : 4;
349*437bfbebSnyanmisaka         RK_U32  sw_pjpeg_hdiv8      : 1;
350*437bfbebSnyanmisaka         RK_U32  sw_pjpeg_wdiv8      : 1;
351*437bfbebSnyanmisaka         RK_U32  sw_pjpeg_fildown_e  : 1;
352*437bfbebSnyanmisaka         RK_U32  reserved0           : 5;
353*437bfbebSnyanmisaka     } reg7;
354*437bfbebSnyanmisaka 
355*437bfbebSnyanmisaka     struct {
356*437bfbebSnyanmisaka         RK_U32  sw_pjpeg_rest_freq  : 16;
357*437bfbebSnyanmisaka         RK_U32  reserved0           : 16;
358*437bfbebSnyanmisaka     } reg8;
359*437bfbebSnyanmisaka 
360*437bfbebSnyanmisaka     /* Not used for JPEG */
361*437bfbebSnyanmisaka     struct {
362*437bfbebSnyanmisaka         RK_U32  sw_stream1_len      : 24;
363*437bfbebSnyanmisaka         RK_U32  sw_coeffs_part_am   : 4;
364*437bfbebSnyanmisaka         RK_U32  reserved0           : 4;
365*437bfbebSnyanmisaka     } reg9;
366*437bfbebSnyanmisaka 
367*437bfbebSnyanmisaka     /* Not used for JPEG */
368*437bfbebSnyanmisaka     RK_U32 reg10_segment_map_base;
369*437bfbebSnyanmisaka 
370*437bfbebSnyanmisaka     /* Not used for JPEG */
371*437bfbebSnyanmisaka     struct {
372*437bfbebSnyanmisaka         RK_U32  sw_dct_start_bit_7   : 6;
373*437bfbebSnyanmisaka         RK_U32  sw_dct_start_bit_6   : 6;
374*437bfbebSnyanmisaka         RK_U32  sw_dct_start_bit_5   : 6;
375*437bfbebSnyanmisaka         RK_U32  sw_dct_start_bit_4   : 6;
376*437bfbebSnyanmisaka         RK_U32  sw_dct_start_bit_3   : 6;
377*437bfbebSnyanmisaka         RK_U32  reserved0            : 2;
378*437bfbebSnyanmisaka     } reg11;
379*437bfbebSnyanmisaka 
380*437bfbebSnyanmisaka     /* sw_rlc_vlc_base */
381*437bfbebSnyanmisaka     RK_U32      reg12_input_stream_base;
382*437bfbebSnyanmisaka     /* sw_dec_out_base */
383*437bfbebSnyanmisaka     RK_U32      reg13_cur_pic_base; /* Decoder output base */
384*437bfbebSnyanmisaka     RK_U32      reg14_sw_jpg_ch_out_base; /* sw_ch_out_base */
385*437bfbebSnyanmisaka 
386*437bfbebSnyanmisaka     struct {
387*437bfbebSnyanmisaka         RK_U32  sw_jpeg_slice_h      : 8;
388*437bfbebSnyanmisaka         RK_U32  sw_roi_en            : 1;
389*437bfbebSnyanmisaka         RK_U32  sw_roi_decode        : 1;
390*437bfbebSnyanmisaka         RK_U32  sw_roi_out_sel       : 2;
391*437bfbebSnyanmisaka         RK_U32  sw_roi_distance      : 4;
392*437bfbebSnyanmisaka         RK_U32  sw_roi_sample_size   : 2;
393*437bfbebSnyanmisaka         RK_U32  sw_jpegroi_in_swap32 : 1;
394*437bfbebSnyanmisaka         RK_U32  sw_jpegroi_in_endian : 1;
395*437bfbebSnyanmisaka         RK_U32  sw_jpeg_height8_flag : 1;
396*437bfbebSnyanmisaka         RK_U32  reserved0            : 11;
397*437bfbebSnyanmisaka     } reg15;
398*437bfbebSnyanmisaka 
399*437bfbebSnyanmisaka     struct {
400*437bfbebSnyanmisaka         RK_U32  sw_ac1_code1_cnt     : 2;
401*437bfbebSnyanmisaka         RK_U32  reserved3            : 1;
402*437bfbebSnyanmisaka         RK_U32  sw_ac1_code2_cnt     : 3;
403*437bfbebSnyanmisaka         RK_U32  reserved2            : 1;
404*437bfbebSnyanmisaka         RK_U32  sw_ac1_code3_cnt     : 4;
405*437bfbebSnyanmisaka         RK_U32  sw_ac1_code4_cnt     : 5;
406*437bfbebSnyanmisaka         RK_U32  sw_ac1_code5_cnt     : 6;
407*437bfbebSnyanmisaka         RK_U32  reserved1            : 2;
408*437bfbebSnyanmisaka         RK_U32  sw_ac1_code6_cnt     : 7;
409*437bfbebSnyanmisaka         RK_U32  reserved0            : 1;
410*437bfbebSnyanmisaka     } reg16;
411*437bfbebSnyanmisaka 
412*437bfbebSnyanmisaka     struct {
413*437bfbebSnyanmisaka         RK_U32  sw_ac1_code7_cnt     : 8;
414*437bfbebSnyanmisaka         RK_U32  sw_ac1_code8_cnt     : 8;
415*437bfbebSnyanmisaka         RK_U32  sw_ac1_code9_cnt     : 8;
416*437bfbebSnyanmisaka         RK_U32  sw_ac1_code10_cnt    : 8;
417*437bfbebSnyanmisaka     } reg17;
418*437bfbebSnyanmisaka 
419*437bfbebSnyanmisaka     struct {
420*437bfbebSnyanmisaka         RK_U32  sw_ac1_code11_cnt    : 8;
421*437bfbebSnyanmisaka         RK_U32  sw_ac1_code12_cnt    : 8;
422*437bfbebSnyanmisaka         RK_U32  sw_ac1_code13_cnt    : 8;
423*437bfbebSnyanmisaka         RK_U32  sw_ac1_code14_cnt    : 8;
424*437bfbebSnyanmisaka     } reg18;
425*437bfbebSnyanmisaka 
426*437bfbebSnyanmisaka     struct {
427*437bfbebSnyanmisaka         RK_U32  sw_ac1_code15_cnt    : 8;
428*437bfbebSnyanmisaka         RK_U32  sw_ac1_code16_cnt    : 8;
429*437bfbebSnyanmisaka         RK_U32  sw_ac2_code1_cnt     : 2;
430*437bfbebSnyanmisaka         RK_U32  reserved1            : 1;
431*437bfbebSnyanmisaka         RK_U32  sw_ac2_code2_cnt     : 3;
432*437bfbebSnyanmisaka         RK_U32  reserved0            : 1;
433*437bfbebSnyanmisaka         RK_U32  sw_ac2_code3_cnt     : 4;
434*437bfbebSnyanmisaka         RK_U32  sw_ac2_code4_cnt     : 5;
435*437bfbebSnyanmisaka     } reg19;
436*437bfbebSnyanmisaka 
437*437bfbebSnyanmisaka     struct {
438*437bfbebSnyanmisaka         RK_U32  sw_ac2_code5_cnt     : 6;
439*437bfbebSnyanmisaka         RK_U32  reserved1            : 2;
440*437bfbebSnyanmisaka         RK_U32  sw_ac2_code6_cnt     : 7;
441*437bfbebSnyanmisaka         RK_U32  reserved0            : 1;
442*437bfbebSnyanmisaka         RK_U32  sw_ac2_code7_cnt     : 8;
443*437bfbebSnyanmisaka         RK_U32  sw_ac2_code8_cnt     : 8;
444*437bfbebSnyanmisaka     } reg20;
445*437bfbebSnyanmisaka 
446*437bfbebSnyanmisaka     struct {
447*437bfbebSnyanmisaka         RK_U32  sw_ac2_code9_cnt     : 8;
448*437bfbebSnyanmisaka         RK_U32  sw_ac2_code10_cnt    : 8;
449*437bfbebSnyanmisaka         RK_U32  sw_ac2_code11_cnt    : 8;
450*437bfbebSnyanmisaka         RK_U32  sw_ac2_code12_cnt    : 8;
451*437bfbebSnyanmisaka     } reg21;
452*437bfbebSnyanmisaka 
453*437bfbebSnyanmisaka     struct {
454*437bfbebSnyanmisaka         RK_U32  sw_ac2_code13_cnt    : 8;
455*437bfbebSnyanmisaka         RK_U32  sw_ac2_code14_cnt    : 8;
456*437bfbebSnyanmisaka         RK_U32  sw_ac2_code15_cnt    : 8;
457*437bfbebSnyanmisaka         RK_U32  sw_ac2_code16_cnt    : 8;
458*437bfbebSnyanmisaka     } reg22;
459*437bfbebSnyanmisaka 
460*437bfbebSnyanmisaka     struct {
461*437bfbebSnyanmisaka         RK_U32  sw_dc1_code1_cnt     : 2;
462*437bfbebSnyanmisaka         RK_U32  reserved1            : 2;
463*437bfbebSnyanmisaka         RK_U32  sw_dc1_code2_cnt     : 3;
464*437bfbebSnyanmisaka         RK_U32  reserved0            : 1;
465*437bfbebSnyanmisaka         RK_U32  sw_dc1_code3_cnt     : 4;
466*437bfbebSnyanmisaka         RK_U32  sw_dc1_code4_cnt     : 4;
467*437bfbebSnyanmisaka         RK_U32  sw_dc1_code5_cnt     : 4;
468*437bfbebSnyanmisaka         RK_U32  sw_dc1_code6_cnt     : 4;
469*437bfbebSnyanmisaka         RK_U32  sw_dc1_code7_cnt     : 4;
470*437bfbebSnyanmisaka         RK_U32  sw_dc1_code8_cnt     : 4;
471*437bfbebSnyanmisaka     } reg23;
472*437bfbebSnyanmisaka 
473*437bfbebSnyanmisaka     struct {
474*437bfbebSnyanmisaka         RK_U32  sw_dc1_code9_cnt     : 4;
475*437bfbebSnyanmisaka         RK_U32  sw_dc1_code10_cnt    : 4;
476*437bfbebSnyanmisaka         RK_U32  sw_dc1_code11_cnt    : 4;
477*437bfbebSnyanmisaka         RK_U32  sw_dc1_code12_cnt    : 4;
478*437bfbebSnyanmisaka         RK_U32  sw_dc1_code13_cnt    : 4;
479*437bfbebSnyanmisaka         RK_U32  sw_dc1_code14_cnt    : 4;
480*437bfbebSnyanmisaka         RK_U32  sw_dc1_code15_cnt    : 4;
481*437bfbebSnyanmisaka         RK_U32  sw_dc1_code16_cnt    : 4;
482*437bfbebSnyanmisaka     } reg24;
483*437bfbebSnyanmisaka 
484*437bfbebSnyanmisaka     struct {
485*437bfbebSnyanmisaka         RK_U32  sw_dc2_code1_cnt     : 2;
486*437bfbebSnyanmisaka         RK_U32  reserved1            : 2;
487*437bfbebSnyanmisaka         RK_U32  sw_dc2_code2_cnt     : 3;
488*437bfbebSnyanmisaka         RK_U32  reserved0            : 1;
489*437bfbebSnyanmisaka         RK_U32  sw_dc2_code3_cnt     : 4;
490*437bfbebSnyanmisaka         RK_U32  sw_dc2_code4_cnt     : 4;
491*437bfbebSnyanmisaka         RK_U32  sw_dc2_code5_cnt     : 4;
492*437bfbebSnyanmisaka         RK_U32  sw_dc2_code6_cnt     : 4;
493*437bfbebSnyanmisaka         RK_U32  sw_dc2_code7_cnt     : 4;
494*437bfbebSnyanmisaka         RK_U32  sw_dc2_code8_cnt     : 4;
495*437bfbebSnyanmisaka     } reg25;
496*437bfbebSnyanmisaka 
497*437bfbebSnyanmisaka     struct {
498*437bfbebSnyanmisaka         RK_U32  sw_dc2_code9_cnt     : 4;
499*437bfbebSnyanmisaka         RK_U32  sw_dc2_code10_cnt    : 4;
500*437bfbebSnyanmisaka         RK_U32  sw_dc2_code11_cnt    : 4;
501*437bfbebSnyanmisaka         RK_U32  sw_dc2_code12_cnt    : 4;
502*437bfbebSnyanmisaka         RK_U32  sw_dc2_code13_cnt    : 4;
503*437bfbebSnyanmisaka         RK_U32  sw_dc2_code14_cnt    : 4;
504*437bfbebSnyanmisaka         RK_U32  sw_dc2_code15_cnt    : 4;
505*437bfbebSnyanmisaka         RK_U32  sw_dc2_code16_cnt    : 4;
506*437bfbebSnyanmisaka     } reg26;
507*437bfbebSnyanmisaka 
508*437bfbebSnyanmisaka     struct {
509*437bfbebSnyanmisaka         RK_U32  sw_dc3_code1_cnt     : 2;
510*437bfbebSnyanmisaka         RK_U32  reserved1            : 2;
511*437bfbebSnyanmisaka         RK_U32  sw_dc3_code2_cnt     : 3;
512*437bfbebSnyanmisaka         RK_U32  reserved0            : 1;
513*437bfbebSnyanmisaka         RK_U32  sw_dc3_code3_cnt     : 4;
514*437bfbebSnyanmisaka         RK_U32  sw_dc3_code4_cnt     : 4;
515*437bfbebSnyanmisaka         RK_U32  sw_dc3_code5_cnt     : 4;
516*437bfbebSnyanmisaka         RK_U32  sw_dc3_code6_cnt     : 4;
517*437bfbebSnyanmisaka         RK_U32  sw_dc3_code7_cnt     : 4;
518*437bfbebSnyanmisaka         RK_U32  sw_dc3_code8_cnt     : 4;
519*437bfbebSnyanmisaka     } reg27;
520*437bfbebSnyanmisaka 
521*437bfbebSnyanmisaka     struct {
522*437bfbebSnyanmisaka         RK_U32  sw_dc3_code9_cnt     : 4;
523*437bfbebSnyanmisaka         RK_U32  sw_dc3_code10_cnt    : 4;
524*437bfbebSnyanmisaka         RK_U32  sw_dc3_code11_cnt    : 4;
525*437bfbebSnyanmisaka         RK_U32  sw_dc3_code12_cnt    : 4;
526*437bfbebSnyanmisaka         RK_U32  sw_dc3_code13_cnt    : 4;
527*437bfbebSnyanmisaka         RK_U32  sw_dc3_code14_cnt    : 4;
528*437bfbebSnyanmisaka         RK_U32  sw_dc3_code15_cnt    : 4;
529*437bfbebSnyanmisaka         RK_U32  sw_dc3_code16_cnt    : 4;
530*437bfbebSnyanmisaka     } reg28;
531*437bfbebSnyanmisaka 
532*437bfbebSnyanmisaka     /* Not used for JPEG */
533*437bfbebSnyanmisaka     RK_U32 reg29_reg39[11]; /* reg29 - reg39 */
534*437bfbebSnyanmisaka 
535*437bfbebSnyanmisaka     RK_U32      reg40_qtable_base;
536*437bfbebSnyanmisaka     RK_U32      reg41_directmv_base;
537*437bfbebSnyanmisaka     RK_U32      reg42_pjpeg_dccb_base;
538*437bfbebSnyanmisaka     RK_U32      reg43_pjpeg_dccr_base;
539*437bfbebSnyanmisaka 
540*437bfbebSnyanmisaka     /* Not used for JPEG */
541*437bfbebSnyanmisaka     RK_U32 reg44_reg50[7]; /* reg44 - reg50 */
542*437bfbebSnyanmisaka 
543*437bfbebSnyanmisaka     /* Not used for JPEG */
544*437bfbebSnyanmisaka     struct {
545*437bfbebSnyanmisaka         RK_U32  sw_refbu_y_offset   : 9;
546*437bfbebSnyanmisaka         RK_U32  reserved0           : 3;
547*437bfbebSnyanmisaka         RK_U32  sw_refbu_fparmod_e  : 1;
548*437bfbebSnyanmisaka         RK_U32  sw_refbu_eval_e     : 1;
549*437bfbebSnyanmisaka         RK_U32  sw_refbu_picid      : 5;
550*437bfbebSnyanmisaka         RK_U32  sw_refbu_thr        : 12;
551*437bfbebSnyanmisaka         RK_U32  sw_refbu_e          : 1;
552*437bfbebSnyanmisaka     } reg51_refpicbuf_ctrl;
553*437bfbebSnyanmisaka 
554*437bfbebSnyanmisaka     /* Not used for JPEG */
555*437bfbebSnyanmisaka     struct {
556*437bfbebSnyanmisaka         RK_U32  sw_refbu_intra_sum  : 16;
557*437bfbebSnyanmisaka         RK_U32  sw_refbu_hit_sum    : 16;
558*437bfbebSnyanmisaka     } reg52_sum_inf;
559*437bfbebSnyanmisaka 
560*437bfbebSnyanmisaka     /* Not used for JPEG */
561*437bfbebSnyanmisaka     struct {
562*437bfbebSnyanmisaka         RK_U32  sw_refbu_mv_sum     : 22;
563*437bfbebSnyanmisaka         RK_U32  reserved0           : 10;
564*437bfbebSnyanmisaka     } reg53_sum_mv;
565*437bfbebSnyanmisaka 
566*437bfbebSnyanmisaka     /* Not used for JPEG */
567*437bfbebSnyanmisaka     struct {
568*437bfbebSnyanmisaka         RK_U32  reserved0           : 17;
569*437bfbebSnyanmisaka         RK_U32  sw_dec_tiled_l      : 2; /* sw_priority_mode */
570*437bfbebSnyanmisaka         RK_U32  sw_dec_vp8snap_e    : 1;
571*437bfbebSnyanmisaka         RK_U32  sw_dec_mvc_prof     : 2;
572*437bfbebSnyanmisaka         RK_U32  sw_dec_avs_prof     : 1;
573*437bfbebSnyanmisaka         RK_U32  sw_dec_vp8_prof     : 1;
574*437bfbebSnyanmisaka         RK_U32  sw_dec_vp7_prof     : 1;
575*437bfbebSnyanmisaka         RK_U32  sw_dec_rtl_rom      : 1;
576*437bfbebSnyanmisaka         RK_U32  sw_dec_rv_prof      : 2;
577*437bfbebSnyanmisaka         RK_U32  sw_ref_buff2_exist  : 1;
578*437bfbebSnyanmisaka         RK_U32  reserved            : 1;
579*437bfbebSnyanmisaka         RK_U32  sw_dec_refbu_ilace  : 1;
580*437bfbebSnyanmisaka         RK_U32  sw_dec_jpeg_exten   : 1;
581*437bfbebSnyanmisaka     } reg54_synthesis_cfg;
582*437bfbebSnyanmisaka 
583*437bfbebSnyanmisaka     /* Not used for JPEG */
584*437bfbebSnyanmisaka     struct {
585*437bfbebSnyanmisaka         RK_U32  sw_apf_threshold    : 14;
586*437bfbebSnyanmisaka         RK_U32  sw_refbu2_picid     : 5;
587*437bfbebSnyanmisaka         RK_U32  sw_refbu2_thr       : 12;
588*437bfbebSnyanmisaka         RK_U32  sw_refbu2_buf_e     : 1;
589*437bfbebSnyanmisaka     } reg55;
590*437bfbebSnyanmisaka 
591*437bfbebSnyanmisaka     /* Not used for JPEG */
592*437bfbebSnyanmisaka     struct {
593*437bfbebSnyanmisaka         RK_U32  sw_refbu_bot_sum    : 16;
594*437bfbebSnyanmisaka         RK_U32  sw_refbu_top_sum    : 16;
595*437bfbebSnyanmisaka     } reg56_sum_of_partitions;
596*437bfbebSnyanmisaka 
597*437bfbebSnyanmisaka     RK_U32      reg57_decoder_fuse; /* Not used */
598*437bfbebSnyanmisaka     RK_U32      reg58_debug;
599*437bfbebSnyanmisaka 
600*437bfbebSnyanmisaka     /* Not used for JPEG */
601*437bfbebSnyanmisaka     RK_U32      reg59_addit_ch_st_base;
602*437bfbebSnyanmisaka     post_processor_reg  post;
603*437bfbebSnyanmisaka } JpegRegSet;
604*437bfbebSnyanmisaka 
605*437bfbebSnyanmisaka typedef struct JpegdIocRegInfo_t {
606*437bfbebSnyanmisaka     JpegRegSet             regs;
607*437bfbebSnyanmisaka 
608*437bfbebSnyanmisaka     /* vepu_reg_num - vdpu_reg_num */
609*437bfbebSnyanmisaka     RK_U32                 regs_diff[164 - JPEGD_REG_NUM];
610*437bfbebSnyanmisaka     RK_U8                  extra_info[EXTRA_INFO_SIZE];
611*437bfbebSnyanmisaka } JpegdIocRegInfo;
612*437bfbebSnyanmisaka 
613*437bfbebSnyanmisaka #endif
614