xref: /OK3568_Linux_fs/u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright (c) 2015 Google, Inc
3*4882a593Smuzhiyun  * Copyright 2014 Rockchip Inc.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef _ASM_ARCH_VOP_RK3288_H
9*4882a593Smuzhiyun #define _ASM_ARCH_VOP_RK3288_H
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun struct rk3288_vop {
12*4882a593Smuzhiyun 	u32 reg_cfg_done;
13*4882a593Smuzhiyun 	u32 version_info;
14*4882a593Smuzhiyun 	u32 sys_ctrl;
15*4882a593Smuzhiyun 	u32 sys_ctrl1;
16*4882a593Smuzhiyun 	u32 dsp_ctrl0;
17*4882a593Smuzhiyun 	u32 dsp_ctrl1;
18*4882a593Smuzhiyun 	u32 dsp_bg;
19*4882a593Smuzhiyun 	u32 mcu_ctrl;
20*4882a593Smuzhiyun 	u32 intr_ctrl0;
21*4882a593Smuzhiyun 	u32 intr_ctrl1;
22*4882a593Smuzhiyun 	u32 intr_reserved0;
23*4882a593Smuzhiyun 	u32 intr_reserved1;
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun 	u32 win0_ctrl0;
26*4882a593Smuzhiyun 	u32 win0_ctrl1;
27*4882a593Smuzhiyun 	u32 win0_color_key;
28*4882a593Smuzhiyun 	u32 win0_vir;
29*4882a593Smuzhiyun 	u32 win0_yrgb_mst;
30*4882a593Smuzhiyun 	u32 win0_cbr_mst;
31*4882a593Smuzhiyun 	u32 win0_act_info;
32*4882a593Smuzhiyun 	u32 win0_dsp_info;
33*4882a593Smuzhiyun 	u32 win0_dsp_st;
34*4882a593Smuzhiyun 	u32 win0_scl_factor_yrgb;
35*4882a593Smuzhiyun 	u32 win0_scl_factor_cbr;
36*4882a593Smuzhiyun 	u32 win0_scl_offset;
37*4882a593Smuzhiyun 	u32 win0_src_alpha_ctrl;
38*4882a593Smuzhiyun 	u32 win0_dst_alpha_ctrl;
39*4882a593Smuzhiyun 	u32 win0_fading_ctrl;
40*4882a593Smuzhiyun 	u32 win0_reserved0;
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun 	u32 win1_ctrl0;
43*4882a593Smuzhiyun 	u32 win1_ctrl1;
44*4882a593Smuzhiyun 	u32 win1_color_key;
45*4882a593Smuzhiyun 	u32 win1_vir;
46*4882a593Smuzhiyun 	u32 win1_yrgb_mst;
47*4882a593Smuzhiyun 	u32 win1_cbr_mst;
48*4882a593Smuzhiyun 	u32 win1_act_info;
49*4882a593Smuzhiyun 	u32 win1_dsp_info;
50*4882a593Smuzhiyun 	u32 win1_dsp_st;
51*4882a593Smuzhiyun 	u32 win1_scl_factor_yrgb;
52*4882a593Smuzhiyun 	u32 win1_scl_factor_cbr;
53*4882a593Smuzhiyun 	u32 win1_scl_offset;
54*4882a593Smuzhiyun 	u32 win1_src_alpha_ctrl;
55*4882a593Smuzhiyun 	u32 win1_dst_alpha_ctrl;
56*4882a593Smuzhiyun 	u32 win1_fading_ctrl;
57*4882a593Smuzhiyun 	u32 win1_reservd0;
58*4882a593Smuzhiyun 	u32 reserved2[48];
59*4882a593Smuzhiyun 	u32 post_dsp_hact_info;
60*4882a593Smuzhiyun 	u32 post_dsp_vact_info;
61*4882a593Smuzhiyun 	u32 post_scl_factor_yrgb;
62*4882a593Smuzhiyun 	u32 post_reserved;
63*4882a593Smuzhiyun 	u32 post_scl_ctrl;
64*4882a593Smuzhiyun 	u32 post_dsp_vact_info_f1;
65*4882a593Smuzhiyun 	u32 dsp_htotal_hs_end;
66*4882a593Smuzhiyun 	u32 dsp_hact_st_end;
67*4882a593Smuzhiyun 	u32 dsp_vtotal_vs_end;
68*4882a593Smuzhiyun 	u32 dsp_vact_st_end;
69*4882a593Smuzhiyun 	u32 dsp_vs_st_end_f1;
70*4882a593Smuzhiyun 	u32 dsp_vact_st_end_f1;
71*4882a593Smuzhiyun };
72*4882a593Smuzhiyun check_member(rk3288_vop, dsp_vact_st_end_f1, 0x19c);
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun enum rockchip_fb_data_format_t {
75*4882a593Smuzhiyun 	ARGB8888 = 0,
76*4882a593Smuzhiyun 	RGB888 = 1,
77*4882a593Smuzhiyun 	RGB565 = 2,
78*4882a593Smuzhiyun };
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun enum {
81*4882a593Smuzhiyun 	LB_YUV_3840X5 = 0x0,
82*4882a593Smuzhiyun 	LB_YUV_2560X8 = 0x1,
83*4882a593Smuzhiyun 	LB_RGB_3840X2 = 0x2,
84*4882a593Smuzhiyun 	LB_RGB_2560X4 = 0x3,
85*4882a593Smuzhiyun 	LB_RGB_1920X5 = 0x4,
86*4882a593Smuzhiyun 	LB_RGB_1280X8 = 0x5
87*4882a593Smuzhiyun };
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun enum vop_modes {
90*4882a593Smuzhiyun 	VOP_MODE_EDP = 0,
91*4882a593Smuzhiyun 	VOP_MODE_HDMI,
92*4882a593Smuzhiyun 	VOP_MODE_LVDS,
93*4882a593Smuzhiyun 	VOP_MODE_MIPI,
94*4882a593Smuzhiyun 	VOP_MODE_NONE,
95*4882a593Smuzhiyun 	VOP_MODE_AUTO_DETECT,
96*4882a593Smuzhiyun 	VOP_MODE_UNKNOWN,
97*4882a593Smuzhiyun };
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun /* VOP_VERSION_INFO */
100*4882a593Smuzhiyun #define M_FPGA_VERSION (0xffff << 16)
101*4882a593Smuzhiyun #define M_RTL_VERSION  (0xffff)
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun /* VOP_SYS_CTRL */
104*4882a593Smuzhiyun #define M_AUTO_GATING_EN (1 << 23)
105*4882a593Smuzhiyun #define M_STANDBY_EN     (1 << 22)
106*4882a593Smuzhiyun #define M_DMA_STOP       (1 << 21)
107*4882a593Smuzhiyun #define M_MMU_EN         (1 << 20)
108*4882a593Smuzhiyun #define M_DAM_BURST_LENGTH (0x3 << 18)
109*4882a593Smuzhiyun #define M_MIPI_OUT_EN	   (1 << 15)
110*4882a593Smuzhiyun #define M_EDP_OUT_EN       (1 << 14)
111*4882a593Smuzhiyun #define M_HDMI_OUT_EN      (1 << 13)
112*4882a593Smuzhiyun #define M_RGB_OUT_EN       (1 << 12)
113*4882a593Smuzhiyun #define M_ALL_OUT_EN		\
114*4882a593Smuzhiyun 		(M_MIPI_OUT_EN | M_EDP_OUT_EN | M_HDMI_OUT_EN | M_RGB_OUT_EN)
115*4882a593Smuzhiyun #define M_EDPI_WMS_FS      (1 << 10)
116*4882a593Smuzhiyun #define M_EDPI_WMS_MODE    (1 << 9)
117*4882a593Smuzhiyun #define M_EDPI_HALT_EN     (1 << 8)
118*4882a593Smuzhiyun #define M_DOUB_CH_OVERLAP_NUM (0xf << 4)
119*4882a593Smuzhiyun #define M_DOUB_CHANNEL_EN     (1 << 3)
120*4882a593Smuzhiyun #define M_DIRECT_PATH_LAYER_SEL (0x3 << 1)
121*4882a593Smuzhiyun #define M_DIRECT_PATH_EN       (1)
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun #define V_AUTO_GATING_EN(x) (((x) & 1) << 23)
124*4882a593Smuzhiyun #define V_STANDBY_EN(x)     (((x) & 1) << 22)
125*4882a593Smuzhiyun #define V_DMA_STOP(x)       (((x) & 1) << 21)
126*4882a593Smuzhiyun #define V_MMU_EN(x)         (((x) & 1) << 20)
127*4882a593Smuzhiyun #define V_DMA_BURST_LENGTH(x) (((x) & 3) << 18)
128*4882a593Smuzhiyun #define V_MIPI_OUT_EN(x)      (((x) & 1) << 15)
129*4882a593Smuzhiyun #define V_EDP_OUT_EN(x)       (((x) & 1) << 14)
130*4882a593Smuzhiyun #define V_HDMI_OUT_EN(x)      (((x) & 1) << 13)
131*4882a593Smuzhiyun #define V_RGB_OUT_EN(x)       (((x) & 1) << 12)
132*4882a593Smuzhiyun #define V_EDPI_WMS_FS(x)      (((x) & 1) << 10)
133*4882a593Smuzhiyun #define V_EDPI_WMS_MODE(x)    (((x) & 1) << 9)
134*4882a593Smuzhiyun #define V_EDPI_HALT_EN(x)     (((x)&1)<<8)
135*4882a593Smuzhiyun #define V_DOUB_CH_OVERLAP_NUM(x) (((x) & 0xf) << 4)
136*4882a593Smuzhiyun #define V_DOUB_CHANNEL_EN(x)     (((x) & 1) << 3)
137*4882a593Smuzhiyun #define V_DIRECT_PATH_LAYER_SEL(x) (((x) & 3) << 1)
138*4882a593Smuzhiyun #define V_DIRECT_PATH_EN(x)       ((x) & 1)
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun /* VOP_SYS_CTRL1 */
141*4882a593Smuzhiyun #define M_AXI_OUTSTANDING_MAX_NUM (0x1f << 13)
142*4882a593Smuzhiyun #define M_AXI_MAX_OUTSTANDING_EN  (1 << 12)
143*4882a593Smuzhiyun #define M_NOC_WIN_QOS             (3 << 10)
144*4882a593Smuzhiyun #define M_NOC_QOS_EN              (1 << 9)
145*4882a593Smuzhiyun #define M_NOC_HURRY_THRESHOLD     (0x3f << 3)
146*4882a593Smuzhiyun #define M_NOC_HURRY_VALUE         (0x3 << 1)
147*4882a593Smuzhiyun #define M_NOC_HURRY_EN            (1)
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun #define V_AXI_OUTSTANDING_MAX_NUM(x) (((x) & 0x1f) << 13)
150*4882a593Smuzhiyun #define V_AXI_MAX_OUTSTANDING_EN(x)  (((x) & 1) << 12)
151*4882a593Smuzhiyun #define V_NOC_WIN_QOS(x)             (((x) & 3) << 10)
152*4882a593Smuzhiyun #define V_NOC_QOS_EN(x)              (((x) & 1) << 9)
153*4882a593Smuzhiyun #define V_NOC_HURRY_THRESHOLD(x)     (((x) & 0x3f) << 3)
154*4882a593Smuzhiyun #define V_NOC_HURRY_VALUE(x)         (((x) & 3) << 1)
155*4882a593Smuzhiyun #define V_NOC_HURRY_EN(x)            ((x) & 1)
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun /* VOP_DSP_CTRL0 */
158*4882a593Smuzhiyun #define M_DSP_Y_MIR_EN              (1 << 23)
159*4882a593Smuzhiyun #define M_DSP_X_MIR_EN              (1 << 22)
160*4882a593Smuzhiyun #define M_DSP_YUV_CLIP              (1 << 21)
161*4882a593Smuzhiyun #define M_DSP_CCIR656_AVG           (1 << 20)
162*4882a593Smuzhiyun #define M_DSP_BLACK_EN              (1 << 19)
163*4882a593Smuzhiyun #define M_DSP_BLANK_EN              (1 << 18)
164*4882a593Smuzhiyun #define M_DSP_OUT_ZERO              (1 << 17)
165*4882a593Smuzhiyun #define M_DSP_DUMMY_SWAP            (1 << 16)
166*4882a593Smuzhiyun #define M_DSP_DELTA_SWAP            (1 << 15)
167*4882a593Smuzhiyun #define M_DSP_RG_SWAP               (1 << 14)
168*4882a593Smuzhiyun #define M_DSP_RB_SWAP               (1 << 13)
169*4882a593Smuzhiyun #define M_DSP_BG_SWAP               (1 << 12)
170*4882a593Smuzhiyun #define M_DSP_FIELD_POL             (1 << 11)
171*4882a593Smuzhiyun #define M_DSP_INTERLACE             (1 << 10)
172*4882a593Smuzhiyun #define M_DSP_DDR_PHASE             (1 << 9)
173*4882a593Smuzhiyun #define M_DSP_DCLK_DDR              (1 << 8)
174*4882a593Smuzhiyun #define M_DSP_DCLK_POL              (1 << 7)
175*4882a593Smuzhiyun #define M_DSP_DEN_POL               (1 << 6)
176*4882a593Smuzhiyun #define M_DSP_VSYNC_POL             (1 << 5)
177*4882a593Smuzhiyun #define M_DSP_HSYNC_POL             (1 << 4)
178*4882a593Smuzhiyun #define M_DSP_OUT_MODE              (0xf)
179*4882a593Smuzhiyun 
180*4882a593Smuzhiyun #define V_DSP_Y_MIR_EN(x)              (((x) & 1) << 23)
181*4882a593Smuzhiyun #define V_DSP_X_MIR_EN(x)              (((x) & 1) << 22)
182*4882a593Smuzhiyun #define V_DSP_YUV_CLIP(x)              (((x) & 1) << 21)
183*4882a593Smuzhiyun #define V_DSP_CCIR656_AVG(x)           (((x) & 1) << 20)
184*4882a593Smuzhiyun #define V_DSP_BLACK_EN(x)              (((x) & 1) << 19)
185*4882a593Smuzhiyun #define V_DSP_BLANK_EN(x)              (((x) & 1) << 18)
186*4882a593Smuzhiyun #define V_DSP_OUT_ZERO(x)              (((x) & 1) << 17)
187*4882a593Smuzhiyun #define V_DSP_DUMMY_SWAP(x)            (((x) & 1) << 16)
188*4882a593Smuzhiyun #define V_DSP_DELTA_SWAP(x)            (((x) & 1) << 15)
189*4882a593Smuzhiyun #define V_DSP_RG_SWAP(x)               (((x) & 1) << 14)
190*4882a593Smuzhiyun #define V_DSP_RB_SWAP(x)               (((x) & 1) << 13)
191*4882a593Smuzhiyun #define V_DSP_BG_SWAP(x)               (((x) & 1) << 12)
192*4882a593Smuzhiyun #define V_DSP_FIELD_POL(x)             (((x) & 1) << 11)
193*4882a593Smuzhiyun #define V_DSP_INTERLACE(x)             (((x) & 1) << 10)
194*4882a593Smuzhiyun #define V_DSP_DDR_PHASE(x)             (((x) & 1) << 9)
195*4882a593Smuzhiyun #define V_DSP_DCLK_DDR(x)              (((x) & 1) << 8)
196*4882a593Smuzhiyun #define V_DSP_DCLK_POL(x)              (((x) & 1) << 7)
197*4882a593Smuzhiyun #define V_DSP_DEN_POL(x)               (((x) & 1) << 6)
198*4882a593Smuzhiyun #define V_DSP_VSYNC_POL(x)             (((x) & 1) << 5)
199*4882a593Smuzhiyun #define V_DSP_HSYNC_POL(x)             (((x) & 1) << 4)
200*4882a593Smuzhiyun #define V_DSP_PIN_POL(x)               (((x) & 0xf) << 4)
201*4882a593Smuzhiyun #define V_DSP_OUT_MODE(x)              ((x) & 0xf)
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun /* VOP_DSP_CTRL1 */
204*4882a593Smuzhiyun #define V_RK3399_DSP_MIPI_POL(x)       ((x) << 28)
205*4882a593Smuzhiyun #define V_RK3399_DSP_EDP_POL(x)        ((x) << 24)
206*4882a593Smuzhiyun #define V_RK3399_DSP_HDMI_POL(x)       ((x) << 20)
207*4882a593Smuzhiyun #define V_RK3399_DSP_LVDS_POL(x)       ((x) << 16)
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun #define M_RK3399_DSP_MIPI_POL          (V_RK3399_DSP_MIPI_POL(0xf))
210*4882a593Smuzhiyun #define M_RK3399_DSP_EDP_POL           (V_RK3399_DSP_EDP_POL(0xf))
211*4882a593Smuzhiyun #define M_RK3399_DSP_HDMI_POL          (V_RK3399_DSP_HDMI_POL(0xf))
212*4882a593Smuzhiyun #define M_RK3399_DSP_LVDS_POL          (V_RK3399_DSP_LVDS_POL(0xf))
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun #define M_DSP_LAYER3_SEL               (3 << 14)
215*4882a593Smuzhiyun #define M_DSP_LAYER2_SEL               (3 << 12)
216*4882a593Smuzhiyun #define M_DSP_LAYER1_SEL               (3 << 10)
217*4882a593Smuzhiyun #define M_DSP_LAYER0_SEL               (3 << 8)
218*4882a593Smuzhiyun #define M_DITHER_UP_EN                 (1 << 6)
219*4882a593Smuzhiyun #define M_DITHER_DOWN_SEL              (1 << 4)
220*4882a593Smuzhiyun #define M_DITHER_DOWN_MODE             (1 << 3)
221*4882a593Smuzhiyun #define M_DITHER_DOWN_EN               (1 << 2)
222*4882a593Smuzhiyun #define M_PRE_DITHER_DOWN_EN           (1 << 1)
223*4882a593Smuzhiyun #define M_DSP_LUT_EN                   (1)
224*4882a593Smuzhiyun 
225*4882a593Smuzhiyun #define V_DSP_LAYER3_SEL(x)                (((x) & 3) << 14)
226*4882a593Smuzhiyun #define V_DSP_LAYER2_SEL(x)                (((x) & 3) << 12)
227*4882a593Smuzhiyun #define V_DSP_LAYER1_SEL(x)                (((x) & 3) << 10)
228*4882a593Smuzhiyun #define V_DSP_LAYER0_SEL(x)                (((x) & 3) << 8)
229*4882a593Smuzhiyun #define V_DITHER_UP_EN(x)                  (((x) & 1) << 6)
230*4882a593Smuzhiyun #define V_DITHER_DOWN_SEL(x)               (((x) & 1) << 4)
231*4882a593Smuzhiyun #define V_DITHER_DOWN_MODE(x)              (((x) & 1) << 3)
232*4882a593Smuzhiyun #define V_DITHER_DOWN_EN(x)                (((x) & 1) << 2)
233*4882a593Smuzhiyun #define V_PRE_DITHER_DOWN_EN(x)            (((x) & 1) << 1)
234*4882a593Smuzhiyun #define V_DSP_LUT_EN(x)                    ((x)&1)
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun /* VOP_DSP_BG */
237*4882a593Smuzhiyun #define M_DSP_BG_RED     (0x3f << 20)
238*4882a593Smuzhiyun #define M_DSP_BG_GREEN   (0x3f << 10)
239*4882a593Smuzhiyun #define M_DSP_BG_BLUE    (0x3f << 0)
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun #define V_DSP_BG_RED(x)     (((x) & 0x3f) << 20)
242*4882a593Smuzhiyun #define V_DSP_BG_GREEN(x)   (((x) & 0x3f) << 10)
243*4882a593Smuzhiyun #define V_DSP_BG_BLUE(x)    (((x) & 0x3f) << 0)
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun /* VOP_WIN0_CTRL0 */
246*4882a593Smuzhiyun #define M_WIN0_YUV_CLIP     (1 << 20)
247*4882a593Smuzhiyun #define M_WIN0_CBR_DEFLICK  (1 << 19)
248*4882a593Smuzhiyun #define M_WIN0_YRGB_DEFLICK  (1 << 18)
249*4882a593Smuzhiyun #define M_WIN0_PPAS_ZERO_EN  (1 << 16)
250*4882a593Smuzhiyun #define M_WIN0_UV_SWAP       (1 << 15)
251*4882a593Smuzhiyun #define M_WIN0_MID_SWAP      (1 << 14)
252*4882a593Smuzhiyun #define M_WIN0_ALPHA_SWAP    (1 << 13)
253*4882a593Smuzhiyun #define M_WIN0_RB_SWAP       (1 << 12)
254*4882a593Smuzhiyun #define M_WIN0_CSC_MODE      (3 << 10)
255*4882a593Smuzhiyun #define M_WIN0_NO_OUTSTANDING (1 << 9)
256*4882a593Smuzhiyun #define M_WIN0_INTERLACE_READ  (1 << 8)
257*4882a593Smuzhiyun #define M_WIN0_LB_MODE         (7 << 5)
258*4882a593Smuzhiyun #define M_WIN0_FMT_10          (1 << 4)
259*4882a593Smuzhiyun #define M_WIN0_DATA_FMT        (7 << 1)
260*4882a593Smuzhiyun #define M_WIN0_EN              (1 << 0)
261*4882a593Smuzhiyun 
262*4882a593Smuzhiyun #define V_WIN0_YUV_CLIP(x)       (((x) & 1) << 20)
263*4882a593Smuzhiyun #define V_WIN0_CBR_DEFLICK(x)    (((x) & 1) << 19)
264*4882a593Smuzhiyun #define V_WIN0_YRGB_DEFLICK(x)   (((x) & 1) << 18)
265*4882a593Smuzhiyun #define V_WIN0_PPAS_ZERO_EN(x)   (((x) & 1) << 16)
266*4882a593Smuzhiyun #define V_WIN0_UV_SWAP(x)        (((x) & 1) << 15)
267*4882a593Smuzhiyun #define V_WIN0_MID_SWAP(x)       (((x) & 1) << 14)
268*4882a593Smuzhiyun #define V_WIN0_ALPHA_SWAP(x)     (((x) & 1) << 13)
269*4882a593Smuzhiyun #define V_WIN0_RB_SWAP(x)        (((x) & 1) << 12)
270*4882a593Smuzhiyun #define V_WIN0_CSC_MODE(x)       (((x) & 3) << 10)
271*4882a593Smuzhiyun #define V_WIN0_NO_OUTSTANDING(x) (((x) & 1) << 9)
272*4882a593Smuzhiyun #define V_WIN0_INTERLACE_READ(x)  (((x) & 1) << 8)
273*4882a593Smuzhiyun #define V_WIN0_LB_MODE(x)         (((x) & 7) << 5)
274*4882a593Smuzhiyun #define V_WIN0_FMT_10(x)          (((x) & 1) << 4)
275*4882a593Smuzhiyun #define V_WIN0_DATA_FMT(x)        (((x) & 7) << 1)
276*4882a593Smuzhiyun #define V_WIN0_EN(x)              ((x) & 1)
277*4882a593Smuzhiyun 
278*4882a593Smuzhiyun /* VOP_WIN0_CTRL1 */
279*4882a593Smuzhiyun #define M_WIN0_CBR_VSD_MODE        (1 << 31)
280*4882a593Smuzhiyun #define M_WIN0_CBR_VSU_MODE        (1 << 30)
281*4882a593Smuzhiyun #define M_WIN0_CBR_HSD_MODE        (3 << 28)
282*4882a593Smuzhiyun #define M_WIN0_CBR_VER_SCL_MODE    (3 << 26)
283*4882a593Smuzhiyun #define M_WIN0_CBR_HOR_SCL_MODE    (3 << 24)
284*4882a593Smuzhiyun #define M_WIN0_YRGB_VSD_MODE       (1 << 23)
285*4882a593Smuzhiyun #define M_WIN0_YRGB_VSU_MODE       (1 << 22)
286*4882a593Smuzhiyun #define M_WIN0_YRGB_HSD_MODE       (3 << 20)
287*4882a593Smuzhiyun #define M_WIN0_YRGB_VER_SCL_MODE   (3 << 18)
288*4882a593Smuzhiyun #define M_WIN0_YRGB_HOR_SCL_MODE   (3 << 16)
289*4882a593Smuzhiyun #define M_WIN0_LINE_LOAD_MODE      (1 << 15)
290*4882a593Smuzhiyun #define M_WIN0_CBR_AXI_GATHER_NUM  (7 << 12)
291*4882a593Smuzhiyun #define M_WIN0_YRGB_AXI_GATHER_NUM (0xf << 8)
292*4882a593Smuzhiyun #define M_WIN0_VSD_CBR_GT2         (1 << 7)
293*4882a593Smuzhiyun #define M_WIN0_VSD_CBR_GT4         (1 << 6)
294*4882a593Smuzhiyun #define M_WIN0_VSD_YRGB_GT2        (1 << 5)
295*4882a593Smuzhiyun #define M_WIN0_VSD_YRGB_GT4        (1 << 4)
296*4882a593Smuzhiyun #define M_WIN0_BIC_COE_SEL         (3 << 2)
297*4882a593Smuzhiyun #define M_WIN0_CBR_AXI_GATHER_EN   (1 << 1)
298*4882a593Smuzhiyun #define M_WIN0_YRGB_AXI_GATHER_EN  (1)
299*4882a593Smuzhiyun 
300*4882a593Smuzhiyun #define V_WIN0_CBR_VSD_MODE(x)        (((x) & 1) << 31)
301*4882a593Smuzhiyun #define V_WIN0_CBR_VSU_MODE(x)        (((x) & 1) << 30)
302*4882a593Smuzhiyun #define V_WIN0_CBR_HSD_MODE(x)        (((x) & 3) << 28)
303*4882a593Smuzhiyun #define V_WIN0_CBR_VER_SCL_MODE(x)    (((x) & 3) << 26)
304*4882a593Smuzhiyun #define V_WIN0_CBR_HOR_SCL_MODE(x)    (((x) & 3) << 24)
305*4882a593Smuzhiyun #define V_WIN0_YRGB_VSD_MODE(x)       (((x) & 1) << 23)
306*4882a593Smuzhiyun #define V_WIN0_YRGB_VSU_MODE(x)       (((x) & 1) << 22)
307*4882a593Smuzhiyun #define V_WIN0_YRGB_HSD_MODE(x)       (((x) & 3) << 20)
308*4882a593Smuzhiyun #define V_WIN0_YRGB_VER_SCL_MODE(x)   (((x) & 3) << 18)
309*4882a593Smuzhiyun #define V_WIN0_YRGB_HOR_SCL_MODE(x)   (((x) & 3) << 16)
310*4882a593Smuzhiyun #define V_WIN0_LINE_LOAD_MODE(x)      (((x) & 1) << 15)
311*4882a593Smuzhiyun #define V_WIN0_CBR_AXI_GATHER_NUM(x)  (((x) & 7) << 12)
312*4882a593Smuzhiyun #define V_WIN0_YRGB_AXI_GATHER_NUM(x) (((x) & 0xf) << 8)
313*4882a593Smuzhiyun #define V_WIN0_VSD_CBR_GT2(x)         (((x) & 1) << 7)
314*4882a593Smuzhiyun #define V_WIN0_VSD_CBR_GT4(x)         (((x) & 1) << 6)
315*4882a593Smuzhiyun #define V_WIN0_VSD_YRGB_GT2(x)        (((x) & 1) << 5)
316*4882a593Smuzhiyun #define V_WIN0_VSD_YRGB_GT4(x)        (((x) & 1) << 4)
317*4882a593Smuzhiyun #define V_WIN0_BIC_COE_SEL(x)         (((x) & 3) << 2)
318*4882a593Smuzhiyun #define V_WIN0_CBR_AXI_GATHER_EN(x)   (((x) & 1) << 1)
319*4882a593Smuzhiyun #define V_WIN0_YRGB_AXI_GATHER_EN(x)  ((x) & 1)
320*4882a593Smuzhiyun 
321*4882a593Smuzhiyun /*VOP_WIN0_COLOR_KEY*/
322*4882a593Smuzhiyun #define M_WIN0_KEY_EN                 (1 << 31)
323*4882a593Smuzhiyun #define M_WIN0_KEY_COLOR              (0x3fffffff)
324*4882a593Smuzhiyun 
325*4882a593Smuzhiyun #define V_WIN0_KEY_EN(x)              (((x) & 1) << 31)
326*4882a593Smuzhiyun #define V_WIN0_KEY_COLOR(x)           ((x) & 0x3fffffff)
327*4882a593Smuzhiyun 
328*4882a593Smuzhiyun /* VOP_WIN0_VIR */
329*4882a593Smuzhiyun #define V_ARGB888_VIRWIDTH(x)	(((x) & 0x3fff) << 0)
330*4882a593Smuzhiyun #define V_RGB888_VIRWIDTH(x)	(((((x * 3) >> 2)+((x) % 3)) & 0x3fff) << 0)
331*4882a593Smuzhiyun #define V_RGB565_VIRWIDTH(x)	(((x / 2) & 0x3fff) << 0)
332*4882a593Smuzhiyun #define YUV_VIRWIDTH(x)		(((x / 4) & 0x3fff) << 0)
333*4882a593Smuzhiyun 
334*4882a593Smuzhiyun /* VOP_WIN0_ACT_INFO */
335*4882a593Smuzhiyun #define V_ACT_HEIGHT(x)         (((x) & 0x1fff) << 16)
336*4882a593Smuzhiyun #define V_ACT_WIDTH(x)          ((x) & 0x1fff)
337*4882a593Smuzhiyun 
338*4882a593Smuzhiyun /* VOP_WIN0_DSP_INFO */
339*4882a593Smuzhiyun #define V_DSP_HEIGHT(x)         (((x) & 0xfff) << 16)
340*4882a593Smuzhiyun #define V_DSP_WIDTH(x)          ((x) & 0xfff)
341*4882a593Smuzhiyun 
342*4882a593Smuzhiyun /* VOP_WIN0_DSP_ST */
343*4882a593Smuzhiyun #define V_DSP_YST(x)            (((x) & 0x1fff) << 16)
344*4882a593Smuzhiyun #define V_DSP_XST(x)            ((x) & 0x1fff)
345*4882a593Smuzhiyun 
346*4882a593Smuzhiyun /* VOP_WIN0_SCL_OFFSET */
347*4882a593Smuzhiyun #define V_WIN0_VS_OFFSET_CBR(x)     (((x) & 0xff) << 24)
348*4882a593Smuzhiyun #define V_WIN0_VS_OFFSET_YRGB(x)    (((x) & 0xff) << 16)
349*4882a593Smuzhiyun #define V_WIN0_HS_OFFSET_CBR(x)     (((x) & 0xff) << 8)
350*4882a593Smuzhiyun #define V_WIN0_HS_OFFSET_YRGB(x)    ((x) & 0xff)
351*4882a593Smuzhiyun 
352*4882a593Smuzhiyun #define V_HSYNC(x)		(((x)&0x1fff)<<0)   /* hsync pulse width */
353*4882a593Smuzhiyun #define V_HORPRD(x)		(((x)&0x1fff)<<16)   /* horizontal period */
354*4882a593Smuzhiyun #define V_VSYNC(x)		(((x)&0x1fff)<<0)
355*4882a593Smuzhiyun #define V_VERPRD(x)		(((x)&0x1fff)<<16)
356*4882a593Smuzhiyun 
357*4882a593Smuzhiyun #define V_HEAP(x)		(((x)&0x1fff)<<0)/* horizontal active end */
358*4882a593Smuzhiyun #define V_HASP(x)		(((x)&0x1fff)<<16)/* horizontal active start */
359*4882a593Smuzhiyun #define V_VAEP(x)		(((x)&0x1fff)<<0)
360*4882a593Smuzhiyun #define V_VASP(x)		(((x)&0x1fff)<<16)
361*4882a593Smuzhiyun 
362*4882a593Smuzhiyun #endif
363