xref: /OK3568_Linux_fs/kernel/drivers/media/platform/rockchip/rga/rga-hw.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
4*4882a593Smuzhiyun  * Author: Jacob Chen <jacob-chen@iotwrt.com>
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun #ifndef __RGA_HW_H__
7*4882a593Smuzhiyun #define __RGA_HW_H__
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #define RGA_CMDBUF_SIZE 0x20
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun /* Hardware limits */
12*4882a593Smuzhiyun #define MAX_WIDTH 8192
13*4882a593Smuzhiyun #define MAX_HEIGHT 8192
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define MIN_WIDTH 34
16*4882a593Smuzhiyun #define MIN_HEIGHT 34
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #define DEFAULT_WIDTH 100
19*4882a593Smuzhiyun #define DEFAULT_HEIGHT 100
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun #define RGA_TIMEOUT 500
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun /* Registers address */
24*4882a593Smuzhiyun #define RGA_SYS_CTRL 0x0000
25*4882a593Smuzhiyun #define RGA_CMD_CTRL 0x0004
26*4882a593Smuzhiyun #define RGA_CMD_BASE 0x0008
27*4882a593Smuzhiyun #define RGA_INT 0x0010
28*4882a593Smuzhiyun #define RGA_MMU_CTRL0 0x0014
29*4882a593Smuzhiyun #define RGA_VERSION_INFO 0x0028
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun #define RGA_MODE_BASE_REG 0x0100
32*4882a593Smuzhiyun #define RGA_MODE_MAX_REG 0x017C
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define RGA_MODE_CTRL 0x0100
35*4882a593Smuzhiyun #define RGA_SRC_INFO 0x0104
36*4882a593Smuzhiyun #define RGA_SRC_Y_RGB_BASE_ADDR 0x0108
37*4882a593Smuzhiyun #define RGA_SRC_CB_BASE_ADDR 0x010c
38*4882a593Smuzhiyun #define RGA_SRC_CR_BASE_ADDR 0x0110
39*4882a593Smuzhiyun #define RGA_SRC1_RGB_BASE_ADDR 0x0114
40*4882a593Smuzhiyun #define RGA_SRC_VIR_INFO 0x0118
41*4882a593Smuzhiyun #define RGA_SRC_ACT_INFO 0x011c
42*4882a593Smuzhiyun #define RGA_SRC_X_FACTOR 0x0120
43*4882a593Smuzhiyun #define RGA_SRC_Y_FACTOR 0x0124
44*4882a593Smuzhiyun #define RGA_SRC_BG_COLOR 0x0128
45*4882a593Smuzhiyun #define RGA_SRC_FG_COLOR 0x012c
46*4882a593Smuzhiyun #define RGA_SRC_TR_COLOR0 0x0130
47*4882a593Smuzhiyun #define RGA_SRC_TR_COLOR1 0x0134
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun #define RGA_DST_INFO 0x0138
50*4882a593Smuzhiyun #define RGA_DST_Y_RGB_BASE_ADDR 0x013c
51*4882a593Smuzhiyun #define RGA_DST_CB_BASE_ADDR 0x0140
52*4882a593Smuzhiyun #define RGA_DST_CR_BASE_ADDR 0x0144
53*4882a593Smuzhiyun #define RGA_DST_VIR_INFO 0x0148
54*4882a593Smuzhiyun #define RGA_DST_ACT_INFO 0x014c
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun #define RGA_ALPHA_CTRL0 0x0150
57*4882a593Smuzhiyun #define RGA_ALPHA_CTRL1 0x0154
58*4882a593Smuzhiyun #define RGA_FADING_CTRL 0x0158
59*4882a593Smuzhiyun #define RGA_PAT_CON 0x015c
60*4882a593Smuzhiyun #define RGA_ROP_CON0 0x0160
61*4882a593Smuzhiyun #define RGA_ROP_CON1 0x0164
62*4882a593Smuzhiyun #define RGA_MASK_BASE 0x0168
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun #define RGA_MMU_CTRL1 0x016C
65*4882a593Smuzhiyun #define RGA_MMU_SRC_BASE 0x0170
66*4882a593Smuzhiyun #define RGA_MMU_SRC1_BASE 0x0174
67*4882a593Smuzhiyun #define RGA_MMU_DST_BASE 0x0178
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun /* Registers value */
70*4882a593Smuzhiyun #define RGA_MODE_RENDER_BITBLT 0
71*4882a593Smuzhiyun #define RGA_MODE_RENDER_COLOR_PALETTE 1
72*4882a593Smuzhiyun #define RGA_MODE_RENDER_RECTANGLE_FILL 2
73*4882a593Smuzhiyun #define RGA_MODE_RENDER_UPDATE_PALETTE_LUT_RAM 3
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun #define RGA_MODE_BITBLT_MODE_SRC_TO_DST 0
76*4882a593Smuzhiyun #define RGA_MODE_BITBLT_MODE_SRC_SRC1_TO_DST 1
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun #define RGA_MODE_CF_ROP4_SOLID 0
79*4882a593Smuzhiyun #define RGA_MODE_CF_ROP4_PATTERN 1
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun #define RGA_COLOR_FMT_ABGR8888 0
82*4882a593Smuzhiyun #define RGA_COLOR_FMT_XBGR8888 1
83*4882a593Smuzhiyun #define RGA_COLOR_FMT_RGB888 2
84*4882a593Smuzhiyun #define RGA_COLOR_FMT_BGR565 4
85*4882a593Smuzhiyun #define RGA_COLOR_FMT_ABGR1555 5
86*4882a593Smuzhiyun #define RGA_COLOR_FMT_ABGR4444 6
87*4882a593Smuzhiyun #define RGA_COLOR_FMT_YUV422SP 8
88*4882a593Smuzhiyun #define RGA_COLOR_FMT_YUV422P 9
89*4882a593Smuzhiyun #define RGA_COLOR_FMT_YUV420SP 10
90*4882a593Smuzhiyun #define RGA_COLOR_FMT_YUV420P 11
91*4882a593Smuzhiyun /* SRC_COLOR Palette */
92*4882a593Smuzhiyun #define RGA_COLOR_FMT_CP_1BPP 12
93*4882a593Smuzhiyun #define RGA_COLOR_FMT_CP_2BPP 13
94*4882a593Smuzhiyun #define RGA_COLOR_FMT_CP_4BPP 14
95*4882a593Smuzhiyun #define RGA_COLOR_FMT_CP_8BPP 15
96*4882a593Smuzhiyun #define RGA_COLOR_FMT_MASK 15
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #define RGA_COLOR_FMT_IS_YUV(fmt) \
99*4882a593Smuzhiyun 	(((fmt) >= RGA_COLOR_FMT_YUV422SP) && ((fmt) < RGA_COLOR_FMT_CP_1BPP))
100*4882a593Smuzhiyun #define RGA_COLOR_FMT_IS_RGB(fmt) \
101*4882a593Smuzhiyun 	((fmt) < RGA_COLOR_FMT_YUV422SP)
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define RGA_COLOR_NONE_SWAP 0
104*4882a593Smuzhiyun #define RGA_COLOR_RB_SWAP 1
105*4882a593Smuzhiyun #define RGA_COLOR_ALPHA_SWAP 2
106*4882a593Smuzhiyun #define RGA_COLOR_UV_SWAP 4
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun #define RGA_SRC_CSC_MODE_BYPASS 0
109*4882a593Smuzhiyun #define RGA_SRC_CSC_MODE_BT601_R0 1
110*4882a593Smuzhiyun #define RGA_SRC_CSC_MODE_BT601_R1 2
111*4882a593Smuzhiyun #define RGA_SRC_CSC_MODE_BT709_R0 3
112*4882a593Smuzhiyun #define RGA_SRC_CSC_MODE_BT709_R1 4
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun #define RGA_SRC_ROT_MODE_0_DEGREE 0
115*4882a593Smuzhiyun #define RGA_SRC_ROT_MODE_90_DEGREE 1
116*4882a593Smuzhiyun #define RGA_SRC_ROT_MODE_180_DEGREE 2
117*4882a593Smuzhiyun #define RGA_SRC_ROT_MODE_270_DEGREE 3
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun #define RGA_SRC_MIRR_MODE_NO 0
120*4882a593Smuzhiyun #define RGA_SRC_MIRR_MODE_X 1
121*4882a593Smuzhiyun #define RGA_SRC_MIRR_MODE_Y 2
122*4882a593Smuzhiyun #define RGA_SRC_MIRR_MODE_X_Y 3
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun #define RGA_SRC_HSCL_MODE_NO 0
125*4882a593Smuzhiyun #define RGA_SRC_HSCL_MODE_DOWN 1
126*4882a593Smuzhiyun #define RGA_SRC_HSCL_MODE_UP 2
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun #define RGA_SRC_VSCL_MODE_NO 0
129*4882a593Smuzhiyun #define RGA_SRC_VSCL_MODE_DOWN 1
130*4882a593Smuzhiyun #define RGA_SRC_VSCL_MODE_UP 2
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun #define RGA_SRC_TRANS_ENABLE_R 1
133*4882a593Smuzhiyun #define RGA_SRC_TRANS_ENABLE_G 2
134*4882a593Smuzhiyun #define RGA_SRC_TRANS_ENABLE_B 4
135*4882a593Smuzhiyun #define RGA_SRC_TRANS_ENABLE_A 8
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun #define RGA_SRC_BIC_COE_SELEC_CATROM 0
138*4882a593Smuzhiyun #define RGA_SRC_BIC_COE_SELEC_MITCHELL 1
139*4882a593Smuzhiyun #define RGA_SRC_BIC_COE_SELEC_HERMITE 2
140*4882a593Smuzhiyun #define RGA_SRC_BIC_COE_SELEC_BSPLINE 3
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun #define RGA_DST_DITHER_MODE_888_TO_666 0
143*4882a593Smuzhiyun #define RGA_DST_DITHER_MODE_888_TO_565 1
144*4882a593Smuzhiyun #define RGA_DST_DITHER_MODE_888_TO_555 2
145*4882a593Smuzhiyun #define RGA_DST_DITHER_MODE_888_TO_444 3
146*4882a593Smuzhiyun 
147*4882a593Smuzhiyun #define RGA_DST_CSC_MODE_BYPASS 0
148*4882a593Smuzhiyun #define RGA_DST_CSC_MODE_BT601_R0 1
149*4882a593Smuzhiyun #define RGA_DST_CSC_MODE_BT601_R1 2
150*4882a593Smuzhiyun #define RGA_DST_CSC_MODE_BT709_R0 3
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun #define RGA_ALPHA_ROP_MODE_2 0
153*4882a593Smuzhiyun #define RGA_ALPHA_ROP_MODE_3 1
154*4882a593Smuzhiyun #define RGA_ALPHA_ROP_MODE_4 2
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun #define RGA_ALPHA_SELECT_ALPHA 0
157*4882a593Smuzhiyun #define RGA_ALPHA_SELECT_ROP 1
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun #define RGA_ALPHA_MASK_BIG_ENDIAN 0
160*4882a593Smuzhiyun #define RGA_ALPHA_MASK_LITTLE_ENDIAN 1
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun #define RGA_ALPHA_NORMAL 0
163*4882a593Smuzhiyun #define RGA_ALPHA_REVERSE 1
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun #define RGA_ALPHA_BLEND_GLOBAL 0
166*4882a593Smuzhiyun #define RGA_ALPHA_BLEND_NORMAL 1
167*4882a593Smuzhiyun #define RGA_ALPHA_BLEND_MULTIPLY 2
168*4882a593Smuzhiyun 
169*4882a593Smuzhiyun #define RGA_ALPHA_CAL_CUT 0
170*4882a593Smuzhiyun #define RGA_ALPHA_CAL_NORMAL 1
171*4882a593Smuzhiyun 
172*4882a593Smuzhiyun #define RGA_ALPHA_FACTOR_ZERO 0
173*4882a593Smuzhiyun #define RGA_ALPHA_FACTOR_ONE 1
174*4882a593Smuzhiyun #define RGA_ALPHA_FACTOR_OTHER 2
175*4882a593Smuzhiyun #define RGA_ALPHA_FACTOR_OTHER_REVERSE 3
176*4882a593Smuzhiyun #define RGA_ALPHA_FACTOR_SELF 4
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun #define RGA_ALPHA_COLOR_NORMAL 0
179*4882a593Smuzhiyun #define RGA_ALPHA_COLOR_MULTIPLY_CAL 1
180*4882a593Smuzhiyun 
181*4882a593Smuzhiyun /* Registers union */
182*4882a593Smuzhiyun union rga_mode_ctrl {
183*4882a593Smuzhiyun 	unsigned int val;
184*4882a593Smuzhiyun 	struct {
185*4882a593Smuzhiyun 		/* [0:2] */
186*4882a593Smuzhiyun 		unsigned int render:3;
187*4882a593Smuzhiyun 		/* [3:6] */
188*4882a593Smuzhiyun 		unsigned int bitblt:1;
189*4882a593Smuzhiyun 		unsigned int cf_rop4_pat:1;
190*4882a593Smuzhiyun 		unsigned int alpha_zero_key:1;
191*4882a593Smuzhiyun 		unsigned int gradient_sat:1;
192*4882a593Smuzhiyun 		/* [7:31] */
193*4882a593Smuzhiyun 		unsigned int reserved:25;
194*4882a593Smuzhiyun 	} data;
195*4882a593Smuzhiyun };
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun union rga_src_info {
198*4882a593Smuzhiyun 	unsigned int val;
199*4882a593Smuzhiyun 	struct {
200*4882a593Smuzhiyun 		/* [0:3] */
201*4882a593Smuzhiyun 		unsigned int format:4;
202*4882a593Smuzhiyun 		/* [4:7] */
203*4882a593Smuzhiyun 		unsigned int swap:3;
204*4882a593Smuzhiyun 		unsigned int cp_endian:1;
205*4882a593Smuzhiyun 		/* [8:17] */
206*4882a593Smuzhiyun 		unsigned int csc_mode:2;
207*4882a593Smuzhiyun 		unsigned int rot_mode:2;
208*4882a593Smuzhiyun 		unsigned int mir_mode:2;
209*4882a593Smuzhiyun 		unsigned int hscl_mode:2;
210*4882a593Smuzhiyun 		unsigned int vscl_mode:2;
211*4882a593Smuzhiyun 		/* [18:22] */
212*4882a593Smuzhiyun 		unsigned int trans_mode:1;
213*4882a593Smuzhiyun 		unsigned int trans_enable:4;
214*4882a593Smuzhiyun 		/* [23:25] */
215*4882a593Smuzhiyun 		unsigned int dither_up_en:1;
216*4882a593Smuzhiyun 		unsigned int bic_coe_sel:2;
217*4882a593Smuzhiyun 		/* [26:31] */
218*4882a593Smuzhiyun 		unsigned int reserved:6;
219*4882a593Smuzhiyun 	} data;
220*4882a593Smuzhiyun };
221*4882a593Smuzhiyun 
222*4882a593Smuzhiyun union rga_src_vir_info {
223*4882a593Smuzhiyun 	unsigned int val;
224*4882a593Smuzhiyun 	struct {
225*4882a593Smuzhiyun 		/* [0:15] */
226*4882a593Smuzhiyun 		unsigned int vir_width:15;
227*4882a593Smuzhiyun 		unsigned int reserved:1;
228*4882a593Smuzhiyun 		/* [16:25] */
229*4882a593Smuzhiyun 		unsigned int vir_stride:10;
230*4882a593Smuzhiyun 		/* [26:31] */
231*4882a593Smuzhiyun 		unsigned int reserved1:6;
232*4882a593Smuzhiyun 	} data;
233*4882a593Smuzhiyun };
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun union rga_src_act_info {
236*4882a593Smuzhiyun 	unsigned int val;
237*4882a593Smuzhiyun 	struct {
238*4882a593Smuzhiyun 		/* [0:15] */
239*4882a593Smuzhiyun 		unsigned int act_width:13;
240*4882a593Smuzhiyun 		unsigned int reserved:3;
241*4882a593Smuzhiyun 		/* [16:31] */
242*4882a593Smuzhiyun 		unsigned int act_height:13;
243*4882a593Smuzhiyun 		unsigned int reserved1:3;
244*4882a593Smuzhiyun 	} data;
245*4882a593Smuzhiyun };
246*4882a593Smuzhiyun 
247*4882a593Smuzhiyun union rga_src_x_factor {
248*4882a593Smuzhiyun 	unsigned int val;
249*4882a593Smuzhiyun 	struct {
250*4882a593Smuzhiyun 		/* [0:15] */
251*4882a593Smuzhiyun 		unsigned int down_scale_factor:16;
252*4882a593Smuzhiyun 		/* [16:31] */
253*4882a593Smuzhiyun 		unsigned int up_scale_factor:16;
254*4882a593Smuzhiyun 	} data;
255*4882a593Smuzhiyun };
256*4882a593Smuzhiyun 
257*4882a593Smuzhiyun union rga_src_y_factor {
258*4882a593Smuzhiyun 	unsigned int val;
259*4882a593Smuzhiyun 	struct {
260*4882a593Smuzhiyun 		/* [0:15] */
261*4882a593Smuzhiyun 		unsigned int down_scale_factor:16;
262*4882a593Smuzhiyun 		/* [16:31] */
263*4882a593Smuzhiyun 		unsigned int up_scale_factor:16;
264*4882a593Smuzhiyun 	} data;
265*4882a593Smuzhiyun };
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun /* Alpha / Red / Green / Blue */
268*4882a593Smuzhiyun union rga_src_cp_gr_color {
269*4882a593Smuzhiyun 	unsigned int val;
270*4882a593Smuzhiyun 	struct {
271*4882a593Smuzhiyun 		/* [0:15] */
272*4882a593Smuzhiyun 		unsigned int gradient_x:16;
273*4882a593Smuzhiyun 		/* [16:31] */
274*4882a593Smuzhiyun 		unsigned int gradient_y:16;
275*4882a593Smuzhiyun 	} data;
276*4882a593Smuzhiyun };
277*4882a593Smuzhiyun 
278*4882a593Smuzhiyun union rga_src_transparency_color0 {
279*4882a593Smuzhiyun 	unsigned int val;
280*4882a593Smuzhiyun 	struct {
281*4882a593Smuzhiyun 		/* [0:7] */
282*4882a593Smuzhiyun 		unsigned int trans_rmin:8;
283*4882a593Smuzhiyun 		/* [8:15] */
284*4882a593Smuzhiyun 		unsigned int trans_gmin:8;
285*4882a593Smuzhiyun 		/* [16:23] */
286*4882a593Smuzhiyun 		unsigned int trans_bmin:8;
287*4882a593Smuzhiyun 		/* [24:31] */
288*4882a593Smuzhiyun 		unsigned int trans_amin:8;
289*4882a593Smuzhiyun 	} data;
290*4882a593Smuzhiyun };
291*4882a593Smuzhiyun 
292*4882a593Smuzhiyun union rga_src_transparency_color1 {
293*4882a593Smuzhiyun 	unsigned int val;
294*4882a593Smuzhiyun 	struct {
295*4882a593Smuzhiyun 		/* [0:7] */
296*4882a593Smuzhiyun 		unsigned int trans_rmax:8;
297*4882a593Smuzhiyun 		/* [8:15] */
298*4882a593Smuzhiyun 		unsigned int trans_gmax:8;
299*4882a593Smuzhiyun 		/* [16:23] */
300*4882a593Smuzhiyun 		unsigned int trans_bmax:8;
301*4882a593Smuzhiyun 		/* [24:31] */
302*4882a593Smuzhiyun 		unsigned int trans_amax:8;
303*4882a593Smuzhiyun 	} data;
304*4882a593Smuzhiyun };
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun union rga_dst_info {
307*4882a593Smuzhiyun 	unsigned int val;
308*4882a593Smuzhiyun 	struct {
309*4882a593Smuzhiyun 		/* [0:3] */
310*4882a593Smuzhiyun 		unsigned int format:4;
311*4882a593Smuzhiyun 		/* [4:6] */
312*4882a593Smuzhiyun 		unsigned int swap:3;
313*4882a593Smuzhiyun 		/* [7:9] */
314*4882a593Smuzhiyun 		unsigned int src1_format:3;
315*4882a593Smuzhiyun 		/* [10:11] */
316*4882a593Smuzhiyun 		unsigned int src1_swap:2;
317*4882a593Smuzhiyun 		/* [12:15] */
318*4882a593Smuzhiyun 		unsigned int dither_up_en:1;
319*4882a593Smuzhiyun 		unsigned int dither_down_en:1;
320*4882a593Smuzhiyun 		unsigned int dither_down_mode:2;
321*4882a593Smuzhiyun 		/* [16:18] */
322*4882a593Smuzhiyun 		unsigned int csc_mode:2;
323*4882a593Smuzhiyun 		unsigned int csc_clip:1;
324*4882a593Smuzhiyun 		/* [19:31] */
325*4882a593Smuzhiyun 		unsigned int reserved:13;
326*4882a593Smuzhiyun 	} data;
327*4882a593Smuzhiyun };
328*4882a593Smuzhiyun 
329*4882a593Smuzhiyun union rga_dst_vir_info {
330*4882a593Smuzhiyun 	unsigned int val;
331*4882a593Smuzhiyun 	struct {
332*4882a593Smuzhiyun 		/* [0:15] */
333*4882a593Smuzhiyun 		unsigned int vir_stride:15;
334*4882a593Smuzhiyun 		unsigned int reserved:1;
335*4882a593Smuzhiyun 		/* [16:31] */
336*4882a593Smuzhiyun 		unsigned int src1_vir_stride:15;
337*4882a593Smuzhiyun 		unsigned int reserved1:1;
338*4882a593Smuzhiyun 	} data;
339*4882a593Smuzhiyun };
340*4882a593Smuzhiyun 
341*4882a593Smuzhiyun union rga_dst_act_info {
342*4882a593Smuzhiyun 	unsigned int val;
343*4882a593Smuzhiyun 	struct {
344*4882a593Smuzhiyun 		/* [0:15] */
345*4882a593Smuzhiyun 		unsigned int act_width:12;
346*4882a593Smuzhiyun 		unsigned int reserved:4;
347*4882a593Smuzhiyun 		/* [16:31] */
348*4882a593Smuzhiyun 		unsigned int act_height:12;
349*4882a593Smuzhiyun 		unsigned int reserved1:4;
350*4882a593Smuzhiyun 	} data;
351*4882a593Smuzhiyun };
352*4882a593Smuzhiyun 
353*4882a593Smuzhiyun union rga_alpha_ctrl0 {
354*4882a593Smuzhiyun 	unsigned int val;
355*4882a593Smuzhiyun 	struct {
356*4882a593Smuzhiyun 		/* [0:3] */
357*4882a593Smuzhiyun 		unsigned int rop_en:1;
358*4882a593Smuzhiyun 		unsigned int rop_select:1;
359*4882a593Smuzhiyun 		unsigned int rop_mode:2;
360*4882a593Smuzhiyun 		/* [4:11] */
361*4882a593Smuzhiyun 		unsigned int src_fading_val:8;
362*4882a593Smuzhiyun 		/* [12:20] */
363*4882a593Smuzhiyun 		unsigned int dst_fading_val:8;
364*4882a593Smuzhiyun 		unsigned int mask_endian:1;
365*4882a593Smuzhiyun 		/* [21:31] */
366*4882a593Smuzhiyun 		unsigned int reserved:11;
367*4882a593Smuzhiyun 	} data;
368*4882a593Smuzhiyun };
369*4882a593Smuzhiyun 
370*4882a593Smuzhiyun union rga_alpha_ctrl1 {
371*4882a593Smuzhiyun 	unsigned int val;
372*4882a593Smuzhiyun 	struct {
373*4882a593Smuzhiyun 		/* [0:1] */
374*4882a593Smuzhiyun 		unsigned int dst_color_m0:1;
375*4882a593Smuzhiyun 		unsigned int src_color_m0:1;
376*4882a593Smuzhiyun 		/* [2:7] */
377*4882a593Smuzhiyun 		unsigned int dst_factor_m0:3;
378*4882a593Smuzhiyun 		unsigned int src_factor_m0:3;
379*4882a593Smuzhiyun 		/* [8:9] */
380*4882a593Smuzhiyun 		unsigned int dst_alpha_cal_m0:1;
381*4882a593Smuzhiyun 		unsigned int src_alpha_cal_m0:1;
382*4882a593Smuzhiyun 		/* [10:13] */
383*4882a593Smuzhiyun 		unsigned int dst_blend_m0:2;
384*4882a593Smuzhiyun 		unsigned int src_blend_m0:2;
385*4882a593Smuzhiyun 		/* [14:15] */
386*4882a593Smuzhiyun 		unsigned int dst_alpha_m0:1;
387*4882a593Smuzhiyun 		unsigned int src_alpha_m0:1;
388*4882a593Smuzhiyun 		/* [16:21] */
389*4882a593Smuzhiyun 		unsigned int dst_factor_m1:3;
390*4882a593Smuzhiyun 		unsigned int src_factor_m1:3;
391*4882a593Smuzhiyun 		/* [22:23] */
392*4882a593Smuzhiyun 		unsigned int dst_alpha_cal_m1:1;
393*4882a593Smuzhiyun 		unsigned int src_alpha_cal_m1:1;
394*4882a593Smuzhiyun 		/* [24:27] */
395*4882a593Smuzhiyun 		unsigned int dst_blend_m1:2;
396*4882a593Smuzhiyun 		unsigned int src_blend_m1:2;
397*4882a593Smuzhiyun 		/* [28:29] */
398*4882a593Smuzhiyun 		unsigned int dst_alpha_m1:1;
399*4882a593Smuzhiyun 		unsigned int src_alpha_m1:1;
400*4882a593Smuzhiyun 		/* [30:31] */
401*4882a593Smuzhiyun 		unsigned int reserved:2;
402*4882a593Smuzhiyun 	} data;
403*4882a593Smuzhiyun };
404*4882a593Smuzhiyun 
405*4882a593Smuzhiyun union rga_fading_ctrl {
406*4882a593Smuzhiyun 	unsigned int val;
407*4882a593Smuzhiyun 	struct {
408*4882a593Smuzhiyun 		/* [0:7] */
409*4882a593Smuzhiyun 		unsigned int fading_offset_r:8;
410*4882a593Smuzhiyun 		/* [8:15] */
411*4882a593Smuzhiyun 		unsigned int fading_offset_g:8;
412*4882a593Smuzhiyun 		/* [16:23] */
413*4882a593Smuzhiyun 		unsigned int fading_offset_b:8;
414*4882a593Smuzhiyun 		/* [24:31] */
415*4882a593Smuzhiyun 		unsigned int fading_en:1;
416*4882a593Smuzhiyun 		unsigned int reserved:7;
417*4882a593Smuzhiyun 	} data;
418*4882a593Smuzhiyun };
419*4882a593Smuzhiyun 
420*4882a593Smuzhiyun union rga_pat_con {
421*4882a593Smuzhiyun 	unsigned int val;
422*4882a593Smuzhiyun 	struct {
423*4882a593Smuzhiyun 		/* [0:7] */
424*4882a593Smuzhiyun 		unsigned int width:8;
425*4882a593Smuzhiyun 		/* [8:15] */
426*4882a593Smuzhiyun 		unsigned int height:8;
427*4882a593Smuzhiyun 		/* [16:23] */
428*4882a593Smuzhiyun 		unsigned int offset_x:8;
429*4882a593Smuzhiyun 		/* [24:31] */
430*4882a593Smuzhiyun 		unsigned int offset_y:8;
431*4882a593Smuzhiyun 	} data;
432*4882a593Smuzhiyun };
433*4882a593Smuzhiyun 
434*4882a593Smuzhiyun #endif
435