hc
2023-03-13 2ec15ae1cb4be1b4fcb56c6d621123d7ebdaad6c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
/*
 * Copyright 2020 Rockchip Electronics Co. LTD
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
#ifndef __VDPU34X_H264D_H__
#define __VDPU34X_H264D_H__
 
#include "vdpu34x_com.h"
 
/* base: OFFSET_CODEC_PARAMS_REGS */
typedef struct Vdpu34xRegH264dParam_t {
    struct SWREG64_H26X_SET {
        RK_U32      h26x_frame_orslice      : 1;
        RK_U32      h26x_rps_mode           : 1;
        RK_U32      h26x_stream_mode        : 1;
        RK_U32      h26x_stream_lastpacket  : 1;
        RK_U32      h264_firstslice_flag    : 1;
        RK_U32      reserve                 : 27;
    } reg64;
 
    struct SWREG65_CUR_POC {
        RK_U32      cur_top_poc : 32;
    } reg65;
 
    struct SWREG66_H264_CUR_POC1 {
        RK_U32      cur_bot_poc : 32;
    } reg66;
 
    RK_U32  reg67_98_ref_poc[32];
 
    struct SWREG99_H264_REG0_3_INFO {
 
        RK_U32      ref0_field              : 1;
        RK_U32      ref0_topfield_used      : 1;
        RK_U32      ref0_botfield_used      : 1;
        RK_U32      ref0_colmv_use_flag     : 1;
        RK_U32      ref0_reserve            : 4;
 
        RK_U32      ref1_field              : 1;
        RK_U32      ref1_topfield_used      : 1;
        RK_U32      ref1_botfield_used      : 1;
        RK_U32      ref1_colmv_use_flag     : 1;
        RK_U32      ref1_reserve            : 4;
 
        RK_U32      ref2_field              : 1;
        RK_U32      ref2_topfield_used      : 1;
        RK_U32      ref2_botfield_used      : 1;
        RK_U32      ref2_colmv_use_flag     : 1;
        RK_U32      ref2_reserve            : 4;
 
        RK_U32      ref3_field              : 1;
        RK_U32      ref3_topfield_used      : 1;
        RK_U32      ref3_botfield_used      : 1;
        RK_U32      ref3_colmv_use_flag     : 1;
        RK_U32      ref3_reserve            : 4;
    } reg99;
 
    struct SWREG100_H264_REG4_7_INFO {
 
        RK_U32      ref4_field              : 1;
        RK_U32      ref4_topfield_used      : 1;
        RK_U32      ref4_botfield_used      : 1;
        RK_U32      ref4_colmv_use_flag     : 1;
        RK_U32      ref4_reserve            : 4;
 
        RK_U32      ref5_field              : 1;
        RK_U32      ref5_topfield_used      : 1;
        RK_U32      ref5_botfield_used      : 1;
        RK_U32      ref5_colmv_use_flag     : 1;
        RK_U32      ref5_reserve            : 4;
 
        RK_U32      ref6_field              : 1;
        RK_U32      ref6_topfield_used      : 1;
        RK_U32      ref6_botfield_used      : 1;
        RK_U32      ref6_colmv_use_flag     : 1;
        RK_U32      ref6_reserve            : 4;
 
        RK_U32      ref7_field              : 1;
        RK_U32      ref7_topfield_used      : 1;
        RK_U32      ref7_botfield_used      : 1;
        RK_U32      ref7_colmv_use_flag     : 1;
        RK_U32      ref7_reserve            : 4;
    } reg100;
 
    struct SWREG101_H264_REG8_11_INFO {
 
        RK_U32      ref8_field              : 1;
        RK_U32      ref8_topfield_used      : 1;
        RK_U32      ref8_botfield_used      : 1;
        RK_U32      ref8_colmv_use_flag     : 1;
        RK_U32      ref8_reserve            : 4;
 
        RK_U32      ref9_field              : 1;
        RK_U32      ref9_topfield_used      : 1;
        RK_U32      ref9_botfield_used      : 1;
        RK_U32      ref9_colmv_use_flag     : 1;
        RK_U32      ref9_reserve            : 4;
 
        RK_U32      ref10_field             : 1;
        RK_U32      ref10_topfield_used     : 1;
        RK_U32      ref10_botfield_used     : 1;
        RK_U32      ref10_colmv_use_flag    : 1;
        RK_U32      ref10_reserve           : 4;
 
        RK_U32      ref11_field             : 1;
        RK_U32      ref11_topfield_used     : 1;
        RK_U32      ref11_botfield_used     : 1;
        RK_U32      ref11_colmv_use_flag    : 1;
        RK_U32      ref11_reserve           : 4;
    } reg101;
 
    struct SWREG102_H264_REG12_15_INFO {
 
        RK_U32      ref12_field             : 1;
        RK_U32      ref12_topfield_used     : 1;
        RK_U32      ref12_botfield_used     : 1;
        RK_U32      ref12_colmv_use_flag    : 1;
        RK_U32      ref12_reserve           : 4;
 
        RK_U32      ref13_field             : 1;
        RK_U32      ref13_topfield_used     : 1;
        RK_U32      ref13_botfield_used     : 1;
        RK_U32      ref13_colmv_use_flag    : 1;
        RK_U32      ref13_reserve           : 4;
 
        RK_U32      ref14_field             : 1;
        RK_U32      ref14_topfield_used     : 1;
        RK_U32      ref14_botfield_used     : 1;
        RK_U32      ref14_colmv_use_flag    : 1;
        RK_U32      ref14_reserve           : 4;
 
        RK_U32      ref15_field             : 1;
        RK_U32      ref15_topfield_used     : 1;
        RK_U32      ref15_botfield_used     : 1;
        RK_U32      ref15_colmv_use_flag    : 1;
        RK_U32      ref15_reserve           : 4;
    } reg102;
 
    struct SWREG103_111_NO_USE_REGS {
        RK_U32  reserve;
    } no_use_regs[9];
 
    struct SWREG112_ERROR_REF_INFO {
        RK_U32      avs2_ref_error_field        : 1;
        RK_U32      avs2_ref_error_topfield     : 1;
        RK_U32      ref_error_topfield_used     : 1;
        RK_U32      ref_error_botfield_used     : 1;
        RK_U32      reserve                     : 28;
    } reg112;
} Vdpu34xRegH264dParam;
 
/* base: OFFSET_CODEC_ADDR_REGS */
typedef struct Vdpu34xRegH264dAddr_t {
    /* SWREG160 */
    RK_U32  reg160_no_use;
 
    /* SWREG161 */
    RK_U32  pps_base;
 
    /* SWREG162 */
    RK_U32  reg162_no_use;
 
    /* SWREG163 */
    RK_U32  rps_base;
 
    /* SWREG164~179 */
    RK_U32  ref_base[16];
 
    /* SWREG180 */
    RK_U32  scanlist_addr;
 
    /* SWREG181~196 */
    RK_U32  colmv_base[16];
 
    /* SWREG197 */
    RK_U32  cabactbl_base;
} Vdpu34xRegH264dAddr;
 
typedef struct Vdpu34xH264dHighPoc_t {
    /* SWREG200 */
    struct SWREG200_REF0_7_POC_HIGHBIT {
        RK_U32      ref0_poc_highbit        : 4;
        RK_U32      ref1_poc_highbit        : 4;
        RK_U32      ref2_poc_highbit        : 4;
        RK_U32      ref3_poc_highbit        : 4;
        RK_U32      ref4_poc_highbit        : 4;
        RK_U32      ref5_poc_highbit        : 4;
        RK_U32      ref6_poc_highbit        : 4;
        RK_U32      ref7_poc_highbit        : 4;
    } reg200;
    struct SWREG201_REF8_15_POC_HIGHBIT {
        RK_U32      ref8_poc_highbit        : 4;
        RK_U32      ref9_poc_highbit        : 4;
        RK_U32      ref10_poc_highbit       : 4;
        RK_U32      ref11_poc_highbit       : 4;
        RK_U32      ref12_poc_highbit       : 4;
        RK_U32      ref13_poc_highbit       : 4;
        RK_U32      ref14_poc_highbit       : 4;
        RK_U32      ref15_poc_highbit       : 4;
    } reg201;
    struct SWREG200_REF16_23_POC_HIGHBIT {
        RK_U32      ref16_poc_highbit       : 4;
        RK_U32      ref17_poc_highbit       : 4;
        RK_U32      ref18_poc_highbit       : 4;
        RK_U32      ref19_poc_highbit       : 4;
        RK_U32      ref20_poc_highbit       : 4;
        RK_U32      ref21_poc_highbit       : 4;
        RK_U32      ref22_poc_highbit       : 4;
        RK_U32      ref23_poc_highbit       : 4;
    } reg202;
    struct SWREG200_REF24_31_POC_HIGHBIT {
        RK_U32      ref24_poc_highbit       : 4;
        RK_U32      ref25_poc_highbit       : 4;
        RK_U32      ref26_poc_highbit       : 4;
        RK_U32      ref27_poc_highbit       : 4;
        RK_U32      ref28_poc_highbit       : 4;
        RK_U32      ref29_poc_highbit       : 4;
        RK_U32      ref30_poc_highbit       : 4;
        RK_U32      ref31_poc_highbit       : 4;
    } reg203;
    struct SWREG200_CUR_POC_HIGHBIT {
        RK_U32      cur_poc_highbit         : 4;
        RK_U32      reserver                : 28;
    } reg204;
} Vdpu34xH264dHighPoc_t;
 
typedef struct Vdpu34xH264dRegSet_t {
    Vdpu34xRegCommon        common;
    Vdpu34xRegH264dParam    h264d_param;
    Vdpu34xRegCommonAddr    common_addr;
    Vdpu34xRegH264dAddr     h264d_addr;
    Vdpu34xH264dHighPoc_t   h264d_highpoc;
    Vdpu34xRegIrqStatus     irq_status;
    Vdpu34xRegStatistic     statistic;
} Vdpu34xH264dRegSet;
 
#endif /* __VDPU34X_H264D_H__ */