xref: /rockchip-linux_mpp/mpp/hal/rkenc/h264e/hal_h264e_vepu541_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_H264E_VEPU541_REG_H__
18*437bfbebSnyanmisaka #define __HAL_H264E_VEPU541_REG_H__
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka #include "vepu541_common.h"
21*437bfbebSnyanmisaka 
22*437bfbebSnyanmisaka typedef struct Vepu541H264eRegSet_t {
23*437bfbebSnyanmisaka     /*
24*437bfbebSnyanmisaka      * VERSION
25*437bfbebSnyanmisaka      * Address: 0x0000 Access type: read only
26*437bfbebSnyanmisaka      * VEPU version. It contains IP function summary and sub-version informations.
27*437bfbebSnyanmisaka      */
28*437bfbebSnyanmisaka     struct {
29*437bfbebSnyanmisaka         /* Sub-version(version 1.1) */
30*437bfbebSnyanmisaka         RK_U32  sub_ver                 : 8;
31*437bfbebSnyanmisaka         /* Support H.264 encoding */
32*437bfbebSnyanmisaka         RK_U32  h264_enc                : 1;
33*437bfbebSnyanmisaka         /* Support HEVC encoding */
34*437bfbebSnyanmisaka         RK_U32  h265_enc                : 1;
35*437bfbebSnyanmisaka         RK_U32  reserved0               : 2;
36*437bfbebSnyanmisaka         /*
37*437bfbebSnyanmisaka          * The maximum resolution supported
38*437bfbebSnyanmisaka          * 4'd0: 4096x2304 pixels;
39*437bfbebSnyanmisaka          * 4'd1: 1920x1088 pixels;
40*437bfbebSnyanmisaka          * others: reserved
41*437bfbebSnyanmisaka          */
42*437bfbebSnyanmisaka         RK_U32  pic_size                : 4;
43*437bfbebSnyanmisaka         /*
44*437bfbebSnyanmisaka          * OSD capability.
45*437bfbebSnyanmisaka          * 2'd0: 8-area OSD, with 256-color palette
46*437bfbebSnyanmisaka          * 2'd3: no OSD
47*437bfbebSnyanmisaka          * others: reserved
48*437bfbebSnyanmisaka          */
49*437bfbebSnyanmisaka         RK_U32  osd_cap                 : 2;
50*437bfbebSnyanmisaka         /*
51*437bfbebSnyanmisaka          * pre-process filter capability
52*437bfbebSnyanmisaka          * 2'd0: basic pre-process filter
53*437bfbebSnyanmisaka          * 2'd3: no pre-process filter
54*437bfbebSnyanmisaka          * others: reserved
55*437bfbebSnyanmisaka          */
56*437bfbebSnyanmisaka         RK_U32  filtr_cap               : 2;
57*437bfbebSnyanmisaka         /* B frame encoding capability */
58*437bfbebSnyanmisaka         RK_U32  bfrm_cap                : 1;
59*437bfbebSnyanmisaka         /* frame buffer compress capability */
60*437bfbebSnyanmisaka         RK_U32  fbc_cap                 : 1;
61*437bfbebSnyanmisaka         RK_U32  reserved1               : 2;
62*437bfbebSnyanmisaka         /* IP indentifier for RKVENC default: 0x50 */
63*437bfbebSnyanmisaka         RK_U32  rkvenc_ver              : 8;
64*437bfbebSnyanmisaka     } reg000;
65*437bfbebSnyanmisaka 
66*437bfbebSnyanmisaka     /*
67*437bfbebSnyanmisaka      * ENC_STRT
68*437bfbebSnyanmisaka      * Address: 0x0004 Access type: read and write/write only
69*437bfbebSnyanmisaka      * Start cmd register.(auto clock gating enable, auto reset enable and
70*437bfbebSnyanmisaka      * tmvp adjust enable when frame done are also allocated here.)
71*437bfbebSnyanmisaka      */
72*437bfbebSnyanmisaka     struct {
73*437bfbebSnyanmisaka         /*
74*437bfbebSnyanmisaka          * Number of new nodes in link table.
75*437bfbebSnyanmisaka          * It's valid only when rkvenc_cmd is 2 or 3.
76*437bfbebSnyanmisaka          */
77*437bfbebSnyanmisaka         RK_U32  lkt_num                 : 8;
78*437bfbebSnyanmisaka         /*
79*437bfbebSnyanmisaka          * Rockchip video encoder command:
80*437bfbebSnyanmisaka          * 2'd0: N/A
81*437bfbebSnyanmisaka          * 2'd1: one frame encode by register configuration
82*437bfbebSnyanmisaka          * 2'd2: multi-frame encode start with link table
83*437bfbebSnyanmisaka          * 2'd3: multi_frame_encode link table update
84*437bfbebSnyanmisaka          */
85*437bfbebSnyanmisaka         RK_U32  rkvenc_cmd              : 2;
86*437bfbebSnyanmisaka         RK_U32  reserved0               : 6;
87*437bfbebSnyanmisaka         /* RKVENC encoder clock gating enable */
88*437bfbebSnyanmisaka         RK_U32  clk_gate_en             : 1;
89*437bfbebSnyanmisaka         /* auto reset core clock domain when frame finished */
90*437bfbebSnyanmisaka         RK_U32  resetn_hw_en            : 1;
91*437bfbebSnyanmisaka         /* wait tmvp write done by dma */
92*437bfbebSnyanmisaka         RK_U32  enc_done_tmvp_en        : 1;
93*437bfbebSnyanmisaka         RK_U32  reserved1               : 13;
94*437bfbebSnyanmisaka     } reg001;
95*437bfbebSnyanmisaka 
96*437bfbebSnyanmisaka     /*
97*437bfbebSnyanmisaka      * ENC_CLR
98*437bfbebSnyanmisaka      * Address offset: 0x0008 Access type: read and write
99*437bfbebSnyanmisaka      * ENC_CLR.safe_clr only clears RKVENC DMA and confirms the integrity of
100*437bfbebSnyanmisaka      * AXI transactions. To execute the global reset of RKVENC, user needs to
101*437bfbebSnyanmisaka      * configure SOC CRU register which controls RKVENC's asynchronous reset
102*437bfbebSnyanmisaka      */
103*437bfbebSnyanmisaka     struct {
104*437bfbebSnyanmisaka         /*
105*437bfbebSnyanmisaka          * Safe clear. This filed only clears DMA module to confirm the
106*437bfbebSnyanmisaka          * integrity of AXI transactions
107*437bfbebSnyanmisaka          */
108*437bfbebSnyanmisaka         RK_U32  safe_clr                : 1;
109*437bfbebSnyanmisaka         /*
110*437bfbebSnyanmisaka          * Force clear. Clear all the sub modules besides regfile and AHB data
111*437bfbebSnyanmisaka          * path.
112*437bfbebSnyanmisaka          */
113*437bfbebSnyanmisaka         RK_U32  force_clr               : 1;
114*437bfbebSnyanmisaka         RK_U32  reserved                : 30;
115*437bfbebSnyanmisaka     } reg002;
116*437bfbebSnyanmisaka 
117*437bfbebSnyanmisaka     /*
118*437bfbebSnyanmisaka      * LKT_ADDR
119*437bfbebSnyanmisaka      * Address offset: 0x000c Access type: read and write
120*437bfbebSnyanmisaka      * Link table
121*437bfbebSnyanmisaka      */
122*437bfbebSnyanmisaka     struct {
123*437bfbebSnyanmisaka         /*
124*437bfbebSnyanmisaka          * High 28 bits of the address for the first node in current link table
125*437bfbebSnyanmisaka          * (16bytes aligned)
126*437bfbebSnyanmisaka          */
127*437bfbebSnyanmisaka         RK_U32  lkt_addr                : 32;
128*437bfbebSnyanmisaka     } reg003;
129*437bfbebSnyanmisaka 
130*437bfbebSnyanmisaka     /*
131*437bfbebSnyanmisaka      * INT_EN
132*437bfbebSnyanmisaka      * Address offset: 0x0010 Access type: read and write
133*437bfbebSnyanmisaka      * VEPU interrupt enable
134*437bfbebSnyanmisaka      */
135*437bfbebSnyanmisaka     struct {
136*437bfbebSnyanmisaka         /* One frame encode finish interrupt enable */
137*437bfbebSnyanmisaka         RK_U32  enc_done_en             : 1;
138*437bfbebSnyanmisaka         /* Link table finish interrupt enable */
139*437bfbebSnyanmisaka         RK_U32  lkt_done_en             : 1;
140*437bfbebSnyanmisaka         /* Safe clear finish interrupt enable */
141*437bfbebSnyanmisaka         RK_U32  sclr_done_en            : 1;
142*437bfbebSnyanmisaka         /* Safe clear finish interrupt enable */
143*437bfbebSnyanmisaka         RK_U32  enc_slice_done_en       : 1;
144*437bfbebSnyanmisaka         /* Bit stream overflow interrupt enable */
145*437bfbebSnyanmisaka         RK_U32  oflw_done_en            : 1;
146*437bfbebSnyanmisaka         /* AXI write response fifo full interrupt enable */
147*437bfbebSnyanmisaka         RK_U32  brsp_done_en            : 1;
148*437bfbebSnyanmisaka         /* AXI write response channel error interrupt enable */
149*437bfbebSnyanmisaka         RK_U32  berr_done_en            : 1;
150*437bfbebSnyanmisaka         /* AXI read channel error interrupt enable */
151*437bfbebSnyanmisaka         RK_U32  rerr_done_en            : 1;
152*437bfbebSnyanmisaka         /* timeout error interrupt enable */
153*437bfbebSnyanmisaka         RK_U32  wdg_done_en             : 1;
154*437bfbebSnyanmisaka         RK_U32  reserved                : 23;
155*437bfbebSnyanmisaka     } reg004;
156*437bfbebSnyanmisaka 
157*437bfbebSnyanmisaka     /*
158*437bfbebSnyanmisaka      * INT_MSK
159*437bfbebSnyanmisaka      * Address offset: 0x0014 Access type: read and write
160*437bfbebSnyanmisaka      * VEPU interrupt mask
161*437bfbebSnyanmisaka      */
162*437bfbebSnyanmisaka     struct {
163*437bfbebSnyanmisaka         /* One frame encode finish interrupt mask */
164*437bfbebSnyanmisaka         RK_U32  enc_done_msk            : 1;
165*437bfbebSnyanmisaka         /* Link table finish interrupt mask */
166*437bfbebSnyanmisaka         RK_U32  lkt_done_msk            : 1;
167*437bfbebSnyanmisaka         /* Safe clear finish interrupt mask */
168*437bfbebSnyanmisaka         RK_U32  sclr_done_msk           : 1;
169*437bfbebSnyanmisaka         /* Safe clear finish interrupt mask */
170*437bfbebSnyanmisaka         RK_U32  enc_slice_done_msk      : 1;
171*437bfbebSnyanmisaka         /* Bit stream overflow interrupt mask */
172*437bfbebSnyanmisaka         RK_U32  oflw_done_msk           : 1;
173*437bfbebSnyanmisaka         /* AXI write response fifo full interrupt mask */
174*437bfbebSnyanmisaka         RK_U32  brsp_done_msk           : 1;
175*437bfbebSnyanmisaka         /* AXI write response channel error interrupt mask */
176*437bfbebSnyanmisaka         RK_U32  berr_done_msk           : 1;
177*437bfbebSnyanmisaka         /* AXI read channel error interrupt mask */
178*437bfbebSnyanmisaka         RK_U32  rerr_done_msk           : 1;
179*437bfbebSnyanmisaka         /* timeout error interrupt mask */
180*437bfbebSnyanmisaka         RK_U32  wdg_done_msk            : 1;
181*437bfbebSnyanmisaka         RK_U32  reserved                : 23;
182*437bfbebSnyanmisaka     } reg005;
183*437bfbebSnyanmisaka 
184*437bfbebSnyanmisaka     /*
185*437bfbebSnyanmisaka      * INT_CLR
186*437bfbebSnyanmisaka      * Address offset: 0x0018 Access type: read and write, write one to clear
187*437bfbebSnyanmisaka      * VEPU interrupt clear
188*437bfbebSnyanmisaka      */
189*437bfbebSnyanmisaka     struct {
190*437bfbebSnyanmisaka         /* One frame encode finish interrupt clear */
191*437bfbebSnyanmisaka         RK_U32  enc_done_clr            : 1;
192*437bfbebSnyanmisaka         /* Link table finish interrupt clear */
193*437bfbebSnyanmisaka         RK_U32  lkt_done_clr            : 1;
194*437bfbebSnyanmisaka         /* Safe clear finish interrupt clear */
195*437bfbebSnyanmisaka         RK_U32  sclr_done_clr           : 1;
196*437bfbebSnyanmisaka         /* One slice encode finish interrupt clear */
197*437bfbebSnyanmisaka         RK_U32  enc_slice_done_clr      : 1;
198*437bfbebSnyanmisaka         /* Bit stream overflow interrupt clear */
199*437bfbebSnyanmisaka         RK_U32  oflw_done_clr           : 1;
200*437bfbebSnyanmisaka         /* AXI write response fifo full interrupt clear */
201*437bfbebSnyanmisaka         RK_U32  brsp_done_clr           : 1;
202*437bfbebSnyanmisaka         /* AXI write response channel error interrupt clear */
203*437bfbebSnyanmisaka         RK_U32  berr_done_clr           : 1;
204*437bfbebSnyanmisaka         /* AXI read channel error interrupt clear */
205*437bfbebSnyanmisaka         RK_U32  rerr_done_clr           : 1;
206*437bfbebSnyanmisaka         /* timeout error interrupt clear */
207*437bfbebSnyanmisaka         RK_U32  wdg_done_clr            : 1;
208*437bfbebSnyanmisaka         RK_U32  reserved                : 23;
209*437bfbebSnyanmisaka     } reg006;
210*437bfbebSnyanmisaka 
211*437bfbebSnyanmisaka     /*
212*437bfbebSnyanmisaka      * INT_STA
213*437bfbebSnyanmisaka      * Address offset: 0x001c Access type: read and write, write one to clear
214*437bfbebSnyanmisaka      * VEPU interrupt status
215*437bfbebSnyanmisaka      */
216*437bfbebSnyanmisaka     struct {
217*437bfbebSnyanmisaka         /* One frame encode finish interrupt status */
218*437bfbebSnyanmisaka         RK_U32  enc_done_sta            : 1;
219*437bfbebSnyanmisaka         /* Link table finish interrupt status */
220*437bfbebSnyanmisaka         RK_U32  lkt_done_sta            : 1;
221*437bfbebSnyanmisaka         /* Safe clear finish interrupt status */
222*437bfbebSnyanmisaka         RK_U32  sclr_done_sta           : 1;
223*437bfbebSnyanmisaka         /* One slice encode finish interrupt status */
224*437bfbebSnyanmisaka         RK_U32  enc_slice_done_sta      : 1;
225*437bfbebSnyanmisaka         /* Bit stream overflow interrupt status */
226*437bfbebSnyanmisaka         RK_U32  oflw_done_sta           : 1;
227*437bfbebSnyanmisaka         /* AXI write response fifo full interrupt status */
228*437bfbebSnyanmisaka         RK_U32  brsp_done_sta           : 1;
229*437bfbebSnyanmisaka         /* AXI write response channel error interrupt status */
230*437bfbebSnyanmisaka         RK_U32  berr_done_sta           : 1;
231*437bfbebSnyanmisaka         /* AXI read channel error interrupt status */
232*437bfbebSnyanmisaka         RK_U32  rerr_done_sta           : 1;
233*437bfbebSnyanmisaka         /* timeout error interrupt status */
234*437bfbebSnyanmisaka         RK_U32  wdg_done_sta            : 1;
235*437bfbebSnyanmisaka         RK_U32  reserved                : 23;
236*437bfbebSnyanmisaka     } reg007;
237*437bfbebSnyanmisaka 
238*437bfbebSnyanmisaka     /* reg gap 008~011 */
239*437bfbebSnyanmisaka     RK_U32 reg_008_011[4];
240*437bfbebSnyanmisaka 
241*437bfbebSnyanmisaka     /*
242*437bfbebSnyanmisaka      * ENC_RSL
243*437bfbebSnyanmisaka      * Address offset: 0x0030 Access type: read and write
244*437bfbebSnyanmisaka      * Resolution
245*437bfbebSnyanmisaka      */
246*437bfbebSnyanmisaka     struct {
247*437bfbebSnyanmisaka         /* ceil(picture width/8) - 1 */
248*437bfbebSnyanmisaka         RK_U32  pic_wd8_m1              : 9;
249*437bfbebSnyanmisaka         RK_U32  reserved0               : 1;
250*437bfbebSnyanmisaka         /* filling pixels to maintain picture width 8 pixels aligned */
251*437bfbebSnyanmisaka         RK_U32  pic_wfill               : 6;
252*437bfbebSnyanmisaka         /* Ceil(picture_height/8)-1 */
253*437bfbebSnyanmisaka         RK_U32  pic_hd8_m1              : 9;
254*437bfbebSnyanmisaka         RK_U32  reserved1               : 1;
255*437bfbebSnyanmisaka         /* Filling pixels to maintain picture height 8 pixels aligned */
256*437bfbebSnyanmisaka         RK_U32  pic_hfill               : 6;
257*437bfbebSnyanmisaka     } reg012;
258*437bfbebSnyanmisaka 
259*437bfbebSnyanmisaka     /*
260*437bfbebSnyanmisaka      * ENC_PIC
261*437bfbebSnyanmisaka      * Address offset: 0x0034 Access type: read and write
262*437bfbebSnyanmisaka      * VEPU common configuration
263*437bfbebSnyanmisaka      */
264*437bfbebSnyanmisaka     struct {
265*437bfbebSnyanmisaka         /* Video standard: 0->H.264; 1->HEVC */
266*437bfbebSnyanmisaka         RK_U32  enc_stnd                : 1;
267*437bfbebSnyanmisaka         /* ROI encode enable */
268*437bfbebSnyanmisaka         RK_U32  roi_enc                 : 1;
269*437bfbebSnyanmisaka         /* Current frame should be refered in future */
270*437bfbebSnyanmisaka         RK_U32  cur_frm_ref             : 1;
271*437bfbebSnyanmisaka         /* Output ME information */
272*437bfbebSnyanmisaka         RK_U32  mei_stor                : 1;
273*437bfbebSnyanmisaka         /* Output start code prefix */
274*437bfbebSnyanmisaka         RK_U32  bs_scp                  : 1;
275*437bfbebSnyanmisaka         /* 0: select table A, 1: select table B */
276*437bfbebSnyanmisaka         RK_U32  lamb_mod_sel            : 1;
277*437bfbebSnyanmisaka         RK_U32  reserved0               : 2;
278*437bfbebSnyanmisaka         /* QP value for current frame encoding */
279*437bfbebSnyanmisaka         RK_U32  pic_qp                  : 6;
280*437bfbebSnyanmisaka         /* sum of reference pictures (indexed by difference POCs), HEVC only */
281*437bfbebSnyanmisaka         RK_U32  tot_poc_num             : 5;
282*437bfbebSnyanmisaka         /* bit width to express the maximum ctu number in current picure, HEVC only */
283*437bfbebSnyanmisaka         RK_U32  log2_ctu_num            : 4;
284*437bfbebSnyanmisaka         /* 1'h0: Select atr_thd group 1'h1: Select atr_thd group1 */
285*437bfbebSnyanmisaka         RK_U32  atr_thd_sel             : 1;
286*437bfbebSnyanmisaka         /* Dual-core handshake Rx ID. */
287*437bfbebSnyanmisaka         RK_U32  dchs_rxid               : 2;
288*437bfbebSnyanmisaka         /* Dual-core handshake tx ID. */
289*437bfbebSnyanmisaka         RK_U32  dchs_txid               : 2;
290*437bfbebSnyanmisaka         /* Dual-core handshake rx enable. */
291*437bfbebSnyanmisaka         RK_U32  dchs_rxe                : 1;
292*437bfbebSnyanmisaka         /* RDO intra-prediction satd path bypass enable. */
293*437bfbebSnyanmisaka         RK_U32  satd_byps_en            : 1;
294*437bfbebSnyanmisaka         /* Slice length fifo enable. */
295*437bfbebSnyanmisaka         RK_U32  slen_fifo               : 1;
296*437bfbebSnyanmisaka         /* Node interrupt enable (only for link table node configuration). */
297*437bfbebSnyanmisaka         RK_U32  node_int                : 1;
298*437bfbebSnyanmisaka     } reg013;
299*437bfbebSnyanmisaka 
300*437bfbebSnyanmisaka     /*
301*437bfbebSnyanmisaka      * ENC_WDG
302*437bfbebSnyanmisaka      * Address offset: 0x0038 Access type: read and write
303*437bfbebSnyanmisaka      * VEPU watch dog configure register
304*437bfbebSnyanmisaka      */
305*437bfbebSnyanmisaka     struct {
306*437bfbebSnyanmisaka         /*
307*437bfbebSnyanmisaka          * Video source loading timeout threshold.
308*437bfbebSnyanmisaka          * 24'h0: No time limit
309*437bfbebSnyanmisaka          * 24'hx: x*256 core clock cycles
310*437bfbebSnyanmisaka          */
311*437bfbebSnyanmisaka         RK_U32  vs_load_thd             : 24;
312*437bfbebSnyanmisaka         /*
313*437bfbebSnyanmisaka          * Reference picture loading timeout threshold.
314*437bfbebSnyanmisaka          * 8'h0: No time limit
315*437bfbebSnyanmisaka          * 8'hx: x*256 core clock cycles
316*437bfbebSnyanmisaka          */
317*437bfbebSnyanmisaka         RK_U32  rfp_load_thrd           : 8;
318*437bfbebSnyanmisaka     } reg014;
319*437bfbebSnyanmisaka 
320*437bfbebSnyanmisaka     /*
321*437bfbebSnyanmisaka      * DTRNS_MAP
322*437bfbebSnyanmisaka      * Address offset: 0x003c Access type: read and write
323*437bfbebSnyanmisaka      * Data transaction mapping (endian and order)
324*437bfbebSnyanmisaka      */
325*437bfbebSnyanmisaka     struct {
326*437bfbebSnyanmisaka         /* swap the position of 64bits in 128bits for lpf write data between tiles */
327*437bfbebSnyanmisaka         RK_U32  lpfw_bus_ordr           : 1;
328*437bfbebSnyanmisaka         /* Swap the position of 64 bits in 128 bits for co-located Mv(HEVC only). */
329*437bfbebSnyanmisaka         RK_U32  cmvw_bus_ordr           : 1;
330*437bfbebSnyanmisaka         /* Swap the position of 64 bits in 128 bits for down-sampled picture. */
331*437bfbebSnyanmisaka         RK_U32  dspw_bus_ordr           : 1;
332*437bfbebSnyanmisaka         /* Swap the position of 64 bits in 128 bits for reference picture. */
333*437bfbebSnyanmisaka         RK_U32  rfpw_bus_ordr           : 1;
334*437bfbebSnyanmisaka         /*
335*437bfbebSnyanmisaka          * Data swap for video source loading channel.
336*437bfbebSnyanmisaka          * [3]: Swap 64 bits in 128 bits
337*437bfbebSnyanmisaka          * [2]: Swap 32 bits in 64 bits
338*437bfbebSnyanmisaka          * [1]: Swap 16 bits in 32 bits
339*437bfbebSnyanmisaka          * [0]: Swap 8 bits in 16 bits
340*437bfbebSnyanmisaka          */
341*437bfbebSnyanmisaka         RK_U32  src_bus_edin            : 4;
342*437bfbebSnyanmisaka         /*
343*437bfbebSnyanmisaka          * Data swap for ME information write channel.
344*437bfbebSnyanmisaka          * [3]: Swap 64 bits in 128 bits
345*437bfbebSnyanmisaka          * [2]: Swap 32 bits in 64 bits
346*437bfbebSnyanmisaka          * [1]: Swap 16 bits in 32 bits
347*437bfbebSnyanmisaka          * [0]: Swap 8 bits in 16 bits
348*437bfbebSnyanmisaka          */
349*437bfbebSnyanmisaka         RK_U32  meiw_bus_edin           : 4;
350*437bfbebSnyanmisaka         /*
351*437bfbebSnyanmisaka          * Data swap for bis stream write channel.
352*437bfbebSnyanmisaka          * [2]: Swap 32 bits in 64 bits
353*437bfbebSnyanmisaka          * [1]: Swap 16 bits in 32 bits
354*437bfbebSnyanmisaka          * [0]: Swap 8 bits in 16 bits
355*437bfbebSnyanmisaka          */
356*437bfbebSnyanmisaka         RK_U32  bsw_bus_edin            : 3;
357*437bfbebSnyanmisaka         /*
358*437bfbebSnyanmisaka          * Data swap for link table read channel.
359*437bfbebSnyanmisaka          * [3]: Swap 64 bits in 128 bits
360*437bfbebSnyanmisaka          * [2]: Swap 32 bits in 64 bits
361*437bfbebSnyanmisaka          * [1]: Swap 16 bits in 32 bits
362*437bfbebSnyanmisaka          * [0]: Swap 8 bits in 16 bits
363*437bfbebSnyanmisaka          */
364*437bfbebSnyanmisaka         RK_U32  lktr_bus_edin           : 4;
365*437bfbebSnyanmisaka         /*
366*437bfbebSnyanmisaka          * Data swap for ROI configuration read channel.
367*437bfbebSnyanmisaka          * [3]: Swap 64 bits in 128 bits
368*437bfbebSnyanmisaka          * [2]: Swap 32 bits in 64 bits
369*437bfbebSnyanmisaka          * [1]: Swap 16 bits in 32 bits
370*437bfbebSnyanmisaka          * [0]: Swap 8 bits in 16 bits
371*437bfbebSnyanmisaka          */
372*437bfbebSnyanmisaka         RK_U32  roir_bus_edin           : 4;
373*437bfbebSnyanmisaka         /*
374*437bfbebSnyanmisaka          * Data swap for link table write channel.
375*437bfbebSnyanmisaka          * [3]: Swap 64 bits in 128 bits
376*437bfbebSnyanmisaka          * [2]: Swap 32 bits in 64 bits
377*437bfbebSnyanmisaka          * [1]: Swap 16 bits in 32 bits
378*437bfbebSnyanmisaka          * [0]: Swap 8 bits in 16 bits
379*437bfbebSnyanmisaka          */
380*437bfbebSnyanmisaka         RK_U32  lktw_bus_edin           : 4;
381*437bfbebSnyanmisaka         /*
382*437bfbebSnyanmisaka          * AFBC video source loading burst size.
383*437bfbebSnyanmisaka          * 1'h0: 32 bytes
384*437bfbebSnyanmisaka          * 1'h1: 64 bytes
385*437bfbebSnyanmisaka          */
386*437bfbebSnyanmisaka         RK_U32  afbc_bsize              : 1;
387*437bfbebSnyanmisaka         RK_U32  reserved1               : 4;
388*437bfbebSnyanmisaka     } reg015;
389*437bfbebSnyanmisaka 
390*437bfbebSnyanmisaka     /*
391*437bfbebSnyanmisaka      * DTRNS_CFG
392*437bfbebSnyanmisaka      * Address offset: 0x0040 Access type: read and write
393*437bfbebSnyanmisaka      * (AXI bus) Data transaction configuration
394*437bfbebSnyanmisaka      */
395*437bfbebSnyanmisaka     union {
396*437bfbebSnyanmisaka         struct vepu541_t {
397*437bfbebSnyanmisaka             /*
398*437bfbebSnyanmisaka              * AXI write response channel check enable.
399*437bfbebSnyanmisaka              * [6]: Reconstructed picture write response check enable.
400*437bfbebSnyanmisaka              * [5]: ME information write response check enable.
401*437bfbebSnyanmisaka              * [4]: CTU information write response check enable.
402*437bfbebSnyanmisaka              * [3]: Down-sampled picture write response check enable.
403*437bfbebSnyanmisaka              * [2]: Bit stream write response check enable.
404*437bfbebSnyanmisaka              * [1]: Link table mode write reponse check enable.
405*437bfbebSnyanmisaka              * [0]: Reserved for video preprocess.
406*437bfbebSnyanmisaka              */
407*437bfbebSnyanmisaka             RK_U32  axi_brsp_cke            : 7;
408*437bfbebSnyanmisaka             /*
409*437bfbebSnyanmisaka              * Down sampled reference picture read outstanding enable.
410*437bfbebSnyanmisaka              * 1'h0: No outstanding
411*437bfbebSnyanmisaka              * 1'h1: Outstanding read, which improves data transaction efficiency,
412*437bfbebSnyanmisaka              * but core clock frequency should not lower than bus clock frequency.
413*437bfbebSnyanmisaka              */
414*437bfbebSnyanmisaka             RK_U32  dspr_otsd               : 1;
415*437bfbebSnyanmisaka             RK_U32  reserved                : 24;
416*437bfbebSnyanmisaka         } vepu541;
417*437bfbebSnyanmisaka 
418*437bfbebSnyanmisaka         struct vepu540_t {
419*437bfbebSnyanmisaka             RK_U32  reserved0               : 7;
420*437bfbebSnyanmisaka             /*
421*437bfbebSnyanmisaka              * Down sampled reference picture read outstanding enable.
422*437bfbebSnyanmisaka              * 1'h0: No outstanding
423*437bfbebSnyanmisaka              * 1'h1: Outstanding read, which improves data transaction efficiency,
424*437bfbebSnyanmisaka              * but core clock frequency should not lower than bus clock frequency.
425*437bfbebSnyanmisaka              */
426*437bfbebSnyanmisaka             RK_U32  dspr_otsd               : 1;
427*437bfbebSnyanmisaka             RK_U32  reserved1               : 8;
428*437bfbebSnyanmisaka             /*
429*437bfbebSnyanmisaka              * AXI write response channel check enable.
430*437bfbebSnyanmisaka              * [7]: lpf write response check enable
431*437bfbebSnyanmisaka              * [6]: Reconstructed picture write response check enable.
432*437bfbebSnyanmisaka              * [5]: ME information write response check enable.
433*437bfbebSnyanmisaka              * [4]: CTU information write response check enable.
434*437bfbebSnyanmisaka              * [3]: Down-sampled picture write response check enable.
435*437bfbebSnyanmisaka              * [2]: Bit stream write response check enable.
436*437bfbebSnyanmisaka              * [1]: Link table mode write reponse check enable.
437*437bfbebSnyanmisaka              * [0]: Reserved for video preprocess.
438*437bfbebSnyanmisaka              */
439*437bfbebSnyanmisaka             RK_U32  axi_brsp_cke            : 8;
440*437bfbebSnyanmisaka             RK_U32  reserved2               : 8;
441*437bfbebSnyanmisaka         } vepu540;
442*437bfbebSnyanmisaka     } reg016;
443*437bfbebSnyanmisaka 
444*437bfbebSnyanmisaka     /*
445*437bfbebSnyanmisaka      * SRC_FMT
446*437bfbebSnyanmisaka      * Address offset: 0x0044 Access type: read and write
447*437bfbebSnyanmisaka      * Video source format
448*437bfbebSnyanmisaka      */
449*437bfbebSnyanmisaka     struct {
450*437bfbebSnyanmisaka         /*
451*437bfbebSnyanmisaka          * Swap the position of alpha and RGB for ARBG8888.
452*437bfbebSnyanmisaka          * 1'h0: BGRA8888 or RGBA8888.
453*437bfbebSnyanmisaka          * 1'h1: ABGR8888 or ARGB8888.
454*437bfbebSnyanmisaka          */
455*437bfbebSnyanmisaka         RK_U32  alpha_swap              : 1;
456*437bfbebSnyanmisaka         /*
457*437bfbebSnyanmisaka          * Swap the position of R and B for BGRA8888, RGB888, RGB 656 format;
458*437bfbebSnyanmisaka          * Swap the position of U and V for YUV422-SP, YUV420-SP, YUYV422 and UYUV422 format.
459*437bfbebSnyanmisaka          * 1'h0: RGB or YUYV or UYVY.
460*437bfbebSnyanmisaka          * 1'h1: BGR or YVYU or VYUY.
461*437bfbebSnyanmisaka          */
462*437bfbebSnyanmisaka         RK_U32  rbuv_swap               : 1;
463*437bfbebSnyanmisaka         /*
464*437bfbebSnyanmisaka          * Video source color format.
465*437bfbebSnyanmisaka          * 4'h0: BGRA8888
466*437bfbebSnyanmisaka          * 4'h1: RGB888
467*437bfbebSnyanmisaka          * 4'h2: RGB565
468*437bfbebSnyanmisaka          * 4'h4: YUV422 SP
469*437bfbebSnyanmisaka          * 4'h5: YUV422 P
470*437bfbebSnyanmisaka          * 4'h6: YUV420 SP
471*437bfbebSnyanmisaka          * 4'h7: YUV420 P
472*437bfbebSnyanmisaka          * 4'h8: YUYV422
473*437bfbebSnyanmisaka          * 4'h9: UYVY422
474*437bfbebSnyanmisaka          * Others: Reserved
475*437bfbebSnyanmisaka          */
476*437bfbebSnyanmisaka         RK_U32  src_cfmt                : 4;
477*437bfbebSnyanmisaka         /*
478*437bfbebSnyanmisaka          * Video source clip (low active).
479*437bfbebSnyanmisaka          * 1'h0: [16:235] for luma and [16:240] for chroma.
480*437bfbebSnyanmisaka          * 1'h1: [0:255] for both luma and chroma.
481*437bfbebSnyanmisaka          */
482*437bfbebSnyanmisaka         RK_U32  src_range               : 1;
483*437bfbebSnyanmisaka         /*
484*437bfbebSnyanmisaka          * Ourput reconstructed frame format
485*437bfbebSnyanmisaka          * 1'h0: yuv420
486*437bfbebSnyanmisaka          * 1'h1: yuv400
487*437bfbebSnyanmisaka          */
488*437bfbebSnyanmisaka         RK_U32  out_fmt_cfg             : 1;
489*437bfbebSnyanmisaka         RK_U32  reserved                : 24;
490*437bfbebSnyanmisaka     } reg017;
491*437bfbebSnyanmisaka 
492*437bfbebSnyanmisaka     /*
493*437bfbebSnyanmisaka      * SRC_UDFY
494*437bfbebSnyanmisaka      * Address offset: 0x0048 Access type: read and write
495*437bfbebSnyanmisaka      * Weight of user defined formula for RBG to Y conversion
496*437bfbebSnyanmisaka      */
497*437bfbebSnyanmisaka     struct {
498*437bfbebSnyanmisaka         /* Weight of BLUE  in RBG to Y conversion formula. */
499*437bfbebSnyanmisaka         RK_U32  csc_wgt_b2y             : 9;
500*437bfbebSnyanmisaka         /* Weight of GREEN in RBG to Y conversion formula. */
501*437bfbebSnyanmisaka         RK_U32  csc_wgt_g2y             : 9;
502*437bfbebSnyanmisaka         /* Weight of RED   in RBG to Y conversion formula. */
503*437bfbebSnyanmisaka         RK_U32  csc_wgt_r2y             : 9;
504*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
505*437bfbebSnyanmisaka     } reg018;
506*437bfbebSnyanmisaka 
507*437bfbebSnyanmisaka     /*
508*437bfbebSnyanmisaka      * SRC_UDFU
509*437bfbebSnyanmisaka      * Address offset: 0x004c Access type: read and write
510*437bfbebSnyanmisaka      * Weight of user defined formula for RBG to U conversion
511*437bfbebSnyanmisaka      */
512*437bfbebSnyanmisaka     struct {
513*437bfbebSnyanmisaka         /* Weight of BLUE  in RBG to U conversion formula. */
514*437bfbebSnyanmisaka         RK_U32  csc_wgt_b2u             : 9;
515*437bfbebSnyanmisaka         /* Weight of GREEN in RBG to U conversion formula. */
516*437bfbebSnyanmisaka         RK_U32  csc_wgt_g2u             : 9;
517*437bfbebSnyanmisaka         /* Weight of RED   in RBG to U conversion formula. */
518*437bfbebSnyanmisaka         RK_U32  csc_wgt_r2u             : 9;
519*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
520*437bfbebSnyanmisaka     } reg019;
521*437bfbebSnyanmisaka 
522*437bfbebSnyanmisaka     /*
523*437bfbebSnyanmisaka      * SRC_UDFV
524*437bfbebSnyanmisaka      * Address offset: 0x0050 Access type: read and write
525*437bfbebSnyanmisaka      * Weight of user defined formula for RBG to V conversion
526*437bfbebSnyanmisaka      */
527*437bfbebSnyanmisaka     struct {
528*437bfbebSnyanmisaka         /* Weight of BLUE  in RBG to V conversion formula. */
529*437bfbebSnyanmisaka         RK_U32  csc_wgt_b2v             : 9;
530*437bfbebSnyanmisaka         /* Weight of GREEN in RBG to V conversion formula. */
531*437bfbebSnyanmisaka         RK_U32  csc_wgt_g2v             : 9;
532*437bfbebSnyanmisaka         /* Weight of RED   in RBG to V conversion formula. */
533*437bfbebSnyanmisaka         RK_U32  csc_wgt_r2v             : 9;
534*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
535*437bfbebSnyanmisaka     } reg020;
536*437bfbebSnyanmisaka 
537*437bfbebSnyanmisaka     /*
538*437bfbebSnyanmisaka      * SRC_UDFO
539*437bfbebSnyanmisaka      * Address offset: 0x0054 Access type: read and write
540*437bfbebSnyanmisaka      * Offset of user defined formula for RBG to YUV conversion
541*437bfbebSnyanmisaka      */
542*437bfbebSnyanmisaka     struct {
543*437bfbebSnyanmisaka         /* Offset of RBG to V conversion formula. */
544*437bfbebSnyanmisaka         RK_U32  csc_ofst_v              : 8;
545*437bfbebSnyanmisaka         /* Offset of RBG to U conversion formula. */
546*437bfbebSnyanmisaka         RK_U32  csc_ofst_u              : 8;
547*437bfbebSnyanmisaka         /* Offset of RBG to Y conversion formula. */
548*437bfbebSnyanmisaka         RK_U32  csc_ofst_y              : 5;
549*437bfbebSnyanmisaka         RK_U32  reserved                : 11;
550*437bfbebSnyanmisaka     } reg021;
551*437bfbebSnyanmisaka 
552*437bfbebSnyanmisaka     /*
553*437bfbebSnyanmisaka      * SRC_PROC
554*437bfbebSnyanmisaka      * Address offset: 0x0058 Access type: read and write
555*437bfbebSnyanmisaka      * Video source process
556*437bfbebSnyanmisaka      */
557*437bfbebSnyanmisaka     struct {
558*437bfbebSnyanmisaka         RK_U32  reserved0               : 26;
559*437bfbebSnyanmisaka         /* Video source mirror mode enable. */
560*437bfbebSnyanmisaka         RK_U32  src_mirr                : 1;
561*437bfbebSnyanmisaka         /*
562*437bfbebSnyanmisaka          * Video source rotation mode.
563*437bfbebSnyanmisaka          * 2'h0: 0 degree
564*437bfbebSnyanmisaka          * 2'h1: Clockwise 90 degree
565*437bfbebSnyanmisaka          * 2'h2: Clockwise 180 degree
566*437bfbebSnyanmisaka          * 2'h3: Clockwise 280 degree
567*437bfbebSnyanmisaka          */
568*437bfbebSnyanmisaka         RK_U32  src_rot                 : 2;
569*437bfbebSnyanmisaka         /* Video source texture analysis enable. */
570*437bfbebSnyanmisaka         RK_U32  txa_en                  : 1;
571*437bfbebSnyanmisaka         /* AFBC decompress enable (for AFBC format video source). */
572*437bfbebSnyanmisaka         RK_U32  afbcd_en                : 1;
573*437bfbebSnyanmisaka         RK_U32  reserved1               : 1;
574*437bfbebSnyanmisaka     } reg022;
575*437bfbebSnyanmisaka 
576*437bfbebSnyanmisaka     /*
577*437bfbebSnyanmisaka      * SLI_CFG_H264
578*437bfbebSnyanmisaka      * Address offset: 0x005C Access type: read and write
579*437bfbebSnyanmisaka      * Slice cross lines configuration, h264 only.
580*437bfbebSnyanmisaka      */
581*437bfbebSnyanmisaka     struct {
582*437bfbebSnyanmisaka         RK_U32  reserved0               : 31;
583*437bfbebSnyanmisaka         /*
584*437bfbebSnyanmisaka          * Slice cut cross lines enable,
585*437bfbebSnyanmisaka          * using for breaking the resolution limit, h264 only.
586*437bfbebSnyanmisaka          */
587*437bfbebSnyanmisaka         RK_U32  sli_crs_en              : 1;
588*437bfbebSnyanmisaka     } reg023;
589*437bfbebSnyanmisaka 
590*437bfbebSnyanmisaka     /* reg gap 024 */
591*437bfbebSnyanmisaka     RK_U32 reg_024;
592*437bfbebSnyanmisaka 
593*437bfbebSnyanmisaka     /*
594*437bfbebSnyanmisaka      * KLUT_OFST
595*437bfbebSnyanmisaka      * Address offset: 0x0064 Access type: read and write
596*437bfbebSnyanmisaka      * Offset of (RDO) chroma cost weight table
597*437bfbebSnyanmisaka      */
598*437bfbebSnyanmisaka     struct {
599*437bfbebSnyanmisaka         /* Offset of (RDO) chroma cost weight table, values from 0 to 6. */
600*437bfbebSnyanmisaka         RK_U32  chrm_klut_ofst          : 3;
601*437bfbebSnyanmisaka         RK_U32  reserved                : 1;
602*437bfbebSnyanmisaka     } reg025;
603*437bfbebSnyanmisaka 
604*437bfbebSnyanmisaka     /*
605*437bfbebSnyanmisaka      * KLUT_WGT0
606*437bfbebSnyanmisaka      * Address offset: 0x0068 Access type: read and write
607*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register0
608*437bfbebSnyanmisaka      */
609*437bfbebSnyanmisaka     struct {
610*437bfbebSnyanmisaka         /* Data0 in chroma cost weight table. */
611*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt0          : 18;
612*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
613*437bfbebSnyanmisaka         /* Low 9 bits of data1 in chroma cost weight table. */
614*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt1_l9       : 9;
615*437bfbebSnyanmisaka     } reg026;
616*437bfbebSnyanmisaka 
617*437bfbebSnyanmisaka     /*
618*437bfbebSnyanmisaka      * KLUT_WGT1
619*437bfbebSnyanmisaka      * Address offset: 0x006C Access type: read and write
620*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register1
621*437bfbebSnyanmisaka      */
622*437bfbebSnyanmisaka     struct {
623*437bfbebSnyanmisaka         /* High 9 bits of data1 in chroma cost weight table. */
624*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt1_h9       : 9;
625*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
626*437bfbebSnyanmisaka         /* Data2 in chroma cost weight table. */
627*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt2          : 18;
628*437bfbebSnyanmisaka     } reg027;
629*437bfbebSnyanmisaka 
630*437bfbebSnyanmisaka     /*
631*437bfbebSnyanmisaka      * KLUT_WGT2
632*437bfbebSnyanmisaka      * Address offset: 0x0070 Access type: read and write
633*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register2
634*437bfbebSnyanmisaka      */
635*437bfbebSnyanmisaka     struct {
636*437bfbebSnyanmisaka         /* Data3 in chroma cost weight table. */
637*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt3          : 18;
638*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
639*437bfbebSnyanmisaka         /* Low 9 bits of data4 in chroma cost weight table. */
640*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt4_l9       : 9;
641*437bfbebSnyanmisaka     } reg028;
642*437bfbebSnyanmisaka 
643*437bfbebSnyanmisaka     /*
644*437bfbebSnyanmisaka      * KLUT_WGT3
645*437bfbebSnyanmisaka      * Address offset: 0x0074 Access type: read and write
646*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register3
647*437bfbebSnyanmisaka      */
648*437bfbebSnyanmisaka     struct {
649*437bfbebSnyanmisaka         /* High 9 bits of data4 in chroma cost weight table. */
650*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt4_h9       : 9;
651*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
652*437bfbebSnyanmisaka         /* Data5 in chroma cost weight table. */
653*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt5          : 18;
654*437bfbebSnyanmisaka     } reg029;
655*437bfbebSnyanmisaka 
656*437bfbebSnyanmisaka     /*
657*437bfbebSnyanmisaka      * KLUT_WGT4
658*437bfbebSnyanmisaka      * Address offset: 0x0078 Access type: read and write
659*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register4
660*437bfbebSnyanmisaka      */
661*437bfbebSnyanmisaka     struct {
662*437bfbebSnyanmisaka         /* Data6 in chroma cost weight table. */
663*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt6          : 18;
664*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
665*437bfbebSnyanmisaka         /* Low 9 bits of data7 in chroma cost weight table. */
666*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt7_l9       : 9;
667*437bfbebSnyanmisaka     } reg030;
668*437bfbebSnyanmisaka 
669*437bfbebSnyanmisaka     /*
670*437bfbebSnyanmisaka      * KLUT_WGT5
671*437bfbebSnyanmisaka      * Address offset: 0x007C Access type: read and write
672*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register5
673*437bfbebSnyanmisaka      */
674*437bfbebSnyanmisaka     struct {
675*437bfbebSnyanmisaka         /* High 9 bits of data7 in chroma cost weight table. */
676*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt7_h9       : 9;
677*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
678*437bfbebSnyanmisaka         /* Data8 in chroma cost weight table. */
679*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt8          : 18;
680*437bfbebSnyanmisaka     } reg031;
681*437bfbebSnyanmisaka 
682*437bfbebSnyanmisaka     /*
683*437bfbebSnyanmisaka      * KLUT_WGT6
684*437bfbebSnyanmisaka      * Address offset: 0x0080 Access type: read and write
685*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register6
686*437bfbebSnyanmisaka      */
687*437bfbebSnyanmisaka     struct {
688*437bfbebSnyanmisaka         /* Data9 in chroma cost weight table. */
689*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt9          : 18;
690*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
691*437bfbebSnyanmisaka         /* Low 9 bits of data10 in chroma cost weight table. */
692*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt10_l9      : 9;
693*437bfbebSnyanmisaka     } reg032;
694*437bfbebSnyanmisaka 
695*437bfbebSnyanmisaka     /*
696*437bfbebSnyanmisaka      * KLUT_WGT7
697*437bfbebSnyanmisaka      * Address offset: 0x0084 Access type: read and write
698*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register7
699*437bfbebSnyanmisaka      */
700*437bfbebSnyanmisaka     struct {
701*437bfbebSnyanmisaka         /* High 9 bits of data10 in chroma cost weight table. */
702*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt10_h9      : 9;
703*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
704*437bfbebSnyanmisaka         /* Data11 in chroma cost weight table. */
705*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt11         : 18;
706*437bfbebSnyanmisaka     } reg033;
707*437bfbebSnyanmisaka 
708*437bfbebSnyanmisaka     /*
709*437bfbebSnyanmisaka      * KLUT_WGT8
710*437bfbebSnyanmisaka      * Address offset: 0x0088 Access type: read and write
711*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register8
712*437bfbebSnyanmisaka      */
713*437bfbebSnyanmisaka     struct {
714*437bfbebSnyanmisaka         /* Data12 in chroma cost weight table. */
715*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt12         : 18;
716*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
717*437bfbebSnyanmisaka         /* Low 9 bits of data13 in chroma cost weight table. */
718*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt13_l9      : 9;
719*437bfbebSnyanmisaka     } reg034;
720*437bfbebSnyanmisaka 
721*437bfbebSnyanmisaka     /*
722*437bfbebSnyanmisaka      * KLUT_WGT9
723*437bfbebSnyanmisaka      * Address offset: 0x008C Access type: read and write
724*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register9
725*437bfbebSnyanmisaka      */
726*437bfbebSnyanmisaka     struct {
727*437bfbebSnyanmisaka         /* High 9 bits of data13 in chroma cost weight table. */
728*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt13_h9      : 9;
729*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
730*437bfbebSnyanmisaka         /* Data14 in chroma cost weight table. */
731*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt14         : 18;
732*437bfbebSnyanmisaka     } reg035;
733*437bfbebSnyanmisaka 
734*437bfbebSnyanmisaka     /*
735*437bfbebSnyanmisaka      * KLUT_WGT10
736*437bfbebSnyanmisaka      * Address offset: 0x0090 Access type: read and write
737*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register10
738*437bfbebSnyanmisaka      */
739*437bfbebSnyanmisaka     struct {
740*437bfbebSnyanmisaka         /* Data15 in chroma cost weight table. */
741*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt15         : 18;
742*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
743*437bfbebSnyanmisaka         /* Low 9 bits of data16 in chroma cost weight table. */
744*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt16_l9      : 9;
745*437bfbebSnyanmisaka     } reg036;
746*437bfbebSnyanmisaka 
747*437bfbebSnyanmisaka     /*
748*437bfbebSnyanmisaka      * KLUT_WGT11
749*437bfbebSnyanmisaka      * Address offset: 0x0094 Access type: read and write
750*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register11
751*437bfbebSnyanmisaka      */
752*437bfbebSnyanmisaka     struct {
753*437bfbebSnyanmisaka         /* High 9 bits of data16 in chroma cost weight table. */
754*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt16_h9      : 9;
755*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
756*437bfbebSnyanmisaka         /* Data17 in chroma cost weight table. */
757*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt17         : 18;
758*437bfbebSnyanmisaka     } reg037;
759*437bfbebSnyanmisaka 
760*437bfbebSnyanmisaka     /*
761*437bfbebSnyanmisaka      * KLUT_WGT12
762*437bfbebSnyanmisaka      * Address offset: 0x0098 Access type: read and write
763*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register12
764*437bfbebSnyanmisaka      */
765*437bfbebSnyanmisaka     struct {
766*437bfbebSnyanmisaka         /* Data18 in chroma cost weight table. */
767*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt18         : 18;
768*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
769*437bfbebSnyanmisaka         /* Low 9 bits of data19 in chroma cost weight table. */
770*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt19_l9      : 9;
771*437bfbebSnyanmisaka     } reg038;
772*437bfbebSnyanmisaka 
773*437bfbebSnyanmisaka     /*
774*437bfbebSnyanmisaka      * KLUT_WGT13
775*437bfbebSnyanmisaka      * Address offset: 0x009C Access type: read and write
776*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register13
777*437bfbebSnyanmisaka      */
778*437bfbebSnyanmisaka     struct {
779*437bfbebSnyanmisaka         /* High 9 bits of data19 in chroma cost weight table. */
780*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt19_h9      : 9;
781*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
782*437bfbebSnyanmisaka         /* Data14 in chroma cost weight table. */
783*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt20         : 18;
784*437bfbebSnyanmisaka     } reg039;
785*437bfbebSnyanmisaka 
786*437bfbebSnyanmisaka     /*
787*437bfbebSnyanmisaka      * KLUT_WGT14
788*437bfbebSnyanmisaka      * Address offset: 0x00A0 Access type: read and write
789*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register14
790*437bfbebSnyanmisaka      */
791*437bfbebSnyanmisaka     struct {
792*437bfbebSnyanmisaka         /* Data21 in chroma cost weight table. */
793*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt21         : 18;
794*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
795*437bfbebSnyanmisaka         /* Low 9 bits of data22 in chroma cost weight table. */
796*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt22_l9      : 9;
797*437bfbebSnyanmisaka     } reg040;
798*437bfbebSnyanmisaka 
799*437bfbebSnyanmisaka     /*
800*437bfbebSnyanmisaka      * KLUT_WGT15
801*437bfbebSnyanmisaka      * Address offset: 0x00A4 Access type: read and write
802*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register15
803*437bfbebSnyanmisaka      */
804*437bfbebSnyanmisaka     struct {
805*437bfbebSnyanmisaka         /* High 9 bits of data22 in chroma cost weight table. */
806*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt22_h9      : 9;
807*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
808*437bfbebSnyanmisaka         /* Data23 in chroma cost weight table. */
809*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt23         : 18;
810*437bfbebSnyanmisaka     } reg041;
811*437bfbebSnyanmisaka 
812*437bfbebSnyanmisaka     /*
813*437bfbebSnyanmisaka      * KLUT_WGT16
814*437bfbebSnyanmisaka      * Address offset: 0x00A8 Access type: read and write
815*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register16
816*437bfbebSnyanmisaka      */
817*437bfbebSnyanmisaka     struct {
818*437bfbebSnyanmisaka         /* Data24 in chroma cost weight table. */
819*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt24         : 18;
820*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
821*437bfbebSnyanmisaka         /* Low 9 bits of data25 in chroma cost weight table. */
822*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt25_l9      : 9;
823*437bfbebSnyanmisaka     } reg042;
824*437bfbebSnyanmisaka 
825*437bfbebSnyanmisaka     /*
826*437bfbebSnyanmisaka      * KLUT_WGT17
827*437bfbebSnyanmisaka      * Address offset: 0x00AC Access type: read and write
828*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register17
829*437bfbebSnyanmisaka      */
830*437bfbebSnyanmisaka     struct {
831*437bfbebSnyanmisaka         /* High 9 bits of data25 in chroma cost weight table. */
832*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt25_h9      : 9;
833*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
834*437bfbebSnyanmisaka         /* Data26 in chroma cost weight table. */
835*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt26         : 18;
836*437bfbebSnyanmisaka     } reg043;
837*437bfbebSnyanmisaka 
838*437bfbebSnyanmisaka     /*
839*437bfbebSnyanmisaka      * KLUT_WGT18
840*437bfbebSnyanmisaka      * Address offset: 0x00B0 Access type: read and write
841*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register18
842*437bfbebSnyanmisaka      */
843*437bfbebSnyanmisaka     struct {
844*437bfbebSnyanmisaka         /* Data27 in chroma cost weight table. */
845*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt27         : 18;
846*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
847*437bfbebSnyanmisaka         /* Low 9 bits of data28 in chroma cost weight table. */
848*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt28_l9      : 9;
849*437bfbebSnyanmisaka     } reg044;
850*437bfbebSnyanmisaka 
851*437bfbebSnyanmisaka     /*
852*437bfbebSnyanmisaka      * KLUT_WGT19
853*437bfbebSnyanmisaka      * Address offset: 0x00B4 Access type: read and write
854*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register19
855*437bfbebSnyanmisaka      */
856*437bfbebSnyanmisaka     struct {
857*437bfbebSnyanmisaka         /* High 9 bits of data28 in chroma cost weight table. */
858*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt28_h9      : 9;
859*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
860*437bfbebSnyanmisaka         /* Data29 in chroma cost weight table. */
861*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt29         : 18;
862*437bfbebSnyanmisaka     } reg045;
863*437bfbebSnyanmisaka 
864*437bfbebSnyanmisaka     /*
865*437bfbebSnyanmisaka      * KLUT_WGT20
866*437bfbebSnyanmisaka      * Address offset: 0x00B8 Access type: read and write
867*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register20
868*437bfbebSnyanmisaka      */
869*437bfbebSnyanmisaka     struct {
870*437bfbebSnyanmisaka         /* Data30 in chroma cost weight table. */
871*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt30         : 18;
872*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
873*437bfbebSnyanmisaka         /* Low 9 bits of data31 in chroma cost weight table. */
874*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt31_l9      : 9;
875*437bfbebSnyanmisaka     } reg046;
876*437bfbebSnyanmisaka 
877*437bfbebSnyanmisaka     /*
878*437bfbebSnyanmisaka      * KLUT_WGT21
879*437bfbebSnyanmisaka      * Address offset: 0x00BC Access type: read and write
880*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register21
881*437bfbebSnyanmisaka      */
882*437bfbebSnyanmisaka     struct {
883*437bfbebSnyanmisaka         /* High 9 bits of data31 in chroma cost weight table. */
884*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt31_h9      : 9;
885*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
886*437bfbebSnyanmisaka         /* Data32 in chroma cost weight table. */
887*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt32         : 18;
888*437bfbebSnyanmisaka     } reg047;
889*437bfbebSnyanmisaka 
890*437bfbebSnyanmisaka     /*
891*437bfbebSnyanmisaka      * KLUT_WGT22
892*437bfbebSnyanmisaka      * Address offset: 0x00C0 Access type: read and write
893*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register22
894*437bfbebSnyanmisaka      */
895*437bfbebSnyanmisaka     struct {
896*437bfbebSnyanmisaka         /* Data33 in chroma cost weight table. */
897*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt33         : 18;
898*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
899*437bfbebSnyanmisaka         /* Low 9 bits of data34 in chroma cost weight table. */
900*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt34_l9      : 9;
901*437bfbebSnyanmisaka     } reg048;
902*437bfbebSnyanmisaka 
903*437bfbebSnyanmisaka     /*
904*437bfbebSnyanmisaka      * KLUT_WGT23
905*437bfbebSnyanmisaka      * Address offset: 0x00C4 Access type: read and write
906*437bfbebSnyanmisaka      * (RDO) Chroma weight table configure register23
907*437bfbebSnyanmisaka      */
908*437bfbebSnyanmisaka     struct {
909*437bfbebSnyanmisaka         /* High 9 bits of data34 in chroma cost weight table. */
910*437bfbebSnyanmisaka         RK_U32  chrm_klut_wgt34_h9      : 9;
911*437bfbebSnyanmisaka         RK_U32  reserved                : 23;
912*437bfbebSnyanmisaka     } reg049;
913*437bfbebSnyanmisaka 
914*437bfbebSnyanmisaka     /*
915*437bfbebSnyanmisaka      * RC_CFG
916*437bfbebSnyanmisaka      * Address offset: 0x00C8 Access type: read and write
917*437bfbebSnyanmisaka      * Rate control configuration
918*437bfbebSnyanmisaka      */
919*437bfbebSnyanmisaka     struct {
920*437bfbebSnyanmisaka         /* Rate control enable. */
921*437bfbebSnyanmisaka         RK_U32  rc_en                   : 1;
922*437bfbebSnyanmisaka         /* Adaptive quantization enable. */
923*437bfbebSnyanmisaka         RK_U32  aq_en                   : 1;
924*437bfbebSnyanmisaka         /*
925*437bfbebSnyanmisaka          * Mode of aq_delta calculation for CU32 and CU64.
926*437bfbebSnyanmisaka          * 1'b0: aq_delta of CU32/CU64 is calculated by corresponding MADI32/64;
927*437bfbebSnyanmisaka          * 1'b1: aq_delta of CU32/CU64 is calculated by corresponding 4/16 CU16 qp_deltas.
928*437bfbebSnyanmisaka          */
929*437bfbebSnyanmisaka         RK_U32  aq_mode                 : 1;
930*437bfbebSnyanmisaka         RK_U32  reserved                : 13;
931*437bfbebSnyanmisaka         /* RC adjustment intervals, base on CTU number. */
932*437bfbebSnyanmisaka         RK_U32  rc_ctu_num              : 16;
933*437bfbebSnyanmisaka     } reg050;
934*437bfbebSnyanmisaka 
935*437bfbebSnyanmisaka     /*
936*437bfbebSnyanmisaka      * RC_QP
937*437bfbebSnyanmisaka      * Address offset: 0x00CC Access type: read and write
938*437bfbebSnyanmisaka      * QP configuration for rate control
939*437bfbebSnyanmisaka      */
940*437bfbebSnyanmisaka     struct {
941*437bfbebSnyanmisaka         RK_U32  reserved                : 16;
942*437bfbebSnyanmisaka         /*
943*437bfbebSnyanmisaka          * QP adjust range(delta_qp) in rate control.
944*437bfbebSnyanmisaka          * Delta_qp is constrained  between -rc_qp_range to rc_qp_range.
945*437bfbebSnyanmisaka          */
946*437bfbebSnyanmisaka         RK_S32  rc_qp_range             : 4;
947*437bfbebSnyanmisaka         /* Max QP for rate control and AQ mode. */
948*437bfbebSnyanmisaka         RK_U32  rc_max_qp               : 6;
949*437bfbebSnyanmisaka         /* Min QP for rate control and AQ mode. */
950*437bfbebSnyanmisaka         RK_U32  rc_min_qp               : 6;
951*437bfbebSnyanmisaka     } reg051;
952*437bfbebSnyanmisaka 
953*437bfbebSnyanmisaka     /*
954*437bfbebSnyanmisaka      * RC_TGT
955*437bfbebSnyanmisaka      * Address offset: 0x00D0 Access type: read and write
956*437bfbebSnyanmisaka      * The target bit rate for rate control
957*437bfbebSnyanmisaka      */
958*437bfbebSnyanmisaka     struct {
959*437bfbebSnyanmisaka         /*
960*437bfbebSnyanmisaka          * Target bit num for one 64x64 CTU(for HEVC)
961*437bfbebSnyanmisaka          * or one 16x16 MB(for H.264), with 1/16 precision.
962*437bfbebSnyanmisaka          */
963*437bfbebSnyanmisaka         RK_U32  ctu_ebit                : 20;
964*437bfbebSnyanmisaka         RK_U32  reserved                : 12;
965*437bfbebSnyanmisaka     } reg052;
966*437bfbebSnyanmisaka 
967*437bfbebSnyanmisaka     /*
968*437bfbebSnyanmisaka      * RC_ADJ0
969*437bfbebSnyanmisaka      * Address offset: 0x00D4 Access type: read and write
970*437bfbebSnyanmisaka      * QP adjust configuration for rate control
971*437bfbebSnyanmisaka      */
972*437bfbebSnyanmisaka     struct {
973*437bfbebSnyanmisaka         /* QP adjust step0 for rate control. */
974*437bfbebSnyanmisaka         RK_S32  qp_adj0                 : 5;
975*437bfbebSnyanmisaka         /* QP adjust step1 for rate control. */
976*437bfbebSnyanmisaka         RK_S32  qp_adj1                 : 5;
977*437bfbebSnyanmisaka         /* QP adjust step2 for rate control. */
978*437bfbebSnyanmisaka         RK_S32  qp_adj2                 : 5;
979*437bfbebSnyanmisaka         /* QP adjust step3 for rate control. */
980*437bfbebSnyanmisaka         RK_S32  qp_adj3                 : 5;
981*437bfbebSnyanmisaka         /* QP adjust step4 for rate control. */
982*437bfbebSnyanmisaka         RK_S32  qp_adj4                 : 5;
983*437bfbebSnyanmisaka         RK_U32  reserved                : 7;
984*437bfbebSnyanmisaka     } reg053;
985*437bfbebSnyanmisaka 
986*437bfbebSnyanmisaka     /*
987*437bfbebSnyanmisaka      * RC_ADJ1
988*437bfbebSnyanmisaka      * Address offset: 0x00D8 Access type: read and write
989*437bfbebSnyanmisaka      * QP adjust configuration for rate control
990*437bfbebSnyanmisaka      */
991*437bfbebSnyanmisaka     struct {
992*437bfbebSnyanmisaka         /* QP adjust step5 for rate control. */
993*437bfbebSnyanmisaka         RK_S32  qp_adj5                 : 5;
994*437bfbebSnyanmisaka         /* QP adjust step6 for rate control. */
995*437bfbebSnyanmisaka         RK_S32  qp_adj6                 : 5;
996*437bfbebSnyanmisaka         /* QP adjust step7 for rate control. */
997*437bfbebSnyanmisaka         RK_S32  qp_adj7                 : 5;
998*437bfbebSnyanmisaka         /* QP adjust step8 for rate control. */
999*437bfbebSnyanmisaka         RK_S32  qp_adj8                 : 5;
1000*437bfbebSnyanmisaka         RK_U32  reserved                : 12;
1001*437bfbebSnyanmisaka     } reg054;
1002*437bfbebSnyanmisaka 
1003*437bfbebSnyanmisaka     /*
1004*437bfbebSnyanmisaka      * RC_DTHD0~8
1005*437bfbebSnyanmisaka      * Address offset: 0x00DC~0x00FC Access type: read and write
1006*437bfbebSnyanmisaka      * Bits rate deviation threshold0~8
1007*437bfbebSnyanmisaka      */
1008*437bfbebSnyanmisaka     struct {
1009*437bfbebSnyanmisaka         /* Bits rate deviation threshold0~8. */
1010*437bfbebSnyanmisaka         RK_U32  rc_dthd[9];
1011*437bfbebSnyanmisaka     } reg055_063;
1012*437bfbebSnyanmisaka 
1013*437bfbebSnyanmisaka     /*
1014*437bfbebSnyanmisaka      * ROI_QTHD0
1015*437bfbebSnyanmisaka      * Address offset: 0x0100 Access type: read and write
1016*437bfbebSnyanmisaka      * ROI QP threshold configuration0
1017*437bfbebSnyanmisaka      */
1018*437bfbebSnyanmisaka     struct {
1019*437bfbebSnyanmisaka         /* Min QP for 16x16 CU inside ROI area0. */
1020*437bfbebSnyanmisaka         RK_U32  qpmin_area0             : 6;
1021*437bfbebSnyanmisaka         /* Max QP for 16x16 CU inside ROI area0. */
1022*437bfbebSnyanmisaka         RK_U32  qpmax_area0             : 6;
1023*437bfbebSnyanmisaka         /* Min QP for 16x16 CU inside ROI area1. */
1024*437bfbebSnyanmisaka         RK_U32  qpmin_area1             : 6;
1025*437bfbebSnyanmisaka         /* Max QP for 16x16 CU inside ROI area1. */
1026*437bfbebSnyanmisaka         RK_U32  qpmax_area1             : 6;
1027*437bfbebSnyanmisaka         /* Min QP for 16x16 CU inside ROI area2. */
1028*437bfbebSnyanmisaka         RK_U32  qpmin_area2             : 6;
1029*437bfbebSnyanmisaka         RK_U32  reserved                : 2;
1030*437bfbebSnyanmisaka     } reg064;
1031*437bfbebSnyanmisaka 
1032*437bfbebSnyanmisaka     /*
1033*437bfbebSnyanmisaka      * ROI_QTHD1
1034*437bfbebSnyanmisaka      * Address offset: 0x0104 Access type: read and write
1035*437bfbebSnyanmisaka      * ROI QP threshold configuration1
1036*437bfbebSnyanmisaka      */
1037*437bfbebSnyanmisaka     struct {
1038*437bfbebSnyanmisaka         /* Max QP for 16x16 CU inside ROI area2. */
1039*437bfbebSnyanmisaka         RK_U32  qpmax_area2             : 6;
1040*437bfbebSnyanmisaka         /* Min QP for 16x16 CU inside ROI area3. */
1041*437bfbebSnyanmisaka         RK_U32  qpmin_area3             : 6;
1042*437bfbebSnyanmisaka         /* Max QP for 16x16 CU inside ROI area3. */
1043*437bfbebSnyanmisaka         RK_U32  qpmax_area3             : 6;
1044*437bfbebSnyanmisaka         /* Min QP for 16x16 CU inside ROI area4. */
1045*437bfbebSnyanmisaka         RK_U32  qpmin_area4             : 6;
1046*437bfbebSnyanmisaka         /* Min QP for 16x16 CU inside ROI area4. */
1047*437bfbebSnyanmisaka         RK_U32  qpmax_area4             : 6;
1048*437bfbebSnyanmisaka         RK_U32  reserved                : 2;
1049*437bfbebSnyanmisaka     } reg065;
1050*437bfbebSnyanmisaka 
1051*437bfbebSnyanmisaka     /*
1052*437bfbebSnyanmisaka      * ROI_QTHD2
1053*437bfbebSnyanmisaka      * Address offset: 0x0108 Access type: read and write
1054*437bfbebSnyanmisaka      * ROI QP threshold configuration2
1055*437bfbebSnyanmisaka      */
1056*437bfbebSnyanmisaka     struct {
1057*437bfbebSnyanmisaka         /* Min QP for 16x16 CU inside ROI area5. */
1058*437bfbebSnyanmisaka         RK_U32  qpmin_area5             : 6;
1059*437bfbebSnyanmisaka         /* Max QP for 16x16 CU inside ROI area5. */
1060*437bfbebSnyanmisaka         RK_U32  qpmax_area5             : 6;
1061*437bfbebSnyanmisaka         /* Min QP for 16x16 CU inside ROI area6. */
1062*437bfbebSnyanmisaka         RK_U32  qpmin_area6             : 6;
1063*437bfbebSnyanmisaka         /* Max QP for 16x16 CU inside ROI area6. */
1064*437bfbebSnyanmisaka         RK_U32  qpmax_area6             : 6;
1065*437bfbebSnyanmisaka         /* Min QP for 16x16 CU inside ROI area7. */
1066*437bfbebSnyanmisaka         RK_U32  qpmin_area7             : 6;
1067*437bfbebSnyanmisaka         RK_U32  reserved                : 2;
1068*437bfbebSnyanmisaka     } reg066;
1069*437bfbebSnyanmisaka 
1070*437bfbebSnyanmisaka     /*
1071*437bfbebSnyanmisaka      * ROI_QTHD3
1072*437bfbebSnyanmisaka      * Address offset: 0x010C Access type: read and write
1073*437bfbebSnyanmisaka      * ROI QP threshold configuration3
1074*437bfbebSnyanmisaka      */
1075*437bfbebSnyanmisaka     struct {
1076*437bfbebSnyanmisaka         /* Max QP for 16x16 CU inside ROI area7. */
1077*437bfbebSnyanmisaka         RK_U32  qpmax_area7             : 6;
1078*437bfbebSnyanmisaka         RK_U32  reserved                : 24;
1079*437bfbebSnyanmisaka         /*
1080*437bfbebSnyanmisaka          * QP theshold generation for the CUs whose size is bigger than 16x16.
1081*437bfbebSnyanmisaka          * 2'h0: Mean value of 16x16 CU QP thesholds
1082*437bfbebSnyanmisaka          * 2'h1: Max value of 16x16 CU QP thesholds
1083*437bfbebSnyanmisaka          * 2'h2: Min value of 16x16 CU QP thesholds
1084*437bfbebSnyanmisaka          * 2'h3: Reserved
1085*437bfbebSnyanmisaka          */
1086*437bfbebSnyanmisaka         RK_U32  qpmap_mode              : 2;
1087*437bfbebSnyanmisaka     } reg067;
1088*437bfbebSnyanmisaka 
1089*437bfbebSnyanmisaka     /*
1090*437bfbebSnyanmisaka      * PIC_OFST
1091*437bfbebSnyanmisaka      * Address offset: 0x0110 Access type: read and write
1092*437bfbebSnyanmisaka      * Encoding picture offset
1093*437bfbebSnyanmisaka      */
1094*437bfbebSnyanmisaka     struct {
1095*437bfbebSnyanmisaka         /* Vertical offset for encoding picture. */
1096*437bfbebSnyanmisaka         RK_U32  pic_ofst_y              : 13;
1097*437bfbebSnyanmisaka         RK_U32  reserved0               : 3;
1098*437bfbebSnyanmisaka         /* Horizontal offset for encoding picture. */
1099*437bfbebSnyanmisaka         RK_U32  pic_ofst_x              : 13;
1100*437bfbebSnyanmisaka         RK_U32  reserved1               : 3;
1101*437bfbebSnyanmisaka     } reg068;
1102*437bfbebSnyanmisaka 
1103*437bfbebSnyanmisaka     /*
1104*437bfbebSnyanmisaka      * SRC_STRID
1105*437bfbebSnyanmisaka      * Address offset: 0x0114 Access type: read and write
1106*437bfbebSnyanmisaka      * Video source stride
1107*437bfbebSnyanmisaka      */
1108*437bfbebSnyanmisaka     struct {
1109*437bfbebSnyanmisaka         /*
1110*437bfbebSnyanmisaka          * Video source stride0, based on pixel (byte).
1111*437bfbebSnyanmisaka          * Note that if the video format is YUV, src_strd is the LUMA component
1112*437bfbebSnyanmisaka          * stride while src_strid1 is the CHROMA component stride.
1113*437bfbebSnyanmisaka          */
1114*437bfbebSnyanmisaka         RK_U32  src_strd0               : 16;
1115*437bfbebSnyanmisaka         /*
1116*437bfbebSnyanmisaka          * CHROMA stride of video source, only for YUV format.
1117*437bfbebSnyanmisaka          * Note that U and V stride must be the same when color format is YUV
1118*437bfbebSnyanmisaka          * planar.
1119*437bfbebSnyanmisaka          */
1120*437bfbebSnyanmisaka         RK_U32  src_strd1               : 16;
1121*437bfbebSnyanmisaka     } reg069;
1122*437bfbebSnyanmisaka 
1123*437bfbebSnyanmisaka     /*
1124*437bfbebSnyanmisaka      * ADR_SRC0
1125*437bfbebSnyanmisaka      * Address offset: 0x0118 Access type: read and write
1126*437bfbebSnyanmisaka      * Base address of the 1st storage area for video source
1127*437bfbebSnyanmisaka      */
1128*437bfbebSnyanmisaka     struct {
1129*437bfbebSnyanmisaka         /*
1130*437bfbebSnyanmisaka          * Base address of the 1st storage area for video source.
1131*437bfbebSnyanmisaka          * ARGB8888, BGR888, RGB565, YUYV422 and UYUV422 have only one storage
1132*437bfbebSnyanmisaka          * area, while adr_src0 is configured as the base address of video
1133*437bfbebSnyanmisaka          * source frame buffer.
1134*437bfbebSnyanmisaka          * YUV422/420 semi-planar have 2 storage area, while adr_src0 is
1135*437bfbebSnyanmisaka          * configured as the base address of Y frame buffer.
1136*437bfbebSnyanmisaka          * YUV422/420 planar have 3 storage area, while adr_src0 is configured
1137*437bfbebSnyanmisaka          * as the base address of Y frame buffer.
1138*437bfbebSnyanmisaka          * Note that if the video source is compressed by AFBC, adr_src0 is
1139*437bfbebSnyanmisaka          * configured as the base address of compressed frame buffer.
1140*437bfbebSnyanmisaka          */
1141*437bfbebSnyanmisaka         RK_U32  adr_src0;
1142*437bfbebSnyanmisaka     } reg070;
1143*437bfbebSnyanmisaka 
1144*437bfbebSnyanmisaka     /*
1145*437bfbebSnyanmisaka      * ADR_SRC1
1146*437bfbebSnyanmisaka      * Address offset: 0x011C Access type: read and write
1147*437bfbebSnyanmisaka      * Base address of the 2nd storage area for video source
1148*437bfbebSnyanmisaka      */
1149*437bfbebSnyanmisaka     struct {
1150*437bfbebSnyanmisaka         /*
1151*437bfbebSnyanmisaka          * Base address of V frame buffer when video source is uncompress and
1152*437bfbebSnyanmisaka          * color format is YUV422/420 planar.
1153*437bfbebSnyanmisaka          */
1154*437bfbebSnyanmisaka         RK_U32  adr_src1;
1155*437bfbebSnyanmisaka     } reg071;
1156*437bfbebSnyanmisaka 
1157*437bfbebSnyanmisaka     /*
1158*437bfbebSnyanmisaka      * ADR_SRC2
1159*437bfbebSnyanmisaka      * Address offset: 0x0120 Access type: read and write
1160*437bfbebSnyanmisaka      * Base address of the 3rd storage area for video source
1161*437bfbebSnyanmisaka      */
1162*437bfbebSnyanmisaka     struct {
1163*437bfbebSnyanmisaka         /*
1164*437bfbebSnyanmisaka          * Base address of V frame buffer when video source is uncompress and
1165*437bfbebSnyanmisaka          * color format is YUV422/420 planar.
1166*437bfbebSnyanmisaka          */
1167*437bfbebSnyanmisaka         RK_U32  adr_src2;
1168*437bfbebSnyanmisaka     } reg072;
1169*437bfbebSnyanmisaka 
1170*437bfbebSnyanmisaka     /*
1171*437bfbebSnyanmisaka      * ADR_ROI
1172*437bfbebSnyanmisaka      * Address offset: 0x0124 Access type: read and write
1173*437bfbebSnyanmisaka      * Base address for ROI configuration, 16 bytes aligned
1174*437bfbebSnyanmisaka      */
1175*437bfbebSnyanmisaka     struct {
1176*437bfbebSnyanmisaka         /* High 28 bits of base address for ROI configuration. */
1177*437bfbebSnyanmisaka         RK_U32  roi_addr;
1178*437bfbebSnyanmisaka     } reg073;
1179*437bfbebSnyanmisaka 
1180*437bfbebSnyanmisaka     /*
1181*437bfbebSnyanmisaka      * ADR_RFPW_H
1182*437bfbebSnyanmisaka      * Address offset: 0x0128 Access type: read and write
1183*437bfbebSnyanmisaka      * Base address of header_block for compressed reference frame write,
1184*437bfbebSnyanmisaka      * 4K bytes aligned
1185*437bfbebSnyanmisaka      */
1186*437bfbebSnyanmisaka     struct {
1187*437bfbebSnyanmisaka         /*
1188*437bfbebSnyanmisaka          * High 20 bits of the header_block base address for compressed
1189*437bfbebSnyanmisaka          * reference frame write.
1190*437bfbebSnyanmisaka          */
1191*437bfbebSnyanmisaka         RK_U32  rfpw_h_addr;
1192*437bfbebSnyanmisaka     } reg074;
1193*437bfbebSnyanmisaka 
1194*437bfbebSnyanmisaka     /*
1195*437bfbebSnyanmisaka      * ADR_RFPW_B
1196*437bfbebSnyanmisaka      * Address offset: 0x012C Access type: read and write
1197*437bfbebSnyanmisaka      * Base address of body_block for compressed reference frame write,
1198*437bfbebSnyanmisaka      * 4K bytes aligned
1199*437bfbebSnyanmisaka      */
1200*437bfbebSnyanmisaka     struct {
1201*437bfbebSnyanmisaka         /*
1202*437bfbebSnyanmisaka          * High 20 bits of the body_block base address for compressed
1203*437bfbebSnyanmisaka          * reference frame write.
1204*437bfbebSnyanmisaka          */
1205*437bfbebSnyanmisaka         RK_U32  rfpw_b_addr;
1206*437bfbebSnyanmisaka     } reg075;
1207*437bfbebSnyanmisaka 
1208*437bfbebSnyanmisaka     /*
1209*437bfbebSnyanmisaka      * ADR_RFPR_H
1210*437bfbebSnyanmisaka      * Address offset: 0x0130 Access type: read and write
1211*437bfbebSnyanmisaka      * Base address of header_block for compressed reference frame read,
1212*437bfbebSnyanmisaka      * 4K bytes aligned
1213*437bfbebSnyanmisaka      */
1214*437bfbebSnyanmisaka     struct {
1215*437bfbebSnyanmisaka         /*
1216*437bfbebSnyanmisaka          * High 20 bits of the header_block base address for compressed
1217*437bfbebSnyanmisaka          * reference frame read.
1218*437bfbebSnyanmisaka          */
1219*437bfbebSnyanmisaka         RK_U32  rfpr_h_addr;
1220*437bfbebSnyanmisaka     } reg076;
1221*437bfbebSnyanmisaka 
1222*437bfbebSnyanmisaka     /*
1223*437bfbebSnyanmisaka      * ADR_RFPR_B
1224*437bfbebSnyanmisaka      * Address offset: 0x0134 Access type: read and write
1225*437bfbebSnyanmisaka      * Base address of body_block for compressed reference frame read,
1226*437bfbebSnyanmisaka      * 4K bytes aligned
1227*437bfbebSnyanmisaka      */
1228*437bfbebSnyanmisaka     struct {
1229*437bfbebSnyanmisaka         /*
1230*437bfbebSnyanmisaka          * High 20 bits of the body_block base address for compressed
1231*437bfbebSnyanmisaka          * reference frame read.
1232*437bfbebSnyanmisaka          */
1233*437bfbebSnyanmisaka         RK_U32  rfpr_b_addr;
1234*437bfbebSnyanmisaka     } reg077;
1235*437bfbebSnyanmisaka 
1236*437bfbebSnyanmisaka     /*
1237*437bfbebSnyanmisaka      * ADR_CMVW
1238*437bfbebSnyanmisaka      * Address offset: 0x0138 Access type: read and write
1239*437bfbebSnyanmisaka      * Base address for col-located Mv write, 1KB aligned, HEVC only
1240*437bfbebSnyanmisaka      */
1241*437bfbebSnyanmisaka     struct {
1242*437bfbebSnyanmisaka         /* High 22 bits of base address for col-located Mv write, HEVC only. */
1243*437bfbebSnyanmisaka         RK_U32  cmvw_addr;
1244*437bfbebSnyanmisaka     } reg078;
1245*437bfbebSnyanmisaka 
1246*437bfbebSnyanmisaka     /*
1247*437bfbebSnyanmisaka      * ADR_CMVR
1248*437bfbebSnyanmisaka      * Address offset: 0x013C Access type: read and write
1249*437bfbebSnyanmisaka      * Base address for col-located Mv read, 1KB aligned, HEVC only
1250*437bfbebSnyanmisaka      */
1251*437bfbebSnyanmisaka     struct {
1252*437bfbebSnyanmisaka         /* High 22 bits of base address for col-located Mv read, HEVC only. */
1253*437bfbebSnyanmisaka         RK_U32  cmvr_addr;
1254*437bfbebSnyanmisaka     } reg079;
1255*437bfbebSnyanmisaka 
1256*437bfbebSnyanmisaka     /*
1257*437bfbebSnyanmisaka      * ADR_DSPW
1258*437bfbebSnyanmisaka      * Address offset: 0x0140 Access type: read and write
1259*437bfbebSnyanmisaka      * Base address for down-sampled reference frame write, 1KB aligned
1260*437bfbebSnyanmisaka      */
1261*437bfbebSnyanmisaka     struct {
1262*437bfbebSnyanmisaka         /* High 22 bits of base address for down-sampled reference frame write. */
1263*437bfbebSnyanmisaka         RK_U32  dspw_addr;
1264*437bfbebSnyanmisaka     } reg080;
1265*437bfbebSnyanmisaka 
1266*437bfbebSnyanmisaka     /*
1267*437bfbebSnyanmisaka      * ADR_DSPR
1268*437bfbebSnyanmisaka      * Address offset: 0x0144 Access type: read and write
1269*437bfbebSnyanmisaka      * Base address for down-sampled reference frame read, 1KB aligned
1270*437bfbebSnyanmisaka      */
1271*437bfbebSnyanmisaka     struct {
1272*437bfbebSnyanmisaka         /* High 22 bits of base address for down-sampled reference frame read. */
1273*437bfbebSnyanmisaka         RK_U32  dspr_addr;
1274*437bfbebSnyanmisaka     } reg081;
1275*437bfbebSnyanmisaka 
1276*437bfbebSnyanmisaka     /*
1277*437bfbebSnyanmisaka      * ADR_MEIW
1278*437bfbebSnyanmisaka      * Address offset: 0x0148 Access type: read and write
1279*437bfbebSnyanmisaka      * Base address for ME information write, 1KB aligned
1280*437bfbebSnyanmisaka      */
1281*437bfbebSnyanmisaka     struct {
1282*437bfbebSnyanmisaka         /* High 22 bits of base address for ME information write. */
1283*437bfbebSnyanmisaka         RK_U32  meiw_addr;
1284*437bfbebSnyanmisaka     } reg082;
1285*437bfbebSnyanmisaka 
1286*437bfbebSnyanmisaka     /*
1287*437bfbebSnyanmisaka      * ADR_BSBT
1288*437bfbebSnyanmisaka      * Address offset: 0x014C Access type: read and write
1289*437bfbebSnyanmisaka      * Top address of bit stream buffer, 128B aligned
1290*437bfbebSnyanmisaka      */
1291*437bfbebSnyanmisaka     struct {
1292*437bfbebSnyanmisaka         /* High 25 bits of the top address of bit stream buffer. */
1293*437bfbebSnyanmisaka         RK_U32  bsbt_addr;
1294*437bfbebSnyanmisaka     } reg083;
1295*437bfbebSnyanmisaka 
1296*437bfbebSnyanmisaka     /*
1297*437bfbebSnyanmisaka      * ADR_BSBB
1298*437bfbebSnyanmisaka      * Address offset: 0x0150 Access type: read and write
1299*437bfbebSnyanmisaka      * Bottom address of bit stream buffer, 128B aligned
1300*437bfbebSnyanmisaka      */
1301*437bfbebSnyanmisaka     struct {
1302*437bfbebSnyanmisaka         /* High 25 bits of the bottom address of bit stream buffer. */
1303*437bfbebSnyanmisaka         RK_U32  bsbb_addr;
1304*437bfbebSnyanmisaka     } reg084;
1305*437bfbebSnyanmisaka 
1306*437bfbebSnyanmisaka     /*
1307*437bfbebSnyanmisaka      * ADR_BSBR
1308*437bfbebSnyanmisaka      * Address offset: 0x0154 Access type: read and write
1309*437bfbebSnyanmisaka      * Read address of bit stream buffer, 128B aligned
1310*437bfbebSnyanmisaka      */
1311*437bfbebSnyanmisaka     struct {
1312*437bfbebSnyanmisaka         /*
1313*437bfbebSnyanmisaka          * Read address of bit stream buffer, 128B aligned.
1314*437bfbebSnyanmisaka          * VEPU will pause when write address meets read address and then send
1315*437bfbebSnyanmisaka          * an interrupt. SW should move some data out from bit stream buffer
1316*437bfbebSnyanmisaka          * and change this register accordingly.
1317*437bfbebSnyanmisaka          * After that VEPU will continue processing automatically.
1318*437bfbebSnyanmisaka          */
1319*437bfbebSnyanmisaka         RK_U32  bsbr_addr;
1320*437bfbebSnyanmisaka     } reg085;
1321*437bfbebSnyanmisaka 
1322*437bfbebSnyanmisaka     /*
1323*437bfbebSnyanmisaka      * ADR_BSBS
1324*437bfbebSnyanmisaka      * Address offset: 0x0158 Access type: read and write
1325*437bfbebSnyanmisaka      * Start address of bit stream buffer
1326*437bfbebSnyanmisaka      */
1327*437bfbebSnyanmisaka     struct {
1328*437bfbebSnyanmisaka         /*
1329*437bfbebSnyanmisaka          * Start address of bit stream buffer.
1330*437bfbebSnyanmisaka          * VEPU begins to write bit stream from this address and increase
1331*437bfbebSnyanmisaka          * address automatically.
1332*437bfbebSnyanmisaka          * Note that the VEPU's real-time write address is marked in BSB_STUS.
1333*437bfbebSnyanmisaka          */
1334*437bfbebSnyanmisaka         RK_U32  adr_bsbs;
1335*437bfbebSnyanmisaka     } reg086;
1336*437bfbebSnyanmisaka 
1337*437bfbebSnyanmisaka     /*
1338*437bfbebSnyanmisaka      * SLI_SPLT
1339*437bfbebSnyanmisaka      * Address offset: 0x015C Access type: read and write
1340*437bfbebSnyanmisaka      * Slice split configuration
1341*437bfbebSnyanmisaka      */
1342*437bfbebSnyanmisaka     struct {
1343*437bfbebSnyanmisaka         /* Slice split enable. */
1344*437bfbebSnyanmisaka         RK_U32  sli_splt                : 1;
1345*437bfbebSnyanmisaka         /*
1346*437bfbebSnyanmisaka          * Slice split mode.
1347*437bfbebSnyanmisaka          * 1'h0: Slice splited by byte.
1348*437bfbebSnyanmisaka          * 1'h1: Slice splited by number of MB(H.264)/CTU(HEVC).
1349*437bfbebSnyanmisaka          */
1350*437bfbebSnyanmisaka         RK_U32  sli_splt_mode           : 1;
1351*437bfbebSnyanmisaka         /*
1352*437bfbebSnyanmisaka          * Slice split compensation when slice is splited by byte.
1353*437bfbebSnyanmisaka          * Byte distortion of current slice will be compensated in the next slice.
1354*437bfbebSnyanmisaka          */
1355*437bfbebSnyanmisaka         RK_U32  sli_splt_cpst           : 1;
1356*437bfbebSnyanmisaka         /* Max slice num in one frame. */
1357*437bfbebSnyanmisaka         RK_U32  sli_max_num_m1          : 10;
1358*437bfbebSnyanmisaka         /* Slice flush. Flush all the bit stream after each slice finished. */
1359*437bfbebSnyanmisaka         RK_U32  sli_flsh                : 1;
1360*437bfbebSnyanmisaka         RK_U32  reserved                : 2;
1361*437bfbebSnyanmisaka         /* Number of CTU/MB for slice split. Valid when slice is splited by CTU/MB. */
1362*437bfbebSnyanmisaka         RK_U32  sli_splt_cnum_m1        : 16;
1363*437bfbebSnyanmisaka     } reg087;
1364*437bfbebSnyanmisaka 
1365*437bfbebSnyanmisaka     /*
1366*437bfbebSnyanmisaka      * SLI_BYTE
1367*437bfbebSnyanmisaka      * Address offset: 0x0160 Access type: read and write
1368*437bfbebSnyanmisaka      * Number of bytes for slice split
1369*437bfbebSnyanmisaka      */
1370*437bfbebSnyanmisaka     struct {
1371*437bfbebSnyanmisaka         /* Byte number for each slice when slice is splited by byte. */
1372*437bfbebSnyanmisaka         RK_U32  sli_splt_byte           : 18;
1373*437bfbebSnyanmisaka         RK_U32  reserved                : 14;
1374*437bfbebSnyanmisaka     } reg088;
1375*437bfbebSnyanmisaka 
1376*437bfbebSnyanmisaka     /*
1377*437bfbebSnyanmisaka      * ME_RNGE
1378*437bfbebSnyanmisaka      * Address offset: 0x0164 Access type: read and write
1379*437bfbebSnyanmisaka      * Motion estimation range
1380*437bfbebSnyanmisaka      */
1381*437bfbebSnyanmisaka     struct {
1382*437bfbebSnyanmisaka         /* CME horizontal search range, base on 16 pixels. */
1383*437bfbebSnyanmisaka         RK_U32  cme_srch_h              : 4;
1384*437bfbebSnyanmisaka         /* CME vertical search range, base on 16 pixel. */
1385*437bfbebSnyanmisaka         RK_U32  cme_srch_v              : 4;
1386*437bfbebSnyanmisaka         /* RME horizontal search range, values from 3 to 7. */
1387*437bfbebSnyanmisaka         RK_U32  rme_srch_h              : 3;
1388*437bfbebSnyanmisaka         /* RME vertical search range, values from 4 to 5. */
1389*437bfbebSnyanmisaka         RK_U32  rme_srch_v              : 3;
1390*437bfbebSnyanmisaka         RK_U32  reserved                : 2;
1391*437bfbebSnyanmisaka         /* Frame number difference value between current and reference frame, HEVC only. */
1392*437bfbebSnyanmisaka         RK_U32  dlt_frm_num             : 16;
1393*437bfbebSnyanmisaka     } reg089;
1394*437bfbebSnyanmisaka 
1395*437bfbebSnyanmisaka     /*
1396*437bfbebSnyanmisaka      * ME_CNST
1397*437bfbebSnyanmisaka      * Address offset: 0x0168 Access type: read and write
1398*437bfbebSnyanmisaka      * Motion estimation configuration
1399*437bfbebSnyanmisaka      */
1400*437bfbebSnyanmisaka     struct {
1401*437bfbebSnyanmisaka         /* Min horizontal distance for PMV selection. */
1402*437bfbebSnyanmisaka         RK_U32  pmv_mdst_h              : 8;
1403*437bfbebSnyanmisaka         /* Min vertical distance for PMV selection. */
1404*437bfbebSnyanmisaka         RK_U32  pmv_mdst_v              : 8;
1405*437bfbebSnyanmisaka         /*
1406*437bfbebSnyanmisaka          * Motion vector limit ( by level), H.264 only.
1407*437bfbebSnyanmisaka          * 2'h0: Mvy is limited to [-64,63].
1408*437bfbebSnyanmisaka          * Others: Mvy is limited to [-128,127].
1409*437bfbebSnyanmisaka          */
1410*437bfbebSnyanmisaka         RK_U32  mv_limit                : 2;
1411*437bfbebSnyanmisaka         /* PMV number (should be constant2). */
1412*437bfbebSnyanmisaka         RK_U32  pmv_num                 : 2;
1413*437bfbebSnyanmisaka         /* Store col-Mv information to external memory, HEVC only. */
1414*437bfbebSnyanmisaka         RK_U32  colmv_stor              : 1;
1415*437bfbebSnyanmisaka         /* Load co-located Mvs as predicated Mv candidates, HEVC only. */
1416*437bfbebSnyanmisaka         RK_U32  colmv_load              : 1;
1417*437bfbebSnyanmisaka         /*
1418*437bfbebSnyanmisaka          * [4]: Disable 64x64 block RME.
1419*437bfbebSnyanmisaka          * [3]: Disable 32x32 block RME.
1420*437bfbebSnyanmisaka          * [2]: Disable 16x16 block RME.
1421*437bfbebSnyanmisaka          * [1]: Disable 8x8   block RME.
1422*437bfbebSnyanmisaka          * [0]: Disable 4x4   block RME.
1423*437bfbebSnyanmisaka          */
1424*437bfbebSnyanmisaka         RK_U32  rme_dis                 : 5;
1425*437bfbebSnyanmisaka         /*
1426*437bfbebSnyanmisaka          * [4]: Disable 64x64 block FME.
1427*437bfbebSnyanmisaka          * [3]: Disable 32x32 block FME.
1428*437bfbebSnyanmisaka          * [2]: Disable 16x16 block FME.
1429*437bfbebSnyanmisaka          * [1]: Disable 8x8   block FME.
1430*437bfbebSnyanmisaka          * [0]: Disable 4x4   block FME.
1431*437bfbebSnyanmisaka          */
1432*437bfbebSnyanmisaka         RK_U32  fme_dis                 : 5;
1433*437bfbebSnyanmisaka     } reg090;
1434*437bfbebSnyanmisaka 
1435*437bfbebSnyanmisaka     /*
1436*437bfbebSnyanmisaka      * ME_RAM
1437*437bfbebSnyanmisaka      * Address offset: 0x016C Access type: read and write
1438*437bfbebSnyanmisaka      * ME cache configuration
1439*437bfbebSnyanmisaka      */
1440*437bfbebSnyanmisaka     struct {
1441*437bfbebSnyanmisaka         /* CME's max RAM address. */
1442*437bfbebSnyanmisaka         RK_U32  cme_rama_max            : 11;
1443*437bfbebSnyanmisaka         /* Height of CME RAMA district, base on 4 pixels. */
1444*437bfbebSnyanmisaka         RK_U32  cme_rama_h              : 5;
1445*437bfbebSnyanmisaka         /*
1446*437bfbebSnyanmisaka          * L2 cach mapping, base on pixels.
1447*437bfbebSnyanmisaka          * 2'h0: 32x512
1448*437bfbebSnyanmisaka          * 2'h1: 16x1024
1449*437bfbebSnyanmisaka          * 2'h2: 8x2048
1450*437bfbebSnyanmisaka          * 2'h3: 4x4096
1451*437bfbebSnyanmisaka          */
1452*437bfbebSnyanmisaka         RK_U32  cach_l2_map             : 2;
1453*437bfbebSnyanmisaka         /* The width of CIME down-sample recon data linebuf, based on 64 pixel. */
1454*437bfbebSnyanmisaka         RK_U32  cme_linebuf_w           : 8;
1455*437bfbebSnyanmisaka         RK_U32  reserved                : 6;
1456*437bfbebSnyanmisaka     } reg091;
1457*437bfbebSnyanmisaka 
1458*437bfbebSnyanmisaka     /*
1459*437bfbebSnyanmisaka      * SYNT_LONG_REFM0
1460*437bfbebSnyanmisaka      * Address offset: 0x0170 Access type: read and write
1461*437bfbebSnyanmisaka      * Long term reference frame mark0 for HEVC
1462*437bfbebSnyanmisaka      */
1463*437bfbebSnyanmisaka     struct {
1464*437bfbebSnyanmisaka         /* Poc_lsb_lt[1] */
1465*437bfbebSnyanmisaka         RK_U32  poc_lsb_lt1             : 16;
1466*437bfbebSnyanmisaka         /* Poc_lsb_lt[2] */
1467*437bfbebSnyanmisaka         RK_U32  poc_lsb_lt2             : 16;
1468*437bfbebSnyanmisaka     } reg092;
1469*437bfbebSnyanmisaka 
1470*437bfbebSnyanmisaka     /*
1471*437bfbebSnyanmisaka      * SYNT_LONG_REFM1
1472*437bfbebSnyanmisaka      * Address offset: 0x0174 Access type: read and write
1473*437bfbebSnyanmisaka      * Long term reference frame mark1 for HEVC
1474*437bfbebSnyanmisaka      */
1475*437bfbebSnyanmisaka     struct {
1476*437bfbebSnyanmisaka         /* Delta_poc_msb_cycle_lt[1] */
1477*437bfbebSnyanmisaka         RK_U32  dlt_poc_msb_cycl1       : 16;
1478*437bfbebSnyanmisaka         /* Delta_poc_msb_cycle_lt[2] */
1479*437bfbebSnyanmisaka         RK_U32  dlt_poc_msb_cycl2       : 16;
1480*437bfbebSnyanmisaka     } reg093;
1481*437bfbebSnyanmisaka 
1482*437bfbebSnyanmisaka     /*
1483*437bfbebSnyanmisaka      * OSD_INV_CFG
1484*437bfbebSnyanmisaka      * Address offset: 0x0178 Access type: read and write
1485*437bfbebSnyanmisaka      * OSD color inverse  configuration
1486*437bfbebSnyanmisaka      *
1487*437bfbebSnyanmisaka      * Added in vepu540
1488*437bfbebSnyanmisaka      */
1489*437bfbebSnyanmisaka     struct {
1490*437bfbebSnyanmisaka         /*
1491*437bfbebSnyanmisaka          * OSD color inverse enable of chroma component,
1492*437bfbebSnyanmisaka          * each bit controls corresponding region.
1493*437bfbebSnyanmisaka          */
1494*437bfbebSnyanmisaka         RK_U32  osd_ch_inv_en           : 8;
1495*437bfbebSnyanmisaka         /*
1496*437bfbebSnyanmisaka          * OSD color inverse expression type
1497*437bfbebSnyanmisaka          * each bit controls corresponding region.
1498*437bfbebSnyanmisaka          * 1'h0: AND;
1499*437bfbebSnyanmisaka          * 1'h1: OR
1500*437bfbebSnyanmisaka          */
1501*437bfbebSnyanmisaka         RK_U32  osd_itype               : 8;
1502*437bfbebSnyanmisaka         /*
1503*437bfbebSnyanmisaka          * OSD color inverse expression switch for luma component
1504*437bfbebSnyanmisaka          * each bit controls corresponding region.
1505*437bfbebSnyanmisaka          * 1'h0: Expression need to determine the condition;
1506*437bfbebSnyanmisaka          * 1'h1: Expression don't need to determine the condition;
1507*437bfbebSnyanmisaka          */
1508*437bfbebSnyanmisaka         RK_U32  osd_lu_inv_msk          : 8;
1509*437bfbebSnyanmisaka         /*
1510*437bfbebSnyanmisaka          * OSD color inverse expression switch for chroma component
1511*437bfbebSnyanmisaka          * each bit controls corresponding region.
1512*437bfbebSnyanmisaka          * 1'h0: Expression need to determine the condition;
1513*437bfbebSnyanmisaka          * 1'h1: Expression don't need to determine the condition;
1514*437bfbebSnyanmisaka          */
1515*437bfbebSnyanmisaka         RK_U32  osd_ch_inv_msk          : 8;
1516*437bfbebSnyanmisaka     } reg094;
1517*437bfbebSnyanmisaka 
1518*437bfbebSnyanmisaka     /* reg gap 095~100 */
1519*437bfbebSnyanmisaka     RK_U32 reg_095_100[6];
1520*437bfbebSnyanmisaka 
1521*437bfbebSnyanmisaka     /*
1522*437bfbebSnyanmisaka      * IPRD_CSTS
1523*437bfbebSnyanmisaka      * Address offset: 0x0194 Access type: read and write
1524*437bfbebSnyanmisaka      * Cost function configuration for intra prediction
1525*437bfbebSnyanmisaka      */
1526*437bfbebSnyanmisaka     struct {
1527*437bfbebSnyanmisaka         /* LUMA variance threshold to select intra prediction cost function. */
1528*437bfbebSnyanmisaka         RK_U32  vthd_y                  : 12;
1529*437bfbebSnyanmisaka         RK_U32  reserved0               : 4;
1530*437bfbebSnyanmisaka         /* CHROMA variance threshold to select intra prediction cost function. */
1531*437bfbebSnyanmisaka         RK_U32  vthd_c                  : 12;
1532*437bfbebSnyanmisaka         RK_U32  reserved1               : 4;
1533*437bfbebSnyanmisaka     } reg101;
1534*437bfbebSnyanmisaka 
1535*437bfbebSnyanmisaka     /*
1536*437bfbebSnyanmisaka      * RDO_CFG_H264
1537*437bfbebSnyanmisaka      * Address offset: 0x0198 Access type: read and write
1538*437bfbebSnyanmisaka      * H.264 RDO configuration
1539*437bfbebSnyanmisaka      */
1540*437bfbebSnyanmisaka     struct {
1541*437bfbebSnyanmisaka         /* Limit sub_mb_rect_size for low level. */
1542*437bfbebSnyanmisaka         RK_U32  rect_size               : 1;
1543*437bfbebSnyanmisaka         /* 4x4 sub MB enable. */
1544*437bfbebSnyanmisaka         RK_U32  inter_4x4               : 1;
1545*437bfbebSnyanmisaka         /* Reserved */
1546*437bfbebSnyanmisaka         RK_U32  arb_sel                 : 1;
1547*437bfbebSnyanmisaka         /* CAVLC syntax limit. */
1548*437bfbebSnyanmisaka         RK_U32  vlc_lmt                 : 1;
1549*437bfbebSnyanmisaka         /* Chroma special candidates enable. */
1550*437bfbebSnyanmisaka         RK_U32  chrm_spcl               : 1;
1551*437bfbebSnyanmisaka         /*
1552*437bfbebSnyanmisaka          * [7]: Disable intra4x4.
1553*437bfbebSnyanmisaka          * [6]: Disable intra8x8.
1554*437bfbebSnyanmisaka          * [5]: Disable intra16x16.
1555*437bfbebSnyanmisaka          * [4]: Disable inter8x8 with T4.
1556*437bfbebSnyanmisaka          * [3]: Disable inter8x8 with T8.
1557*437bfbebSnyanmisaka          * [2]: Disable inter16x16 with T4.
1558*437bfbebSnyanmisaka          * [1]: Disable inter16x16 with T8.
1559*437bfbebSnyanmisaka          * [0]: Disable skip mode.
1560*437bfbebSnyanmisaka          */
1561*437bfbebSnyanmisaka         RK_U32  rdo_mask                : 8;
1562*437bfbebSnyanmisaka         /* Chroma cost weight adjustment(KLUT) enable. */
1563*437bfbebSnyanmisaka         RK_U32  ccwa_e                  : 1;
1564*437bfbebSnyanmisaka         /*
1565*437bfbebSnyanmisaka          * Scale list selection.
1566*437bfbebSnyanmisaka          * 1'h0: Flat scale list.
1567*437bfbebSnyanmisaka          * 1'h1: Default scale list.
1568*437bfbebSnyanmisaka          */
1569*437bfbebSnyanmisaka         RK_U32  scl_lst_sel             : 1;
1570*437bfbebSnyanmisaka         /* Anti-ring enable. */
1571*437bfbebSnyanmisaka         RK_U32  atr_e                   : 1;
1572*437bfbebSnyanmisaka         /* Edge of anti-flicker, base on MB. the MBs inside edge should not influenced. */
1573*437bfbebSnyanmisaka         RK_U32  atf_edg                 : 2;
1574*437bfbebSnyanmisaka         /* Block level anti-flicker enable. */
1575*437bfbebSnyanmisaka         RK_U32  atf_lvl_e               : 1;
1576*437bfbebSnyanmisaka         /* Intra mode anti-flicker enable. */
1577*437bfbebSnyanmisaka         RK_U32  atf_intra_e             : 1;
1578*437bfbebSnyanmisaka         /*
1579*437bfbebSnyanmisaka          * Scale list selection. (for vepu540)
1580*437bfbebSnyanmisaka          * 2'h0: Flat scale list.
1581*437bfbebSnyanmisaka          * 2'h1: Default scale list.
1582*437bfbebSnyanmisaka          * 2'h2: User defined.
1583*437bfbebSnyanmisaka          * 2'h3: Reserved.
1584*437bfbebSnyanmisaka          */
1585*437bfbebSnyanmisaka         RK_U32  scl_lst_sel_            : 2;
1586*437bfbebSnyanmisaka         RK_U32  reserved                : 9;
1587*437bfbebSnyanmisaka         /*
1588*437bfbebSnyanmisaka          * Rdo cost caculation expression for intra by using sad or satd.
1589*437bfbebSnyanmisaka          * 1'h0: SATD;
1590*437bfbebSnyanmisaka          * 1'h1: SAD;
1591*437bfbebSnyanmisaka          */
1592*437bfbebSnyanmisaka         RK_U32  satd_byps_flg           : 1;
1593*437bfbebSnyanmisaka     } reg102;
1594*437bfbebSnyanmisaka 
1595*437bfbebSnyanmisaka     /*
1596*437bfbebSnyanmisaka      * SYNT_NAL_H264
1597*437bfbebSnyanmisaka      * Address offset: 0x019C Access type: read and write
1598*437bfbebSnyanmisaka      * NAL configuration for H.264
1599*437bfbebSnyanmisaka      */
1600*437bfbebSnyanmisaka     struct {
1601*437bfbebSnyanmisaka         /* nal_ref_idc */
1602*437bfbebSnyanmisaka         RK_U32  nal_ref_idc             : 2;
1603*437bfbebSnyanmisaka         RK_U32  nal_unit_type           : 5;
1604*437bfbebSnyanmisaka         /* nal_unit_type */
1605*437bfbebSnyanmisaka         RK_U32  reserved                : 25;
1606*437bfbebSnyanmisaka     } reg103;
1607*437bfbebSnyanmisaka 
1608*437bfbebSnyanmisaka     /*
1609*437bfbebSnyanmisaka      * SYNT_SPS_H264
1610*437bfbebSnyanmisaka      * Address offset: 0x01A0 Access type: read and write
1611*437bfbebSnyanmisaka      * Sequence parameter set syntax configuration for H.264
1612*437bfbebSnyanmisaka      */
1613*437bfbebSnyanmisaka     struct {
1614*437bfbebSnyanmisaka         /* log2_max_frame_num_minus4 */
1615*437bfbebSnyanmisaka         RK_U32  max_fnum                : 4;
1616*437bfbebSnyanmisaka         /* direct_8x8_inference_flag */
1617*437bfbebSnyanmisaka         RK_U32  drct_8x8                : 1;
1618*437bfbebSnyanmisaka         /* log2_max_pic_order_cnt_lsb_minus4 */
1619*437bfbebSnyanmisaka         RK_U32  mpoc_lm4                : 4;
1620*437bfbebSnyanmisaka         RK_U32  reserved                : 23;
1621*437bfbebSnyanmisaka     } reg104;
1622*437bfbebSnyanmisaka 
1623*437bfbebSnyanmisaka     /*
1624*437bfbebSnyanmisaka      * SYNT_PPS_H264
1625*437bfbebSnyanmisaka      * Address offset: 0x01A4 Access type: read and write
1626*437bfbebSnyanmisaka      * Picture parameter set configuration for H.264
1627*437bfbebSnyanmisaka      */
1628*437bfbebSnyanmisaka     struct {
1629*437bfbebSnyanmisaka         /* entropy_coding_mode_flag */
1630*437bfbebSnyanmisaka         RK_U32  etpy_mode               : 1;
1631*437bfbebSnyanmisaka         /* transform_8x8_mode_flag */
1632*437bfbebSnyanmisaka         RK_U32  trns_8x8                : 1;
1633*437bfbebSnyanmisaka         /* constrained_intra_pred_flag */
1634*437bfbebSnyanmisaka         RK_U32  csip_flag               : 1;
1635*437bfbebSnyanmisaka         /* num_ref_idx_l0_active_minus1 */
1636*437bfbebSnyanmisaka         RK_U32  num_ref0_idx            : 2;
1637*437bfbebSnyanmisaka         /* num_ref_idx_l1_active_minus1 */
1638*437bfbebSnyanmisaka         RK_U32  num_ref1_idx            : 2;
1639*437bfbebSnyanmisaka         /* pic_init_qp_minus26 + 26 */
1640*437bfbebSnyanmisaka         RK_U32  pic_init_qp             : 6;
1641*437bfbebSnyanmisaka         /* chroma_qp_index_offset */
1642*437bfbebSnyanmisaka         RK_U32  cb_ofst                 : 5;
1643*437bfbebSnyanmisaka         /* second_chroma_qp_index_offset */
1644*437bfbebSnyanmisaka         RK_U32  cr_ofst                 : 5;
1645*437bfbebSnyanmisaka         /* weight_pred_flag */
1646*437bfbebSnyanmisaka         RK_U32  wght_pred               : 1;
1647*437bfbebSnyanmisaka         /* deblocking_filter_control_present_flag */
1648*437bfbebSnyanmisaka         RK_U32  dbf_cp_flg              : 1;
1649*437bfbebSnyanmisaka         RK_U32  reserved                : 7;
1650*437bfbebSnyanmisaka     } reg105;
1651*437bfbebSnyanmisaka 
1652*437bfbebSnyanmisaka     /*
1653*437bfbebSnyanmisaka      * SYNT_SLI0_H264
1654*437bfbebSnyanmisaka      * Address offset: 0x01A8 Access type: read and write
1655*437bfbebSnyanmisaka      * Slice header configuration0 for H.264
1656*437bfbebSnyanmisaka      */
1657*437bfbebSnyanmisaka     struct {
1658*437bfbebSnyanmisaka         /* slice_type: 0->P, 1->B, 2->I. */
1659*437bfbebSnyanmisaka         RK_U32  sli_type                : 2;
1660*437bfbebSnyanmisaka         /* pic_parameter_set_id */
1661*437bfbebSnyanmisaka         RK_U32  pps_id                  : 8;
1662*437bfbebSnyanmisaka         /* direct_spatial_mv_pred_flag */
1663*437bfbebSnyanmisaka         RK_U32  drct_smvp               : 1;
1664*437bfbebSnyanmisaka         /* num_ref_idx_active_override_flag */
1665*437bfbebSnyanmisaka         RK_U32  num_ref_ovrd            : 1;
1666*437bfbebSnyanmisaka         /* cabac_init_idc */
1667*437bfbebSnyanmisaka         RK_U32  cbc_init_idc            : 2;
1668*437bfbebSnyanmisaka         RK_U32  reserved                : 2;
1669*437bfbebSnyanmisaka         /* frame_num */
1670*437bfbebSnyanmisaka         RK_U32  frm_num                 : 16;
1671*437bfbebSnyanmisaka     } reg106;
1672*437bfbebSnyanmisaka 
1673*437bfbebSnyanmisaka     /*
1674*437bfbebSnyanmisaka      * SYNT_SLI1_H264
1675*437bfbebSnyanmisaka      * Address offset: 0x01AC Access type: read and write
1676*437bfbebSnyanmisaka      * Slice header configuration1 for H.264
1677*437bfbebSnyanmisaka      */
1678*437bfbebSnyanmisaka     struct {
1679*437bfbebSnyanmisaka         /* idr_pid */
1680*437bfbebSnyanmisaka         RK_U32  idr_pic_id              : 16;
1681*437bfbebSnyanmisaka         /* pic_order_cnt_lsb */
1682*437bfbebSnyanmisaka         RK_U32  poc_lsb                 : 16;
1683*437bfbebSnyanmisaka     } reg107;
1684*437bfbebSnyanmisaka 
1685*437bfbebSnyanmisaka     /*
1686*437bfbebSnyanmisaka      * SYNT_SLI2_H264
1687*437bfbebSnyanmisaka      * Address offset: 0x01B0 Access type: read and write
1688*437bfbebSnyanmisaka      * Slice header configuration2 for H.264
1689*437bfbebSnyanmisaka      */
1690*437bfbebSnyanmisaka     struct {
1691*437bfbebSnyanmisaka         /* reordering_of_pic_nums_idc */
1692*437bfbebSnyanmisaka         RK_U32  rodr_pic_idx            : 2;
1693*437bfbebSnyanmisaka         /* ref_pic_list_reordering_flag_l0 */
1694*437bfbebSnyanmisaka         RK_U32  ref_list0_rodr          : 1;
1695*437bfbebSnyanmisaka         /* slice_beta_offset_div2 */
1696*437bfbebSnyanmisaka         RK_U32  sli_beta_ofst           : 4;
1697*437bfbebSnyanmisaka         /* slice_alpha_c0_offset_div2 */
1698*437bfbebSnyanmisaka         RK_U32  sli_alph_ofst           : 4;
1699*437bfbebSnyanmisaka         /* disable_deblocking_filter_idc */
1700*437bfbebSnyanmisaka         RK_U32  dis_dblk_idc            : 2;
1701*437bfbebSnyanmisaka         RK_U32  reserved                : 3;
1702*437bfbebSnyanmisaka         /* abs_diff_pic_num_minus1/long_term_pic_num */
1703*437bfbebSnyanmisaka         RK_U32  rodr_pic_num            : 16;
1704*437bfbebSnyanmisaka     } reg108;
1705*437bfbebSnyanmisaka 
1706*437bfbebSnyanmisaka     /*
1707*437bfbebSnyanmisaka      * SYNT_REFM0_H264
1708*437bfbebSnyanmisaka      * Address offset: 0x01B4 Access type: read and write
1709*437bfbebSnyanmisaka      * Reference frame mark0 for H.264
1710*437bfbebSnyanmisaka      */
1711*437bfbebSnyanmisaka     struct {
1712*437bfbebSnyanmisaka         /* no_output_of_prior_pics_flag */
1713*437bfbebSnyanmisaka         RK_U32  nopp_flg                : 1;
1714*437bfbebSnyanmisaka         /* long_term_reference_flag */
1715*437bfbebSnyanmisaka         RK_U32  ltrf_flg                : 1;
1716*437bfbebSnyanmisaka         /* adaptive_ref_pic_marking_mode_flag */
1717*437bfbebSnyanmisaka         RK_U32  arpm_flg                : 1;
1718*437bfbebSnyanmisaka         /* A No.4 MMCO should be executed firstly if mmo4_pre is 1 */
1719*437bfbebSnyanmisaka         RK_U32  mmco4_pre               : 1;
1720*437bfbebSnyanmisaka         /* memory_management_control_operation */
1721*437bfbebSnyanmisaka         RK_U32  mmco_type0              : 3;
1722*437bfbebSnyanmisaka         /*
1723*437bfbebSnyanmisaka          * MMCO parameters which have different meanings according to different mmco_parm0 valus.
1724*437bfbebSnyanmisaka          * difference_of_pic_nums_minus1 for mmco_parm0 equals 0 or 3.
1725*437bfbebSnyanmisaka          * long_term_pic_num for mmco_parm0 equals 2.
1726*437bfbebSnyanmisaka          * long_term_frame_idx for mmco_parm0 equals 6.
1727*437bfbebSnyanmisaka          * max_long_term_frame_idx_plus1 for mmco_parm0 equals 4.
1728*437bfbebSnyanmisaka          */
1729*437bfbebSnyanmisaka         RK_U32  mmco_parm0              : 16;
1730*437bfbebSnyanmisaka         /* memory_management_control_operation[1] */
1731*437bfbebSnyanmisaka         RK_U32  mmco_type1              : 3;
1732*437bfbebSnyanmisaka         /* memory_management_control_operation[2] */
1733*437bfbebSnyanmisaka         RK_U32  mmco_type2              : 3;
1734*437bfbebSnyanmisaka         RK_U32  reserved                : 3;
1735*437bfbebSnyanmisaka     } reg109;
1736*437bfbebSnyanmisaka 
1737*437bfbebSnyanmisaka     /*
1738*437bfbebSnyanmisaka      * SYNT_REFM1_H264
1739*437bfbebSnyanmisaka      * Address offset: 0x01B8 Access type: read and write
1740*437bfbebSnyanmisaka      * Reference frame mark1 for H.264
1741*437bfbebSnyanmisaka      */
1742*437bfbebSnyanmisaka     struct {
1743*437bfbebSnyanmisaka         /*
1744*437bfbebSnyanmisaka          * MMCO parameters which have different meanings according to different mmco_parm1 valus.
1745*437bfbebSnyanmisaka          * difference_of_pic_nums_minus1 for mmco_parm1 equals 0 or 3.
1746*437bfbebSnyanmisaka          * long_term_pic_num for mmco_parm1 equals 2.
1747*437bfbebSnyanmisaka          * long_term_frame_idx for mmco_parm1 equals 6.
1748*437bfbebSnyanmisaka          * max_long_term_frame_idx_plus1 for mmco_parm1 equals 4.
1749*437bfbebSnyanmisaka          */
1750*437bfbebSnyanmisaka         RK_U32  mmco_parm1              : 16;
1751*437bfbebSnyanmisaka         /*
1752*437bfbebSnyanmisaka          * MMCO parameters which have different meanings according to different mmco_parm2 valus.
1753*437bfbebSnyanmisaka          * difference_of_pic_nums_minus1 for mmco_parm2 equals 0 or 3.
1754*437bfbebSnyanmisaka          * long_term_pic_num for mmco_parm2 equals 2.
1755*437bfbebSnyanmisaka          * long_term_frame_idx for mmco_parm2 equals 6.
1756*437bfbebSnyanmisaka          * max_long_term_frame_idx_plus1 for mmco_parm2 equals 4.
1757*437bfbebSnyanmisaka          */
1758*437bfbebSnyanmisaka         RK_U32  mmco_parm2              : 16;
1759*437bfbebSnyanmisaka     } reg110;
1760*437bfbebSnyanmisaka 
1761*437bfbebSnyanmisaka     /* reg gap 111 */
1762*437bfbebSnyanmisaka     RK_U32 reg_111;
1763*437bfbebSnyanmisaka 
1764*437bfbebSnyanmisaka     /*
1765*437bfbebSnyanmisaka      * OSD_CFG
1766*437bfbebSnyanmisaka      * Address offset: 0x01C0 Access type: read and write
1767*437bfbebSnyanmisaka      * OSD configuration
1768*437bfbebSnyanmisaka      */
1769*437bfbebSnyanmisaka     struct {
1770*437bfbebSnyanmisaka         /* OSD region enable, each bit controls corresponding OSD region. */
1771*437bfbebSnyanmisaka         RK_U32  osd_e                   : 8;
1772*437bfbebSnyanmisaka         /* OSD inverse color enable, each bit controls corresponding region. */
1773*437bfbebSnyanmisaka         RK_U32  osd_inv_e               : 8;
1774*437bfbebSnyanmisaka         /*
1775*437bfbebSnyanmisaka          * OSD palette clock selection.
1776*437bfbebSnyanmisaka          * 1'h0: Configure bus clock domain.
1777*437bfbebSnyanmisaka          * 1'h1: Core clock domain.
1778*437bfbebSnyanmisaka          */
1779*437bfbebSnyanmisaka         RK_U32  osd_plt_cks             : 1;
1780*437bfbebSnyanmisaka         /*
1781*437bfbebSnyanmisaka          * OSD palette type.
1782*437bfbebSnyanmisaka          * 1'h1: Default type.
1783*437bfbebSnyanmisaka          * 1'h0: User defined type.
1784*437bfbebSnyanmisaka          */
1785*437bfbebSnyanmisaka         RK_U32  osd_plt_typ             : 1;
1786*437bfbebSnyanmisaka         RK_U32  reserved                : 14;
1787*437bfbebSnyanmisaka     } reg112;
1788*437bfbebSnyanmisaka 
1789*437bfbebSnyanmisaka     /*
1790*437bfbebSnyanmisaka      * OSD_INV
1791*437bfbebSnyanmisaka      * Address offset: 0x01C4 Access type: read and write
1792*437bfbebSnyanmisaka      * OSD color inverse configuration
1793*437bfbebSnyanmisaka      */
1794*437bfbebSnyanmisaka     struct {
1795*437bfbebSnyanmisaka         /* Color inverse theshold for OSD region0. */
1796*437bfbebSnyanmisaka         RK_U32  osd_ithd_r0             : 4;
1797*437bfbebSnyanmisaka         /* Color inverse theshold for OSD region1. */
1798*437bfbebSnyanmisaka         RK_U32  osd_ithd_r1             : 4;
1799*437bfbebSnyanmisaka         /* Color inverse theshold for OSD region2. */
1800*437bfbebSnyanmisaka         RK_U32  osd_ithd_r2             : 4;
1801*437bfbebSnyanmisaka         /* Color inverse theshold for OSD region3. */
1802*437bfbebSnyanmisaka         RK_U32  osd_ithd_r3             : 4;
1803*437bfbebSnyanmisaka         /* Color inverse theshold for OSD region4. */
1804*437bfbebSnyanmisaka         RK_U32  osd_ithd_r4             : 4;
1805*437bfbebSnyanmisaka         /* Color inverse theshold for OSD region5. */
1806*437bfbebSnyanmisaka         RK_U32  osd_ithd_r5             : 4;
1807*437bfbebSnyanmisaka         /* Color inverse theshold for OSD region6. */
1808*437bfbebSnyanmisaka         RK_U32  osd_ithd_r6             : 4;
1809*437bfbebSnyanmisaka         /* Color inverse theshold for OSD region7. */
1810*437bfbebSnyanmisaka         RK_U32  osd_ithd_r7             : 4;
1811*437bfbebSnyanmisaka     } reg113;
1812*437bfbebSnyanmisaka 
1813*437bfbebSnyanmisaka     /*
1814*437bfbebSnyanmisaka      * SYNT_REFM2_H264
1815*437bfbebSnyanmisaka      * Address offset: 0x01C8 Access type: read and write
1816*437bfbebSnyanmisaka      * Reference frame mark2 for H.264
1817*437bfbebSnyanmisaka      */
1818*437bfbebSnyanmisaka     struct {
1819*437bfbebSnyanmisaka         /* long_term_frame_idx[0] (when mmco equal 3) */
1820*437bfbebSnyanmisaka         RK_U32  long_term_frame_idx0    : 4;
1821*437bfbebSnyanmisaka         /* long_term_frame_idx[1] (when mmco equal 3) */
1822*437bfbebSnyanmisaka         RK_U32  long_term_frame_idx1    : 4;
1823*437bfbebSnyanmisaka         /* long_term_frame_idx[2] (when mmco equal 3) */
1824*437bfbebSnyanmisaka         RK_U32  long_term_frame_idx2    : 4;
1825*437bfbebSnyanmisaka         RK_U32  reserved                : 20;
1826*437bfbebSnyanmisaka     } reg114;
1827*437bfbebSnyanmisaka 
1828*437bfbebSnyanmisaka     /*
1829*437bfbebSnyanmisaka      * SYNT_REFM3
1830*437bfbebSnyanmisaka      * Address offset: 0x01CC Access type: read and write
1831*437bfbebSnyanmisaka      * Reference frame mark3 for HEVC
1832*437bfbebSnyanmisaka      */
1833*437bfbebSnyanmisaka     RK_U32 reg115;
1834*437bfbebSnyanmisaka 
1835*437bfbebSnyanmisaka     /*
1836*437bfbebSnyanmisaka      * OSD_POS
1837*437bfbebSnyanmisaka      * Address offset: 0x01D0~0x01EC Access type: read and write
1838*437bfbebSnyanmisaka      * OSD region position
1839*437bfbebSnyanmisaka      */
1840*437bfbebSnyanmisaka     struct {
1841*437bfbebSnyanmisaka         Vepu541OsdPos  osd_pos[8];
1842*437bfbebSnyanmisaka     } reg116_123;
1843*437bfbebSnyanmisaka 
1844*437bfbebSnyanmisaka     /*
1845*437bfbebSnyanmisaka      * ADR_OSD
1846*437bfbebSnyanmisaka      * Address offset: 0x01F0~0x20C Access type: read and write
1847*437bfbebSnyanmisaka      * Base address for OSD region, 16B aligned
1848*437bfbebSnyanmisaka      */
1849*437bfbebSnyanmisaka     struct {
1850*437bfbebSnyanmisaka         RK_U32  osd_addr[8];
1851*437bfbebSnyanmisaka     } reg124_131;
1852*437bfbebSnyanmisaka 
1853*437bfbebSnyanmisaka     /*
1854*437bfbebSnyanmisaka      * ST_BSL
1855*437bfbebSnyanmisaka      * Address offset: 0x210 Access type: read only
1856*437bfbebSnyanmisaka      * Bit stream length for current frame
1857*437bfbebSnyanmisaka      */
1858*437bfbebSnyanmisaka     struct {
1859*437bfbebSnyanmisaka         /* Bit stream length for current frame. */
1860*437bfbebSnyanmisaka         RK_U32  bs_lgth                 : 27;
1861*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
1862*437bfbebSnyanmisaka     } reg132;
1863*437bfbebSnyanmisaka 
1864*437bfbebSnyanmisaka     /*
1865*437bfbebSnyanmisaka      * ST_SSE_L32
1866*437bfbebSnyanmisaka      * Address offset: 0x214 Access type: read only
1867*437bfbebSnyanmisaka      * Low 32 bits of encoding distortion (SSE)
1868*437bfbebSnyanmisaka      */
1869*437bfbebSnyanmisaka     struct {
1870*437bfbebSnyanmisaka         RK_U32  sse_l32;
1871*437bfbebSnyanmisaka     } reg133;
1872*437bfbebSnyanmisaka 
1873*437bfbebSnyanmisaka     /*
1874*437bfbebSnyanmisaka      * ST_SSE_QP
1875*437bfbebSnyanmisaka      * Address offset: 0x218 Access type: read only
1876*437bfbebSnyanmisaka      * High 8 bits of encoding distortion (SSE) and sum of QP for the encoded frame
1877*437bfbebSnyanmisaka      */
1878*437bfbebSnyanmisaka     struct {
1879*437bfbebSnyanmisaka         /* Sum of QP for the encoded frame. */
1880*437bfbebSnyanmisaka         RK_U32  qp_sum                  : 22;
1881*437bfbebSnyanmisaka         RK_U32  reserved                : 2;
1882*437bfbebSnyanmisaka         /* High bits of encoding distortion(SSE). */
1883*437bfbebSnyanmisaka         RK_U32  sse_h8                  : 8;
1884*437bfbebSnyanmisaka     } reg134;
1885*437bfbebSnyanmisaka 
1886*437bfbebSnyanmisaka     /*
1887*437bfbebSnyanmisaka      * ST_SAO
1888*437bfbebSnyanmisaka      * Address offset: 0x21C Access type: read only
1889*437bfbebSnyanmisaka      * Number of CTUs which adjusted by SAO
1890*437bfbebSnyanmisaka      */
1891*437bfbebSnyanmisaka     struct {
1892*437bfbebSnyanmisaka         /* Number of CTUs whose CHROMA component are adjusted by SAO. */
1893*437bfbebSnyanmisaka         RK_U32  sao_cnum                : 12;
1894*437bfbebSnyanmisaka         /* Number of CTUs whose LUMA component are adjusted by SAO. */
1895*437bfbebSnyanmisaka         RK_U32  sao_ynum                : 12;
1896*437bfbebSnyanmisaka         RK_U32  reserved                : 8;
1897*437bfbebSnyanmisaka     } reg135;
1898*437bfbebSnyanmisaka 
1899*437bfbebSnyanmisaka     /* reg gap 136~137 */
1900*437bfbebSnyanmisaka     RK_U32 reg_136_137[2];
1901*437bfbebSnyanmisaka 
1902*437bfbebSnyanmisaka     /*
1903*437bfbebSnyanmisaka      * ST_ENC
1904*437bfbebSnyanmisaka      * Address offset: 0x228 Access type: read only
1905*437bfbebSnyanmisaka      * VEPU working status
1906*437bfbebSnyanmisaka      */
1907*437bfbebSnyanmisaka     struct {
1908*437bfbebSnyanmisaka         /*
1909*437bfbebSnyanmisaka          * VEPU working status.
1910*437bfbebSnyanmisaka          * 2'h0: Idle.
1911*437bfbebSnyanmisaka          * 2'h1: Working in register conifguration mode.
1912*437bfbebSnyanmisaka          * 2'h2: Working in link table configuration mode.
1913*437bfbebSnyanmisaka          */
1914*437bfbebSnyanmisaka         RK_U32  st_enc                  : 2;
1915*437bfbebSnyanmisaka         /*
1916*437bfbebSnyanmisaka          * Status of safe clear.
1917*437bfbebSnyanmisaka          * 1'h0: Safe clear is finished or not started.
1918*437bfbebSnyanmisaka          * 1'h1: VEPU is performing safe clear.
1919*437bfbebSnyanmisaka          */
1920*437bfbebSnyanmisaka         RK_U32  st_sclr                 : 1;
1921*437bfbebSnyanmisaka         RK_U32  reserved                : 29;
1922*437bfbebSnyanmisaka     } reg138;
1923*437bfbebSnyanmisaka 
1924*437bfbebSnyanmisaka     /*
1925*437bfbebSnyanmisaka      * ST_LKT
1926*437bfbebSnyanmisaka      * Address offset: 0x22C Access type: read only
1927*437bfbebSnyanmisaka      * Status of link table mode encoding
1928*437bfbebSnyanmisaka      */
1929*437bfbebSnyanmisaka     struct {
1930*437bfbebSnyanmisaka         /* Number of frames has been encoded since link table mode started. */
1931*437bfbebSnyanmisaka         RK_U32  fnum_enc                : 8;
1932*437bfbebSnyanmisaka         /* Number of frames has been configured since link table mode started. */
1933*437bfbebSnyanmisaka         RK_U32  fnum_cfg                : 8;
1934*437bfbebSnyanmisaka         /*
1935*437bfbebSnyanmisaka          * Number of frames has been encoded since link table mode started,
1936*437bfbebSnyanmisaka          * updated only when corresponding link table node send interrupt
1937*437bfbebSnyanmisaka          * (VEPU_ENC_PIC_node_int==1).
1938*437bfbebSnyanmisaka          */
1939*437bfbebSnyanmisaka         RK_U32  fnum_int                : 8;
1940*437bfbebSnyanmisaka         RK_U32  reserved                : 8;
1941*437bfbebSnyanmisaka     } reg139;
1942*437bfbebSnyanmisaka 
1943*437bfbebSnyanmisaka     /*
1944*437bfbebSnyanmisaka      * ST_NADR
1945*437bfbebSnyanmisaka      * Address offset: 0x230 Access type: read only
1946*437bfbebSnyanmisaka      * Address of the processing link table node
1947*437bfbebSnyanmisaka      */
1948*437bfbebSnyanmisaka     struct {
1949*437bfbebSnyanmisaka         /* High 28 bits of the address for the processing linke table node. */
1950*437bfbebSnyanmisaka         RK_U32  node_addr;
1951*437bfbebSnyanmisaka     } reg140;
1952*437bfbebSnyanmisaka 
1953*437bfbebSnyanmisaka     /*
1954*437bfbebSnyanmisaka      * ST_BSB
1955*437bfbebSnyanmisaka      * Address offset: 0x234 Access type: read only
1956*437bfbebSnyanmisaka      * Status of bit stream buffer
1957*437bfbebSnyanmisaka      */
1958*437bfbebSnyanmisaka     struct {
1959*437bfbebSnyanmisaka         /* High 28 bits of bit stream buffer write address. */
1960*437bfbebSnyanmisaka         RK_U32  bsbw_addr;
1961*437bfbebSnyanmisaka     } reg141;
1962*437bfbebSnyanmisaka 
1963*437bfbebSnyanmisaka     /*
1964*437bfbebSnyanmisaka      * ST_BUS
1965*437bfbebSnyanmisaka      * Address offset: 0x238 Access type: read only
1966*437bfbebSnyanmisaka      * VEPU bus status
1967*437bfbebSnyanmisaka      */
1968*437bfbebSnyanmisaka     struct {
1969*437bfbebSnyanmisaka         /*
1970*437bfbebSnyanmisaka          * AXI write response idle.
1971*437bfbebSnyanmisaka          * [6]: Reconstructed picture channel (AXI0_WID==5)
1972*437bfbebSnyanmisaka          * [5]: ME information channel (AXI0_WID==4)
1973*437bfbebSnyanmisaka          * [4]: Co-located Mv channel (AXI0_WID==3)
1974*437bfbebSnyanmisaka          * [3]: Down-sampled picture channel (AXI0_WID==2)
1975*437bfbebSnyanmisaka          * [2]: Bit stream channel (AXI0_WID==1)
1976*437bfbebSnyanmisaka          * [1]: Link table node channel (AXI0_WID==0)
1977*437bfbebSnyanmisaka          * [0]: Reserved
1978*437bfbebSnyanmisaka          */
1979*437bfbebSnyanmisaka         RK_U32  axib_idl                : 7;
1980*437bfbebSnyanmisaka         /*
1981*437bfbebSnyanmisaka          * AXI write response outstanding overflow.
1982*437bfbebSnyanmisaka          * [6]: Reconstructed picture channel (AXI0_WID==5)
1983*437bfbebSnyanmisaka          * [5]: ME information channel (AXI0_WID==4)
1984*437bfbebSnyanmisaka          * [4]: Co-located Mv channel (AXI0_WID==3)
1985*437bfbebSnyanmisaka          * [3]: Down-sampled picture channel (AXI0_WID==2)
1986*437bfbebSnyanmisaka          * [2]: Bit stream channel (AXI0_WID==1)
1987*437bfbebSnyanmisaka          * [1]: Link table node channel (AXI0_WID==0)
1988*437bfbebSnyanmisaka          * [0]: Reserved.
1989*437bfbebSnyanmisaka          */
1990*437bfbebSnyanmisaka         RK_U32  axib_ovfl               : 7;
1991*437bfbebSnyanmisaka         /*
1992*437bfbebSnyanmisaka          * AXI write response error.
1993*437bfbebSnyanmisaka          * [6]: Reconstructed picture channel (AXI0_WID==5)
1994*437bfbebSnyanmisaka          * [5]: ME information channel (AXI0_WID==4)
1995*437bfbebSnyanmisaka          * [4]: Co-located Mv channel (AXI0_WID==3)
1996*437bfbebSnyanmisaka          * [3]: Down-sampled picture channel (AXI0_WID==2)
1997*437bfbebSnyanmisaka          * [2]: Bit stream channel (AXI0_WID==1)
1998*437bfbebSnyanmisaka          * [1]: Link table node channel (AXI0_WID==0)
1999*437bfbebSnyanmisaka          * [0]: Reserved.
2000*437bfbebSnyanmisaka          */
2001*437bfbebSnyanmisaka         RK_U32  axib_err               : 7;
2002*437bfbebSnyanmisaka         /*
2003*437bfbebSnyanmisaka          * AXI read error.
2004*437bfbebSnyanmisaka          * [5]: ROI configuration (AXI0_ARID==7)
2005*437bfbebSnyanmisaka          * [4]: Down-sampled picture (AXI0_ARID==6)
2006*437bfbebSnyanmisaka          * [3]: Co-located Mv (AXI0_ARID==5)
2007*437bfbebSnyanmisaka          * [2]: Link table (AXI0_ARID==4)
2008*437bfbebSnyanmisaka          * [1]: Reference picture (AXI0_ARID==1,2,3,8)
2009*437bfbebSnyanmisaka          * [0]: Video source load (AXI1)
2010*437bfbebSnyanmisaka          */
2011*437bfbebSnyanmisaka         RK_U32  axir_err                : 6;
2012*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
2013*437bfbebSnyanmisaka     } reg142;
2014*437bfbebSnyanmisaka 
2015*437bfbebSnyanmisaka     /*
2016*437bfbebSnyanmisaka      * ST_SNUM
2017*437bfbebSnyanmisaka      * Address offset: 0x23C Access type: read only
2018*437bfbebSnyanmisaka      * Slice number status
2019*437bfbebSnyanmisaka      */
2020*437bfbebSnyanmisaka     struct {
2021*437bfbebSnyanmisaka         /* Number for slices has been encoded and not read out (by reading ST_SLEN). */
2022*437bfbebSnyanmisaka         RK_U32  sli_num                 : 6;
2023*437bfbebSnyanmisaka         RK_U32  reserved                : 30;
2024*437bfbebSnyanmisaka     } reg143;
2025*437bfbebSnyanmisaka 
2026*437bfbebSnyanmisaka     /*
2027*437bfbebSnyanmisaka      * ST_SLEN
2028*437bfbebSnyanmisaka      * Address offset: 0x240 Access type: read only
2029*437bfbebSnyanmisaka      * Status of slice length
2030*437bfbebSnyanmisaka      */
2031*437bfbebSnyanmisaka     struct {
2032*437bfbebSnyanmisaka         /* Byte length for the earlist encoded slice which has not been read out( by reading VEPU_ST_SLEN). */
2033*437bfbebSnyanmisaka         RK_U32  sli_len                 : 25;
2034*437bfbebSnyanmisaka         RK_U32  reserved                : 7;
2035*437bfbebSnyanmisaka     } reg144;
2036*437bfbebSnyanmisaka 
2037*437bfbebSnyanmisaka     /*
2038*437bfbebSnyanmisaka      * ST_PNUM_P64
2039*437bfbebSnyanmisaka      * Address offset: 0x244 Access type: read only
2040*437bfbebSnyanmisaka      * Number of 64x64 inter predicted blocks
2041*437bfbebSnyanmisaka      */
2042*437bfbebSnyanmisaka     struct {
2043*437bfbebSnyanmisaka         /* Number of 64x64 inter predicted blocks. */
2044*437bfbebSnyanmisaka         RK_U32  pnum_p64                : 12;
2045*437bfbebSnyanmisaka         RK_U32  reserved                : 20;
2046*437bfbebSnyanmisaka     } reg145;
2047*437bfbebSnyanmisaka 
2048*437bfbebSnyanmisaka     /*
2049*437bfbebSnyanmisaka      * ST_PNUM_P32
2050*437bfbebSnyanmisaka      * Address offset: 0x248 Access type: read only
2051*437bfbebSnyanmisaka      * Number of 32x32 inter predicted blocks
2052*437bfbebSnyanmisaka      */
2053*437bfbebSnyanmisaka     struct {
2054*437bfbebSnyanmisaka         /* Number of 32x32 inter predicted blocks. */
2055*437bfbebSnyanmisaka         RK_U32  pnum_p32                : 14;
2056*437bfbebSnyanmisaka         RK_U32  reserved                : 18;
2057*437bfbebSnyanmisaka     } reg146;
2058*437bfbebSnyanmisaka 
2059*437bfbebSnyanmisaka     /*
2060*437bfbebSnyanmisaka      * ST_PNUM_P16
2061*437bfbebSnyanmisaka      * Address offset: 0x24C Access type: read only
2062*437bfbebSnyanmisaka      * Number of 16x16 inter predicted blocks
2063*437bfbebSnyanmisaka      */
2064*437bfbebSnyanmisaka     struct {
2065*437bfbebSnyanmisaka         /* Number of 16x16 inter predicted blocks. */
2066*437bfbebSnyanmisaka         RK_U32  pnum_p16                : 16;
2067*437bfbebSnyanmisaka         RK_U32  reserved                : 16;
2068*437bfbebSnyanmisaka     } reg147;
2069*437bfbebSnyanmisaka 
2070*437bfbebSnyanmisaka     /*
2071*437bfbebSnyanmisaka      * ST_PNUM_P8
2072*437bfbebSnyanmisaka      * Address offset: 0x250 Access type: read only
2073*437bfbebSnyanmisaka      * Number of 8x8 inter predicted blocks
2074*437bfbebSnyanmisaka      */
2075*437bfbebSnyanmisaka     struct {
2076*437bfbebSnyanmisaka         /* Number of 8x8 inter predicted blocks. */
2077*437bfbebSnyanmisaka         RK_U32  pnum_p8                 : 18;
2078*437bfbebSnyanmisaka         RK_U32  reserved                : 14;
2079*437bfbebSnyanmisaka     } reg148;
2080*437bfbebSnyanmisaka 
2081*437bfbebSnyanmisaka     /*
2082*437bfbebSnyanmisaka      * ST_PNUM_I32
2083*437bfbebSnyanmisaka      * Address offset: 0x254 Access type: read only
2084*437bfbebSnyanmisaka      * Number of 32x32 intra predicted blocks
2085*437bfbebSnyanmisaka      */
2086*437bfbebSnyanmisaka     struct {
2087*437bfbebSnyanmisaka         /* Number of 32x32 intra predicted blocks. */
2088*437bfbebSnyanmisaka         RK_U32  pnum_i32                : 14;
2089*437bfbebSnyanmisaka         RK_U32  reserved                : 18;
2090*437bfbebSnyanmisaka     } reg149;
2091*437bfbebSnyanmisaka 
2092*437bfbebSnyanmisaka     /*
2093*437bfbebSnyanmisaka      * ST_PNUM_I16
2094*437bfbebSnyanmisaka      * Address offset: 0x258 Access type: read only
2095*437bfbebSnyanmisaka      * Number of 16x16 intra predicted blocks
2096*437bfbebSnyanmisaka      */
2097*437bfbebSnyanmisaka     struct {
2098*437bfbebSnyanmisaka         /* Number of 16x16 intra predicted blocks. */
2099*437bfbebSnyanmisaka         RK_U32  pnum_i16                : 16;
2100*437bfbebSnyanmisaka         RK_U32  reserved                : 16;
2101*437bfbebSnyanmisaka     } reg150;
2102*437bfbebSnyanmisaka 
2103*437bfbebSnyanmisaka     /*
2104*437bfbebSnyanmisaka      * ST_PNUM_I8
2105*437bfbebSnyanmisaka      * Address offset: 0x25C Access type: read only
2106*437bfbebSnyanmisaka      * Number of 8x8 intra predicted blocks
2107*437bfbebSnyanmisaka      */
2108*437bfbebSnyanmisaka     struct {
2109*437bfbebSnyanmisaka         /* Number of 8x8 intra predicted blocks. */
2110*437bfbebSnyanmisaka         RK_U32  pnum_i8                 : 18;
2111*437bfbebSnyanmisaka         RK_U32  reserved                : 14;
2112*437bfbebSnyanmisaka     } reg151;
2113*437bfbebSnyanmisaka 
2114*437bfbebSnyanmisaka     /*
2115*437bfbebSnyanmisaka      * ST_PNUM_I4
2116*437bfbebSnyanmisaka      * Address offset: 0x260 Access type: read only
2117*437bfbebSnyanmisaka      * Number of 4x4 intra predicted blocks
2118*437bfbebSnyanmisaka      */
2119*437bfbebSnyanmisaka     struct {
2120*437bfbebSnyanmisaka         /* Number of 4x4 intra predicted blocks. */
2121*437bfbebSnyanmisaka         RK_U32  pnum_i4                 : 20;
2122*437bfbebSnyanmisaka         RK_U32  reserved                : 12;
2123*437bfbebSnyanmisaka     } reg152;
2124*437bfbebSnyanmisaka 
2125*437bfbebSnyanmisaka     /*
2126*437bfbebSnyanmisaka      * ST_B8_QP0~51
2127*437bfbebSnyanmisaka      * Address offset: 0x264~0x330 Access type: read only
2128*437bfbebSnyanmisaka      * Number of block8x8s with QP=0~51
2129*437bfbebSnyanmisaka      */
2130*437bfbebSnyanmisaka     struct {
2131*437bfbebSnyanmisaka         /*
2132*437bfbebSnyanmisaka          * Number of block8x8s with QP value.
2133*437bfbebSnyanmisaka          * HEVC CUs of which size are bigger that 8x8 are considered as
2134*437bfbebSnyanmisaka          * (CU_size/8)*(CU_size/8) clock8x8s;
2135*437bfbebSnyanmisaka          * while H.264 MB is considered as 4 block8x8s.
2136*437bfbebSnyanmisaka          */
2137*437bfbebSnyanmisaka         Vepu541B8NumQp num_qp[52];
2138*437bfbebSnyanmisaka     } reg153_204;
2139*437bfbebSnyanmisaka 
2140*437bfbebSnyanmisaka     /*
2141*437bfbebSnyanmisaka      * ST_CPLX_TMP
2142*437bfbebSnyanmisaka      * Address offset: 0x334 Access type: read only
2143*437bfbebSnyanmisaka      * Temporal complexity(MADP) for current encoding and reference frame
2144*437bfbebSnyanmisaka      */
2145*437bfbebSnyanmisaka     struct {
2146*437bfbebSnyanmisaka         /* Mean absolute differences between current encoding and reference frame. */
2147*437bfbebSnyanmisaka         RK_U32  madp;
2148*437bfbebSnyanmisaka     } reg205;
2149*437bfbebSnyanmisaka 
2150*437bfbebSnyanmisaka     /*
2151*437bfbebSnyanmisaka      * ST_BNUM_CME
2152*437bfbebSnyanmisaka      * Address offset: 0x338 Access type: read only
2153*437bfbebSnyanmisaka      * Number of CME blocks in frame.
2154*437bfbebSnyanmisaka      * H.264: number CME blocks (4 MBs) in 16x64 aligned extended frame,
2155*437bfbebSnyanmisaka      * except for the CME blocks configured as force intra.
2156*437bfbebSnyanmisaka      * HEVC : number CME blocks (CTU) in 64x64 aligned extended frame,
2157*437bfbebSnyanmisaka      * except for the CME blocks configured as force intra.
2158*437bfbebSnyanmisaka      */
2159*437bfbebSnyanmisaka     struct {
2160*437bfbebSnyanmisaka         /* Number of CTU (HEVC: 64x64; H.264: 64x16) for CME inter-frame prediction. */
2161*437bfbebSnyanmisaka         RK_U32  num_ctu                 : 16;
2162*437bfbebSnyanmisaka         RK_U32  reserved                : 16;
2163*437bfbebSnyanmisaka     } reg206;
2164*437bfbebSnyanmisaka 
2165*437bfbebSnyanmisaka     /*
2166*437bfbebSnyanmisaka      * ST_CPLX_SPT
2167*437bfbebSnyanmisaka      * Address offset: 0x33C Access type: read only
2168*437bfbebSnyanmisaka      * Spatial complexity(MADI) for current encoding frame
2169*437bfbebSnyanmisaka      */
2170*437bfbebSnyanmisaka     struct {
2171*437bfbebSnyanmisaka         /* Mean absolute differences for current encoding frame. */
2172*437bfbebSnyanmisaka         RK_U32  madi;
2173*437bfbebSnyanmisaka     } reg207;
2174*437bfbebSnyanmisaka 
2175*437bfbebSnyanmisaka     /*
2176*437bfbebSnyanmisaka      * ST_BNUM_B16
2177*437bfbebSnyanmisaka      * Address offset: 0x340 Access type: read only
2178*437bfbebSnyanmisaka      * Number of valid 16x16 blocks for one frame.
2179*437bfbebSnyanmisaka      */
2180*437bfbebSnyanmisaka     struct {
2181*437bfbebSnyanmisaka         /* Number of valid 16x16 blocks for one frame. */
2182*437bfbebSnyanmisaka         RK_U32  num_b16;
2183*437bfbebSnyanmisaka     } reg208;
2184*437bfbebSnyanmisaka } Vepu541H264eRegSet;
2185*437bfbebSnyanmisaka 
2186*437bfbebSnyanmisaka /* return register is a subset of the whole register. */
2187*437bfbebSnyanmisaka typedef struct Vepu541H264eRegRet_t {
2188*437bfbebSnyanmisaka     /*
2189*437bfbebSnyanmisaka      * INT_STA
2190*437bfbebSnyanmisaka      * Address offset: 0x001c Access type: read and write, write one to clear
2191*437bfbebSnyanmisaka      * VEPU interrupt status
2192*437bfbebSnyanmisaka      */
2193*437bfbebSnyanmisaka     struct {
2194*437bfbebSnyanmisaka         /* One frame encode finish interrupt status */
2195*437bfbebSnyanmisaka         RK_U32  enc_done_sta            : 1;
2196*437bfbebSnyanmisaka         /* Link table finish interrupt status */
2197*437bfbebSnyanmisaka         RK_U32  lkt_done_sta            : 1;
2198*437bfbebSnyanmisaka         /* Safe clear finish interrupt status */
2199*437bfbebSnyanmisaka         RK_U32  sclr_done_sta           : 1;
2200*437bfbebSnyanmisaka         /* One slice encode finish interrupt status */
2201*437bfbebSnyanmisaka         RK_U32  enc_slice_done_sta      : 1;
2202*437bfbebSnyanmisaka         /* Bit stream overflow interrupt status */
2203*437bfbebSnyanmisaka         RK_U32  oflw_done_sta           : 1;
2204*437bfbebSnyanmisaka         /* AXI write response fifo full interrupt status */
2205*437bfbebSnyanmisaka         RK_U32  brsp_done_sta           : 1;
2206*437bfbebSnyanmisaka         /* AXI write response channel error interrupt status */
2207*437bfbebSnyanmisaka         RK_U32  berr_done_sta           : 1;
2208*437bfbebSnyanmisaka         /* AXI read channel error interrupt status */
2209*437bfbebSnyanmisaka         RK_U32  rerr_done_sta           : 1;
2210*437bfbebSnyanmisaka         /* timeout error interrupt status */
2211*437bfbebSnyanmisaka         RK_U32  wdg_done_sta            : 1;
2212*437bfbebSnyanmisaka         RK_U32  reserved                : 23;
2213*437bfbebSnyanmisaka     } hw_status; /* reg007 */
2214*437bfbebSnyanmisaka 
2215*437bfbebSnyanmisaka     /*
2216*437bfbebSnyanmisaka      * ST_BSL
2217*437bfbebSnyanmisaka      * Address offset: 0x210 Access type: read only
2218*437bfbebSnyanmisaka      * Bit stream length for current frame
2219*437bfbebSnyanmisaka      */
2220*437bfbebSnyanmisaka     struct {
2221*437bfbebSnyanmisaka         /* Bit stream length for current frame. */
2222*437bfbebSnyanmisaka         RK_U32  bs_lgth                 : 27;
2223*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
2224*437bfbebSnyanmisaka     } st_bsl; /* reg132 */
2225*437bfbebSnyanmisaka 
2226*437bfbebSnyanmisaka     /*
2227*437bfbebSnyanmisaka      * ST_SSE_L32
2228*437bfbebSnyanmisaka      * Address offset: 0x214 Access type: read only
2229*437bfbebSnyanmisaka      * Low 32 bits of encoding distortion (SSE)
2230*437bfbebSnyanmisaka      */
2231*437bfbebSnyanmisaka     struct {
2232*437bfbebSnyanmisaka         RK_U32  sse_l32;
2233*437bfbebSnyanmisaka     } st_sse_l32; /* reg133 */
2234*437bfbebSnyanmisaka 
2235*437bfbebSnyanmisaka     /*
2236*437bfbebSnyanmisaka      * ST_SSE_QP
2237*437bfbebSnyanmisaka      * Address offset: 0x218 Access type: read only
2238*437bfbebSnyanmisaka      * High 8 bits of encoding distortion (SSE) and sum of QP for the encoded frame
2239*437bfbebSnyanmisaka      */
2240*437bfbebSnyanmisaka     struct {
2241*437bfbebSnyanmisaka         /* Sum of QP for the encoded frame. */
2242*437bfbebSnyanmisaka         RK_U32  qp_sum                  : 22;
2243*437bfbebSnyanmisaka         RK_U32  reserved                : 2;
2244*437bfbebSnyanmisaka         /* High bits of encoding distortion(SSE). */
2245*437bfbebSnyanmisaka         RK_U32  sse_h8                  : 8;
2246*437bfbebSnyanmisaka     } st_sse_qp; /* reg134 */
2247*437bfbebSnyanmisaka 
2248*437bfbebSnyanmisaka     /*
2249*437bfbebSnyanmisaka      * ST_SAO
2250*437bfbebSnyanmisaka      * Address offset: 0x21C Access type: read only
2251*437bfbebSnyanmisaka      * Number of CTUs which adjusted by SAO
2252*437bfbebSnyanmisaka      */
2253*437bfbebSnyanmisaka     struct {
2254*437bfbebSnyanmisaka         /* Number of CTUs whose CHROMA component are adjusted by SAO. */
2255*437bfbebSnyanmisaka         RK_U32  sao_cnum                : 12;
2256*437bfbebSnyanmisaka         /* Number of CTUs whose LUMA component are adjusted by SAO. */
2257*437bfbebSnyanmisaka         RK_U32  sao_ynum                : 12;
2258*437bfbebSnyanmisaka         RK_U32  reserved                : 8;
2259*437bfbebSnyanmisaka     } st_sao; /* reg135 */
2260*437bfbebSnyanmisaka 
2261*437bfbebSnyanmisaka     /* reg gap 136~137 */
2262*437bfbebSnyanmisaka     RK_U32 reg_136_137[2];
2263*437bfbebSnyanmisaka 
2264*437bfbebSnyanmisaka     /*
2265*437bfbebSnyanmisaka      * ST_ENC
2266*437bfbebSnyanmisaka      * Address offset: 0x228 Access type: read only
2267*437bfbebSnyanmisaka      * VEPU working status
2268*437bfbebSnyanmisaka      */
2269*437bfbebSnyanmisaka     struct {
2270*437bfbebSnyanmisaka         /*
2271*437bfbebSnyanmisaka          * VEPU working status.
2272*437bfbebSnyanmisaka          * 2'h0: Idle.
2273*437bfbebSnyanmisaka          * 2'h1: Working in register conifguration mode.
2274*437bfbebSnyanmisaka          * 2'h2: Working in link table configuration mode.
2275*437bfbebSnyanmisaka          */
2276*437bfbebSnyanmisaka         RK_U32  st_enc                  : 2;
2277*437bfbebSnyanmisaka         /*
2278*437bfbebSnyanmisaka          * Status of safe clear.
2279*437bfbebSnyanmisaka          * 1'h0: Safe clear is finished or not started.
2280*437bfbebSnyanmisaka          * 1'h1: VEPU is performing safe clear.
2281*437bfbebSnyanmisaka          */
2282*437bfbebSnyanmisaka         RK_U32  st_sclr                 : 1;
2283*437bfbebSnyanmisaka         RK_U32  reserved                : 29;
2284*437bfbebSnyanmisaka     } st_enc; /* reg138 */
2285*437bfbebSnyanmisaka 
2286*437bfbebSnyanmisaka     /*
2287*437bfbebSnyanmisaka      * ST_LKT
2288*437bfbebSnyanmisaka      * Address offset: 0x22C Access type: read only
2289*437bfbebSnyanmisaka      * Status of link table mode encoding
2290*437bfbebSnyanmisaka      */
2291*437bfbebSnyanmisaka     struct {
2292*437bfbebSnyanmisaka         /* Number of frames has been encoded since link table mode started. */
2293*437bfbebSnyanmisaka         RK_U32  fnum_enc                : 8;
2294*437bfbebSnyanmisaka         /* Number of frames has been configured since link table mode started. */
2295*437bfbebSnyanmisaka         RK_U32  fnum_cfg                : 8;
2296*437bfbebSnyanmisaka         /*
2297*437bfbebSnyanmisaka          * Number of frames has been encoded since link table mode started,
2298*437bfbebSnyanmisaka          * updated only when corresponding link table node send interrupt
2299*437bfbebSnyanmisaka          * (VEPU_ENC_PIC_node_int==1).
2300*437bfbebSnyanmisaka          */
2301*437bfbebSnyanmisaka         RK_U32  fnum_int                : 8;
2302*437bfbebSnyanmisaka         RK_U32  reserved                : 8;
2303*437bfbebSnyanmisaka     } st_lkt; /* reg139 */
2304*437bfbebSnyanmisaka 
2305*437bfbebSnyanmisaka     /*
2306*437bfbebSnyanmisaka      * ST_NADR
2307*437bfbebSnyanmisaka      * Address offset: 0x230 Access type: read only
2308*437bfbebSnyanmisaka      * Address of the processing link table node
2309*437bfbebSnyanmisaka      */
2310*437bfbebSnyanmisaka     struct {
2311*437bfbebSnyanmisaka         /* High 28 bits of the address for the processing linke table node. */
2312*437bfbebSnyanmisaka         RK_U32  node_addr;
2313*437bfbebSnyanmisaka     } ST_NADR; /* reg140 */
2314*437bfbebSnyanmisaka 
2315*437bfbebSnyanmisaka     /*
2316*437bfbebSnyanmisaka      * ST_BSB
2317*437bfbebSnyanmisaka      * Address offset: 0x234 Access type: read only
2318*437bfbebSnyanmisaka      * Status of bit stream buffer
2319*437bfbebSnyanmisaka      */
2320*437bfbebSnyanmisaka     struct {
2321*437bfbebSnyanmisaka         /* High 28 bits of bit stream buffer write address. */
2322*437bfbebSnyanmisaka         RK_U32  bsbw_addr;
2323*437bfbebSnyanmisaka     } st_bsb; /* reg141 */
2324*437bfbebSnyanmisaka 
2325*437bfbebSnyanmisaka     /*
2326*437bfbebSnyanmisaka      * ST_BUS
2327*437bfbebSnyanmisaka      * Address offset: 0x238 Access type: read only
2328*437bfbebSnyanmisaka      * VEPU bus status
2329*437bfbebSnyanmisaka      */
2330*437bfbebSnyanmisaka     struct {
2331*437bfbebSnyanmisaka         /*
2332*437bfbebSnyanmisaka          * AXI write response idle.
2333*437bfbebSnyanmisaka          * [6]: Reconstructed picture channel (AXI0_WID==5)
2334*437bfbebSnyanmisaka          * [5]: ME information channel (AXI0_WID==4)
2335*437bfbebSnyanmisaka          * [4]: Co-located Mv channel (AXI0_WID==3)
2336*437bfbebSnyanmisaka          * [3]: Down-sampled picture channel (AXI0_WID==2)
2337*437bfbebSnyanmisaka          * [2]: Bit stream channel (AXI0_WID==1)
2338*437bfbebSnyanmisaka          * [1]: Link table node channel (AXI0_WID==0)
2339*437bfbebSnyanmisaka          * [0]: Reserved
2340*437bfbebSnyanmisaka          */
2341*437bfbebSnyanmisaka         RK_U32  axib_idl                : 7;
2342*437bfbebSnyanmisaka         /*
2343*437bfbebSnyanmisaka          * AXI write response outstanding overflow.
2344*437bfbebSnyanmisaka          * [6]: Reconstructed picture channel (AXI0_WID==5)
2345*437bfbebSnyanmisaka          * [5]: ME information channel (AXI0_WID==4)
2346*437bfbebSnyanmisaka          * [4]: Co-located Mv channel (AXI0_WID==3)
2347*437bfbebSnyanmisaka          * [3]: Down-sampled picture channel (AXI0_WID==2)
2348*437bfbebSnyanmisaka          * [2]: Bit stream channel (AXI0_WID==1)
2349*437bfbebSnyanmisaka          * [1]: Link table node channel (AXI0_WID==0)
2350*437bfbebSnyanmisaka          * [0]: Reserved.
2351*437bfbebSnyanmisaka          */
2352*437bfbebSnyanmisaka         RK_U32  axib_ovfl               : 7;
2353*437bfbebSnyanmisaka         /*
2354*437bfbebSnyanmisaka          * AXI write response error.
2355*437bfbebSnyanmisaka          * [6]: Reconstructed picture channel (AXI0_WID==5)
2356*437bfbebSnyanmisaka          * [5]: ME information channel (AXI0_WID==4)
2357*437bfbebSnyanmisaka          * [4]: Co-located Mv channel (AXI0_WID==3)
2358*437bfbebSnyanmisaka          * [3]: Down-sampled picture channel (AXI0_WID==2)
2359*437bfbebSnyanmisaka          * [2]: Bit stream channel (AXI0_WID==1)
2360*437bfbebSnyanmisaka          * [1]: Link table node channel (AXI0_WID==0)
2361*437bfbebSnyanmisaka          * [0]: Reserved.
2362*437bfbebSnyanmisaka          */
2363*437bfbebSnyanmisaka         RK_U32  axib_err               : 7;
2364*437bfbebSnyanmisaka         /*
2365*437bfbebSnyanmisaka          * AXI read error.
2366*437bfbebSnyanmisaka          * [5]: ROI configuration (AXI0_ARID==7)
2367*437bfbebSnyanmisaka          * [4]: Down-sampled picture (AXI0_ARID==6)
2368*437bfbebSnyanmisaka          * [3]: Co-located Mv (AXI0_ARID==5)
2369*437bfbebSnyanmisaka          * [2]: Link table (AXI0_ARID==4)
2370*437bfbebSnyanmisaka          * [1]: Reference picture (AXI0_ARID==1,2,3,8)
2371*437bfbebSnyanmisaka          * [0]: Video source load (AXI1)
2372*437bfbebSnyanmisaka          */
2373*437bfbebSnyanmisaka         RK_U32  axir_err                : 6;
2374*437bfbebSnyanmisaka         RK_U32  reserved                : 5;
2375*437bfbebSnyanmisaka     } st_bus; /* reg142 */
2376*437bfbebSnyanmisaka 
2377*437bfbebSnyanmisaka     /*
2378*437bfbebSnyanmisaka      * ST_SNUM
2379*437bfbebSnyanmisaka      * Address offset: 0x23C Access type: read only
2380*437bfbebSnyanmisaka      * Slice number status
2381*437bfbebSnyanmisaka      */
2382*437bfbebSnyanmisaka     RK_U32  st_slice_number;
2383*437bfbebSnyanmisaka 
2384*437bfbebSnyanmisaka     /*
2385*437bfbebSnyanmisaka      * ST_SLEN
2386*437bfbebSnyanmisaka      * Address offset: 0x240 Access type: read only
2387*437bfbebSnyanmisaka      * Status of slice length
2388*437bfbebSnyanmisaka      */
2389*437bfbebSnyanmisaka     RK_U32  st_slice_length;
2390*437bfbebSnyanmisaka 
2391*437bfbebSnyanmisaka     /*
2392*437bfbebSnyanmisaka      * ST_PNUM_P64
2393*437bfbebSnyanmisaka      * Address offset: 0x244 Access type: read only
2394*437bfbebSnyanmisaka      * Number of 64x64 inter predicted blocks
2395*437bfbebSnyanmisaka      */
2396*437bfbebSnyanmisaka     RK_U32  st_lvl64_inter_num;
2397*437bfbebSnyanmisaka 
2398*437bfbebSnyanmisaka     /*
2399*437bfbebSnyanmisaka      * ST_PNUM_P32
2400*437bfbebSnyanmisaka      * Address offset: 0x248 Access type: read only
2401*437bfbebSnyanmisaka      * Number of 32x32 inter predicted blocks
2402*437bfbebSnyanmisaka      */
2403*437bfbebSnyanmisaka     RK_U32  st_lvl32_inter_num;
2404*437bfbebSnyanmisaka 
2405*437bfbebSnyanmisaka     /*
2406*437bfbebSnyanmisaka      * ST_PNUM_P16
2407*437bfbebSnyanmisaka      * Address offset: 0x24C Access type: read only
2408*437bfbebSnyanmisaka      * Number of 16x16 inter predicted blocks
2409*437bfbebSnyanmisaka      */
2410*437bfbebSnyanmisaka     RK_U32  st_lvl16_inter_num;
2411*437bfbebSnyanmisaka 
2412*437bfbebSnyanmisaka     /*
2413*437bfbebSnyanmisaka      * ST_PNUM_P8
2414*437bfbebSnyanmisaka      * Address offset: 0x250 Access type: read only
2415*437bfbebSnyanmisaka      * Number of 8x8 inter predicted blocks
2416*437bfbebSnyanmisaka      */
2417*437bfbebSnyanmisaka     RK_U32  st_lvl8_inter_num;
2418*437bfbebSnyanmisaka 
2419*437bfbebSnyanmisaka     /*
2420*437bfbebSnyanmisaka      * ST_PNUM_I32
2421*437bfbebSnyanmisaka      * Address offset: 0x254 Access type: read only
2422*437bfbebSnyanmisaka      * Number of 32x32 intra predicted blocks
2423*437bfbebSnyanmisaka      */
2424*437bfbebSnyanmisaka     RK_U32  st_lvl32_intra_num;
2425*437bfbebSnyanmisaka 
2426*437bfbebSnyanmisaka     /*
2427*437bfbebSnyanmisaka      * ST_PNUM_I16
2428*437bfbebSnyanmisaka      * Address offset: 0x258 Access type: read only
2429*437bfbebSnyanmisaka      * Number of 16x16 intra predicted blocks
2430*437bfbebSnyanmisaka      */
2431*437bfbebSnyanmisaka     RK_U32  st_lvl16_intra_num;
2432*437bfbebSnyanmisaka 
2433*437bfbebSnyanmisaka     /*
2434*437bfbebSnyanmisaka      * ST_PNUM_I8
2435*437bfbebSnyanmisaka      * Address offset: 0x25C Access type: read only
2436*437bfbebSnyanmisaka      * Number of 8x8 intra predicted blocks
2437*437bfbebSnyanmisaka      */
2438*437bfbebSnyanmisaka     RK_U32  st_lvl8_intra_num;
2439*437bfbebSnyanmisaka 
2440*437bfbebSnyanmisaka     /*
2441*437bfbebSnyanmisaka      * ST_PNUM_I4
2442*437bfbebSnyanmisaka      * Address offset: 0x260 Access type: read only
2443*437bfbebSnyanmisaka      * Number of 4x4 intra predicted blocks
2444*437bfbebSnyanmisaka      */
2445*437bfbebSnyanmisaka     RK_U32  st_lvl4_intra_num;
2446*437bfbebSnyanmisaka 
2447*437bfbebSnyanmisaka     /*
2448*437bfbebSnyanmisaka      * ST_B8_QP0~51
2449*437bfbebSnyanmisaka      * Address offset: 0x264~0x330 Access type: read only
2450*437bfbebSnyanmisaka      * Number of block8x8s with QP=0~51
2451*437bfbebSnyanmisaka      */
2452*437bfbebSnyanmisaka     RK_U32  st_cu_num_qp[52];
2453*437bfbebSnyanmisaka 
2454*437bfbebSnyanmisaka     /*
2455*437bfbebSnyanmisaka      * ST_CPLX_TMP
2456*437bfbebSnyanmisaka      * Address offset: 0x334 Access type: read only
2457*437bfbebSnyanmisaka      * Temporal complexity(MADP) for current encoding and reference frame
2458*437bfbebSnyanmisaka      */
2459*437bfbebSnyanmisaka     RK_U32  st_madp;
2460*437bfbebSnyanmisaka 
2461*437bfbebSnyanmisaka     /*
2462*437bfbebSnyanmisaka      * ST_BNUM_CME
2463*437bfbebSnyanmisaka      * Address offset: 0x338 Access type: read only
2464*437bfbebSnyanmisaka      * Number of CME blocks in frame.
2465*437bfbebSnyanmisaka      * H.264: number CME blocks (4 MBs) in 16x64 aligned extended frame,
2466*437bfbebSnyanmisaka      * except for the CME blocks configured as force intra.
2467*437bfbebSnyanmisaka      * HEVC : number CME blocks (CTU) in 64x64 aligned extended frame,
2468*437bfbebSnyanmisaka      * except for the CME blocks configured as force intra.
2469*437bfbebSnyanmisaka      */
2470*437bfbebSnyanmisaka     RK_U32  st_ctu_num;
2471*437bfbebSnyanmisaka 
2472*437bfbebSnyanmisaka     /*
2473*437bfbebSnyanmisaka      * ST_CPLX_SPT
2474*437bfbebSnyanmisaka      * Address offset: 0x33C Access type: read only
2475*437bfbebSnyanmisaka      * Spatial complexity(MADI) for current encoding frame
2476*437bfbebSnyanmisaka      */
2477*437bfbebSnyanmisaka     RK_U32  st_madi;
2478*437bfbebSnyanmisaka 
2479*437bfbebSnyanmisaka     /*
2480*437bfbebSnyanmisaka      * ST_BNUM_B16
2481*437bfbebSnyanmisaka      * Address offset: 0x340 Access type: read only
2482*437bfbebSnyanmisaka      * Number of valid 16x16 blocks for one frame.
2483*437bfbebSnyanmisaka      */
2484*437bfbebSnyanmisaka     RK_U32  st_mb_num;
2485*437bfbebSnyanmisaka } Vepu541H264eRegRet;
2486*437bfbebSnyanmisaka 
2487*437bfbebSnyanmisaka #endif /* __HAL_H264E_VEPU541_REG_H__ */
2488