xref: /rockchip-linux_mpp/mpp/hal/rkdec/h264d/hal_h264d_rkv_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka *
3*437bfbebSnyanmisaka * Copyright 2015 Rockchip Electronics Co. LTD
4*437bfbebSnyanmisaka *
5*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License");
6*437bfbebSnyanmisaka * you may not use this file except in compliance with the License.
7*437bfbebSnyanmisaka * You may obtain a copy of the License at
8*437bfbebSnyanmisaka *
9*437bfbebSnyanmisaka *      http://www.apache.org/licenses/LICENSE-2.0
10*437bfbebSnyanmisaka *
11*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software
12*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS,
13*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*437bfbebSnyanmisaka * See the License for the specific language governing permissions and
15*437bfbebSnyanmisaka * limitations under the License.
16*437bfbebSnyanmisaka */
17*437bfbebSnyanmisaka 
18*437bfbebSnyanmisaka 
19*437bfbebSnyanmisaka #ifndef __HAL_H264D_RKV_REG_H__
20*437bfbebSnyanmisaka #define __HAL_H264D_RKV_REG_H__
21*437bfbebSnyanmisaka 
22*437bfbebSnyanmisaka #include "mpp_hal.h"
23*437bfbebSnyanmisaka 
24*437bfbebSnyanmisaka typedef struct h264d_rkv_regs_t {
25*437bfbebSnyanmisaka     struct {
26*437bfbebSnyanmisaka         RK_U32    minor_ver : 8;
27*437bfbebSnyanmisaka         RK_U32    level : 1;
28*437bfbebSnyanmisaka         RK_U32    dec_support : 3;
29*437bfbebSnyanmisaka         RK_U32    profile : 1;
30*437bfbebSnyanmisaka         RK_U32    reserve0 : 1;
31*437bfbebSnyanmisaka         RK_U32    codec_flag : 1;
32*437bfbebSnyanmisaka         RK_U32    reserve1 : 1;
33*437bfbebSnyanmisaka         RK_U32    prod_num : 16;
34*437bfbebSnyanmisaka     } sw00;
35*437bfbebSnyanmisaka     struct {
36*437bfbebSnyanmisaka         RK_U32    dec_e : 1;//0
37*437bfbebSnyanmisaka         RK_U32    dec_clkgate_e : 1; // 1
38*437bfbebSnyanmisaka         RK_U32    reserve0 : 1;// 2
39*437bfbebSnyanmisaka         RK_U32    timeout_mode : 1; // 3
40*437bfbebSnyanmisaka         RK_U32    dec_irq_dis : 1;//4    // 4
41*437bfbebSnyanmisaka         RK_U32    dec_timeout_e : 1; //5
42*437bfbebSnyanmisaka         RK_U32    buf_empty_en : 1; // 6
43*437bfbebSnyanmisaka         RK_U32    stmerror_waitdecfifo_empty : 1; // 7
44*437bfbebSnyanmisaka         RK_U32    dec_irq : 1; // 8
45*437bfbebSnyanmisaka         RK_U32    dec_irq_raw : 1; // 9
46*437bfbebSnyanmisaka         RK_U32    reserve2 : 2;
47*437bfbebSnyanmisaka         RK_U32    dec_rdy_sta : 1; //12
48*437bfbebSnyanmisaka         RK_U32    dec_bus_sta : 1; //13
49*437bfbebSnyanmisaka         RK_U32    dec_error_sta : 1; // 14
50*437bfbebSnyanmisaka         RK_U32    dec_timeout_sta : 1; //15
51*437bfbebSnyanmisaka         RK_U32    dec_empty_sta : 1; // 16
52*437bfbebSnyanmisaka         RK_U32    colmv_ref_error_sta : 1; // 17
53*437bfbebSnyanmisaka         RK_U32    cabu_end_sta : 1; // 18
54*437bfbebSnyanmisaka         RK_U32    h264orvp9_error_mode : 1; //19
55*437bfbebSnyanmisaka         RK_U32    softrst_en_p : 1; //20
56*437bfbebSnyanmisaka         RK_U32    force_softreset_valid : 1; //21
57*437bfbebSnyanmisaka         RK_U32    softreset_rdy : 1; // 22
58*437bfbebSnyanmisaka         RK_U32    reserve1 : 9;
59*437bfbebSnyanmisaka     } sw01;
60*437bfbebSnyanmisaka     struct {
61*437bfbebSnyanmisaka         RK_U32    in_endian : 1;
62*437bfbebSnyanmisaka         RK_U32    in_swap32_e : 1;
63*437bfbebSnyanmisaka         RK_U32    in_swap64_e : 1;
64*437bfbebSnyanmisaka         RK_U32    str_endian : 1;
65*437bfbebSnyanmisaka         RK_U32    str_swap32_e : 1;
66*437bfbebSnyanmisaka         RK_U32    str_swap64_e : 1;
67*437bfbebSnyanmisaka         RK_U32    out_endian : 1;
68*437bfbebSnyanmisaka         RK_U32    out_swap32_e : 1;
69*437bfbebSnyanmisaka         RK_U32    out_cbcr_swap : 1;
70*437bfbebSnyanmisaka         RK_U32    reserve0 : 1;
71*437bfbebSnyanmisaka         RK_U32    rlc_mode_direct_write : 1;
72*437bfbebSnyanmisaka         RK_U32    rlc_mode : 1;
73*437bfbebSnyanmisaka         RK_U32    strm_start_bit : 7;
74*437bfbebSnyanmisaka         RK_U32    reserve1 : 1;
75*437bfbebSnyanmisaka         RK_U32    dec_mode : 2;
76*437bfbebSnyanmisaka         RK_U32    reserve2 : 2;
77*437bfbebSnyanmisaka         RK_U32    rps_mode : 1;
78*437bfbebSnyanmisaka         RK_U32    stream_mode : 1;
79*437bfbebSnyanmisaka         RK_U32    stream_lastpacket : 1;
80*437bfbebSnyanmisaka         RK_U32    firstslice_flag : 1;
81*437bfbebSnyanmisaka         RK_U32    frame_orslice : 1;
82*437bfbebSnyanmisaka         RK_U32    buspr_slot_disable : 1;
83*437bfbebSnyanmisaka         RK_U32    reverse3 : 2;
84*437bfbebSnyanmisaka     } sw02;
85*437bfbebSnyanmisaka     struct {
86*437bfbebSnyanmisaka         RK_U32    y_hor_virstride : 9;
87*437bfbebSnyanmisaka         RK_U32    reserve : 2;
88*437bfbebSnyanmisaka         RK_U32    slice_num_highbit : 1;
89*437bfbebSnyanmisaka         RK_U32    uv_hor_virstride : 9;
90*437bfbebSnyanmisaka         RK_U32    slice_num_lowbits : 11;
91*437bfbebSnyanmisaka     } sw03;
92*437bfbebSnyanmisaka     struct {
93*437bfbebSnyanmisaka         RK_U32    strm_rlc_base : 32;
94*437bfbebSnyanmisaka     } sw04;
95*437bfbebSnyanmisaka     struct {
96*437bfbebSnyanmisaka         RK_U32    stream_len : 27;
97*437bfbebSnyanmisaka         RK_U32    reverse0 : 5;
98*437bfbebSnyanmisaka     } sw05;
99*437bfbebSnyanmisaka     struct {
100*437bfbebSnyanmisaka         RK_U32    cabactbl_base : 32;
101*437bfbebSnyanmisaka     } sw06;
102*437bfbebSnyanmisaka     struct {
103*437bfbebSnyanmisaka         RK_U32    decout_base : 32;
104*437bfbebSnyanmisaka     } sw07;
105*437bfbebSnyanmisaka     struct {
106*437bfbebSnyanmisaka         RK_U32    y_virstride : 20;
107*437bfbebSnyanmisaka         RK_U32    reverse0 : 12;
108*437bfbebSnyanmisaka     } sw08;
109*437bfbebSnyanmisaka     struct {
110*437bfbebSnyanmisaka         RK_U32    yuv_virstride : 21;
111*437bfbebSnyanmisaka         RK_U32    reverse0 : 11;
112*437bfbebSnyanmisaka     } sw09;
113*437bfbebSnyanmisaka     struct {
114*437bfbebSnyanmisaka         /* bit0: ref0_14_field
115*437bfbebSnyanmisaka          * bit1: ref0_14_topfield_used
116*437bfbebSnyanmisaka          * bit2: ref0_14_botfield_used
117*437bfbebSnyanmisaka          * bit3: ref0_14_colmv_use_flag
118*437bfbebSnyanmisaka          */
119*437bfbebSnyanmisaka         RK_U32    ref0_14_base; /* bit4-bit31 */
120*437bfbebSnyanmisaka     } sw10_24[15];
121*437bfbebSnyanmisaka     struct {
122*437bfbebSnyanmisaka         RK_U32    ref0_14_poc : 32;
123*437bfbebSnyanmisaka     } sw25_39[15];
124*437bfbebSnyanmisaka     struct {
125*437bfbebSnyanmisaka         RK_U32    cur_poc : 32;
126*437bfbebSnyanmisaka     } sw40;
127*437bfbebSnyanmisaka     struct {
128*437bfbebSnyanmisaka         RK_U32    rlcwrite_base;
129*437bfbebSnyanmisaka     } sw41;
130*437bfbebSnyanmisaka     struct {
131*437bfbebSnyanmisaka         RK_U32    pps_base;
132*437bfbebSnyanmisaka     } sw42;
133*437bfbebSnyanmisaka     struct {
134*437bfbebSnyanmisaka         RK_U32    rps_base;
135*437bfbebSnyanmisaka     } sw43;
136*437bfbebSnyanmisaka     struct {
137*437bfbebSnyanmisaka         RK_U32    strmd_error_e : 28;
138*437bfbebSnyanmisaka         RK_U32    reserve : 4;
139*437bfbebSnyanmisaka     } sw44;
140*437bfbebSnyanmisaka     struct {
141*437bfbebSnyanmisaka         RK_U32    strmd_error_status : 28;
142*437bfbebSnyanmisaka         RK_U32    colmv_error_ref_picidx : 4;
143*437bfbebSnyanmisaka     } sw45;
144*437bfbebSnyanmisaka     struct {
145*437bfbebSnyanmisaka         RK_U32    strmd_error_ctu_xoffset : 8;
146*437bfbebSnyanmisaka         RK_U32    strmd_error_ctu_yoffset : 8;
147*437bfbebSnyanmisaka         RK_U32    streamfifo_space2full : 7;
148*437bfbebSnyanmisaka         RK_U32    reserve0 : 1;
149*437bfbebSnyanmisaka         RK_U32    vp9_error_ctu0_en : 1;
150*437bfbebSnyanmisaka         RK_U32    reverse1 : 7;
151*437bfbebSnyanmisaka     } sw46;
152*437bfbebSnyanmisaka     struct {
153*437bfbebSnyanmisaka         RK_U32    saowr_xoffet : 9;
154*437bfbebSnyanmisaka         RK_U32    reserve0 : 7;
155*437bfbebSnyanmisaka         RK_U32    saowr_yoffset : 10;
156*437bfbebSnyanmisaka         RK_U32    reverse1 : 6;
157*437bfbebSnyanmisaka     } sw47;
158*437bfbebSnyanmisaka     struct {
159*437bfbebSnyanmisaka         /* bit0: ref15_field
160*437bfbebSnyanmisaka          * bit1: ref15_topfield_used
161*437bfbebSnyanmisaka          * bit2: ref15_botfield_used
162*437bfbebSnyanmisaka          * bit3: ref15_colmv_use_flag
163*437bfbebSnyanmisaka          */
164*437bfbebSnyanmisaka         RK_U32    ref15_base; /* bit4-bit31 */
165*437bfbebSnyanmisaka     } sw48;
166*437bfbebSnyanmisaka     struct {
167*437bfbebSnyanmisaka         RK_U32    ref15_29_poc : 32;
168*437bfbebSnyanmisaka     } sw49_63[15];
169*437bfbebSnyanmisaka     struct {
170*437bfbebSnyanmisaka         RK_U32    performance_cycle : 32;
171*437bfbebSnyanmisaka     } sw64;
172*437bfbebSnyanmisaka     struct {
173*437bfbebSnyanmisaka         RK_U32    axi_ddr_rdata : 32;
174*437bfbebSnyanmisaka     } sw65;
175*437bfbebSnyanmisaka     struct {
176*437bfbebSnyanmisaka         RK_U32    axi_ddr_rdata : 32;
177*437bfbebSnyanmisaka     } sw66;
178*437bfbebSnyanmisaka     struct {
179*437bfbebSnyanmisaka         RK_U32    busifd_resetn : 1;
180*437bfbebSnyanmisaka         RK_U32    cabac_resetn : 1;
181*437bfbebSnyanmisaka         RK_U32    dec_ctrl_resetn : 1;
182*437bfbebSnyanmisaka         RK_U32    transd_resetn : 1;
183*437bfbebSnyanmisaka         RK_U32    intra_resetn : 1;
184*437bfbebSnyanmisaka         RK_U32    inter_resetn : 1;
185*437bfbebSnyanmisaka         RK_U32    recon_resetn : 1;
186*437bfbebSnyanmisaka         RK_U32    filer_resetn : 1;
187*437bfbebSnyanmisaka         RK_U32    reverse0 : 24;
188*437bfbebSnyanmisaka     } sw67;
189*437bfbebSnyanmisaka     struct {
190*437bfbebSnyanmisaka         RK_U32    perf_cnt0_sel : 6;
191*437bfbebSnyanmisaka         RK_U32    reserve0 : 2;
192*437bfbebSnyanmisaka         RK_U32    perf_cnt1_sel : 6;
193*437bfbebSnyanmisaka         RK_U32    reserve1 : 2;
194*437bfbebSnyanmisaka         RK_U32    perf_cnt2_sel : 6;
195*437bfbebSnyanmisaka         RK_U32    reverse1 : 10;
196*437bfbebSnyanmisaka     } sw68;
197*437bfbebSnyanmisaka     struct {
198*437bfbebSnyanmisaka         RK_U32    perf_cnt0 : 32;
199*437bfbebSnyanmisaka     } sw69;
200*437bfbebSnyanmisaka     struct {
201*437bfbebSnyanmisaka         RK_U32    perf_cnt1 : 32;
202*437bfbebSnyanmisaka     } sw70;
203*437bfbebSnyanmisaka     struct {
204*437bfbebSnyanmisaka         RK_U32    perf_cnt2 : 32;
205*437bfbebSnyanmisaka     } sw71;
206*437bfbebSnyanmisaka     struct {
207*437bfbebSnyanmisaka         RK_U32    ref30_poc;
208*437bfbebSnyanmisaka     } sw72;
209*437bfbebSnyanmisaka     struct {
210*437bfbebSnyanmisaka         RK_U32    ref31_poc;
211*437bfbebSnyanmisaka     } sw73;
212*437bfbebSnyanmisaka     struct {
213*437bfbebSnyanmisaka         RK_U32    cur_poc1 : 32;
214*437bfbebSnyanmisaka     } sw74;
215*437bfbebSnyanmisaka     struct {
216*437bfbebSnyanmisaka         RK_U32    errorinfo_base : 32;
217*437bfbebSnyanmisaka     } sw75;
218*437bfbebSnyanmisaka     struct {
219*437bfbebSnyanmisaka         RK_U32    slicedec_num : 14;
220*437bfbebSnyanmisaka         RK_U32    reserve0 : 1;
221*437bfbebSnyanmisaka         RK_U32    strmd_detect_error_flag : 1;
222*437bfbebSnyanmisaka         RK_U32    error_packet_num : 14;
223*437bfbebSnyanmisaka         RK_U32    reverse1 : 2;
224*437bfbebSnyanmisaka     } sw76;
225*437bfbebSnyanmisaka     struct {
226*437bfbebSnyanmisaka         RK_U32    error_en_highbits : 30;
227*437bfbebSnyanmisaka         RK_U32    reserve : 2;
228*437bfbebSnyanmisaka     } sw77;
229*437bfbebSnyanmisaka     RK_U32        reverse[2];
230*437bfbebSnyanmisaka } H264dRkvRegs_t;
231*437bfbebSnyanmisaka 
232*437bfbebSnyanmisaka 
233*437bfbebSnyanmisaka #ifdef __cplusplus
234*437bfbebSnyanmisaka extern "C" {
235*437bfbebSnyanmisaka #endif
236*437bfbebSnyanmisaka 
237*437bfbebSnyanmisaka extern const MppHalApi hal_h264d_rkvdpu;
238*437bfbebSnyanmisaka 
239*437bfbebSnyanmisaka #ifdef __cplusplus
240*437bfbebSnyanmisaka }
241*437bfbebSnyanmisaka #endif
242*437bfbebSnyanmisaka 
243*437bfbebSnyanmisaka #endif /* __HAL_H264D_RKV_REG_H__ */
244