xref: /rockchip-linux_mpp/mpp/hal/rkenc/h264e/hal_h264e_vepu541_reg_l2.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_H264E_VEPU541_REG_L2_H__
18*437bfbebSnyanmisaka #define __HAL_H264E_VEPU541_REG_L2_H__
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka #include "rk_type.h"
21*437bfbebSnyanmisaka 
22*437bfbebSnyanmisaka /*
23*437bfbebSnyanmisaka  * L2CFG_ADDR
24*437bfbebSnyanmisaka  * Address offset: 0x3F0 Access type: read and write
25*437bfbebSnyanmisaka  * Level2 configuration address
26*437bfbebSnyanmisaka  */
27*437bfbebSnyanmisaka /*
28*437bfbebSnyanmisaka  * L2CFG_WDATA
29*437bfbebSnyanmisaka  * Address offset: 0x3F4 Access type: read and write
30*437bfbebSnyanmisaka  * L2 configuration write data
31*437bfbebSnyanmisaka  */
32*437bfbebSnyanmisaka /*
33*437bfbebSnyanmisaka  * L2 configuration write data.
34*437bfbebSnyanmisaka  *
35*437bfbebSnyanmisaka  * Single access:
36*437bfbebSnyanmisaka  * write address to VEPU_L2CFG_ADDR then write data to VEPU_L2CFG_WDATA.
37*437bfbebSnyanmisaka  *
38*437bfbebSnyanmisaka  * Burst access:
39*437bfbebSnyanmisaka  * write the start address to VEPU_L2CFG_ADDR then write datas
40*437bfbebSnyanmisaka  * (to VEPU_L2CFG_WDATA) consecutively.
41*437bfbebSnyanmisaka  * Address will be auto increased after write VEPU_L2CFG_WDATA,
42*437bfbebSnyanmisaka  * no need to configure VEPU_L2CFG_ADDR.
43*437bfbebSnyanmisaka  */
44*437bfbebSnyanmisaka 
45*437bfbebSnyanmisaka /*
46*437bfbebSnyanmisaka  * L2CFG_RDATA
47*437bfbebSnyanmisaka  * Address offset: 0x3F8 Access type: read and write
48*437bfbebSnyanmisaka  * L2 configuration read data
49*437bfbebSnyanmisaka  */
50*437bfbebSnyanmisaka struct {
51*437bfbebSnyanmisaka     /*
52*437bfbebSnyanmisaka      * L2 configuration read data.
53*437bfbebSnyanmisaka      *
54*437bfbebSnyanmisaka      * Single access:
55*437bfbebSnyanmisaka      * write address to VEPU_L2CFG_ADDR then read data from VEPU_L2CFG_RDATA.
56*437bfbebSnyanmisaka      *
57*437bfbebSnyanmisaka      * Burst access:
58*437bfbebSnyanmisaka      * write the start address to VEPU_L2CFG_ADDR then read datas
59*437bfbebSnyanmisaka      * (from VEPU_L2CFG_RDATA) consecutively.
60*437bfbebSnyanmisaka      * Address will be auto increased after read VEPU_L2CFG_RDATA,
61*437bfbebSnyanmisaka      * no need to configure VEPU_L2CFG_ADDR.
62*437bfbebSnyanmisaka      */
63*437bfbebSnyanmisaka     RK_U32  l2cfg_rdata;
64*437bfbebSnyanmisaka } reg254;
65*437bfbebSnyanmisaka 
66*437bfbebSnyanmisaka /* reg gap 255 */
67*437bfbebSnyanmisaka RK_U32 reg_255;
68*437bfbebSnyanmisaka 
69*437bfbebSnyanmisaka 
70*437bfbebSnyanmisaka typedef struct Vepu541H264eRegL2Set_t {
71*437bfbebSnyanmisaka     /*
72*437bfbebSnyanmisaka      * IPRD_TTHDY4_0_H264 ~ IPRD_TTHDY4_1_H264
73*437bfbebSnyanmisaka      * Address: 0x0004~0x0008 Access type: read and write
74*437bfbebSnyanmisaka      * The texture thredsholds for H.264 LUMA 4x4 intra prediction
75*437bfbebSnyanmisaka      */
76*437bfbebSnyanmisaka     RK_U16  iprd_tthdy4[4];
77*437bfbebSnyanmisaka 
78*437bfbebSnyanmisaka     /*
79*437bfbebSnyanmisaka      * IPRD_TTHDC8_0_H264 ~ IPRD_TTHDC8_1_H264
80*437bfbebSnyanmisaka      * Address: 0x000C~0x0010 Access type: read and write
81*437bfbebSnyanmisaka      * The texture threshold for H.264 CHROMA 8x8 intra prediction.
82*437bfbebSnyanmisaka      */
83*437bfbebSnyanmisaka     RK_U16  iprd_tthdc8[4];
84*437bfbebSnyanmisaka 
85*437bfbebSnyanmisaka     /*
86*437bfbebSnyanmisaka      * IPRD_TTHDY8_0_H264 ~ IPRD_TTHDY8_1_H264
87*437bfbebSnyanmisaka      * Address: 0x0014~0x0018 Access type: read and write
88*437bfbebSnyanmisaka      * The texture thredsholds for H.264 LUMA 8x8 intra prediction
89*437bfbebSnyanmisaka      */
90*437bfbebSnyanmisaka     RK_U16  iprd_tthdy8[4];
91*437bfbebSnyanmisaka 
92*437bfbebSnyanmisaka     /*
93*437bfbebSnyanmisaka      * IPRD_TTHD_UL_H264
94*437bfbebSnyanmisaka      * Address: 0x001C Access type: read and write
95*437bfbebSnyanmisaka      * Texture thredsholds of up and left MB for H.264 LUMA intra prediction.
96*437bfbebSnyanmisaka      */
97*437bfbebSnyanmisaka     RK_U32  iprd_tthd_ul;
98*437bfbebSnyanmisaka 
99*437bfbebSnyanmisaka     /*
100*437bfbebSnyanmisaka      * IPRD_WGTY8_H264
101*437bfbebSnyanmisaka      * Address: 0x0020 Access type: read and write
102*437bfbebSnyanmisaka      * Weights of the cost for H.264 LUMA 8x8 intra prediction
103*437bfbebSnyanmisaka      */
104*437bfbebSnyanmisaka     RK_U8   iprd_wgty8[4];
105*437bfbebSnyanmisaka 
106*437bfbebSnyanmisaka     /*
107*437bfbebSnyanmisaka      * IPRD_WGTY4_H264
108*437bfbebSnyanmisaka      * Address: 0x0024 Access type: read and write
109*437bfbebSnyanmisaka      * Weights of the cost for H.264 LUMA 4x4 intra prediction
110*437bfbebSnyanmisaka      */
111*437bfbebSnyanmisaka     RK_U8   iprd_wgty4[4];
112*437bfbebSnyanmisaka 
113*437bfbebSnyanmisaka     /*
114*437bfbebSnyanmisaka      * IPRD_WGTY16_H264
115*437bfbebSnyanmisaka      * Address: 0x0028 Access type: read and write
116*437bfbebSnyanmisaka      * Weights of the cost for H.264 LUMA 16x16 intra prediction
117*437bfbebSnyanmisaka      */
118*437bfbebSnyanmisaka     RK_U8   iprd_wgty16[4];
119*437bfbebSnyanmisaka 
120*437bfbebSnyanmisaka     /*
121*437bfbebSnyanmisaka      * IPRD_WGTC8_H264
122*437bfbebSnyanmisaka      * Address: 0x002C Access type: read and write
123*437bfbebSnyanmisaka      * Weights of the cost for H.264 CHROMA 8x8 intra prediction
124*437bfbebSnyanmisaka      */
125*437bfbebSnyanmisaka     RK_U8   iprd_wgtc8[4];
126*437bfbebSnyanmisaka 
127*437bfbebSnyanmisaka     /*
128*437bfbebSnyanmisaka      * QNT_BIAS_COMB
129*437bfbebSnyanmisaka      * Address: 0x0030 Access type: read and write
130*437bfbebSnyanmisaka      * Quantization bias for H.264 and HEVC.
131*437bfbebSnyanmisaka      */
132*437bfbebSnyanmisaka     struct {
133*437bfbebSnyanmisaka         /* Quantization bias for HEVC and H.264 I frame. */
134*437bfbebSnyanmisaka         RK_U32  qnt_bias_i              : 10;
135*437bfbebSnyanmisaka         /* Quantization bias for HEVC and H.264 P frame. */
136*437bfbebSnyanmisaka         RK_U32  qnt_bias_p              : 10;
137*437bfbebSnyanmisaka         RK_U32  reserved                : 12;
138*437bfbebSnyanmisaka     } qnt_bias_comb;
139*437bfbebSnyanmisaka 
140*437bfbebSnyanmisaka     /*
141*437bfbebSnyanmisaka      * ATR_THD0_H264
142*437bfbebSnyanmisaka      * Address: 0x0034 Access type: read and write
143*437bfbebSnyanmisaka      * H.264 anti ringing noise threshold configuration0.
144*437bfbebSnyanmisaka      */
145*437bfbebSnyanmisaka     struct {
146*437bfbebSnyanmisaka         /* The 1st threshold for H.264 anti-ringing-noise. */
147*437bfbebSnyanmisaka         RK_U32  atr_thd0                : 12;
148*437bfbebSnyanmisaka         RK_U32  reserved0               : 4;
149*437bfbebSnyanmisaka         /* The 2nd threshold for H.264 anti-ringing-noise. */
150*437bfbebSnyanmisaka         RK_U32  atr_thd1                : 12;
151*437bfbebSnyanmisaka         RK_U32  reserved1               : 4;
152*437bfbebSnyanmisaka     } atr_thd0_h264;
153*437bfbebSnyanmisaka 
154*437bfbebSnyanmisaka     /*
155*437bfbebSnyanmisaka      * ATR_THD1_H264
156*437bfbebSnyanmisaka      * Address: 0x0038 Access type: read and write
157*437bfbebSnyanmisaka      * H.264 anti ringing noise threshold configuration1.
158*437bfbebSnyanmisaka      */
159*437bfbebSnyanmisaka     struct {
160*437bfbebSnyanmisaka         /* The 3rd threshold for H.264 anti-ringing-noise. */
161*437bfbebSnyanmisaka         RK_U32  atr_thd2                : 12;
162*437bfbebSnyanmisaka         RK_U32  reserved0               : 4;
163*437bfbebSnyanmisaka         /* QP threshold of P frame for H.264 anti-ringing-nois. */
164*437bfbebSnyanmisaka         RK_U32  atr_qp                  : 6;
165*437bfbebSnyanmisaka         RK_U32  reserved1               : 10;
166*437bfbebSnyanmisaka     } atr_thd1_h264;
167*437bfbebSnyanmisaka 
168*437bfbebSnyanmisaka     /*
169*437bfbebSnyanmisaka      * ATR_WGT16_H264
170*437bfbebSnyanmisaka      * Address: 0x003C Access type: read and write
171*437bfbebSnyanmisaka      * Weights of 16x16 cost for H.264 anti ringing noise.
172*437bfbebSnyanmisaka      */
173*437bfbebSnyanmisaka     struct {
174*437bfbebSnyanmisaka         /* The 1st weight for H.264 16x16 anti-ringing-noise. */
175*437bfbebSnyanmisaka         RK_U32  atr_lv16_wgt0           : 8;
176*437bfbebSnyanmisaka         /* The 2nd weight for H.264 16x16 anti-ringing-noise. */
177*437bfbebSnyanmisaka         RK_U32  atr_lv16_wgt1           : 8;
178*437bfbebSnyanmisaka         /* The 3rd weight for H.264 16x16 anti-ringing-noise. */
179*437bfbebSnyanmisaka         RK_U32  atr_lv16_wgt2           : 8;
180*437bfbebSnyanmisaka         RK_U32  reserved                : 8;
181*437bfbebSnyanmisaka     } atr_wgt16_h264;
182*437bfbebSnyanmisaka 
183*437bfbebSnyanmisaka     /*
184*437bfbebSnyanmisaka      * ATR_WGT8_H264
185*437bfbebSnyanmisaka      * Address: 0x0040 Access type: read and write
186*437bfbebSnyanmisaka      * Weights of 8x8 cost for H.264 anti ringing noise.
187*437bfbebSnyanmisaka      */
188*437bfbebSnyanmisaka     struct {
189*437bfbebSnyanmisaka         /* The 1st weight for H.264 8x8 anti-ringing-noise. */
190*437bfbebSnyanmisaka         RK_U32  atr_lv8_wgt0            : 8;
191*437bfbebSnyanmisaka         /* The 2nd weight for H.264 8x8 anti-ringing-noise. */
192*437bfbebSnyanmisaka         RK_U32  atr_lv8_wgt1            : 8;
193*437bfbebSnyanmisaka         /* The 3rd weight for H.264 8x8 anti-ringing-noise. */
194*437bfbebSnyanmisaka         RK_U32  atr_lv8_wgt2            : 8;
195*437bfbebSnyanmisaka         RK_U32  reserved                : 8;
196*437bfbebSnyanmisaka     } atr_wgt8_h264;
197*437bfbebSnyanmisaka 
198*437bfbebSnyanmisaka     /*
199*437bfbebSnyanmisaka      * ATR_WGT4_H264
200*437bfbebSnyanmisaka      * Address: 0x0044 Access type: read and write
201*437bfbebSnyanmisaka      * Weights of 4x4 cost for H.264 anti ringing noise.
202*437bfbebSnyanmisaka      */
203*437bfbebSnyanmisaka     struct {
204*437bfbebSnyanmisaka         /* The 1st weight for H.264 4x4 anti-ringing-noise. */
205*437bfbebSnyanmisaka         RK_U32  atr_lv4_wgt0            : 8;
206*437bfbebSnyanmisaka         /* The 2nd weight for H.264 4x4 anti-ringing-noise. */
207*437bfbebSnyanmisaka         RK_U32  atr_lv4_wgt1            : 8;
208*437bfbebSnyanmisaka         /* The 3rd weight for H.264 4x4 anti-ringing-noise. */
209*437bfbebSnyanmisaka         RK_U32  atr_lv4_wgt2            : 8;
210*437bfbebSnyanmisaka         RK_U32  reserved                : 8;
211*437bfbebSnyanmisaka     } atr_wgt4_h264;
212*437bfbebSnyanmisaka 
213*437bfbebSnyanmisaka     /*
214*437bfbebSnyanmisaka      * ATF_TTHD0_H264 ~ ATF_TTHD1_H264
215*437bfbebSnyanmisaka      * Address: 0x0048~0x004C Access type: read and write
216*437bfbebSnyanmisaka      * Texture threshold configuration for H.264 anti-flicker
217*437bfbebSnyanmisaka      */
218*437bfbebSnyanmisaka     RK_U16  atf_tthd[4];
219*437bfbebSnyanmisaka 
220*437bfbebSnyanmisaka     /*
221*437bfbebSnyanmisaka      * ATF_STHD0_H264
222*437bfbebSnyanmisaka      * Address: 0x0050 Access type: read and write
223*437bfbebSnyanmisaka      * (CME) SAD threshold configuration1 for H.264 anti-flicker.
224*437bfbebSnyanmisaka      */
225*437bfbebSnyanmisaka     struct {
226*437bfbebSnyanmisaka         /* (CME) SAD threshold0 of texture interval1 for H.264 anti-flicker. */
227*437bfbebSnyanmisaka         RK_U32  atf_sthd_10             : 14;
228*437bfbebSnyanmisaka         RK_U32  reserved0               : 2;
229*437bfbebSnyanmisaka         /* Max (CME) SAD threshold for H.264 anti-flicker. */
230*437bfbebSnyanmisaka         RK_U32  atf_sthd_max            : 14;
231*437bfbebSnyanmisaka         RK_U32  reserved1               : 2;
232*437bfbebSnyanmisaka     } atf_sthd0_h264;
233*437bfbebSnyanmisaka 
234*437bfbebSnyanmisaka     /*
235*437bfbebSnyanmisaka      * ATF_STHD1_H264
236*437bfbebSnyanmisaka      * Address: 0x0054 Access type: read and write
237*437bfbebSnyanmisaka      * (CME) SAD threshold configuration1 for H.264 anti-flicker.
238*437bfbebSnyanmisaka      */
239*437bfbebSnyanmisaka     struct {
240*437bfbebSnyanmisaka         /* (CME) SAD threshold1 of texture interval1 for H.264 anti-flicker. */
241*437bfbebSnyanmisaka         RK_U32  atf_sthd_11             : 14;
242*437bfbebSnyanmisaka         RK_U32  reserved0               : 2;
243*437bfbebSnyanmisaka         /* (CME) SAD threshold0 of texture interval2 for H.264 anti-flicker. */
244*437bfbebSnyanmisaka         RK_U32  atf_sthd_20             : 14;
245*437bfbebSnyanmisaka         RK_U32  reserved1               : 2;
246*437bfbebSnyanmisaka     } atf_sthd1_h264;
247*437bfbebSnyanmisaka 
248*437bfbebSnyanmisaka     /*
249*437bfbebSnyanmisaka      * ATF_WGT0_H264
250*437bfbebSnyanmisaka      * Address: 0x0058 Access type: read and write
251*437bfbebSnyanmisaka      * Weight configuration0 for H.264 anti-flicker.
252*437bfbebSnyanmisaka      */
253*437bfbebSnyanmisaka     struct {
254*437bfbebSnyanmisaka         /* The 1st weight in texture interval1 for H.264 anti-flicker. */
255*437bfbebSnyanmisaka         RK_U32  atf_wgt10               : 9;
256*437bfbebSnyanmisaka         RK_U32  reserved0               : 7;
257*437bfbebSnyanmisaka         /* The 2nd weight in texture interval1 for H.264 anti-flicker. */
258*437bfbebSnyanmisaka         RK_U32  atf_wgt11               : 9;
259*437bfbebSnyanmisaka         RK_U32  reserved1               : 7;
260*437bfbebSnyanmisaka     } atf_wgt0_h264;
261*437bfbebSnyanmisaka 
262*437bfbebSnyanmisaka     /*
263*437bfbebSnyanmisaka      * ATF_WGT1_H264
264*437bfbebSnyanmisaka      * Address: 0x005C Access type: read and write
265*437bfbebSnyanmisaka      * Weight configuration1 for H.264 anti-flicker.
266*437bfbebSnyanmisaka      */
267*437bfbebSnyanmisaka     struct {
268*437bfbebSnyanmisaka         /* The 3rd weight in texture interval1 for H.264 anti-flicker. */
269*437bfbebSnyanmisaka         RK_U32  atf_wgt12               : 9;
270*437bfbebSnyanmisaka         RK_U32  reserved0               : 7;
271*437bfbebSnyanmisaka         /* The 1st weight in texture interval2 for H.264 anti-flicker. */
272*437bfbebSnyanmisaka         RK_U32  atf_wgt20               : 9;
273*437bfbebSnyanmisaka         RK_U32  reserved1               : 7;
274*437bfbebSnyanmisaka     } atf_wgt1_h264;
275*437bfbebSnyanmisaka 
276*437bfbebSnyanmisaka     /*
277*437bfbebSnyanmisaka      * ATF_WGT2_H264
278*437bfbebSnyanmisaka      * Address: 0x0060 Access type: read and write
279*437bfbebSnyanmisaka      * Weight configuration2 for H.264 anti-flicker.
280*437bfbebSnyanmisaka      */
281*437bfbebSnyanmisaka     struct {
282*437bfbebSnyanmisaka         /* The 2nd weight in texture interval2 for H.264 anti-flicker. */
283*437bfbebSnyanmisaka         RK_U32  atf_wgt21               : 9;
284*437bfbebSnyanmisaka         RK_U32  reserved0               : 7;
285*437bfbebSnyanmisaka         /* The weight in texture interval3 for H.264 anti-flicker. */
286*437bfbebSnyanmisaka         RK_U32  atf_wgt30               : 9;
287*437bfbebSnyanmisaka         RK_U32  reserved1               : 7;
288*437bfbebSnyanmisaka     } atf_wgt2_h264;
289*437bfbebSnyanmisaka 
290*437bfbebSnyanmisaka     /*
291*437bfbebSnyanmisaka      * ATF_OFST0_H264
292*437bfbebSnyanmisaka      * Address: 0x0064 Access type: read and write
293*437bfbebSnyanmisaka      * Offset configuration0 for H.264 anti-flicker.
294*437bfbebSnyanmisaka      */
295*437bfbebSnyanmisaka     struct {
296*437bfbebSnyanmisaka         /* The 1st offset in texture interval1 for H.264 anti-flicker. */
297*437bfbebSnyanmisaka         RK_U32  atf_ofst10              : 14;
298*437bfbebSnyanmisaka         RK_U32  reserved0               : 2;
299*437bfbebSnyanmisaka         /* The 2nd offset in texture interval1 for H.264 anti-flicker. */
300*437bfbebSnyanmisaka         RK_U32  atf_ofst11              : 14;
301*437bfbebSnyanmisaka         RK_U32  reserved1               : 2;
302*437bfbebSnyanmisaka     } atf_ofst0_h264;
303*437bfbebSnyanmisaka 
304*437bfbebSnyanmisaka     /*
305*437bfbebSnyanmisaka      * ATF_OFST1_H264
306*437bfbebSnyanmisaka      * Address: 0x0068 Access type: read and write
307*437bfbebSnyanmisaka      * Offset configuration1 for H.264 anti-flicker.
308*437bfbebSnyanmisaka      */
309*437bfbebSnyanmisaka     struct {
310*437bfbebSnyanmisaka         /* The 3rd offset in texture interval1 for H.264 anti-flicker. */
311*437bfbebSnyanmisaka         RK_U32  atf_ofst12              : 14;
312*437bfbebSnyanmisaka         RK_U32  reserved0               : 2;
313*437bfbebSnyanmisaka         /* The 1st offset in texture interval2 for H.264 anti-flicker. */
314*437bfbebSnyanmisaka         RK_U32  atf_ofst20              : 14;
315*437bfbebSnyanmisaka         RK_U32  reserved1               : 2;
316*437bfbebSnyanmisaka     } atf_ofst1_h264;
317*437bfbebSnyanmisaka 
318*437bfbebSnyanmisaka     /*
319*437bfbebSnyanmisaka      * ATF_OFST2_H264
320*437bfbebSnyanmisaka      * Address: 0x006C Access type: read and write
321*437bfbebSnyanmisaka      * Offset configuration2 for H.264 anti-flicker.
322*437bfbebSnyanmisaka      */
323*437bfbebSnyanmisaka     struct {
324*437bfbebSnyanmisaka         /* The 2nd offset in texture interval1 for H.264 anti-flicker. */
325*437bfbebSnyanmisaka         RK_U32  atf_ofst21              : 14;
326*437bfbebSnyanmisaka         RK_U32  reserved0               : 2;
327*437bfbebSnyanmisaka         /* The offset in texture interval3 for H.264 anti-flicker. */
328*437bfbebSnyanmisaka         RK_U32  atf_ofst30              : 14;
329*437bfbebSnyanmisaka         RK_U32  reserved1               : 2;
330*437bfbebSnyanmisaka     } atf_ofst2_h264;
331*437bfbebSnyanmisaka 
332*437bfbebSnyanmisaka     /*
333*437bfbebSnyanmisaka      * IPRD_WGT_QP0_HEVC ~ IPRD_WGT_QP51_HEVC
334*437bfbebSnyanmisaka      * Address: 0x0070 ~ 0x013C Access type: read and write
335*437bfbebSnyanmisaka      * Weight of SATD cost when QP is 0~51 for HEVC intra prediction.
336*437bfbebSnyanmisaka      */
337*437bfbebSnyanmisaka     RK_U32  iprd_wgt_qp[52];
338*437bfbebSnyanmisaka 
339*437bfbebSnyanmisaka     /*
340*437bfbebSnyanmisaka      * RDO_WGTA_QP0_COMB ~ RDO_WGTA_QP51_COMB
341*437bfbebSnyanmisaka      * Address: 0x0140 ~ 0x020C Access type: read and write
342*437bfbebSnyanmisaka      * Weight of group A for HEVC and H.264 RDO mode decision when QP is 0~51.
343*437bfbebSnyanmisaka      */
344*437bfbebSnyanmisaka     RK_U32  wgt_qp_grpa[52];
345*437bfbebSnyanmisaka 
346*437bfbebSnyanmisaka     /*
347*437bfbebSnyanmisaka      * RDO_WGTB_QP0_COMB ~ RDO_WGTB_QP51_COMB
348*437bfbebSnyanmisaka      * Address: 0x0210 ~ 0x02DC Access type: read and write
349*437bfbebSnyanmisaka      * Weight of group B for HEVC and H.264 RDO mode decision when QP is 0~51.
350*437bfbebSnyanmisaka      */
351*437bfbebSnyanmisaka     RK_U32  wgt_qp_grpb[52];
352*437bfbebSnyanmisaka 
353*437bfbebSnyanmisaka     /*
354*437bfbebSnyanmisaka      * MADI_CFG
355*437bfbebSnyanmisaka      * Address: 0x02E0 Access type: read and write
356*437bfbebSnyanmisaka      * MADI configuration for CU32 and CU64.
357*437bfbebSnyanmisaka      */
358*437bfbebSnyanmisaka     /*
359*437bfbebSnyanmisaka      * MADI generation mode for CU32 and CU64.
360*437bfbebSnyanmisaka      * 1'h0: Follow 32x32 and 64x64 MADI functions.
361*437bfbebSnyanmisaka      * 1'h1: Calculated by the mean of corresponding CU16 MADIs.
362*437bfbebSnyanmisaka      */
363*437bfbebSnyanmisaka     RK_U32  madi_mode;
364*437bfbebSnyanmisaka 
365*437bfbebSnyanmisaka     /*
366*437bfbebSnyanmisaka      * AQ_TTHD0 ~ AQ_TTHD3
367*437bfbebSnyanmisaka      * Address: 0x02E4 ~ 0x02F0 Access type: read and write
368*437bfbebSnyanmisaka      * Texture threshold configuration for adaptive QP adjustment.
369*437bfbebSnyanmisaka      */
370*437bfbebSnyanmisaka     /* Texture threshold for adaptive QP adjustment. */
371*437bfbebSnyanmisaka     RK_U8   aq_tthd[16];
372*437bfbebSnyanmisaka 
373*437bfbebSnyanmisaka     /*
374*437bfbebSnyanmisaka      * AQ_STP0 ~ AQ_STP3
375*437bfbebSnyanmisaka      * Address: 0x02F4 ~ 0x300 Access type: read and write
376*437bfbebSnyanmisaka      * Adjustment step configuration0 for adaptive QP adjustment.
377*437bfbebSnyanmisaka      */
378*437bfbebSnyanmisaka     /*
379*437bfbebSnyanmisaka      * MADI generation mode for CU32 and CU64.
380*437bfbebSnyanmisaka      * 1'h0: Follow 32x32 and 64x64 MADI functions.
381*437bfbebSnyanmisaka      * 1'h1: Calculated by the mean of corresponding CU16 MADIs.
382*437bfbebSnyanmisaka      */
383*437bfbebSnyanmisaka     /* QP adjust step when current texture strength is between n-1 and n step. */
384*437bfbebSnyanmisaka     RK_S8   aq_step[16];
385*437bfbebSnyanmisaka 
386*437bfbebSnyanmisaka     /*
387*437bfbebSnyanmisaka      * RME_MVD_PNSH_H264
388*437bfbebSnyanmisaka      * Address: 0x0304 Access type: read and write
389*437bfbebSnyanmisaka      * RME MVD(motion vector difference) cost penalty, H.264 only.
390*437bfbebSnyanmisaka      */
391*437bfbebSnyanmisaka     struct {
392*437bfbebSnyanmisaka         /* MVD cost penalty enable. */
393*437bfbebSnyanmisaka         RK_U32  mvd_pnlt_e              : 1;
394*437bfbebSnyanmisaka         /* MVD cost penalty coefficienc. */
395*437bfbebSnyanmisaka         RK_U32  mvd_pnlt_coef           : 5;
396*437bfbebSnyanmisaka         /* MVD cost penalty constant. */
397*437bfbebSnyanmisaka         RK_U32  mvd_pnlt_cnst           : 14;
398*437bfbebSnyanmisaka         /* Low threshold of the MVs which should be punished. */
399*437bfbebSnyanmisaka         RK_U32  mvd_pnlt_lthd           : 4;
400*437bfbebSnyanmisaka         /* High threshold of the MVs which should be punished. */
401*437bfbebSnyanmisaka         RK_U32  mvd_pnlt_hthd           : 4;
402*437bfbebSnyanmisaka         RK_U32  reserved                : 4;
403*437bfbebSnyanmisaka     } rme_mvd_penalty;
404*437bfbebSnyanmisaka 
405*437bfbebSnyanmisaka     /*
406*437bfbebSnyanmisaka      * ATR1_THD0_H264
407*437bfbebSnyanmisaka      * Address: 0x0308 Access type: read and write
408*437bfbebSnyanmisaka      * H.264 anti ringing noise threshold configuration0 of group1.
409*437bfbebSnyanmisaka      */
410*437bfbebSnyanmisaka     struct {
411*437bfbebSnyanmisaka         /* The 1st threshold for H.264 anti-ringing-noise of group1. */
412*437bfbebSnyanmisaka         RK_U32  atr1_thd0               : 12;
413*437bfbebSnyanmisaka         RK_U32  reserved0               : 4;
414*437bfbebSnyanmisaka         /* The 2nd threshold for H.264 anti-ringing-noise of group1. */
415*437bfbebSnyanmisaka         RK_U32  atr1_thd1               : 12;
416*437bfbebSnyanmisaka         RK_U32  reserved1               : 4;
417*437bfbebSnyanmisaka     } atr1_thd0_h264;
418*437bfbebSnyanmisaka 
419*437bfbebSnyanmisaka     /*
420*437bfbebSnyanmisaka      * ATR1_THD0_H264
421*437bfbebSnyanmisaka      * Address: 0x030C Access type: read and write
422*437bfbebSnyanmisaka      * H.264 anti ringing noise threshold configuration1 of group1.
423*437bfbebSnyanmisaka      */
424*437bfbebSnyanmisaka     struct {
425*437bfbebSnyanmisaka         /* The 3rd threshold for H.264 anti-ringing-noise of group1. */
426*437bfbebSnyanmisaka         RK_U32  atr1_thd2               : 12;
427*437bfbebSnyanmisaka         RK_U32  reserved0               : 20;
428*437bfbebSnyanmisaka     } atr1_thd1_h264;
429*437bfbebSnyanmisaka } Vepu541H264eRegL2Set;
430*437bfbebSnyanmisaka 
431*437bfbebSnyanmisaka #endif /* __HAL_H264E_VEPU541_REG_L2_H__ */
432