4 #include<linux/rk_fb.h>
9 /*******************register definition**********************/
11 #define REG_CFG_DONE (0x0000)
12 #define VERSION_INFO (0x0004)
13 #define m_RTL_VERSION (0xffff<<0)
14 #define m_FPGA_VERSION (0xffff<<16)
15 #define SYS_CTRL (0x0008)
16 #define v_DIRECT_PATH_EN(x) (((x)&1)<<0)
17 #define v_DIRECT_PATCH_SEL(x) (((x)&3)<<1)
18 #define v_DOUB_CHANNEL_EN(x) (((x)&1)<<3)
19 #define v_DOUB_CH_OVERLAP_NUM(x) (((x)&0xf)<<4)
20 #define v_EDPI_HALT_EN(x) (((x)&1)<<8)
21 #define v_EDPI_WMS_MODE(x) (((x)&1)<<9)
22 #define v_EDPI_WMS_FS(x) (((x)&1)<<10)
23 #define v_RGB_OUT_EN(x) (((x)&1)<<12)
24 #define v_HDMI_OUT_EN(x) (((x)&1)<<13)
25 #define v_EDP_OUT_EN(x) (((x)&1)<<14)
26 #define v_MIPI_OUT_EN(x) (((x)&1)<<15)
27 #define v_DMA_BURST_LENGTH(x) (((x)&3)<<18)
28 #define v_MMU_EN(x) (((x)&1)<<20)
29 #define v_DMA_STOP(x) (((x)&1)<<21)
30 #define v_STANDBY_EN(x) (((x)&1)<<22)
31 #define v_AUTO_GATING_EN(x) (((x)&1)<<23)
33 #define m_DIRECT_PATH_EN (1<<0)
34 #define m_DIRECT_PATCH_SEL (3<<1)
35 #define m_DOUB_CHANNEL_EN (1<<3)
36 #define m_DOUB_CH_OVERLAP_NUM (0xf<<4)
37 #define m_EDPI_HALT_EN (1<<8)
38 #define m_EDPI_WMS_MODE (1<<9)
39 #define m_EDPI_WMS_FS (1<<10)
40 #define m_RGB_OUT_EN (1<<12)
41 #define m_HDMI_OUT_EN (1<<13)
42 #define m_EDP_OUT_EN (1<<14)
43 #define m_MIPI_OUT_EN (1<<15)
44 #define m_DMA_BURST_LENGTH (3<<18)
45 #define m_MMU_EN (1<<20)
46 #define m_DMA_STOP (1<<21)
47 #define m_STANDBY_EN (1<<22)
48 #define m_AUTO_GATING_EN (1<<23)
49 #define SYS_CTRL1 (0x000c)
50 #define v_NOC_HURRY_EN(x) (((x)&0x1 )<<0 )
51 #define v_NOC_HURRY_VALUE(x) (((x)&0x3 )<<1 )
52 #define v_NOC_HURRY_THRESHOLD(x) (((x)&0x3f)<<3 )
53 #define v_NOC_QOS_EN(x) (((x)&0x1 )<<9 )
54 #define v_NOC_WIN_QOS(x) (((x)&0x3 )<<10)
55 #define v_AXI_MAX_OUTSTANDING_EN(x) (((x)&0x1 )<<12)
56 #define v_AXI_OUTSTANDING_MAX_NUM(x) (((x)&0x1f)<<13)
58 #define m_NOC_HURRY_EN (0x1 <<0 )
59 #define m_NOC_HURRY_VALUE (0x3 <<1 )
60 #define m_NOC_HURRY_THRESHOLD (0x3f<<3 )
61 #define m_NOC_QOS_EN (0x1 <<9 )
62 #define m_NOC_WIN_QOS (0x3 <<10)
63 #define m_AXI_MAX_OUTSTANDING_EN (0x1 <<12)
64 #define m_AXI_OUTSTANDING_MAX_NUM (0x1f<<13)
66 #define DSP_CTRL0 (0x0010)
67 #define v_DSP_OUT_MODE(x) (((x)&0x0f)<<0)
68 #define v_DSP_HSYNC_POL(x) (((x)&1)<<4)
69 #define v_DSP_VSYNC_POL(x) (((x)&1)<<5)
70 #define v_DSP_DEN_POL(x) (((x)&1)<<6)
71 #define v_DSP_DCLK_POL(x) (((x)&1)<<7)
72 #define v_DSP_DCLK_DDR(x) (((x)&1)<<8)
73 #define v_DSP_DDR_PHASE(x) (((x)&1)<<9)
74 #define v_DSP_INTERLACE(x) (((x)&1)<<10)
75 #define v_DSP_FIELD_POL(x) (((x)&1)<<11)
76 #define v_DSP_BG_SWAP(x) (((x)&1)<<12)
77 #define v_DSP_RB_SWAP(x) (((x)&1)<<13)
78 #define v_DSP_RG_SWAP(x) (((x)&1)<<14)
79 #define v_DSP_DELTA_SWAP(x) (((x)&1)<<15)
80 #define v_DSP_DUMMY_SWAP(x) (((x)&1)<<16)
81 #define v_DSP_OUT_ZERO(x) (((x)&1)<<17)
82 #define v_DSP_BLANK_EN(x) (((x)&1)<<18)
83 #define v_DSP_BLACK_EN(x) (((x)&1)<<19)
84 #define v_DSP_CCIR656_AVG(x) (((x)&1)<<20)
85 #define v_DSP_YUV_CLIP(x) (((x)&1)<<21)
86 #define v_DSP_X_MIR_EN(x) (((x)&1)<<22)
87 #define v_DSP_Y_MIR_EN(x) (((x)&1)<<23)
88 #define m_DSP_OUT_MODE (0x0f<<0)
89 #define m_DSP_HSYNC_POL (1<<4)
90 #define m_DSP_VSYNC_POL (1<<5)
91 #define m_DSP_DEN_POL (1<<6)
92 #define m_DSP_DCLK_POL (1<<7)
93 #define m_DSP_DCLK_DDR (1<<8)
94 #define m_DSP_DDR_PHASE (1<<9)
95 #define m_DSP_INTERLACE (1<<10)
96 #define m_DSP_FIELD_POL (1<<11)
97 #define m_DSP_BG_SWAP (1<<12)
98 #define m_DSP_RB_SWAP (1<<13)
99 #define m_DSP_RG_SWAP (1<<14)
100 #define m_DSP_DELTA_SWAP (1<<15)
101 #define m_DSP_DUMMY_SWAP (1<<16)
102 #define m_DSP_OUT_ZERO (1<<17)
103 #define m_DSP_BLANK_EN (1<<18)
104 #define m_DSP_BLACK_EN (1<<19)
105 #define m_DSP_CCIR656_AVG (1<<20)
106 #define m_DSP_YUV_CLIP (1<<21)
107 #define m_DSP_X_MIR_EN (1<<22)
108 #define m_DSP_Y_MIR_EN (1<<23)
110 #define DSP_CTRL1 (0x0014)
111 #define v_DSP_LUT_EN(x) (((x)&1)<<0)
112 #define v_PRE_DITHER_DOWN_EN(x) (((x)&1)<<1)
113 #define v_DITHER_DOWN_EN(x) (((x)&1)<<2)
114 #define v_DITHER_DOWN_MODE(x) (((x)&1)<<3)
115 #define v_DITHER_DOWN_SEL(x) (((x)&1)<<4)
116 #define v_DITHER_UP_EN(x) (((x)&1)<<6)
117 #define v_DSP_LAYER0_SEL(x) (((x)&3)<<8)
118 #define v_DSP_LAYER1_SEL(x) (((x)&3)<<10)
119 #define v_DSP_LAYER2_SEL(x) (((x)&3)<<12)
120 #define v_DSP_LAYER3_SEL(x) (((x)&3)<<14)
121 #define m_DSP_LUT_EN (1<<0)
122 #define m_PRE_DITHER_DOWN_EN (1<<1)
123 #define m_DITHER_DOWN_EN (1<<2)
124 #define m_DITHER_DOWN_MODE (1<<3)
125 #define m_DITHER_DOWN_SEL (1<<4)
126 #define m_DITHER_UP_EN (1<<6)
127 #define m_DSP_LAYER0_SEL (3<<8)
128 #define m_DSP_LAYER1_SEL (3<<10)
129 #define m_DSP_LAYER2_SEL (3<<12)
130 #define m_DSP_LAYER3_SEL (3<<14)
132 #define DSP_BG (0x0018)
133 #define v_DSP_BG_BLUE(x) (((x<<2)&0x3ff)<<0)
134 #define v_DSP_BG_GREEN(x) (((x<<2)&0x3ff)<<10)
135 #define v_DSP_BG_RED(x) (((x<<2)&0x3ff)<<20)
136 #define m_DSP_BG_BLUE (0x3ff<<0)
137 #define m_DSP_BG_GREEN (0x3ff<<10)
138 #define m_DSP_BG_RED (0x3ff<<20)
140 #define MCU_CTRL (0x001c)
141 #define v_MCU_PIX_TOTAL(x) (((x)&0x3f)<<0)
142 #define v_MCU_CS_PST(x) (((x)&0xf)<<6)
143 #define v_MCU_CS_PEND(x) (((x)&0x3f)<<10)
144 #define v_MCU_RW_PST(x) (((x)&0xf)<<16)
145 #define v_MCU_RW_PEND(x) (((x)&0x3f)<<20)
146 #define v_MCU_CLK_SEL(x) (((x)&1)<<26)
147 #define v_MCU_HOLD_MODE(x) (((x)&1)<<27)
148 #define v_MCU_FRAME_ST(x) (((x)&1)<<28)
149 #define v_MCU_RS(x) (((x)&1)<<29)
150 #define v_MCU_BYPASS(x) (((x)&1)<<30)
151 #define v_MCU_TYPE(x) (((x)&1)<<31)
152 #define m_MCU_PIX_TOTAL (0x3f<<0)
153 #define m_MCU_CS_PST (0xf<<6)
154 #define m_MCU_CS_PEND (0x3f<<10)
155 #define m_MCU_RW_PST (0xf<<16)
156 #define m_MCU_RW_PEND (0x3f<<20)
157 #define m_MCU_CLK_SEL (1<<26)
158 #define m_MCU_HOLD_MODE (1<<27)
159 #define m_MCU_FRAME_ST (1<<28)
160 #define m_MCU_RS (1<<29)
161 #define m_MCU_BYPASS (1<<30)
162 #define m_MCU_TYPE ((u32)1<<31)
164 #define INTR_CTRL0 (0x0020)
165 #define v_DSP_HOLD_VALID_INTR_STS(x) (((x)&1)<<0)
166 #define v_FS_INTR_STS(x) (((x)&1)<<1)
167 #define v_LINE_FLAG_INTR_STS(x) (((x)&1)<<2)
168 #define v_BUS_ERROR_INTR_STS(x) (((x)&1)<<3)
169 #define v_DSP_HOLD_VALID_INTR_EN(x) (((x)&1)<<4)
170 #define v_FS_INTR_EN(x) (((x)&1)<<5)
171 #define v_LINE_FLAG_INTR_EN(x) (((x)&1)<<6)
172 #define v_BUS_ERROR_INTR_EN(x) (((x)&1)<<7)
173 #define v_DSP_HOLD_VALID_INTR_CLR(x) (((x)&1)<<8)
174 #define v_FS_INTR_CLR(x) (((x)&1)<<9)
175 #define v_LINE_FLAG_INTR_CLR(x) (((x)&1)<<10)
176 #define v_BUS_ERROR_INTR_CLR(x) (((x)&1)<<11)
177 #define v_DSP_LINE_FLAG_NUM(x) (((x)&0xfff)<<12)
179 #define m_DSP_HOLD_VALID_INTR_STS (1<<0)
180 #define m_FS_INTR_STS (1<<1)
181 #define m_LINE_FLAG_INTR_STS (1<<2)
182 #define m_BUS_ERROR_INTR_STS (1<<3)
183 #define m_DSP_HOLD_VALID_INTR_EN (1<<4)
184 #define m_FS_INTR_EN (1<<5)
185 #define m_LINE_FLAG_INTR_EN (1<<6)
186 #define m_BUS_ERROR_INTR_EN (1<<7)
187 #define m_DSP_HOLD_VALID_INTR_CLR (1<<8)
188 #define m_FS_INTR_CLR (1<<9)
189 #define m_LINE_FLAG_INTR_CLR (1<<10)
190 #define m_BUS_ERROR_INTR_CLR (1<<11)
191 #define m_DSP_LINE_FLAG_NUM (0xfff<<12)
193 #define INTR_CTRL1 (0x0024)
194 #define v_WIN0_EMPTY_INTR_STS(x) (((x)&1)<<0)
195 #define v_WIN1_EMPTY_INTR_STS(x) (((x)&1)<<1)
196 #define v_WIN2_EMPTY_INTR_STS(x) (((x)&1)<<2)
197 #define v_WIN3_EMPTY_INTR_STS(x) (((x)&1)<<3)
198 #define v_HWC_EMPTY_INTR_STS(x) (((x)&1)<<4)
199 #define v_POST_BUF_EMPTY_INTR_STS(x) (((x)&1)<<5)
200 #define v_PWM_GEN_INTR_STS(x) (((x)&1)<<6)
201 #define v_WIN0_EMPTY_INTR_EN(x) (((x)&1)<<8)
202 #define v_WIN1_EMPTY_INTR_EN(x) (((x)&1)<<9)
203 #define v_WIN2_EMPTY_INTR_EN(x) (((x)&1)<<10)
204 #define v_WIN3_EMPTY_INTR_EN(x) (((x)&1)<<11)
205 #define v_HWC_EMPTY_INTR_EN(x) (((x)&1)<<12)
206 #define v_POST_BUF_EMPTY_INTR_EN(x) (((x)&1)<<13)
207 #define v_PWM_GEN_INTR_EN(x) (((x)&1)<<14)
208 #define v_WIN0_EMPTY_INTR_CLR(x) (((x)&1)<<16)
209 #define v_WIN1_EMPTY_INTR_CLR(x) (((x)&1)<<17)
210 #define v_WIN2_EMPTY_INTR_CLR(x) (((x)&1)<<18)
211 #define v_WIN3_EMPTY_INTR_CLR(x) (((x)&1)<<19)
212 #define v_HWC_EMPTY_INTR_CLR(x) (((x)&1)<<20)
213 #define v_POST_BUF_EMPTY_INTR_CLR(x) (((x)&1)<<21)
214 #define v_PWM_GEN_INTR_CLR(x) (((x)&1)<<22)
216 #define m_WIN0_EMPTY_INTR_STS (1<<0)
217 #define m_WIN1_EMPTY_INTR_STS (1<<1)
218 #define m_WIN2_EMPTY_INTR_STS (1<<2)
219 #define m_WIN3_EMPTY_INTR_STS (1<<3)
220 #define m_HWC_EMPTY_INTR_STS (1<<4)
221 #define m_POST_BUF_EMPTY_INTR_STS (1<<5)
222 #define m_PWM_GEN_INTR_STS (1<<6)
223 #define m_WIN0_EMPTY_INTR_EN (1<<8)
224 #define m_WIN1_EMPTY_INTR_EN (1<<9)
225 #define m_WIN2_EMPTY_INTR_EN (1<<10)
226 #define m_WIN3_EMPTY_INTR_EN (1<<11)
227 #define m_HWC_EMPTY_INTR_EN (1<<12)
228 #define m_POST_BUF_EMPTY_INTR_EN (1<<13)
229 #define m_PWM_GEN_INTR_EN (1<<14)
230 #define m_WIN0_EMPTY_INTR_CLR (1<<16)
231 #define m_WIN1_EMPTY_INTR_CLR (1<<17)
232 #define m_WIN2_EMPTY_INTR_CLR (1<<18)
233 #define m_WIN3_EMPTY_INTR_CLR (1<<19)
234 #define m_HWC_EMPTY_INTR_CLR (1<<20)
235 #define m_POST_BUF_EMPTY_INTR_CLR (1<<21)
236 #define m_PWM_GEN_INTR_CLR (1<<22)
239 #define WIN0_CTRL0 (0x0030)
240 #define v_WIN0_EN(x) (((x)&1)<<0)
241 #define v_WIN0_DATA_FMT(x) (((x)&7)<<1)
242 #define v_WIN0_FMT_10(x) (((x)&1)<<4)
243 #define v_WIN0_LB_MODE(x) (((x)&7)<<5)
244 #define v_WIN0_INTERLACE_READ(x) (((x)&1)<<8)
245 #define v_WIN0_NO_OUTSTANDING(x) (((x)&1)<<9)
246 #define v_WIN0_CSC_MODE(x) (((x)&3)<<10)
247 #define v_WIN0_RB_SWAP(x) (((x)&1)<<12)
248 #define v_WIN0_ALPHA_SWAP(x) (((x)&1)<<13)
249 #define v_WIN0_MID_SWAP(x) (((x)&1)<<14)
250 #define v_WIN0_UV_SWAP(x) (((x)&1)<<15)
251 #define v_WIN0_PPAS_ZERO_EN(x) (((x)&1)<<16)
252 #define v_WIN0_YRGB_DEFLICK(x) (((x)&1)<<18)
253 #define v_WIN0_CBR_DEFLICK(x) (((x)&1)<<19)
254 #define v_WIN0_YUV_CLIP(x) (((x)&1)<<20)
256 #define m_WIN0_EN (1<<0)
257 #define m_WIN0_DATA_FMT (7<<1)
258 #define m_WIN0_FMT_10 (1<<4)
259 #define m_WIN0_LB_MODE (7<<5)
260 #define m_WIN0_INTERLACE_READ (1<<8)
261 #define m_WIN0_NO_OUTSTANDING (1<<9)
262 #define m_WIN0_CSC_MODE (3<<10)
263 #define m_WIN0_RB_SWAP (1<<12)
264 #define m_WIN0_ALPHA_SWAP (1<<13)
265 #define m_WIN0_MID_SWAP (1<<14)
266 #define m_WIN0_UV_SWAP (1<<15)
267 #define m_WIN0_PPAS_ZERO_EN (1<<16)
268 #define m_WIN0_YRGB_DEFLICK (1<<18)
269 #define m_WIN0_CBR_DEFLICK (1<<19)
270 #define m_WIN0_YUV_CLIP (1<<20)
272 #define WIN0_CTRL1 (0x0034)
273 #define v_WIN0_YRGB_AXI_GATHER_EN(x) (((x)&1)<<0)
274 #define v_WIN0_CBR_AXI_GATHER_EN(x) (((x)&1)<<1)
275 #define v_WIN0_BIC_COE_SEL(x) (((x)&3)<<2)
276 #define v_WIN0_VSD_YRGB_GT4(x) (((x)&1)<<4)
277 #define v_WIN0_VSD_YRGB_GT2(x) (((x)&1)<<5)
278 #define v_WIN0_VSD_CBR_GT4(x) (((x)&1)<<6)
279 #define v_WIN0_VSD_CBR_GT2(x) (((x)&1)<<7)
280 #define v_WIN0_YRGB_AXI_GATHER_NUM(x) (((x)&0xf)<<8)
281 #define v_WIN0_CBR_AXI_GATHER_NUM(x) (((x)&7)<<12)
282 #define v_WIN0_LINE_LOAD_MODE(x) (((x)&1)<<15)
283 #define v_WIN0_YRGB_HOR_SCL_MODE(x) (((x)&3)<<16)
284 #define v_WIN0_YRGB_VER_SCL_MODE(x) (((x)&3)<<18)
285 #define v_WIN0_YRGB_HSD_MODE(x) (((x)&3)<<20)
286 #define v_WIN0_YRGB_VSU_MODE(x) (((x)&1)<<22)
287 #define v_WIN0_YRGB_VSD_MODE(x) (((x)&1)<<23)
288 #define v_WIN0_CBR_HOR_SCL_MODE(x) (((x)&3)<<24)
289 #define v_WIN0_CBR_VER_SCL_MODE(x) (((x)&3)<<26)
290 #define v_WIN0_CBR_HSD_MODE(x) (((x)&3)<<28)
291 #define v_WIN0_CBR_VSU_MODE(x) (((x)&1)<<30)
292 #define v_WIN0_CBR_VSD_MODE(x) (((x)&1)<<31)
294 #define m_WIN0_YRGB_AXI_GATHER_EN (1<<0)
295 #define m_WIN0_CBR_AXI_GATHER_EN (1<<1)
296 #define m_WIN0_BIC_COE_SEL (3<<2)
297 #define m_WIN0_VSD_YRGB_GT4 (1<<4)
298 #define m_WIN0_VSD_YRGB_GT2 (1<<5)
299 #define m_WIN0_VSD_CBR_GT4 (1<<6)
300 #define m_WIN0_VSD_CBR_GT2 (1<<7)
301 #define m_WIN0_YRGB_AXI_GATHER_NUM (0xf<<8)
302 #define m_WIN0_CBR_AXI_GATHER_NUM (7<<12)
303 #define m_WIN0_LINE_LOAD_MODE (1<<15)
304 #define m_WIN0_YRGB_HOR_SCL_MODE (3<<16)
305 #define m_WIN0_YRGB_VER_SCL_MODE (3<<18)
306 #define m_WIN0_YRGB_HSD_MODE (3<<20)
307 #define m_WIN0_YRGB_VSU_MODE (1<<22)
308 #define m_WIN0_YRGB_VSD_MODE (1<<23)
309 #define m_WIN0_CBR_HOR_SCL_MODE (3<<24)
310 #define m_WIN0_CBR_VER_SCL_MODE (3<<26)
311 #define m_WIN0_CBR_HSD_MODE (3<<28)
312 #define m_WIN0_CBR_VSU_MODE ((u32)1<<30)
313 #define m_WIN0_CBR_VSD_MODE ((u32)1<<31)
315 #define WIN0_COLOR_KEY (0x0038)
316 #define v_WIN0_COLOR_KEY(x) (((x)&0x3fffffff)<<0)
317 #define v_WIN0_COLOR_KEY_EN(x) (((x)&1)<<31)
318 #define m_WIN0_COLOR_KEY (0x3fffffff<<0)
319 #define m_WIN0_COLOR_KEY_EN ((u32)1<<31)
321 #define WIN0_VIR (0x003c)
322 #define v_WIN0_VIR_STRIDE(x) (((x)&0x3fff)<<0)
323 #define v_WIN0_VIR_STRIDE_UV(x) (((x)&0x3fff)<<16)
324 #define m_WIN0_VIR_STRIDE (0x3fff<<0)
325 #define m_WIN0_VIR_STRIDE_UV (0x3fff<<16)
327 #define WIN0_YRGB_MST (0x0040)
328 #define WIN0_CBR_MST (0x0044)
329 #define WIN0_ACT_INFO (0x0048)
330 #define v_WIN0_ACT_WIDTH(x) (((x-1)&0x1fff)<<0)
331 #define v_WIN0_ACT_HEIGHT(x) (((x-1)&0x1fff)<<16)
332 #define m_WIN0_ACT_WIDTH (0x1fff<<0)
333 #define m_WIN0_ACT_HEIGHT (0x1fff<<16)
335 #define WIN0_DSP_INFO (0x004c)
336 #define v_WIN0_DSP_WIDTH(x) (((x-1)&0xfff)<<0)
337 #define v_WIN0_DSP_HEIGHT(x) (((x-1)&0xfff)<<16)
338 #define m_WIN0_DSP_WIDTH (0xfff<<0)
339 #define m_WIN0_DSP_HEIGHT (0xfff<<16)
341 #define WIN0_DSP_ST (0x0050)
342 #define v_WIN0_DSP_XST(x) (((x)&0x1fff)<<0)
343 #define v_WIN0_DSP_YST(x) (((x)&0x1fff)<<16)
344 #define m_WIN0_DSP_XST (0x1fff<<0)
345 #define m_WIN0_DSP_YST (0x1fff<<16)
347 #define WIN0_SCL_FACTOR_YRGB (0x0054)
348 #define v_WIN0_HS_FACTOR_YRGB(x) (((x)&0xffff)<<0)
349 #define v_WIN0_VS_FACTOR_YRGB(x) (((x)&0xffff)<<16)
350 #define m_WIN0_HS_FACTOR_YRGB (0xffff<<0)
351 #define m_WIN0_VS_FACTOR_YRGB ((u32)0xffff<<16)
353 #define WIN0_SCL_FACTOR_CBR (0x0058)
354 #define v_WIN0_HS_FACTOR_CBR(x) (((x)&0xffff)<<0)
355 #define v_WIN0_VS_FACTOR_CBR(x) (((x)&0xffff)<<16)
356 #define m_WIN0_HS_FACTOR_CBR (0xffff<<0)
357 #define m_WIN0_VS_FACTOR_CBR ((u32)0xffff<<16)
359 #define WIN0_SCL_OFFSET (0x005c)
360 #define v_WIN0_HS_OFFSET_YRGB(x) (((x)&0xff)<<0)
361 #define v_WIN0_HS_OFFSET_CBR(x) (((x)&0xff)<<8)
362 #define v_WIN0_VS_OFFSET_YRGB(x) (((x)&0xff)<<16)
363 #define v_WIN0_VS_OFFSET_CBR(x) (((x)&0xff)<<24)
365 #define m_WIN0_HS_OFFSET_YRGB (0xff<<0)
366 #define m_WIN0_HS_OFFSET_CBR (0xff<<8)
367 #define m_WIN0_VS_OFFSET_YRGB (0xff<<16)
368 #define m_WIN0_VS_OFFSET_CBR ((u32)0xff<<24)
370 #define WIN0_SRC_ALPHA_CTRL (0x0060)
371 #define v_WIN0_SRC_ALPHA_EN(x) (((x)&1)<<0)
372 #define v_WIN0_SRC_COLOR_M0(x) (((x)&1)<<1)
373 #define v_WIN0_SRC_ALPHA_M0(x) (((x)&1)<<2)
374 #define v_WIN0_SRC_BLEND_M0(x) (((x)&3)<<3)
375 #define v_WIN0_SRC_ALPHA_CAL_M0(x) (((x)&1)<<5)
376 #define v_WIN0_SRC_FACTOR_M0(x) (((x)&7)<<6)
377 #define v_WIN0_SRC_GLOBAL_ALPHA(x) (((x)&0xff)<<16)
378 #define v_WIN0_FADING_VALUE(x) (((x)&0xff)<<24)
380 #define m_WIN0_SRC_ALPHA_EN (1<<0)
381 #define m_WIN0_SRC_COLOR_M0 (1<<1)
382 #define m_WIN0_SRC_ALPHA_M0 (1<<2)
383 #define m_WIN0_SRC_BLEND_M0 (3<<3)
384 #define m_WIN0_SRC_ALPHA_CAL_M0 (1<<5)
385 #define m_WIN0_SRC_FACTOR_M0 (7<<6)
386 #define m_WIN0_SRC_GLOBAL_ALPHA (0xff<<16)
387 #define m_WIN0_FADING_VALUE (0xff<<24)
389 #define WIN0_DST_ALPHA_CTRL (0x0064)
390 #define v_WIN0_DST_FACTOR_M0(x) (((x)&7)<<6)
391 #define m_WIN0_DST_FACTOR_M0 (7<<6)
393 #define WIN0_FADING_CTRL (0x0068)
394 #define v_WIN0_FADING_OFFSET_R(x) (((x)&0xff)<<0)
395 #define v_WIN0_FADING_OFFSET_G(x) (((x)&0xff)<<8)
396 #define v_WIN0_FADING_OFFSET_B(x) (((x)&0xff)<<16)
397 #define v_WIN0_FADING_EN(x) (((x)&1)<<24)
399 #define m_WIN0_FADING_OFFSET_R (0xff<<0)
400 #define m_WIN0_FADING_OFFSET_G (0xff<<8)
401 #define m_WIN0_FADING_OFFSET_B (0xff<<16)
402 #define m_WIN0_FADING_EN (1<<24)
405 #define WIN1_CTRL0 (0x0070)
406 #define v_WIN1_EN(x) (((x)&1)<<0)
407 #define v_WIN1_DATA_FMT(x) (((x)&7)<<1)
408 #define v_WIN1_FMT_10(x) (((x)&1)<<4)
409 #define v_WIN1_LB_MODE(x) (((x)&7)<<5)
410 #define v_WIN1_INTERLACE_READ_MODE(x) (((x)&1)<<8)
411 #define v_WIN1_NO_OUTSTANDING(x) (((x)&1)<<9)
412 #define v_WIN1_CSC_MODE(x) (((x)&3)<<10)
413 #define v_WIN1_RB_SWAP(x) (((x)&1)<<12)
414 #define v_WIN1_ALPHA_SWAP(x) (((x)&1)<<13)
415 #define v_WIN1_MID_SWAP(x) (((x)&1)<<14)
416 #define v_WIN1_UV_SWAP(x) (((x)&1)<<15)
417 #define v_WIN1_PPAS_ZERO_EN(x) (((x)&1)<<16)
418 #define v_WIN1_YRGB_DEFLICK(x) (((x)&1)<<18)
419 #define v_WIN1_CBR_DEFLICK(x) (((x)&1)<<19)
420 #define v_WIN1_YUV_CLIP(x) (((x)&1)<<20)
422 #define m_WIN1_EN (1<<0)
423 #define m_WIN1_DATA_FMT (7<<1)
424 #define m_WIN1_FMT_10 (1<<4)
425 #define m_WIN1_LB_MODE (7<<5)
426 #define m_WIN1_INTERLACE_READ_MODE (1<<8)
427 #define m_WIN1_NO_OUTSTANDING (1<<9)
428 #define m_WIN1_CSC_MODE (3<<10)
429 #define m_WIN1_RB_SWAP (1<<12)
430 #define m_WIN1_ALPHA_SWAP (1<<13)
431 #define m_WIN1_MID_SWAP (1<<14)
432 #define m_WIN1_UV_SWAP (1<<15)
433 #define m_WIN1_PPAS_ZERO_EN (1<<16)
434 #define m_WIN1_YRGB_DEFLICK (1<<18)
435 #define m_WIN1_CBR_DEFLICK (1<<19)
436 #define m_WIN1_YUV_CLIP (1<<20)
438 #define WIN1_CTRL1 (0x0074)
439 #define v_WIN1_YRGB_AXI_GATHER_EN(x) (((x)&1)<<0)
440 #define v_WIN1_CBR_AXI_GATHER_EN(x) (((x)&1)<<1)
441 #define v_WIN1_BIC_COE_SEL(x) (((x)&3)<<2)
442 #define v_WIN1_VSD_YRGB_GT4(x) (((x)&1)<<4)
443 #define v_WIN1_VSD_YRGB_GT2(x) (((x)&1)<<5)
444 #define v_WIN1_VSD_CBR_GT4(x) (((x)&1)<<6)
445 #define v_WIN1_VSD_CBR_GT2(x) (((x)&1)<<7)
446 #define v_WIN1_YRGB_AXI_GATHER_NUM(x) (((x)&0xf)<<8)
447 #define v_WIN1_CBR_AXI_GATHER_NUM(x) (((x)&7)<<12)
448 #define v_WIN1_LINE_LOAD_MODE(x) (((x)&1)<<15)
449 #define v_WIN1_YRGB_HOR_SCL_MODE(x) (((x)&3)<<16)
450 #define v_WIN1_YRGB_VER_SCL_MODE(x) (((x)&3)<<18)
451 #define v_WIN1_YRGB_HSD_MODE(x) (((x)&3)<<20)
452 #define v_WIN1_YRGB_VSU_MODE(x) (((x)&1)<<22)
453 #define v_WIN1_YRGB_VSD_MODE(x) (((x)&1)<<23)
454 #define v_WIN1_CBR_HOR_SCL_MODE(x) (((x)&3)<<24)
455 #define v_WIN1_CBR_VER_SCL_MODE(x) (((x)&3)<<26)
456 #define v_WIN1_CBR_HSD_MODE(x) (((x)&3)<<28)
457 #define v_WIN1_CBR_VSU_MODE(x) (((x)&1)<<30)
458 #define v_WIN1_CBR_VSD_MODE(x) (((x)&1)<<31)
460 #define m_WIN1_YRGB_AXI_GATHER_EN (1<<0)
461 #define m_WIN1_CBR_AXI_GATHER_EN (1<<1)
462 #define m_WIN1_BIC_COE_SEL (3<<2)
463 #define m_WIN1_VSD_YRGB_GT4 (1<<4)
464 #define m_WIN1_VSD_YRGB_GT2 (1<<5)
465 #define m_WIN1_VSD_CBR_GT4 (1<<6)
466 #define m_WIN1_VSD_CBR_GT2 (1<<7)
467 #define m_WIN1_YRGB_AXI_GATHER_NUM (0xf<<8)
468 #define m_WIN1_CBR_AXI_GATHER_NUM (7<<12)
469 #define m_WIN1_LINE_LOAD_MODE (1<<15)
470 #define m_WIN1_YRGB_HOR_SCL_MODE (3<<16)
471 #define m_WIN1_YRGB_VER_SCL_MODE (3<<18)
472 #define m_WIN1_YRGB_HSD_MODE (3<<20)
473 #define m_WIN1_YRGB_VSU_MODE (1<<22)
474 #define m_WIN1_YRGB_VSD_MODE (1<<23)
475 #define m_WIN1_CBR_HOR_SCL_MODE (3<<24)
476 #define m_WIN1_CBR_VER_SCL_MODE (3<<26)
477 #define m_WIN1_CBR_HSD_MODE (3<<28)
478 #define m_WIN1_CBR_VSU_MODE (1<<30)
479 #define m_WIN1_CBR_VSD_MODE ((u32)1<<31)
481 #define WIN1_COLOR_KEY (0x0078)
482 #define v_WIN1_COLOR_KEY(x) (((x)&0x3fffffff)<<0)
483 #define v_WIN1_COLOR_KEY_EN(x) (((x)&1)<<31)
484 #define m_WIN1_COLOR_KEY (0x3fffffff<<0)
485 #define m_WIN1_COLOR_KEY_EN ((u32)1<<31)
487 #define WIN1_VIR (0x007c)
488 #define v_WIN1_VIR_STRIDE(x) (((x)&0x3fff)<<0)
489 #define v_WIN1_VIR_STRIDE_UV(x) (((x)&0x3fff)<<16)
490 #define m_WIN1_VIR_STRIDE (0x3fff<<0)
491 #define m_WIN1_VIR_STRIDE_UV (0x3fff<<16)
493 #define WIN1_YRGB_MST (0x0080)
494 #define WIN1_CBR_MST (0x0084)
495 #define WIN1_ACT_INFO (0x0088)
496 #define v_WIN1_ACT_WIDTH(x) (((x-1)&0x1fff)<<0)
497 #define v_WIN1_ACT_HEIGHT(x) (((x-1)&0x1fff)<<16)
498 #define m_WIN1_ACT_WIDTH (0x1fff<<0)
499 #define m_WIN1_ACT_HEIGHT (0x1fff<<16)
501 #define WIN1_DSP_INFO (0x008c)
502 #define v_WIN1_DSP_WIDTH(x) (((x-1)&0xfff)<<0)
503 #define v_WIN1_DSP_HEIGHT(x) (((x-1)&0xfff)<<16)
504 #define m_WIN1_DSP_WIDTH (0xfff<<0)
505 #define m_WIN1_DSP_HEIGHT (0xfff<<16)
507 #define WIN1_DSP_ST (0x0090)
508 #define v_WIN1_DSP_XST(x) (((x)&0x1fff)<<0)
509 #define v_WIN1_DSP_YST(x) (((x)&0x1fff)<<16)
510 #define m_WIN1_DSP_XST (0x1fff<<0)
511 #define m_WIN1_DSP_YST (0x1fff<<16)
513 #define WIN1_SCL_FACTOR_YRGB (0x0094)
514 #define v_WIN1_HS_FACTOR_YRGB(x) (((x)&0xffff)<<0)
515 #define v_WIN1_VS_FACTOR_YRGB(x) (((x)&0xffff)<<16)
516 #define m_WIN1_HS_FACTOR_YRGB (0xffff<<0)
517 #define m_WIN1_VS_FACTOR_YRGB ((u32)0xffff<<16)
519 #define WIN1_SCL_FACTOR_CBR (0x0098)
520 #define v_WIN1_HS_FACTOR_CBR(x) (((x)&0xffff)<<0)
521 #define v_WIN1_VS_FACTOR_CBR(x) (((x)&0xffff)<<16)
522 #define m_WIN1_HS_FACTOR_CBR (0xffff<<0)
523 #define m_WIN1_VS_FACTOR_CBR ((u32)0xffff<<16)
525 #define WIN1_SCL_OFFSET (0x009c)
526 #define v_WIN1_HS_OFFSET_YRGB(x) (((x)&0xff)<<0)
527 #define v_WIN1_HS_OFFSET_CBR(x) (((x)&0xff)<<8)
528 #define v_WIN1_VS_OFFSET_YRGB(x) (((x)&0xff)<<16)
529 #define v_WIN1_VS_OFFSET_CBR(x) (((x)&0xff)<<24)
531 #define m_WIN1_HS_OFFSET_YRGB (0xff<<0)
532 #define m_WIN1_HS_OFFSET_CBR (0xff<<8)
533 #define m_WIN1_VS_OFFSET_YRGB (0xff<<16)
534 #define m_WIN1_VS_OFFSET_CBR ((u32)0xff<<24)
536 #define WIN1_SRC_ALPHA_CTRL (0x00a0)
537 #define v_WIN1_SRC_ALPHA_EN(x) (((x)&1)<<0)
538 #define v_WIN1_SRC_COLOR_M0(x) (((x)&1)<<1)
539 #define v_WIN1_SRC_ALPHA_M0(x) (((x)&1)<<2)
540 #define v_WIN1_SRC_BLEND_M0(x) (((x)&3)<<3)
541 #define v_WIN1_SRC_ALPHA_CAL_M0(x) (((x)&1)<<5)
542 #define v_WIN1_SRC_FACTOR_M0(x) (((x)&7)<<6)
543 #define v_WIN1_SRC_GLOBAL_ALPHA(x) (((x)&0xff)<<16)
544 #define v_WIN1_FADING_VALUE(x) (((x)&0xff)<<24)
546 #define m_WIN1_SRC_ALPHA_EN (1<<0)
547 #define m_WIN1_SRC_COLOR_M0 (1<<1)
548 #define m_WIN1_SRC_ALPHA_M0 (1<<2)
549 #define m_WIN1_SRC_BLEND_M0 (3<<3)
550 #define m_WIN1_SRC_ALPHA_CAL_M0 (1<<5)
551 #define m_WIN1_SRC_FACTOR_M0 (7<<6)
552 #define m_WIN1_SRC_GLOBAL_ALPHA (0xff<<16)
553 #define m_WIN1_FADING_VALUE (0xff<<24)
555 #define WIN1_DST_ALPHA_CTRL (0x00a4)
556 #define v_WIN1_DST_FACTOR_M0(x) (((x)&7)<<6)
557 #define m_WIN1_DST_FACTOR_M0 (7<<6)
559 #define WIN1_FADING_CTRL (0x00a8)
560 #define v_WIN1_FADING_OFFSET_R(x) (((x)&0xff)<<0)
561 #define v_WIN1_FADING_OFFSET_G(x) (((x)&0xff)<<8)
562 #define v_WIN1_FADING_OFFSET_B(x) (((x)&0xff)<<16)
563 #define v_WIN1_FADING_EN(x) (((x)&1)<<24)
565 #define m_WIN1_FADING_OFFSET_R (0xff<<0)
566 #define m_WIN1_FADING_OFFSET_G (0xff<<8)
567 #define m_WIN1_FADING_OFFSET_B (0xff<<16)
568 #define m_WIN1_FADING_EN (1<<24)
571 #define WIN2_CTRL0 (0x00b0)
572 #define v_WIN2_EN(x) (((x)&1)<<0)
573 #define v_WIN2_DATA_FMT(x) (((x)&7)<<1)
574 #define v_WIN2_MST0_EN(x) (((x)&1)<<4)
575 #define v_WIN2_MST1_EN(x) (((x)&1)<<5)
576 #define v_WIN2_MST2_EN(x) (((x)&1)<<6)
577 #define v_WIN2_MST3_EN(x) (((x)&1)<<7)
578 #define v_WIN2_INTERLACE_READ(x) (((x)&1)<<8)
579 #define v_WIN2_NO_OUTSTANDING(x) (((x)&1)<<9)
580 #define v_WIN2_CSC_MODE(x) (((x)&1)<<10)
581 #define v_WIN2_RB_SWAP(x) (((x)&1)<<12)
582 #define v_WIN2_ALPHA_SWAP(x) (((x)&1)<<13)
583 #define v_WIN2_ENDIAN_MODE(x) (((x)&1)<<14)
584 #define v_WIN2_LUT_EN(x) (((x)&1)<<18)
586 #define m_WIN2_EN (1<<0)
587 #define m_WIN2_DATA_FMT (7<<1)
588 #define m_WIN2_MST0_EN (1<<4)
589 #define m_WIN2_MST1_EN (1<<5)
590 #define m_WIN2_MST2_EN (1<<6)
591 #define m_WIN2_MST3_EN (1<<7)
592 #define m_WIN2_INTERLACE_READ (1<<8)
593 #define m_WIN2_NO_OUTSTANDING (1<<9)
594 #define m_WIN2_CSC_MODE (1<<10)
595 #define m_WIN2_RB_SWAP (1<<12)
596 #define m_WIN2_ALPHA_SWAP (1<<13)
597 #define m_WIN2_ENDIAN_MODE (1<<14)
598 #define m_WIN2_LUT_EN (1<<18)
600 #define WIN2_CTRL1 (0x00b4)
601 #define v_WIN2_AXI_GATHER_EN(x) (((x)&1)<<0)
602 #define v_WIN2_AXI_GATHER_NUM(x) (((x)&0xf)<<4)
603 #define m_WIN2_AXI_GATHER_EN (1<<0)
604 #define m_WIN2_AXI_GATHER_NUM (0xf<<4)
606 #define WIN2_VIR0_1 (0x00b8)
607 #define v_WIN2_VIR_STRIDE0(x) (((x)&0x1fff)<<0)
608 #define v_WIN2_VIR_STRIDE1(x) (((x)&0x1fff)<<16)
609 #define m_WIN2_VIR_STRIDE0 (0x1fff<<0)
610 #define m_WIN2_VIR_STRIDE1 (0x1fff<<16)
612 #define WIN2_VIR2_3 (0x00bc)
613 #define v_WIN2_VIR_STRIDE2(x) (((x)&0x1fff)<<0)
614 #define v_WIN2_VIR_STRIDE3(x) (((x)&0x1fff)<<16)
615 #define m_WIN2_VIR_STRIDE2 (0x1fff<<0)
616 #define m_WIN2_VIR_STRIDE3 (0x1fff<<16)
618 #define WIN2_MST0 (0x00c0)
619 #define WIN2_DSP_INFO0 (0x00c4)
620 #define v_WIN2_DSP_WIDTH0(x) (((x-1)&0xfff)<<0)
621 #define v_WIN2_DSP_HEIGHT0(x) (((x-1)&0xfff)<<16)
622 #define m_WIN2_DSP_WIDTH0 (0xfff<<0)
623 #define m_WIN2_DSP_HEIGHT0 (0xfff<<16)
625 #define WIN2_DSP_ST0 (0x00c8)
626 #define v_WIN2_DSP_XST0(x) (((x)&0x1fff)<<0)
627 #define v_WIN2_DSP_YST0(x) (((x)&0x1fff)<<16)
628 #define m_WIN2_DSP_XST0 (0x1fff<<0)
629 #define m_WIN2_DSP_YST0 (0x1fff<<16)
631 #define WIN2_COLOR_KEY (0x00cc)
632 #define v_WIN2_COLOR_KEY(x) (((x)&0xffffff)<<0)
633 #define v_WIN2_KEY_EN(x) (((x)&1)<<24)
634 #define m_WIN2_COLOR_KEY (0xffffff<<0)
635 #define m_WIN2_KEY_EN ((u32)1<<24)
638 #define WIN2_MST1 (0x00d0)
639 #define WIN2_DSP_INFO1 (0x00d4)
640 #define v_WIN2_DSP_WIDTH1(x) (((x-1)&0xfff)<<0)
641 #define v_WIN2_DSP_HEIGHT1(x) (((x-1)&0xfff)<<16)
643 #define m_WIN2_DSP_WIDTH1 (0xfff<<0)
644 #define m_WIN2_DSP_HEIGHT1 (0xfff<<16)
646 #define WIN2_DSP_ST1 (0x00d8)
647 #define v_WIN2_DSP_XST1(x) (((x)&0x1fff)<<0)
648 #define v_WIN2_DSP_YST1(x) (((x)&0x1fff)<<16)
650 #define m_WIN2_DSP_XST1 (0x1fff<<0)
651 #define m_WIN2_DSP_YST1 (0x1fff<<16)
653 #define WIN2_SRC_ALPHA_CTRL (0x00dc)
654 #define v_WIN2_SRC_ALPHA_EN(x) (((x)&1)<<0)
655 #define v_WIN2_SRC_COLOR_M0(x) (((x)&1)<<1)
656 #define v_WIN2_SRC_ALPHA_M0(x) (((x)&1)<<2)
657 #define v_WIN2_SRC_BLEND_M0(x) (((x)&3)<<3)
658 #define v_WIN2_SRC_ALPHA_CAL_M0(x) (((x)&1)<<5)
659 #define v_WIN2_SRC_FACTOR_M0(x) (((x)&7)<<6)
660 #define v_WIN2_SRC_GLOBAL_ALPHA(x) (((x)&0xff)<<16)
661 #define v_WIN2_FADING_VALUE(x) (((x)&0xff)<<24)
664 #define m_WIN2_SRC_ALPHA_EN (1<<0)
665 #define m_WIN2_SRC_COLOR_M0 (1<<1)
666 #define m_WIN2_SRC_ALPHA_M0 (1<<2)
667 #define m_WIN2_SRC_BLEND_M0 (3<<3)
668 #define m_WIN2_SRC_ALPHA_CAL_M0 (1<<5)
669 #define m_WIN2_SRC_FACTOR_M0 (7<<6)
670 #define m_WIN2_SRC_GLOBAL_ALPHA (0xff<<16)
671 #define m_WIN2_FADING_VALUE (0xff<<24)
673 #define WIN2_MST2 (0x00e0)
674 #define WIN2_DSP_INFO2 (0x00e4)
675 #define v_WIN2_DSP_WIDTH2(x) (((x-1)&0xfff)<<0)
676 #define v_WIN2_DSP_HEIGHT2(x) (((x-1)&0xfff)<<16)
678 #define m_WIN2_DSP_WIDTH2 (0xfff<<0)
679 #define m_WIN2_DSP_HEIGHT2 (0xfff<<16)
682 #define WIN2_DSP_ST2 (0x00e8)
683 #define v_WIN2_DSP_XST2(x) (((x)&0x1fff)<<0)
684 #define v_WIN2_DSP_YST2(x) (((x)&0x1fff)<<16)
685 #define m_WIN2_DSP_XST2 (0x1fff<<0)
686 #define m_WIN2_DSP_YST2 (0x1fff<<16)
688 #define WIN2_DST_ALPHA_CTRL (0x00ec)
689 #define v_WIN2_DST_FACTOR_M0(x) (((x)&7)<<6)
690 #define m_WIN2_DST_FACTOR_M0 (7<<6)
692 #define WIN2_MST3 (0x00f0)
693 #define WIN2_DSP_INFO3 (0x00f4)
694 #define v_WIN2_DSP_WIDTH3(x) (((x-1)&0xfff)<<0)
695 #define v_WIN2_DSP_HEIGHT3(x) (((x-1)&0xfff)<<16)
696 #define m_WIN2_DSP_WIDTH3 (0xfff<<0)
697 #define m_WIN2_DSP_HEIGHT3 (0xfff<<16)
699 #define WIN2_DSP_ST3 (0x00f8)
700 #define v_WIN2_DSP_XST3(x) (((x)&0x1fff)<<0)
701 #define v_WIN2_DSP_YST3(x) (((x)&0x1fff)<<16)
702 #define m_WIN2_DSP_XST3 (0x1fff<<0)
703 #define m_WIN2_DSP_YST3 (0x1fff<<16)
705 #define WIN2_FADING_CTRL (0x00fc)
706 #define v_WIN2_FADING_OFFSET_R(x) (((x)&0xff)<<0)
707 #define v_WIN2_FADING_OFFSET_G(x) (((x)&0xff)<<8)
708 #define v_WIN2_FADING_OFFSET_B(x) (((x)&0xff)<<16)
709 #define v_WIN2_FADING_EN(x) (((x)&1)<<24)
711 #define m_WIN2_FADING_OFFSET_R (0xff<<0)
712 #define m_WIN2_FADING_OFFSET_G (0xff<<8)
713 #define m_WIN2_FADING_OFFSET_B (0xff<<16)
714 #define m_WIN2_FADING_EN (1<<24)
717 #define WIN3_CTRL0 (0x0100)
718 #define v_WIN3_EN(x) (((x)&1)<<0)
719 #define v_WIN3_DATA_FMT(x) (((x)&7)<<1)
720 #define v_WIN3_MST0_EN(x) (((x)&1)<<4)
721 #define v_WIN3_MST1_EN(x) (((x)&1)<<5)
722 #define v_WIN3_MST2_EN(x) (((x)&1)<<6)
723 #define v_WIN3_MST3_EN(x) (((x)&1)<<7)
724 #define v_WIN3_INTERLACE_READ(x) (((x)&1)<<8)
725 #define v_WIN3_NO_OUTSTANDING(x) (((x)&1)<<9)
726 #define v_WIN3_CSC_MODE(x) (((x)&1)<<10)
727 #define v_WIN3_RB_SWAP(x) (((x)&1)<<12)
728 #define v_WIN3_ALPHA_SWAP(x) (((x)&1)<<13)
729 #define v_WIN3_ENDIAN_MODE(x) (((x)&1)<<14)
730 #define v_WIN3_LUT_EN(x) (((x)&1)<<18)
732 #define m_WIN3_EN (1<<0)
733 #define m_WIN3_DATA_FMT (7<<1)
734 #define m_WIN3_MST0_EN (1<<4)
735 #define m_WIN3_MST1_EN (1<<5)
736 #define m_WIN3_MST2_EN (1<<6)
737 #define m_WIN3_MST3_EN (1<<7)
738 #define m_WIN3_INTERLACE_READ (1<<8)
739 #define m_WIN3_NO_OUTSTANDING (1<<9)
740 #define m_WIN3_CSC_MODE (1<<10)
741 #define m_WIN3_RB_SWAP (1<<12)
742 #define m_WIN3_ALPHA_SWAP (1<<13)
743 #define m_WIN3_ENDIAN_MODE (1<<14)
744 #define m_WIN3_LUT_EN (1<<18)
747 #define WIN3_CTRL1 (0x0104)
748 #define v_WIN3_AXI_GATHER_EN(x) (((x)&1)<<0)
749 #define v_WIN3_AXI_GATHER_NUM(x) (((x)&0xf)<<4)
750 #define m_WIN3_AXI_GATHER_EN (1<<0)
751 #define m_WIN3_AXI_GATHER_NUM (0xf<<4)
753 #define WIN3_VIR0_1 (0x0108)
754 #define v_WIN3_VIR_STRIDE0(x) (((x)&0x1fff)<<0)
755 #define v_WIN3_VIR_STRIDE1(x) (((x)&0x1fff)<<16)
756 #define m_WIN3_VIR_STRIDE0 (0x1fff<<0)
757 #define m_WIN3_VIR_STRIDE1 (0x1fff<<16)
759 #define WIN3_VIR2_3 (0x010c)
760 #define v_WIN3_VIR_STRIDE2(x) (((x)&0x1fff)<<0)
761 #define v_WIN3_VIR_STRIDE3(x) (((x)&0x1fff)<<16)
762 #define m_WIN3_VIR_STRIDE2 (0x1fff<<0)
763 #define m_WIN3_VIR_STRIDE3 (0x1fff<<16)
765 #define WIN3_MST0 (0x0110)
766 #define WIN3_DSP_INFO0 (0x0114)
767 #define v_WIN3_DSP_WIDTH0(x) (((x-1)&0xfff)<<0)
768 #define v_WIN3_DSP_HEIGHT0(x) (((x-1)&0xfff)<<16)
769 #define m_WIN3_DSP_WIDTH0 (0xfff<<0)
770 #define m_WIN3_DSP_HEIGHT0 (0xfff<<16)
772 #define WIN3_DSP_ST0 (0x0118)
773 #define v_WIN3_DSP_XST0(x) (((x)&0x1fff)<<0)
774 #define v_WIN3_DSP_YST0(x) (((x)&0x1fff)<<16)
775 #define m_WIN3_DSP_XST0 (0x1fff<<0)
776 #define m_WIN3_DSP_YST0 (0x1fff<<16)
778 #define WIN3_COLOR_KEY (0x011c)
779 #define v_WIN3_COLOR_KEY(x) (((x)&0xffffff)<<0)
780 #define v_WIN3_KEY_EN(x) (((x)&1)<<24)
781 #define m_WIN3_COLOR_KEY (0xffffff<<0)
782 #define m_WIN3_KEY_EN ((u32)1<<24)
784 #define WIN3_MST1 (0x0120)
785 #define WIN3_DSP_INFO1 (0x0124)
786 #define v_WIN3_DSP_WIDTH1(x) (((x-1)&0xfff)<<0)
787 #define v_WIN3_DSP_HEIGHT1(x) (((x-1)&0xfff)<<16)
788 #define m_WIN3_DSP_WIDTH1 (0xfff<<0)
789 #define m_WIN3_DSP_HEIGHT1 (0xfff<<16)
791 #define WIN3_DSP_ST1 (0x0128)
792 #define v_WIN3_DSP_XST1(x) (((x)&0x1fff)<<0)
793 #define v_WIN3_DSP_YST1(x) (((x)&0x1fff)<<16)
794 #define m_WIN3_DSP_XST1 (0x1fff<<0)
795 #define m_WIN3_DSP_YST1 (0x1fff<<16)
797 #define WIN3_SRC_ALPHA_CTRL (0x012c)
798 #define v_WIN3_SRC_ALPHA_EN(x) (((x)&1)<<0)
799 #define v_WIN3_SRC_COLOR_M0(x) (((x)&1)<<1)
800 #define v_WIN3_SRC_ALPHA_M0(x) (((x)&1)<<2)
801 #define v_WIN3_SRC_BLEND_M0(x) (((x)&3)<<3)
802 #define v_WIN3_SRC_ALPHA_CAL_M0(x) (((x)&1)<<5)
803 #define v_WIN3_SRC_FACTOR_M0(x) (((x)&7)<<6)
804 #define v_WIN3_SRC_GLOBAL_ALPHA(x) (((x)&0xff)<<16)
805 #define v_WIN3_FADING_VALUE(x) (((x)&0xff)<<24)
807 #define m_WIN3_SRC_ALPHA_EN (1<<0)
808 #define m_WIN3_SRC_COLOR_M0 (1<<1)
809 #define m_WIN3_SRC_ALPHA_M0 (1<<2)
810 #define m_WIN3_SRC_BLEND_M0 (3<<3)
811 #define m_WIN3_SRC_ALPHA_CAL_M0 (1<<5)
812 #define m_WIN3_SRC_FACTOR_M0 (7<<6)
813 #define m_WIN3_SRC_GLOBAL_ALPHA (0xff<<16)
814 #define m_WIN3_FADING_VALUE (0xff<<24)
816 #define WIN3_MST2 (0x0130)
817 #define WIN3_DSP_INFO2 (0x0134)
818 #define v_WIN3_DSP_WIDTH2(x) (((x-1)&0xfff)<<0)
819 #define v_WIN3_DSP_HEIGHT2(x) (((x-1)&0xfff)<<16)
820 #define m_WIN3_DSP_WIDTH2 (0xfff<<0)
821 #define m_WIN3_DSP_HEIGHT2 (0xfff<<16)
823 #define WIN3_DSP_ST2 (0x0138)
824 #define v_WIN3_DSP_XST2(x) (((x)&0x1fff)<<0)
825 #define v_WIN3_DSP_YST2(x) (((x)&0x1fff)<<16)
826 #define m_WIN3_DSP_XST2 (0x1fff<<0)
827 #define m_WIN3_DSP_YST2 (0x1fff<<16)
829 #define WIN3_DST_ALPHA_CTRL (0x013c)
830 #define v_WIN3_DST_FACTOR_M0(x) (((x)&7)<<6)
831 #define m_WIN3_DST_FACTOR_M0 (7<<6)
834 #define WIN3_MST3 (0x0140)
835 #define WIN3_DSP_INFO3 (0x0144)
836 #define v_WIN3_DSP_WIDTH3(x) (((x-1)&0xfff)<<0)
837 #define v_WIN3_DSP_HEIGHT3(x) (((x-1)&0xfff)<<16)
838 #define m_WIN3_DSP_WIDTH3 (0xfff<<0)
839 #define m_WIN3_DSP_HEIGHT3 (0xfff<<16)
841 #define WIN3_DSP_ST3 (0x0148)
842 #define v_WIN3_DSP_XST3(x) (((x)&0x1fff)<<0)
843 #define v_WIN3_DSP_YST3(x) (((x)&0x1fff)<<16)
844 #define m_WIN3_DSP_XST3 (0x1fff<<0)
845 #define m_WIN3_DSP_YST3 (0x1fff<<16)
847 #define WIN3_FADING_CTRL (0x014c)
848 #define v_WIN3_FADING_OFFSET_R(x) (((x)&0xff)<<0)
849 #define v_WIN3_FADING_OFFSET_G(x) (((x)&0xff)<<8)
850 #define v_WIN3_FADING_OFFSET_B(x) (((x)&0xff)<<16)
851 #define v_WIN3_FADING_EN(x) (((x)&1)<<24)
853 #define m_WIN3_FADING_OFFSET_R (0xff<<0)
854 #define m_WIN3_FADING_OFFSET_G (0xff<<8)
855 #define m_WIN3_FADING_OFFSET_B (0xff<<16)
856 #define m_WIN3_FADING_EN (1<<24)
860 #define HWC_CTRL0 (0x0150)
861 #define v_HWC_EN(x) (((x)&1)<<0)
862 #define v_HWC_DATA_FMT(x) (((x)&7)<<1)
863 #define v_HWC_MODE(x) (((x)&1)<<4)
864 #define v_HWC_SIZE(x) (((x)&3)<<5)
865 #define v_HWC_INTERLACE_READ(x) (((x)&1)<<8)
866 #define v_HWC_NO_OUTSTANDING(x) (((x)&1)<<9)
867 #define v_HWC_CSC_MODE(x) (((x)&1)<<10)
868 #define v_HWC_RB_SWAP(x) (((x)&1)<<12)
869 #define v_HWC_ALPHA_SWAP(x) (((x)&1)<<13)
870 #define v_HWC_ENDIAN_MODE(x) (((x)&1)<<14)
871 #define v_HWC_LUT_EN(x) (((x)&1)<<18)
873 #define m_HWC_EN (1<<0)
874 #define m_HWC_DATA_FMT (7<<1)
875 #define m_HWC_MODE (1<<4)
876 #define m_HWC_SIZE (3<<5)
877 #define m_HWC_INTERLACE_READ (1<<8)
878 #define m_HWC_NO_OUTSTANDING (1<<9)
879 #define m_HWC_CSC_MODE (1<<10)
880 #define m_HWC_RB_SWAP (1<<12)
881 #define m_HWC_ALPHA_SWAP (1<<13)
882 #define m_HWC_ENDIAN_MODE (1<<14)
883 #define m_HWC_LUT_EN (1<<18)
886 #define HWC_CTRL1 (0x0154)
887 #define v_HWC_AXI_GATHER_EN(x) (((x)&1)<<0)
888 #define v_HWC_AXI_GATHER_NUM(x) (((x)&7)<<4)
889 #define m_HWC_AXI_GATHER_EN (1<<0)
890 #define m_HWC_AXI_GATHER_NUM (7<<4)
892 #define HWC_MST (0x0158)
893 #define HWC_DSP_ST (0x015c)
894 #define v_HWC_DSP_XST3(x) (((x)&0x1fff)<<0)
895 #define v_HWC_DSP_YST3(x) (((x)&0x1fff)<<16)
896 #define m_HWC_DSP_XST3 (0x1fff<<0)
897 #define m_HWC_DSP_YST3 (0x1fff<<16)
899 #define HWC_SRC_ALPHA_CTRL (0x0160)
900 #define v_HWC_SRC_ALPHA_EN(x) (((x)&1)<<0)
901 #define v_HWC_SRC_COLOR_M0(x) (((x)&1)<<1)
902 #define v_HWC_SRC_ALPHA_M0(x) (((x)&1)<<2)
903 #define v_HWC_SRC_BLEND_M0(x) (((x)&3)<<3)
904 #define v_HWC_SRC_ALPHA_CAL_M0(x) (((x)&1)<<5)
905 #define v_HWC_SRC_FACTOR_M0(x) (((x)&7)<<6)
906 #define v_HWC_SRC_GLOBAL_ALPHA(x) (((x)&0xff)<<16)
907 #define v_HWC_FADING_VALUE(x) (((x)&0xff)<<24)
909 #define m_HWC_SRC_ALPHA_EN (1<<0)
910 #define m_HWC_SRC_COLOR_M0 (1<<1)
911 #define m_HWC_SRC_ALPHA_M0 (1<<2)
912 #define m_HWC_SRC_BLEND_M0 (3<<3)
913 #define m_HWC_SRC_ALPHA_CAL_M0 (1<<5)
914 #define m_HWC_SRC_FACTOR_M0 (7<<6)
915 #define m_HWC_SRC_GLOBAL_ALPHA (0xff<<16)
916 #define m_HWC_FADING_VALUE (0xff<<24)
918 #define HWC_DST_ALPHA_CTRL (0x0164)
919 #define v_HWC_DST_FACTOR_M0(x) (((x)&7)<<6)
920 #define m_HWC_DST_FACTOR_M0 (7<<6)
923 #define HWC_FADING_CTRL (0x0168)
924 #define v_HWC_FADING_OFFSET_R(x) (((x)&0xff)<<0)
925 #define v_HWC_FADING_OFFSET_G(x) (((x)&0xff)<<8)
926 #define v_HWC_FADING_OFFSET_B(x) (((x)&0xff)<<16)
927 #define v_HWC_FADING_EN(x) (((x)&1)<<24)
929 #define m_HWC_FADING_OFFSET_R (0xff<<0)
930 #define m_HWC_FADING_OFFSET_G (0xff<<8)
931 #define m_HWC_FADING_OFFSET_B (0xff<<16)
932 #define m_HWC_FADING_EN (1<<24)
934 /*post process register*/
935 #define POST_DSP_HACT_INFO (0x0170)
936 #define v_DSP_HACT_END_POST(x) (((x)&0x1fff)<<0)
937 #define v_DSP_HACT_ST_POST(x) (((x)&0x1fff)<<16)
938 #define m_DSP_HACT_END_POST (0x1fff<<0)
939 #define m_DSP_HACT_ST_POST (0x1fff<<16)
941 #define POST_DSP_VACT_INFO (0x0174)
942 #define v_DSP_VACT_END_POST(x) (((x)&0x1fff)<<0)
943 #define v_DSP_VACT_ST_POST(x) (((x)&0x1fff)<<16)
944 #define m_DSP_VACT_END_POST (0x1fff<<0)
945 #define m_DSP_VACT_ST_POST (0x1fff<<16)
947 #define POST_SCL_FACTOR_YRGB (0x0178)
948 #define v_POST_HS_FACTOR_YRGB(x) (((x)&0xffff)<<0)
949 #define v_POST_VS_FACTOR_YRGB(x) (((x)&0xffff)<<16)
950 #define m_POST_HS_FACTOR_YRGB (0xffff<<0)
951 #define m_POST_VS_FACTOR_YRGB (0xffff<<16)
953 #define POST_SCL_CTRL (0x0180)
954 #define v_POST_HOR_SD_EN(x) (((x)&1)<<0)
955 #define v_POST_VER_SD_EN(x) (((x)&1)<<1)
957 #define m_POST_HOR_SD_EN (0x1<<0)
958 #define m_POST_VER_SD_EN (0x1<<1)
960 #define POST_DSP_VACT_INFO_F1 (0x0184)
961 #define v_DSP_VACT_END_POST_F1(x) (((x)&0x1fff)<<0)
962 #define v_DSP_VACT_ST_POST_F1(x) (((x)&0x1fff)<<16)
964 #define m_DSP_VACT_END_POST_F1 (0x1fff<<0)
965 #define m_DSP_VACT_ST_POST_F1 (0x1fff<<16)
967 #define DSP_HTOTAL_HS_END (0x0188)
968 #define v_DSP_HS_PW(x) (((x)&0x1fff)<<0)
969 #define v_DSP_HTOTAL(x) (((x)&0x1fff)<<16)
970 #define m_DSP_HS_PW (0x1fff<<0)
971 #define m_DSP_HTOTAL (0x1fff<<16)
973 #define DSP_HACT_ST_END (0x018c)
974 #define v_DSP_HACT_END(x) (((x)&0x1fff)<<0)
975 #define v_DSP_HACT_ST(x) (((x)&0x1fff)<<16)
976 #define m_DSP_HACT_END (0x1fff<<0)
977 #define m_DSP_HACT_ST (0x1fff<<16)
979 #define DSP_VTOTAL_VS_END (0x0190)
980 #define v_DSP_VS_PW(x) (((x)&0x1fff)<<0)
981 #define v_DSP_VTOTAL(x) (((x)&0x1fff)<<16)
982 #define m_DSP_VS_PW (0x1fff<<0)
983 #define m_DSP_VTOTAL (0x1fff<<16)
985 #define DSP_VACT_ST_END (0x0194)
986 #define v_DSP_VACT_END(x) (((x)&0x1fff)<<0)
987 #define v_DSP_VACT_ST(x) (((x)&0x1fff)<<16)
988 #define m_DSP_VACT_END (0x1fff<<0)
989 #define m_DSP_VACT_ST (0x1fff<<16)
991 #define DSP_VS_ST_END_F1 (0x0198)
992 #define v_DSP_VS_END_F1(x) (((x)&0x1fff)<<0)
993 #define v_DSP_VS_ST_F1(x) (((x)&0x1fff)<<16)
994 #define m_DSP_VS_END_F1 (0x1fff<<0)
995 #define m_DSP_VS_ST_F1 (0x1fff<<16)
997 #define DSP_VACT_ST_END_F1 (0x019c)
998 #define v_DSP_VACT_END_F1(x) (((x)&0x1fff)<<0)
999 #define v_DSP_VAC_ST_F1(x) (((x)&0x1fff)<<16)
1000 #define m_DSP_VACT_END_F1 (0x1fff<<0)
1001 #define m_DSP_VAC_ST_F1 (0x1fff<<16)
1005 #define PWM_CTRL (0x01a0)
1006 #define v_PWM_EN(x) (((x)&1)<<0)
1007 #define v_PWM_MODE(x) (((x)&3)<<1)
1009 #define v_DUTY_POL(x) (((x)&1)<<3)
1010 #define v_INACTIVE_POL(x) (((x)&1)<<4)
1011 #define v_OUTPUT_MODE(x) (((x)&1)<<5)
1012 #define v_BL_EN(x) (((x)&1)<<8)
1013 #define v_CLK_SEL(x) (((x)&1)<<9)
1014 #define v_PRESCALE(x) (((x)&7)<<12)
1015 #define v_SCALE(x) (((x)&0xff)<<16)
1016 #define v_RPT(x) (((x)&0xff)<<24)
1018 #define m_PWM_EN (1<<0)
1019 #define m_PWM_MODE (3<<1)
1021 #define m_DUTY_POL (1<<3)
1022 #define m_INACTIVE_POL (1<<4)
1023 #define m_OUTPUT_MODE (1<<5)
1024 #define m_BL_EN (1<<8)
1025 #define m_CLK_SEL (1<<9)
1026 #define m_PRESCALE (7<<12)
1027 #define m_SCALE (0xff<<16)
1028 #define m_RPT ((u32)0xff<<24)
1030 #define PWM_PERIOD_HPR (0x01a4)
1031 #define PWM_DUTY_LPR (0x01a8)
1032 #define PWM_CNT (0x01ac)
1035 #define BCSH_COLOR_BAR (0x01b0)
1036 #define v_BCSH_EN(x) (((x)&1)<<0)
1037 #define v_BCSH_COLOR_BAR_Y(x) (((x)&0x3ff)<<2)
1038 #define v_BCSH_COLOR_BAR_U(x) (((x)&0x3ff)<<12)
1039 #define v_BCSH_COLOR_BAR_V(x) (((x)&0x3ff)<<22)
1041 #define m_BCSH_EN (1<<0)
1042 #define m_BCSH_COLOR_BAR_Y (0x3ff<<2)
1043 #define m_BCSH_COLOR_BAR_U (0x3ff<<12)
1044 #define m_BCSH_COLOR_BAR_V ((u32)0x3ff<<22)
1046 #define BCSH_BCS (0x01b4)
1047 #define v_BCSH_BRIGHTNESS(x) (((x)&0xff)<<0)
1048 #define v_BCSH_CONTRAST(x) (((x)&0x1ff)<<8)
1049 #define v_BCSH_SAT_CON(x) (((x)&0x3ff)<<20)
1050 #define v_BCSH_OUT_MODE(x) (((x)&0x3)<<30)
1052 #define m_BCSH_BRIGHTNESS (0xff<<0)
1053 #define m_BCSH_CONTRAST (0x1ff<<8)
1054 #define m_BCSH_SAT_CON (0x3ff<<20)
1055 #define m_BCSH_OUT_MODE ((u32)0x3<<30)
1058 #define BCSH_H (0x01b8)
1059 #define v_BCSH_SIN_HUE(x) (((x)&0x1ff)<<0)
1060 #define v_BCSH_COS_HUE(x) (((x)&0x1ff)<<16)
1062 #define m_BCSH_SIN_HUE (0x1ff<<0)
1063 #define m_BCSH_COS_HUE (0x1ff<<16)
1065 #define CABC_CTRL0 (0x01c0)
1066 #define v_CABC_EN(x) (((x)&1)<<0)
1067 #define v_CABC_CALC_PIXEL_NUM(x) (((x)&0x7fffff)<<1)
1068 #define v_CABC_STAGE_UP(x) (((x)&0xff)<<24)
1069 #define m_CABC_EN (1<<0)
1070 #define m_CABC_CALC_PIXEL_NUM (0x7fffff<<1)
1071 #define m_CABC_STAGE_UP (0xff<<24)
1074 #define CABC_CTRL1 (0x01c4)
1075 #define v_CABC_TOTAL_NUM(x) (((x)&0x7fffff)<<1)
1076 #define v_CABC_STAGE_DOWN(x) (((x)&0xff)<<24)
1077 #define m_CABC_TOTAL_NUM (0x7fffff<<1)
1078 #define m_CABC_STAGE_DOWN (0xff<<24)
1080 #define CABC_GAUSS_LINE0_0 (0x01c8)
1081 #define v_CABC_T_LINE0_0(x) (((x)&0xff)<<0)
1082 #define v_CABC_T_LINE0_1(x) (((x)&0xff)<<8)
1083 #define v_CABC_T_LINE0_2(x) (((x)&0xff)<<16)
1084 #define v_CABC_T_LINE0_3(x) (((x)&0xff)<<24)
1085 #define m_CABC_T_LINE0_0 (0xff<<0)
1086 #define m_CABC_T_LINE0_1 (0xff<<8)
1087 #define m_CABC_T_LINE0_2 (0xff<<16)
1088 #define m_CABC_T_LINE0_3 ((u32)0xff<<24)
1090 #define CABC_GAUSS_LINE0_1 (0x01cc)
1091 #define v_CABC_T_LINE0_4(x) (((x)&0xff)<<0)
1092 #define v_CABC_T_LINE0_5(x) (((x)&0xff)<<8)
1093 #define v_CABC_T_LINE0_6(x) (((x)&0xff)<<16)
1094 #define m_CABC_T_LINE0_4 (0xff<<0)
1095 #define m_CABC_T_LINE0_5 (0xff<<8)
1096 #define m_CABC_T_LINE0_6 (0xff<<16)
1099 #define CABC_GAUSS_LINE1_0 (0x01d0)
1100 #define v_CABC_T_LINE1_0(x) (((x)&0xff)<<0)
1101 #define v_CABC_T_LINE1_1(x) (((x)&0xff)<<8)
1102 #define v_CABC_T_LINE1_2(x) (((x)&0xff)<<16)
1103 #define v_CABC_T_LINE1_3(x) (((x)&0xff)<<24)
1104 #define m_CABC_T_LINE1_0 (0xff<<0)
1105 #define m_CABC_T_LINE1_1 (0xff<<8)
1106 #define m_CABC_T_LINE1_2 (0xff<<16)
1107 #define m_CABC_T_LINE1_3 ((u32)0xff<<24)
1109 #define CABC_GAUSS_LINE1_1 (0x01d4)
1110 #define v_CABC_T_LINE1_4(x) (((x)&0xff)<<0)
1111 #define v_CABC_T_LINE1_5(x) (((x)&0xff)<<8)
1112 #define v_CABC_T_LINE1_6(x) (((x)&0xff)<<16)
1113 #define m_CABC_T_LINE1_4 (0xff<<0)
1114 #define m_CABC_T_LINE1_5 (0xff<<8)
1115 #define m_CABC_T_LINE1_6 (0xff<<16)
1117 #define CABC_GAUSS_LINE2_0 (0x01d8)
1118 #define v_CABC_T_LINE2_0(x) (((x)&0xff)<<0)
1119 #define v_CABC_T_LINE2_1(x) (((x)&0xff)<<8)
1120 #define v_CABC_T_LINE2_2(x) (((x)&0xff)<<16)
1121 #define v_CABC_T_LINE2_3(x) (((x)&0xff)<<24)
1122 #define m_CABC_T_LINE2_0 (0xff<<0)
1123 #define m_CABC_T_LINE2_1 (0xff<<8)
1124 #define m_CABC_T_LINE2_2 (0xff<<16)
1125 #define m_CABC_T_LINE2_3 ((u32)0xff<<24)
1127 #define CABC_GAUSS_LINE2_1 (0x01dc)
1128 #define v_CABC_T_LINE2_4(x) (((x)&0xff)<<0)
1129 #define v_CABC_T_LINE2_5(x) (((x)&0xff)<<8)
1130 #define v_CABC_T_LINE2_6(x) (((x)&0xff)<<16)
1131 #define m_CABC_T_LINE2_4 (0xff<<0)
1132 #define m_CABC_T_LINE2_5 (0xff<<8)
1133 #define m_CABC_T_LINE2_6 (0xff<<16)
1136 #define FRC_LOWER01_0 (0x01e0)
1137 #define v_FRC_LOWER01_FRM0(x) (((x)&0xffff)<<0)
1138 #define v_FRC_LOWER01_FRM1(x) (((x)&0xffff)<<16)
1139 #define m_FRC_LOWER01_FRM0 (0xffff<<0)
1140 #define m_FRC_LOWER01_FRM1 ((u32)0xffff<<16)
1142 #define FRC_LOWER01_1 (0x01e4)
1143 #define v_FRC_LOWER01_FRM2(x) (((x)&0xffff)<<0)
1144 #define v_FRC_LOWER01_FRM3(x) (((x)&0xffff)<<16)
1145 #define m_FRC_LOWER01_FRM2 (0xffff<<0)
1146 #define m_FRC_LOWER01_FRM3 ((u32)0xffff<<16)
1148 #define FRC_LOWER10_0 (0x01e8)
1149 #define v_FRC_LOWER10_FRM0(x) (((x)&0xffff)<<0)
1150 #define v_FRC_LOWER10_FRM1(x) (((x)&0xffff)<<16)
1151 #define m_FRC_LOWER10_FRM0 (0xffff<<0)
1152 #define m_FRC_LOWER10_FRM1 ((u32)0xffff<<16)
1154 #define FRC_LOWER10_1 (0x01ec)
1155 #define v_FRC_LOWER10_FRM2(x) (((x)&0xffff)<<0)
1156 #define v_FRC_LOWER10_FRM3(x) (((x)&0xffff)<<16)
1157 #define m_FRC_LOWER10_FRM2 (0xffff<<0)
1158 #define m_FRC_LOWER10_FRM3 ((u32)0xffff<<16)
1160 #define FRC_LOWER11_0 (0x01f0)
1161 #define v_FRC_LOWER11_FRM0(x) (((x)&0xffff)<<0)
1162 #define v_FRC_LOWER11_FRM1(x) (((x)&0xffff)<<16)
1163 #define m_FRC_LOWER11_FRM0 (0xffff<<0)
1164 #define m_FRC_LOWER11_FRM1 ((u32)0xffff<<16)
1166 #define FRC_LOWER11_1 (0x01f4)
1167 #define v_FRC_LOWER11_FRM2(x) (((x)&0xffff)<<0)
1168 #define v_FRC_LOWER11_FRM3(x) (((x)&0xffff)<<16)
1169 #define m_FRC_LOWER11_FRM2 (0xffff<<0)
1170 #define m_FRC_LOWER11_FRM3 ((u32)0xffff<<16)
1172 #define MMU_DTE_ADDR (0x0300)
1173 #define v_MMU_DTE_ADDR(x) (((x)&0xffffffff)<<0)
1174 #define m_MMU_DTE_ADDR (0xffffffff<<0)
1176 #define MMU_STATUS (0x0304)
1177 #define v_PAGING_ENABLED(x) (((x)&1)<<0)
1178 #define v_PAGE_FAULT_ACTIVE(x) (((x)&1)<<1)
1179 #define v_STAIL_ACTIVE(x) (((x)&1)<<2)
1180 #define v_MMU_IDLE(x) (((x)&1)<<3)
1181 #define v_REPLAY_BUFFER_EMPTY(x) (((x)&1)<<4)
1182 #define v_PAGE_FAULT_IS_WRITE(x) (((x)&1)<<5)
1183 #define v_PAGE_FAULT_BUS_ID(x) (((x)&0x1f)<<6)
1184 #define m_PAGING_ENABLED (1<<0)
1185 #define m_PAGE_FAULT_ACTIVE (1<<1)
1186 #define m_STAIL_ACTIVE (1<<2)
1187 #define m_MMU_IDLE (1<<3)
1188 #define m_REPLAY_BUFFER_EMPTY (1<<4)
1189 #define m_PAGE_FAULT_IS_WRITE (1<<5)
1190 #define m_PAGE_FAULT_BUS_ID (0x1f<<6)
1192 #define MMU_COMMAND (0x0308)
1193 #define v_MMU_CMD(x) (((x)&0x3)<<0)
1194 #define m_MMU_CMD (0x3<<0)
1196 #define MMU_PAGE_FAULT_ADDR (0x030c)
1197 #define v_PAGE_FAULT_ADDR(x) (((x)&0xffffffff)<<0)
1198 #define m_PAGE_FAULT_ADDR (0xffffffff<<0)
1200 #define MMU_ZAP_ONE_LINE (0x0310)
1201 #define v_MMU_ZAP_ONE_LINE(x) (((x)&0xffffffff)<<0)
1202 #define m_MMU_ZAP_ONE_LINE (0xffffffff<<0)
1204 #define MMU_INT_RAWSTAT (0x0314)
1205 #define v_PAGE_FAULT_RAWSTAT(x) (((x)&1)<<0)
1206 #define v_READ_BUS_ERROR_RAWSTAT(x) (((x)&1)<<1)
1207 #define m_PAGE_FAULT_RAWSTAT (1<<0)
1208 #define m_READ_BUS_ERROR_RAWSTAT (1<<1)
1210 #define MMU_INT_CLEAR (0x0318)
1211 #define v_PAGE_FAULT_CLEAR(x) (((x)&1)<<0)
1212 #define v_READ_BUS_ERROR_CLEAR(x) (((x)&1)<<1)
1213 #define m_PAGE_FAULT_CLEAR (1<<0)
1214 #define m_READ_BUS_ERROR_CLEAR (1<<1)
1216 #define MMU_INT_MASK (0x031c)
1217 #define v_PAGE_FAULT_MASK(x) (((x)&1)<<0)
1218 #define v_READ_BUS_ERROR_MASK(x) (((x)&1)<<1)
1219 #define m_PAGE_FAULT_MASK (1<<0)
1220 #define m_READ_BUS_ERROR_MASK (1<<1)
1222 #define MMU_INT_STATUS (0x0320)
1223 #define v_PAGE_FAULT_STATUS(x) (((x)&1)<<0)
1224 #define v_READ_BUS_ERROR_STATUS(x) (((x)&1)<<1)
1225 #define m_PAGE_FAULT_STATUS (1<<0)
1226 #define m_READ_BUS_ERROR_STATUS (1<<1)
1228 #define MMU_AUTO_GATING (0x0324)
1229 #define v_MMU_AUTO_GATING(x) (((x)&1)<<0)
1230 #define m_MMU_AUTO_GATING (1<<0)
1232 #define WIN2_LUT_ADDR (0x0400)
1233 #define WIN3_LUT_ADDR (0x0800)
1234 #define HWC_LUT_ADDR (0x0c00)
1235 #define GAMMA_LUT_ADDR (0x1000)
1236 #define MCU_BYPASS_WPORT (0x2200)
1237 #define MCU_BYPASS_RPORT (0x2300)
1239 #define PWM_MODE_ONE_SHOT (0x0)
1240 #define PWM_MODE_CONTINUOUS (0x1)
1241 #define PWM_MODE_CAPTURE (0x2)
1243 LB_YUV_3840X5 = 0x0,
1244 LB_YUV_2560X8 = 0x1,
1245 LB_RGB_3840X2 = 0x2,
1246 LB_RGB_2560X4 = 0x3,
1247 LB_RGB_1920X5 = 0x4,
1251 enum sacle_up_mode {
1256 enum scale_down_mode {
1257 SCALE_DOWN_BIL = 0x0,
1258 SCALE_DOWN_AVG = 0x1
1261 /*ALPHA BLENDING MODE*/
1262 enum alpha_mode { /* Fs Fd */
1263 AB_USER_DEFINE = 0x0,
1264 AB_CLEAR = 0x1,/* 0 0*/
1265 AB_SRC = 0x2,/* 1 0*/
1266 AB_DST = 0x3,/* 0 1 */
1267 AB_SRC_OVER = 0x4,/* 1 1-As''*/
1268 AB_DST_OVER = 0x5,/* 1-Ad'' 1*/
1276 AB_SRC_OVER_GLOBAL = 0xd
1277 }; /*alpha_blending_mode*/
1279 enum src_alpha_mode {
1282 };/*src_alpha_mode*/
1284 enum global_alpha_mode {
1287 AA_PER_PIX_GLOBAL = 0x2
1288 };/*src_global_alpha_mode*/
1290 enum src_alpha_sel {
1295 enum src_color_mode {
1296 AA_SRC_PRE_MUL = 0x0,
1297 AA_SRC_NO_PRE_MUL = 0x1
1298 };/*src_color_mode*/
1304 AA_SRC_INVERSE = 0x3,
1306 };/*src_factor_mode && dst_factor_mode*/
1310 struct rk_lcdc_driver driver;
1312 struct rk_screen *screen;
1315 void *regsbak; /*back up reg*/
1316 u32 reg_phy_base; /* physical basic address of lcdc register*/
1317 u32 len; /* physical map length of lcdc register*/
1318 spinlock_t reg_lock; /*one time only one process allowed to config the register*/
1320 int __iomem *dsp_lut_addr_base;
1323 int prop; /*used for primary or extended display device*/
1325 bool pwr18; /*if lcdc use 1.8v power supply*/
1326 bool clk_on; /*if aclk or hclk is closed ,acess to register is not allowed*/
1327 u8 atv_layer_cnt; /*active layer counter,when atv_layer_cnt = 0,disable lcdc*/
1332 struct clk *pd; /*lcdc power domain*/
1333 struct clk *hclk; /*lcdc AHP clk*/
1334 struct clk *dclk; /*lcdc dclk*/
1335 struct clk *aclk; /*lcdc share memory frequency*/
1338 u32 standby; /*1:standby,0:wrok*/
1341 struct alpha_config{
1342 enum src_alpha_mode src_alpha_mode; /*win0_src_alpha_m0*/
1343 u32 src_global_alpha_val; /*win0_src_global_alpha*/
1344 enum global_alpha_mode src_global_alpha_mode;/*win0_src_blend_m0*/
1345 enum src_alpha_sel src_alpha_cal_m0; /*win0_src_alpha_cal_m0*/
1346 enum src_color_mode src_color_mode; /*win0_src_color_m0*/
1347 enum factor_mode src_factor_mode; /*win0_src_factor_m0*/
1348 enum factor_mode dst_factor_mode; /*win0_dst_factor_m0*/
1351 struct lcdc_cabc_mode {
1352 u32 pixel_num; /* pixel precent number */
1353 char stage_up; /* up stride */
1354 char stage_down; /* down stride */
1357 static inline void lcdc_writel(struct lcdc_device *lcdc_dev,u32 offset,u32 v)
1359 u32 *_pv = (u32*)lcdc_dev->regsbak;
1360 _pv += (offset >> 2);
1362 writel_relaxed(v,lcdc_dev->regs+offset);
1365 static inline u32 lcdc_readl(struct lcdc_device *lcdc_dev,u32 offset)
1368 u32 *_pv = (u32*)lcdc_dev->regsbak;
1369 _pv += (offset >> 2);
1370 v = readl_relaxed(lcdc_dev->regs+offset);
1375 static inline u32 lcdc_read_bit(struct lcdc_device *lcdc_dev,u32 offset,u32 msk)
1377 u32 *_pv = (u32*)lcdc_dev->regsbak;
1378 u32 _v = readl_relaxed(lcdc_dev->regs+offset);
1379 _pv += (offset >> 2);
1385 static inline void lcdc_set_bit(struct lcdc_device *lcdc_dev,u32 offset,u32 msk)
1387 u32* _pv = (u32*)lcdc_dev->regsbak;
1388 _pv += (offset >> 2);
1390 writel_relaxed(*_pv,lcdc_dev->regs + offset);
1393 static inline void lcdc_clr_bit(struct lcdc_device *lcdc_dev,u32 offset,u32 msk)
1395 u32* _pv = (u32*)lcdc_dev->regsbak;
1396 _pv += (offset >> 2);
1398 writel_relaxed(*_pv,lcdc_dev->regs + offset);
1401 static inline void lcdc_msk_reg(struct lcdc_device *lcdc_dev,u32 offset,u32 msk,u32 v)
1403 u32 *_pv = (u32*)lcdc_dev->regsbak;
1404 _pv += (offset >> 2);
1407 writel_relaxed(*_pv,lcdc_dev->regs+offset);
1410 static inline void lcdc_cfg_done(struct lcdc_device *lcdc_dev)
1412 writel_relaxed(0x01,lcdc_dev->regs+REG_CFG_DONE);
1416 #define CUBIC_PRECISE 0
1417 #define CUBIC_SPLINE 1
1418 #define CUBIC_CATROM 2
1419 #define CUBIC_MITCHELL 3
1421 #define CUBIC_MODE_SELETION CUBIC_PRECISE
1423 /*****************************************************************************************************/
1424 #define SCALE_FACTOR_BILI_DN_FIXPOINT_SHIFT 12 /* 4.12*/
1425 #define SCALE_FACTOR_BILI_DN_FIXPOINT(x) ((INT32)((x)*(1 << SCALE_FACTOR_BILI_DN_FIXPOINT_SHIFT)))
1427 #define SCALE_FACTOR_BILI_UP_FIXPOINT_SHIFT 16 /* 0.16*/
1429 #define SCALE_FACTOR_AVRG_FIXPOINT_SHIFT 16 /*0.16*/
1430 #define SCALE_FACTOR_AVRG_FIXPOINT(x) ((INT32)((x)*(1 << SCALE_FACTOR_AVRG_FIXPOINT_SHIFT)))
1432 #define SCALE_FACTOR_BIC_FIXPOINT_SHIFT 16 /* 0.16*/
1433 #define SCALE_FACTOR_BIC_FIXPOINT(x) ((INT32)((x)*(1 << SCALE_FACTOR_BIC_FIXPOINT_SHIFT)))
1435 #define SCALE_FACTOR_DEFAULT_FIXPOINT_SHIFT 12 /*NONE SCALE,vsd_bil*/
1436 #define SCALE_FACTOR_VSDBIL_FIXPOINT_SHIFT 12 /*VER SCALE DOWN BIL*/
1438 /*****************************************************************************************************/
1440 /*#define GET_SCALE_FACTOR_BILI(src, dst) ((((src) - 1) << SCALE_FACTOR_BILI_FIXPOINT_SHIFT) / ((dst) - 1))*/
1441 /*#define GET_SCALE_FACTOR_BIC(src, dst) ((((src) - 1) << SCALE_FACTOR_BIC_FIXPOINT_SHIFT) / ((dst) - 1))*/
1443 #define GET_SCALE_FACTOR_BILI_DN(src, dst) ((((src)*2 - 3) << (SCALE_FACTOR_BILI_DN_FIXPOINT_SHIFT-1)) / ((dst) - 1))
1444 #define GET_SCALE_FACTOR_BILI_UP(src, dst) ((((src)*2 - 3) << (SCALE_FACTOR_BILI_UP_FIXPOINT_SHIFT-1)) / ((dst) - 1))
1445 #define GET_SCALE_FACTOR_BIC(src, dst) ((((src)*2 - 3) << (SCALE_FACTOR_BIC_FIXPOINT_SHIFT-1)) / ((dst) - 1))
1447 /*****************************************************************/
1448 /*NOTE: hardwareΪ½ÚÊ¡¿ªÏú, srcHÏȳéÐеõ½ (srcH+vScaleDnMult-1)/vScaleDnMult; È»ºóËõ·Å*/
1449 #define GET_SCALE_DN_ACT_HEIGHT(srcH, vScaleDnMult) (((srcH)+(vScaleDnMult)-1)/(vScaleDnMult))
1451 /*#define VSKIP_MORE_PRECISE*/
1453 #ifdef VSKIP_MORE_PRECISE
1454 #define MIN_SCALE_FACTOR_AFTER_VSKIP 1.5f
1455 #define GET_SCALE_FACTOR_BILI_DN_VSKIP(srcH, dstH, vScaleDnMult) \
1456 (GET_SCALE_FACTOR_BILI_DN(GET_SCALE_DN_ACT_HEIGHT((srcH), (vScaleDnMult)), (dstH)))
1458 #define MIN_SCALE_FACTOR_AFTER_VSKIP 1
1459 #define GET_SCALE_FACTOR_BILI_DN_VSKIP(srcH, dstH, vScaleDnMult) \
1460 ((GET_SCALE_DN_ACT_HEIGHT((srcH), (vScaleDnMult)) == (dstH))\
1461 ? (GET_SCALE_FACTOR_BILI_DN((srcH), (dstH))/(vScaleDnMult))\
1462 : GET_SCALE_FACTOR_BILI_DN(GET_SCALE_DN_ACT_HEIGHT((srcH), (vScaleDnMult)), (dstH)))
1464 /*****************************************************************/
1467 /*ScaleFactor must >= dst/src, or pixels at end of line may be unused*/
1468 /*ScaleFactor must < dst/(src-1), or dst buffer may overflow*/
1469 /*avrg old code: ((((dst) << SCALE_FACTOR_AVRG_FIXPOINT_SHIFT))/((src) - 1)) hxx_chgsrc*/
1470 /*modified by hpz:*/
1471 #define GET_SCALE_FACTOR_AVRG(src, dst) ((((dst) << (SCALE_FACTOR_AVRG_FIXPOINT_SHIFT+1)))/(2*(src) - 1))
1473 /*****************************************************************************************************/
1474 /*Scale Coordinate Accumulate, x.16*/
1475 #define SCALE_COOR_ACC_FIXPOINT_SHIFT 16
1476 #define SCALE_COOR_ACC_FIXPOINT_ONE (1 << SCALE_COOR_ACC_FIXPOINT_SHIFT)
1477 #define SCALE_COOR_ACC_FIXPOINT(x) ((INT32)((x)*(1 << SCALE_COOR_ACC_FIXPOINT_SHIFT)))
1478 #define SCALE_COOR_ACC_FIXPOINT_REVERT(x) ((((x) >> (SCALE_COOR_ACC_FIXPOINT_SHIFT-1)) + 1) >> 1)
1480 #define SCALE_GET_COOR_ACC_FIXPOINT(scaleFactor, factorFixpointShift) \
1481 ((scaleFactor) << (SCALE_COOR_ACC_FIXPOINT_SHIFT - (factorFixpointShift)))
1484 /*****************************************************************************************************/
1485 /*CoarsePart of Scale Coordinate Accumulate, used for pixel mult-add factor, 0.8*/
1486 #define SCALE_FILTER_FACTOR_FIXPOINT_SHIFT 8
1487 #define SCALE_FILTER_FACTOR_FIXPOINT_ONE (1 << SCALE_FILTER_FACTOR_FIXPOINT_SHIFT)
1488 #define SCALE_FILTER_FACTOR_FIXPOINT(x) ((INT32)((x)*(1 << SCALE_FILTER_FACTOR_FIXPOINT_SHIFT)))
1489 #define SCALE_FILTER_FACTOR_FIXPOINT_REVERT(x) ((((x) >> (SCALE_FILTER_FACTOR_FIXPOINT_SHIFT-1)) + 1) >> 1)
1491 #define SCALE_GET_FILTER_FACTOR_FIXPOINT(coorAccumulate, coorAccFixpointShift) \
1492 (((coorAccumulate)>>((coorAccFixpointShift)-SCALE_FILTER_FACTOR_FIXPOINT_SHIFT))&(SCALE_FILTER_FACTOR_FIXPOINT_ONE-1))
1494 #define SCALE_OFFSET_FIXPOINT_SHIFT 8
1495 #define SCALE_OFFSET_FIXPOINT(x) ((INT32)((x)*(1 << SCALE_OFFSET_FIXPOINT_SHIFT)))
1497 u32 getHardWareVSkipLines(u32 srcH, u32 dstH)
1501 if(srcH >= (u32)(4*dstH*MIN_SCALE_FACTOR_AFTER_VSKIP))
1505 else if(srcH >= (u32)(2*dstH*MIN_SCALE_FACTOR_AFTER_VSKIP))
1514 return vScaleDnMult;