4 #include<linux/rk_fb.h>
8 #define VOP_INPUT_MAX_WIDTH 4096 /*3840 for LINCOLN*/
10 #define REG_CFG_DONE (0x0000)
11 #define VOP_CFG_DONE(x) (((x)&1)<<0)
12 #define WIN0_CFG_DONE(x) (((x)&1)<<1)
13 #define WIN1_CFG_DONE(x) (((x)&1)<<2)
14 #define WIN2_CFG_DONE(x) (((x)&1)<<3)
15 #define WIN3_CFG_DONE(x) (((x)&1)<<4)
16 #define HWC_CFG_DONE(x) (((x)&1)<<5)
17 #define IEP_CFG_DONE(x) (((x)&1)<<6)
18 #define FBDC_CFG_DONE(x) (((x)&1)<<7)
19 #define SYS_CFG_DONE(x) (((x)&1)<<8)
21 #define VOP_CFG_DONE_WMSK(x) (((x)&1)<<(0+16))
22 #define WIN0_CFG_DONE_WMSK(x) (((x)&1)<<(1+16))
23 #define WIN1_CFG_DONE_WMSK(x) (((x)&1)<<(2+16))
24 #define WIN2_CFG_DONE_WMSK(x) (((x)&1)<<(3+16))
25 #define WIN3_CFG_DONE_WMSK(x) (((x)&1)<<(4+16))
26 #define HWC_CFG_DONE_WMSK(x) (((x)&1)<<(5+16))
27 #define IEP_CFG_DONE_WMSK(x) (((x)&1)<<(6+16))
28 #define FBDC_CFG_DONE_WMSK(x) (((x)&1)<<(7+16))
29 #define SYS_CFG_DONE_WMSK(x) (((x)&1)<<(8+16))
31 #define VOP_REG_DONE (VOP_CFG_DONE(1) | VOP_CFG_DONE_WMSK(1))
32 #define WIN0_REG_DONE (WIN0_CFG_DONE(1) | WIN0_CFG_DONE_WMSK(1))
33 #define WIN1_REG_DONE (WIN1_CFG_DONE(1) | WIN1_CFG_DONE_WMSK(1))
34 #define WIN2_REG_DONE (WIN2_CFG_DONE(1) | WIN2_CFG_DONE_WMSK(1))
35 #define WIN3_REG_DONE (WIN3_CFG_DONE(1) | WIN3_CFG_DONE_WMSK(1))
36 #define HWC_REG_DONE (HWC_CFG_DONE(1) | HWC_CFG_DONE_WMSK(1))
37 #define IEP_REG_DONE (IEP_CFG_DONE(1) | IEP_CFG_DONE_WMSK(1))
38 #define FBDC_REG_DONE (FBDC_CFG_DONE(1) | FBDC_CFG_DONE_WMSK(1))
39 #define SYS_REG_DONE (SYS_CFG_DONE(1) | SYS_CFG_DONE_WMSK(1))
40 #define VERSION_INFO (0x0004)
41 #define m_RTL_VERSION (0xffff<<0)
42 #define m_FPGA_VERSION (0xffff<<16)
43 #define SYS_CTRL (0x0008)
44 #define v_DIRECT_PATH_EN(x) (((x)&1)<<0)
45 #define v_DIRECT_PATCH_SEL(x) (((x)&3)<<1)
46 #define v_DOUB_CHANNEL_EN(x) (((x)&1)<<3)
47 #define v_DOUB_CH_OVERLAP_NUM(x) (((x)&0xf)<<4)
48 #define v_EDPI_HALT_EN(x) (((x)&1)<<8)
49 #define v_EDPI_WMS_MODE(x) (((x)&1)<<9)
50 #define v_EDPI_WMS_FS(x) (((x)&1)<<10)
51 #define v_GLOBAL_REGDONE_EN(x) (((x)&1)<<11)
52 #define v_RGB_OUT_EN(x) (((x)&1)<<12)
53 #define v_HDMI_OUT_EN(x) (((x)&1)<<13)
54 #define v_EDP_OUT_EN(x) (((x)&1)<<14)
55 #define v_MIPI_OUT_EN(x) (((x)&1)<<15)
56 #define v_OVERLAY_MODE(x) (((x)&1)<<16)
57 #define v_FS_SAME_ADDR_MASK_EN(x) (((x)&1)<<17)
58 #define v_POST_LB_MODE(x) (((x)&1)<<18)
59 #define v_WIN23_PRI_OPT_MODE(x) (((x)&1)<<19)
60 #define v_MMU_EN(x) (((x)&1)<<20)
61 #define v_DMA_STOP(x) (((x)&1)<<21)
62 #define v_STANDBY_EN(x) (((x)&1)<<22)
63 #define v_AUTO_GATING_EN(x) (((x)&1)<<23)
65 #define m_DIRECT_PATH_EN (1<<0)
66 #define m_DIRECT_PATCH_SEL (3<<1)
67 #define m_DOUB_CHANNEL_EN (1<<3)
68 #define m_DOUB_CH_OVERLAP_NUM (0xf<<4)
69 #define m_EDPI_HALT_EN (1<<8)
70 #define m_EDPI_WMS_MODE (1<<9)
71 #define m_EDPI_WMS_FS (1<<10)
72 #define m_GLOBAL_REGDONE_EN (1<<11)
73 #define m_RGB_OUT_EN (1<<12)
74 #define m_HDMI_OUT_EN (1<<13)
75 #define m_EDP_OUT_EN (1<<14)
76 #define m_MIPI_OUT_EN (1<<15)
77 #define m_OVERLAY_MODE (1<<16)
78 #define m_FS_SAME_ADDR_MASK_EN (1<<17)
79 #define m_POST_LB_MODE (1<<18)
80 #define m_WIN23_PRI_OPT_MODE (1<<19)
81 #define m_MMU_EN (1<<20)
82 #define m_DMA_STOP (1<<21)
83 #define m_STANDBY_EN (1<<22)
84 #define m_AUTO_GATING_EN (1<<23)
86 #define SYS_CTRL1 (0x000c)
87 #define v_NOC_HURRY_EN(x) (((x)&0x1)<<0)
88 #define v_NOC_HURRY_VALUE(x) (((x)&0x3)<<1)
89 #define v_NOC_HURRY_THRESHOLD(x) (((x)&0x3f)<<3)
90 #define v_NOC_QOS_EN(x) (((x)&0x1)<<9)
91 #define v_NOC_WIN_QOS(x) (((x)&0x3)<<10)
92 #define v_AXI_MAX_OUTSTANDING_EN(x) (((x)&0x1)<<12)
93 #define v_AXI_OUTSTANDING_MAX_NUM(x) (((x)&0x1f)<<13)
95 #define m_NOC_HURRY_EN (0x1<<0)
96 #define m_NOC_HURRY_VALUE (0x3<<1)
97 #define m_NOC_HURRY_THRESHOLD (0x3f<<3)
98 #define m_NOC_QOS_EN (0x1<<9)
99 #define m_NOC_WIN_QOS (0x3<<10)
100 #define m_AXI_MAX_OUTSTANDING_EN (0x1<<12)
101 #define m_AXI_OUTSTANDING_MAX_NUM (0x1f<<13)
103 #define DSP_CTRL0 (0x0010)
104 #define v_DSP_OUT_MODE(x) (((x)&0x0f)<<0)
105 #define v_DSP_DCLK_DDR(x) (((x)&1)<<8)
106 #define v_DSP_DDR_PHASE(x) (((x)&1)<<9)
107 #define v_DSP_INTERLACE(x) (((x)&1)<<10)
108 #define v_DSP_FIELD_POL(x) (((x)&1)<<11)
109 #define v_DSP_BG_SWAP(x) (((x)&1)<<12)
110 #define v_DSP_RB_SWAP(x) (((x)&1)<<13)
111 #define v_DSP_RG_SWAP(x) (((x)&1)<<14)
112 #define v_DSP_DELTA_SWAP(x) (((x)&1)<<15)
113 #define v_DSP_DUMMY_SWAP(x) (((x)&1)<<16)
114 #define v_DSP_OUT_ZERO(x) (((x)&1)<<17)
115 #define v_DSP_BLANK_EN(x) (((x)&1)<<18)
116 #define v_DSP_BLACK_EN(x) (((x)&1)<<19)
117 #define v_DSP_CCIR656_AVG(x) (((x)&1)<<20)
118 #define v_DSP_YUV_CLIP(x) (((x)&1)<<21)
119 #define v_DSP_X_MIR_EN(x) (((x)&1)<<22)
120 #define v_DSP_Y_MIR_EN(x) (((x)&1)<<23)
121 #define m_DSP_OUT_MODE (0x0f<<0)
122 #define m_DSP_DCLK_DDR (1<<8)
123 #define m_DSP_DDR_PHASE (1<<9)
124 #define m_DSP_INTERLACE (1<<10)
125 #define m_DSP_FIELD_POL (1<<11)
126 #define m_DSP_BG_SWAP (1<<12)
127 #define m_DSP_RB_SWAP (1<<13)
128 #define m_DSP_RG_SWAP (1<<14)
129 #define m_DSP_DELTA_SWAP (1<<15)
130 #define m_DSP_DUMMY_SWAP (1<<16)
131 #define m_DSP_OUT_ZERO (1<<17)
132 #define m_DSP_BLANK_EN (1<<18)
133 #define m_DSP_BLACK_EN (1<<19)
134 #define m_DSP_CCIR656_AVG (1<<20)
135 #define m_DSP_YUV_CLIP (1<<21)
136 #define m_DSP_X_MIR_EN (1<<22)
137 #define m_DSP_Y_MIR_EN (1<<23)
139 #define DSP_CTRL1 (0x0014)
140 #define v_DSP_LUT_EN(x) (((x)&1)<<0)
141 #define v_PRE_DITHER_DOWN_EN(x) (((x)&1)<<1)
142 #define v_DITHER_DOWN_EN(x) (((x)&1)<<2)
143 #define v_DITHER_DOWN_MODE(x) (((x)&1)<<3)
144 #define v_DITHER_DOWN_SEL(x) (((x)&1)<<4)
145 #define v_DITHER_UP_EN(x) (((x)&1)<<6)
146 #define v_DSP_LAYER0_SEL(x) (((x)&3)<<8)
147 #define v_DSP_LAYER1_SEL(x) (((x)&3)<<10)
148 #define v_DSP_LAYER2_SEL(x) (((x)&3)<<12)
149 #define v_DSP_LAYER3_SEL(x) (((x)&3)<<14)
151 #define v_RGB_LVDS_HSYNC_POL(x) (((x)&1)<<16)
152 #define v_RGB_LVDS_VSYNC_POL(x) (((x)&1)<<17)
153 #define v_RGB_LVDS_DEN_POL(x) (((x)&1)<<18)
154 #define v_RGB_LVDS_DCLK_POL(x) (((x)&1)<<19)
156 #define v_HDMI_HSYNC_POL(x) (((x)&1)<<20)
157 #define v_HDMI_VSYNC_POL(x) (((x)&1)<<21)
158 #define v_HDMI_DEN_POL(x) (((x)&1)<<22)
159 #define v_HDMI_DCLK_POL(x) (((x)&1)<<23)
161 #define v_EDP_HSYNC_POL(x) (((x)&1)<<24)
162 #define v_EDP_VSYNC_POL(x) (((x)&1)<<25)
163 #define v_EDP_DEN_POL(x) (((x)&1)<<26)
164 #define v_EDP_DCLK_POL(x) (((x)&1)<<27)
166 #define v_MIPI_HSYNC_POL(x) (((x)&1)<<28)
167 #define v_MIPI_VSYNC_POL(x) (((x)&1)<<29)
168 #define v_MIPI_DEN_POL(x) (((x)&1)<<30)
169 #define v_MIPI_DCLK_POL(x) (((x)&1)<<31)
171 #define m_DSP_LUT_EN (1<<0)
172 #define m_PRE_DITHER_DOWN_EN (1<<1)
173 #define m_DITHER_DOWN_EN (1<<2)
174 #define m_DITHER_DOWN_MODE (1<<3)
175 #define m_DITHER_DOWN_SEL (1<<4)
176 #define m_DITHER_UP_EN (1<<6)
177 #define m_DSP_LAYER0_SEL (3<<8)
178 #define m_DSP_LAYER1_SEL (3<<10)
179 #define m_DSP_LAYER2_SEL (3<<12)
180 #define m_DSP_LAYER3_SEL (3<<14)
182 #define m_RGB_LVDS_HSYNC_POL (1<<16)
183 #define m_RGB_LVDS_VSYNC_POL (1<<17)
184 #define m_RGB_LVDS_DEN_POL (1<<18)
185 #define m_RGB_LVDS_DCLK_POL (1<<19)
187 #define m_HDMI_HSYNC_POL (1<<20)
188 #define m_HDMI_VSYNC_POL (1<<21)
189 #define m_HDMI_DEN_POL (1<<22)
190 #define m_HDMI_DCLK_POL (1<<23)
192 #define m_EDP_HSYNC_POL (1<<24)
193 #define m_EDP_VSYNC_POL (1<<25)
194 #define m_EDP_DEN_POL (1<<26)
195 #define m_EDP_DCLK_POL (1<<27)
197 #define m_MIPI_HSYNC_POL (1<<28)
198 #define m_MIPI_VSYNC_POL (1<<29)
199 #define m_MIPI_DEN_POL (1<<30)
200 #define m_MIPI_DCLK_POL (1<<31)
202 #define DSP_BG (0x0018)
203 #define v_DSP_BG_BLUE(x) (((x)&0xff) << 0)
204 #define v_DSP_BG_GREEN(x) (((x)&0xff) << 8)
205 #define v_DSP_BG_RED(x) (((x)&0xff) << 16)
206 #define m_DSP_BG_BLUE (0xff << 0)
207 #define m_DSP_BG_GREEN (0xff << 8)
208 #define m_DSP_BG_RED (0xff << 16)
210 #define MCU_CTRL (0x001c)
211 #define v_MCU_PIX_TOTAL(x) (((x)&0x3f)<<0)
212 #define v_MCU_CS_PST(x) (((x)&0xf)<<6)
213 #define v_MCU_CS_PEND(x) (((x)&0x3f)<<10)
214 #define v_MCU_RW_PST(x) (((x)&0xf)<<16)
215 #define v_MCU_RW_PEND(x) (((x)&0x3f)<<20)
216 #define v_MCU_CLK_SEL(x) (((x)&1)<<26)
217 #define v_MCU_HOLD_MODE(x) (((x)&1)<<27)
218 #define v_MCU_FRAME_ST(x) (((x)&1)<<28)
219 #define v_MCU_RS(x) (((x)&1)<<29)
220 #define v_MCU_BYPASS(x) (((x)&1)<<30)
221 #define v_MCU_TYPE(x) (((x)&1)<<31)
222 #define m_MCU_PIX_TOTAL (0x3f<<0)
223 #define m_MCU_CS_PST (0xf<<6)
224 #define m_MCU_CS_PEND (0x3f<<10)
225 #define m_MCU_RW_PST (0xf<<16)
226 #define m_MCU_RW_PEND (0x3f<<20)
227 #define m_MCU_CLK_SEL (1<<26)
228 #define m_MCU_HOLD_MODE (1<<27)
229 #define m_MCU_FRAME_ST (1<<28)
230 #define m_MCU_RS (1<<29)
231 #define m_MCU_BYPASS (1<<30)
232 #define m_MCU_TYPE ((u32)1<<31)
234 #define LINE_FLAG (0x0020)
235 #define m_DSP_LINE_FLAG0_NUM (0x1fff<<0)
236 #define m_DSP_LINE_FLAG1_NUM (0x1fff<<16)
237 #define v_DSP_LINE_FLAG0_NUM(x) (((x)&0x1fff)<<0)
238 #define v_DSP_LINE_FLAG1_NUM(x) (((x)&0x1fff)<<16)
240 #define INTR_EN (0x0024)
241 #define v_FS_INTR_EN(x) ((((x)&1)<<0) | ((1<<(0+16))))
242 #define v_FS_NEW_INTR_EN(x) ((((x)&1)<<1) | ((1<<(1+16))))
243 #define v_ADDR_SAME_INTR_EN(x) ((((x)&1)<<2) | ((1<<(2+16))))
244 #define v_LINE_FLAG0_INTR_EN(x) ((((x)&1)<<3) | ((1<<(3+16))))
245 #define v_LINE_FLAG1_INTR_EN(x) ((((x)&1)<<4) | ((1<<(4+16))))
246 #define v_BUS_ERROR_INTR_EN(x) ((((x)&1)<<5) | ((1<<(5+16))))
247 #define v_WIN0_EMPTY_INTR_EN(x) ((((x)&1)<<6) | ((1<<(6+16))))
248 #define v_WIN1_EMPTY_INTR_EN(x) ((((x)&1)<<7) | ((1<<(7+16))))
249 #define v_WIN2_EMPTY_INTR_EN(x) ((((x)&1)<<8) | ((1<<(8+16))))
250 #define v_WIN3_EMPTY_INTR_EN(x) ((((x)&1)<<9) | ((1<<(9+16))))
251 #define v_HWC_EMPTY_INTR_EN(x) ((((x)&1)<<10) | ((1<<(10+16))))
252 #define v_POST_BUF_EMPTY_INTR_EN(x) ((((x)&1)<<11) | ((1<<(11+16))))
253 #define v_PWM_GEN_INTR_EN(x) ((((x)&1)<<12) | ((1<<(12+16))))
254 #define v_DSP_HOLD_VALID_INTR_EN(x) ((((x)&1)<<13) | ((1<<(13+16))))
256 #define m_FS_INTR_EN ((1<<0) | ((1<<(0+16))))
257 #define m_FS_NEW_INTR_EN ((1<<1) | ((1<<(1+16))))
258 #define m_ADDR_SAME_INTR_EN ((1<<2) | ((1<<(2+16))))
259 #define m_LINE_FLAG0_INTR_EN ((1<<3) | ((1<<(3+16))))
260 #define m_LINE_FLAG1_INTR_EN ((1<<4) | ((1<<(4+16))))
261 #define m_BUS_ERROR_INTR_EN ((1<<5) | ((1<<(5+16))))
262 #define m_WIN0_EMPTY_INTR_EN ((1<<6) | ((1<<(6+16))))
263 #define m_WIN1_EMPTY_INTR_EN ((1<<7) | ((1<<(7+16))))
264 #define m_WIN2_EMPTY_INTR_EN ((1<<8) | ((1<<(8+16))))
265 #define m_WIN3_EMPTY_INTR_EN ((1<<9) | ((1<<(9+16))))
266 #define m_HWC_EMPTY_INTR_EN ((1<<10) | ((1<<(10+16))))
267 #define m_POST_BUF_EMPTY_INTR_EN ((1<<11) | ((1<<(11+16))))
268 #define m_PWM_GEN_INTR_EN ((1<<12) | ((1<<(12+16))))
269 #define m_DSP_HOLD_VALID_INTR_EN ((1<<13) | ((1<<(13+16))))
271 #define INTR_CLEAR (0x0028)
272 #define v_FS_INTR_CLR(x) ((((x)&1)<<0) | (1<<(0+16)))
273 #define v_FS_NEW_INTR_CLR(x) ((((x)&1)<<1) | (1<<(1+16)))
274 #define v_ADDR_SAME_INTR_CLR(x) ((((x)&1)<<2) | (1<<(2+16)))
275 #define v_LINE_FLAG0_INTR_CLR(x) ((((x)&1)<<3) | (1<<(3+16)))
276 #define v_LINE_FLAG1_INTR_CLR(x) ((((x)&1)<<4) | (1<<(4+16)))
277 #define v_BUS_ERROR_INTR_CLR(x) ((((x)&1)<<5) | (1<<(5+16)))
278 #define v_WIN0_EMPTY_INTR_CLR(x) ((((x)&1)<<6) | (1<<(6+16)))
279 #define v_WIN1_EMPTY_INTR_CLR(x) ((((x)&1)<<7) | (1<<(7+16)))
280 #define v_WIN2_EMPTY_INTR_CLR(x) ((((x)&1)<<8) | (1<<(8+16)))
281 #define v_WIN3_EMPTY_INTR_CLR(x) ((((x)&1)<<9) | (1<<(9+16)))
282 #define v_HWC_EMPTY_INTR_CLR(x) ((((x)&1)<<10) | (1<<(10+16)))
283 #define v_POST_BUF_EMPTY_INTR_CLR(x) ((((x)&1)<<11) | (1<<(11+16)))
284 #define v_PWM_GEN_INTR_CLR(x) ((((x)&1)<<12) | (1<<(12+16)))
285 #define v_DSP_HOLD_VALID_INTR_CLR(x) ((((x)&1)<<13) | (1<<(13+16)))
287 #define m_FS_INTR_CLR ((1<<0) | ((1<<(0+16))))
288 #define m_FS_NEW_INTR_CLR ((1<<1) | ((1<<(1+16))))
289 #define m_ADDR_SAME_INTR_CLR ((1<<2) | ((1<<(2+16))))
290 #define m_LINE_FLAG0_INTR_CLR ((1<<3) | ((1<<(3+16))))
291 #define m_LINE_FLAG1_INTR_CLR ((1<<4) | ((1<<(4+16))))
292 #define m_BUS_ERROR_INTR_CLR ((1<<5) | ((1<<(5+16))))
293 #define m_WIN0_EMPTY_INTR_CLR ((1<<6) | ((1<<(5+16))))
294 #define m_WIN1_EMPTY_INTR_CLR ((1<<7) | ((1<<(7+16))))
295 #define m_WIN2_EMPTY_INTR_CLR ((1<<8) | ((1<<(8+16))))
296 #define m_WIN3_EMPTY_INTR_CLR ((1<<9) | ((1<<(9+16))))
297 #define m_HWC_EMPTY_INTR_CLR ((1<<10) | ((1<<(10+16))))
298 #define m_POST_BUF_EMPTY_INTR_CLR ((1<<11) | ((1<<(11+16))))
299 #define m_PWM_GEN_INTR_CLR ((1<<12) | ((1<<(12+16))))
300 #define m_DSP_HOLD_VALID_INTR_CLR ((1<<13) | ((1<<(13+16))))
302 #define INTR_STATUS (0x002c)
303 #define m_FS_INTR_STS (1<<0)
304 #define m_FS_NEW_INTR_STS (1<<1)
305 #define m_ADDR_SAME_INTR_STS (1<<2)
306 #define m_LINE_FLAG0_INTR_STS (1<<3)
307 #define m_LINE_FLAG1_INTR_STS (1<<4)
308 #define m_BUS_ERROR_INTR_STS (1<<5)
309 #define m_WIN0_EMPTY_INTR_STS (1<<6)
310 #define m_WIN1_EMPTY_INTR_STS (1<<7)
311 #define m_WIN2_EMPTY_INTR_STS (1<<8)
312 #define m_WIN3_EMPTY_INTR_STS (1<<9)
313 #define m_HWC_EMPTY_INTR_STS (1<<10)
314 #define m_POST_BUF_EMPTY_INTR_STS (1<<11)
315 #define m_PWM_GEN_INTR_STS (1<<12)
316 #define m_DSP_HOLD_VALID_INTR_STS (1<<13)
318 #define m_FS_INTR_RAWSTS (1<<(0+16))
319 #define m_FS_NEW_INTR_RAWSTS (1<<(1+16))
320 #define m_ADDR_SAME_INTR_RAWSTS (1<<(2+16))
321 #define m_LINE_FLAG0_INTR_RAWSTS (1<<(3+16))
322 #define m_LINE_FLAG1_INTR_RAWSTS (1<<(4+16))
323 #define m_BUS_ERROR_INTR_RAWSTS (1<<(5+16))
324 #define m_WIN0_EMPTY_INTR_RAWSTS (1<<(6+16))
325 #define m_WIN1_EMPTY_INTR_RAWSTS (1<<(7+16))
326 #define m_WIN2_EMPTY_INTR_RAWSTS (1<<(8+16))
327 #define m_WIN3_EMPTY_INTR_RAWSTS (1<<(9+16))
328 #define m_HWC_EMPTY_INTR_RAWSTS (1<<(10+16))
329 #define m_POST_BUF_EMPTY_INTR_RAWSTS (1<<(11+16))
330 #define m_PWM_GEN_INTR_RAWSTS (1<<(12+16))
331 #define m_DSP_HOLD_VALID_INTR_RAWSTS (1<<(13+16))
334 #define WIN0_CTRL0 (0x0030)
335 #define v_WIN0_EN(x) (((x)&1)<<0)
336 #define v_WIN0_DATA_FMT(x) (((x)&7)<<1)
337 #define v_WIN0_FMT_10(x) (((x)&1)<<4)
338 #define v_WIN0_LB_MODE(x) (((x)&7)<<5)
339 #define v_WIN0_INTERLACE_READ(x) (((x)&1)<<8)
340 #define v_WIN0_NO_OUTSTANDING(x) (((x)&1)<<9)
341 #define v_WIN0_CSC_MODE(x) (((x)&3)<<10)
342 #define v_WIN0_RB_SWAP(x) (((x)&1)<<12)
343 #define v_WIN0_ALPHA_SWAP(x) (((x)&1)<<13)
344 #define v_WIN0_MID_SWAP(x) (((x)&1)<<14)
345 #define v_WIN0_UV_SWAP(x) (((x)&1)<<15)
346 #define v_WIN0_HW_PRE_MUL_EN(x) (((x)&1)<<16)
347 #define v_WIN0_YRGB_DEFLICK(x) (((x)&1)<<18)
348 #define v_WIN0_CBR_DEFLICK(x) (((x)&1)<<19)
349 #define v_WIN0_YUV_CLIP(x) (((x)&1)<<20)
350 #define v_WIN0_X_MIRROR(x) (((x)&1)<<21)
351 #define v_WIN0_Y_MIRROR(x) (((x)&1)<<22)
352 #define v_WIN0_AXI_MAX_OUTSTANDING_EN(x) (((x)&1)<<24)
353 #define v_WIN0_AXI_OUTSTANDING_MAX_NUM(x) (((x)&0x1f)<<25)
354 #define v_WIN0_DMA_BURST_LENGTH(x) (((x)&0x3)<<30)
356 #define m_WIN0_EN (1<<0)
357 #define m_WIN0_DATA_FMT (7<<1)
358 #define m_WIN0_FMT_10 (1<<4)
359 #define m_WIN0_LB_MODE (7<<5)
360 #define m_WIN0_INTERLACE_READ (1<<8)
361 #define m_WIN0_NO_OUTSTANDING (1<<9)
362 #define m_WIN0_CSC_MODE (3<<10)
363 #define m_WIN0_RB_SWAP (1<<12)
364 #define m_WIN0_ALPHA_SWAP (1<<13)
365 #define m_WIN0_MID_SWAP (1<<14)
366 #define m_WIN0_UV_SWAP (1<<15)
367 #define m_WIN0_HW_PRE_MUL_EN (1<<16)
368 #define m_WIN0_YRGB_DEFLICK (1<<18)
369 #define m_WIN0_CBR_DEFLICK (1<<19)
370 #define m_WIN0_YUV_CLIP (1<<20)
371 #define m_WIN0_X_MIRROR (1<<21)
372 #define m_WIN0_Y_MIRROR (1<<22)
373 #define m_WIN0_AXI_MAX_OUTSTANDING_EN (1<<24)
374 #define m_WIN0_AXI_OUTSTANDING_MAX_NUM (0x1f<<25)
375 #define m_WIN0_DMA_BURST_LENGTH (0x3<<30)
377 #define WIN0_CTRL1 (0x0034)
378 #define v_WIN0_YRGB_AXI_GATHER_EN(x) (((x)&1)<<0)
379 #define v_WIN0_CBR_AXI_GATHER_EN(x) (((x)&1)<<1)
380 #define v_WIN0_BIC_COE_SEL(x) (((x)&3)<<2)
381 #define v_WIN0_VSD_YRGB_GT4(x) (((x)&1)<<4)
382 #define v_WIN0_VSD_YRGB_GT2(x) (((x)&1)<<5)
383 #define v_WIN0_VSD_CBR_GT4(x) (((x)&1)<<6)
384 #define v_WIN0_VSD_CBR_GT2(x) (((x)&1)<<7)
385 #define v_WIN0_YRGB_AXI_GATHER_NUM(x) (((x)&0xf)<<8)
386 #define v_WIN0_CBR_AXI_GATHER_NUM(x) (((x)&7)<<12)
387 #define v_WIN0_LINE_LOAD_MODE(x) (((x)&1)<<15)
388 #define v_WIN0_YRGB_HOR_SCL_MODE(x) (((x)&3)<<16)
389 #define v_WIN0_YRGB_VER_SCL_MODE(x) (((x)&3)<<18)
390 #define v_WIN0_YRGB_HSD_MODE(x) (((x)&3)<<20)
391 #define v_WIN0_YRGB_VSU_MODE(x) (((x)&1)<<22)
392 #define v_WIN0_YRGB_VSD_MODE(x) (((x)&1)<<23)
393 #define v_WIN0_CBR_HOR_SCL_MODE(x) (((x)&3)<<24)
394 #define v_WIN0_CBR_VER_SCL_MODE(x) (((x)&3)<<26)
395 #define v_WIN0_CBR_HSD_MODE(x) (((x)&3)<<28)
396 #define v_WIN0_CBR_VSU_MODE(x) (((x)&1)<<30)
397 #define v_WIN0_CBR_VSD_MODE(x) (((x)&1)<<31)
399 #define m_WIN0_YRGB_AXI_GATHER_EN (1<<0)
400 #define m_WIN0_CBR_AXI_GATHER_EN (1<<1)
401 #define m_WIN0_BIC_COE_SEL (3<<2)
402 #define m_WIN0_VSD_YRGB_GT4 (1<<4)
403 #define m_WIN0_VSD_YRGB_GT2 (1<<5)
404 #define m_WIN0_VSD_CBR_GT4 (1<<6)
405 #define m_WIN0_VSD_CBR_GT2 (1<<7)
406 #define m_WIN0_YRGB_AXI_GATHER_NUM (0xf<<8)
407 #define m_WIN0_CBR_AXI_GATHER_NUM (7<<12)
408 #define m_WIN0_LINE_LOAD_MODE (1<<15)
409 #define m_WIN0_YRGB_HOR_SCL_MODE (3<<16)
410 #define m_WIN0_YRGB_VER_SCL_MODE (3<<18)
411 #define m_WIN0_YRGB_HSD_MODE (3<<20)
412 #define m_WIN0_YRGB_VSU_MODE (1<<22)
413 #define m_WIN0_YRGB_VSD_MODE (1<<23)
414 #define m_WIN0_CBR_HOR_SCL_MODE (3<<24)
415 #define m_WIN0_CBR_VER_SCL_MODE (3<<26)
416 #define m_WIN0_CBR_HSD_MODE (3<<28)
417 #define m_WIN0_CBR_VSU_MODE ((u32)1<<30)
418 #define m_WIN0_CBR_VSD_MODE ((u32)1<<31)
420 #define WIN0_COLOR_KEY (0x0038)
421 #define v_WIN0_COLOR_KEY(x) (((x)&0x3fffffff)<<0)
422 #define v_WIN0_COLOR_KEY_EN(x) (((x)&1)<<31)
423 #define m_WIN0_COLOR_KEY (0x3fffffff<<0)
424 #define m_WIN0_COLOR_KEY_EN ((u32)1<<31)
426 #define WIN0_VIR (0x003c)
427 #define v_WIN0_VIR_STRIDE(x) (((x)&0xffff)<<0)
428 #define v_WIN0_VIR_STRIDE_UV(x) (((x)&0xffff)<<16)
429 #define m_WIN0_VIR_STRIDE (0xffff<<0)
430 #define m_WIN0_VIR_STRIDE_UV (0xffff<<16)
432 #define WIN0_YRGB_MST (0x0040)
433 #define WIN0_CBR_MST (0x0044)
434 #define WIN0_ACT_INFO (0x0048)
435 #define v_WIN0_ACT_WIDTH(x) (((x-1)&0x1fff)<<0)
436 #define v_WIN0_ACT_HEIGHT(x) (((x-1)&0x1fff)<<16)
437 #define m_WIN0_ACT_WIDTH (0x1fff<<0)
438 #define m_WIN0_ACT_HEIGHT (0x1fff<<16)
440 #define WIN0_DSP_INFO (0x004c)
441 #define v_WIN0_DSP_WIDTH(x) (((x-1)&0xfff)<<0)
442 #define v_WIN0_DSP_HEIGHT(x) (((x-1)&0xfff)<<16)
443 #define m_WIN0_DSP_WIDTH (0xfff<<0)
444 #define m_WIN0_DSP_HEIGHT (0xfff<<16)
446 #define WIN0_DSP_ST (0x0050)
447 #define v_WIN0_DSP_XST(x) (((x)&0x1fff)<<0)
448 #define v_WIN0_DSP_YST(x) (((x)&0x1fff)<<16)
449 #define m_WIN0_DSP_XST (0x1fff<<0)
450 #define m_WIN0_DSP_YST (0x1fff<<16)
452 #define WIN0_SCL_FACTOR_YRGB (0x0054)
453 #define v_WIN0_HS_FACTOR_YRGB(x) (((x)&0xffff)<<0)
454 #define v_WIN0_VS_FACTOR_YRGB(x) (((x)&0xffff)<<16)
455 #define m_WIN0_HS_FACTOR_YRGB (0xffff<<0)
456 #define m_WIN0_VS_FACTOR_YRGB ((u32)0xffff<<16)
458 #define WIN0_SCL_FACTOR_CBR (0x0058)
459 #define v_WIN0_HS_FACTOR_CBR(x) (((x)&0xffff)<<0)
460 #define v_WIN0_VS_FACTOR_CBR(x) (((x)&0xffff)<<16)
461 #define m_WIN0_HS_FACTOR_CBR (0xffff<<0)
462 #define m_WIN0_VS_FACTOR_CBR ((u32)0xffff<<16)
464 #define WIN0_SCL_OFFSET (0x005c)
465 #define v_WIN0_HS_OFFSET_YRGB(x) (((x)&0xff)<<0)
466 #define v_WIN0_HS_OFFSET_CBR(x) (((x)&0xff)<<8)
467 #define v_WIN0_VS_OFFSET_YRGB(x) (((x)&0xff)<<16)
468 #define v_WIN0_VS_OFFSET_CBR(x) (((x)&0xff)<<24)
470 #define m_WIN0_HS_OFFSET_YRGB (0xff<<0)
471 #define m_WIN0_HS_OFFSET_CBR (0xff<<8)
472 #define m_WIN0_VS_OFFSET_YRGB (0xff<<16)
473 #define m_WIN0_VS_OFFSET_CBR ((u32)0xff<<24)
475 #define WIN0_SRC_ALPHA_CTRL (0x0060)
476 #define v_WIN0_SRC_ALPHA_EN(x) (((x)&1)<<0)
477 #define v_WIN0_SRC_COLOR_M0(x) (((x)&1)<<1)
478 #define v_WIN0_SRC_ALPHA_M0(x) (((x)&1)<<2)
479 #define v_WIN0_SRC_BLEND_M0(x) (((x)&3)<<3)
480 #define v_WIN0_SRC_ALPHA_CAL_M0(x) (((x)&1)<<5)
481 #define v_WIN0_SRC_FACTOR_M0(x) (((x)&7)<<6)
482 #define v_WIN0_SRC_GLOBAL_ALPHA(x) (((x)&0xff)<<16)
483 #define v_WIN0_FADING_VALUE(x) (((x)&0xff)<<24)
485 #define m_WIN0_SRC_ALPHA_EN (1<<0)
486 #define m_WIN0_SRC_COLOR_M0 (1<<1)
487 #define m_WIN0_SRC_ALPHA_M0 (1<<2)
488 #define m_WIN0_SRC_BLEND_M0 (3<<3)
489 #define m_WIN0_SRC_ALPHA_CAL_M0 (1<<5)
490 #define m_WIN0_SRC_FACTOR_M0 (7<<6)
491 #define m_WIN0_SRC_GLOBAL_ALPHA (0xff<<16)
492 #define m_WIN0_FADING_VALUE (0xff<<24)
494 #define WIN0_DST_ALPHA_CTRL (0x0064)
495 #define v_WIN0_DST_FACTOR_M0(x) (((x)&7)<<6)
496 #define m_WIN0_DST_FACTOR_M0 (7<<6)
498 #define WIN0_FADING_CTRL (0x0068)
499 #define v_WIN0_FADING_OFFSET_R(x) (((x)&0xff)<<0)
500 #define v_WIN0_FADING_OFFSET_G(x) (((x)&0xff)<<8)
501 #define v_WIN0_FADING_OFFSET_B(x) (((x)&0xff)<<16)
502 #define v_WIN0_FADING_EN(x) (((x)&1)<<24)
504 #define m_WIN0_FADING_OFFSET_R (0xff<<0)
505 #define m_WIN0_FADING_OFFSET_G (0xff<<8)
506 #define m_WIN0_FADING_OFFSET_B (0xff<<16)
507 #define m_WIN0_FADING_EN (1<<24)
509 #define WIN0_CTRL2 (0x006c)
510 #define v_WIN_RID_WIN0_YRGB(x) (((x)&0xf)<<0)
511 #define v_WIN_RID_WIN0_CBR(x) (((x)&0xf)<<4)
512 #define m_WIN_RID_WIN0_YRGB ((0xf)<<0)
513 #define m_WIN_RID_WIN0_CBR ((0xf)<<4)
515 #define WIN1_CTRL0 (0x0070)
516 #define v_WIN1_EN(x) (((x)&1)<<0)
517 #define v_WIN1_DATA_FMT(x) (((x)&7)<<1)
518 #define v_WIN1_FMT_10(x) (((x)&1)<<4)
519 #define v_WIN1_LB_MODE(x) (((x)&7)<<5)
520 #define v_WIN1_INTERLACE_READ(x) (((x)&1)<<8)
521 #define v_WIN1_NO_OUTSTANDING(x) (((x)&1)<<9)
522 #define v_WIN1_CSC_MODE(x) (((x)&3)<<10)
523 #define v_WIN1_RB_SWAP(x) (((x)&1)<<12)
524 #define v_WIN1_ALPHA_SWAP(x) (((x)&1)<<13)
525 #define v_WIN1_MID_SWAP(x) (((x)&1)<<14)
526 #define v_WIN1_UV_SWAP(x) (((x)&1)<<15)
527 #define v_WIN1_HW_PRE_MUL_EN(x) (((x)&1)<<16)
528 #define v_WIN1_YRGB_DEFLICK(x) (((x)&1)<<18)
529 #define v_WIN1_CBR_DEFLICK(x) (((x)&1)<<19)
530 #define v_WIN1_YUV_CLIP(x) (((x)&1)<<20)
531 #define v_WIN1_X_MIRROR(x) (((x)&1)<<21)
532 #define v_WIN1_Y_MIRROR(x) (((x)&1)<<22)
533 #define v_WIN1_AXI_MAX_OUTSTANDING_EN(x) (((x)&1)<<24)
534 #define v_WIN1_AXI_OUTSTANDING_MAX_NUM(x) (((x)&0x1f)<<25)
535 #define v_WIN1_DMA_BURST_LENGTH(x) (((x)&0x3)<<30)
536 #define m_WIN1_EN (1<<0)
537 #define m_WIN1_DATA_FMT (7<<1)
538 #define m_WIN1_FMT_10 (1<<4)
539 #define m_WIN1_LB_MODE (7<<5)
540 #define m_WIN1_INTERLACE_READ (1<<8)
541 #define m_WIN1_NO_OUTSTANDING (1<<9)
542 #define m_WIN1_CSC_MODE (3<<10)
543 #define m_WIN1_RB_SWAP (1<<12)
544 #define m_WIN1_ALPHA_SWAP (1<<13)
545 #define m_WIN1_MID_SWAP (1<<14)
546 #define m_WIN1_UV_SWAP (1<<15)
547 #define m_WIN1_HW_PRE_MUL_EN (1<<16)
548 #define m_WIN1_YRGB_DEFLICK (1<<18)
549 #define m_WIN1_CBR_DEFLICK (1<<19)
550 #define m_WIN1_YUV_CLIP (1<<20)
551 #define m_WIN1_X_MIRROR (1<<21)
552 #define m_WIN1_Y_MIRROR (1<<22)
553 #define m_WIN1_AXI_MAX_OUTSTANDING_EN (1<<24)
554 #define m_WIN1_AXI_OUTSTANDING_MAX_NUM (0x1f<<25)
555 #define m_WIN1_DMA_BURST_LENGTH (0x3<<30)
557 #define WIN1_CTRL1 (0x0074)
558 #define v_WIN1_YRGB_AXI_GATHER_EN(x) (((x)&1)<<0)
559 #define v_WIN1_CBR_AXI_GATHER_EN(x) (((x)&1)<<1)
560 #define v_WIN1_BIC_COE_SEL(x) (((x)&3)<<2)
561 #define v_WIN1_VSD_YRGB_GT4(x) (((x)&1)<<4)
562 #define v_WIN1_VSD_YRGB_GT2(x) (((x)&1)<<5)
563 #define v_WIN1_VSD_CBR_GT4(x) (((x)&1)<<6)
564 #define v_WIN1_VSD_CBR_GT2(x) (((x)&1)<<7)
565 #define v_WIN1_YRGB_AXI_GATHER_NUM(x) (((x)&0xf)<<8)
566 #define v_WIN1_CBR_AXI_GATHER_NUM(x) (((x)&7)<<12)
567 #define v_WIN1_LINE_LOAD_MODE(x) (((x)&1)<<15)
568 #define v_WIN1_YRGB_HOR_SCL_MODE(x) (((x)&3)<<16)
569 #define v_WIN1_YRGB_VER_SCL_MODE(x) (((x)&3)<<18)
570 #define v_WIN1_YRGB_HSD_MODE(x) (((x)&3)<<20)
571 #define v_WIN1_YRGB_VSU_MODE(x) (((x)&1)<<22)
572 #define v_WIN1_YRGB_VSD_MODE(x) (((x)&1)<<23)
573 #define v_WIN1_CBR_HOR_SCL_MODE(x) (((x)&3)<<24)
574 #define v_WIN1_CBR_VER_SCL_MODE(x) (((x)&3)<<26)
575 #define v_WIN1_CBR_HSD_MODE(x) (((x)&3)<<28)
576 #define v_WIN1_CBR_VSU_MODE(x) (((x)&1)<<30)
577 #define v_WIN1_CBR_VSD_MODE(x) (((x)&1)<<31)
579 #define m_WIN1_YRGB_AXI_GATHER_EN (1<<0)
580 #define m_WIN1_CBR_AXI_GATHER_EN (1<<1)
581 #define m_WIN1_BIC_COE_SEL (3<<2)
582 #define m_WIN1_VSD_YRGB_GT4 (1<<4)
583 #define m_WIN1_VSD_YRGB_GT2 (1<<5)
584 #define m_WIN1_VSD_CBR_GT4 (1<<6)
585 #define m_WIN1_VSD_CBR_GT2 (1<<7)
586 #define m_WIN1_YRGB_AXI_GATHER_NUM (0xf<<8)
587 #define m_WIN1_CBR_AXI_GATHER_NUM (7<<12)
588 #define m_WIN1_LINE_LOAD_MODE (1<<15)
589 #define m_WIN1_YRGB_HOR_SCL_MODE (3<<16)
590 #define m_WIN1_YRGB_VER_SCL_MODE (3<<18)
591 #define m_WIN1_YRGB_HSD_MODE (3<<20)
592 #define m_WIN1_YRGB_VSU_MODE (1<<22)
593 #define m_WIN1_YRGB_VSD_MODE (1<<23)
594 #define m_WIN1_CBR_HOR_SCL_MODE (3<<24)
595 #define m_WIN1_CBR_VER_SCL_MODE (3<<26)
596 #define m_WIN1_CBR_HSD_MODE (3<<28)
597 #define m_WIN1_CBR_VSU_MODE (1<<30)
598 #define m_WIN1_CBR_VSD_MODE ((u32)1<<31)
600 #define WIN1_COLOR_KEY (0x0078)
601 #define v_WIN1_COLOR_KEY(x) (((x)&0x3fffffff)<<0)
602 #define v_WIN1_COLOR_KEY_EN(x) (((x)&1)<<31)
603 #define m_WIN1_COLOR_KEY (0x3fffffff<<0)
604 #define m_WIN1_COLOR_KEY_EN ((u32)1<<31)
606 #define WIN1_VIR (0x007c)
607 #define v_WIN1_VIR_STRIDE(x) (((x)&0xffff)<<0)
608 #define v_WIN1_VIR_STRIDE_UV(x) (((x)&0xffff)<<16)
609 #define m_WIN1_VIR_STRIDE (0xffff<<0)
610 #define m_WIN1_VIR_STRIDE_UV (0xffff<<16)
612 #define WIN1_YRGB_MST (0x0080)
613 #define WIN1_CBR_MST (0x0084)
614 #define WIN1_ACT_INFO (0x0088)
615 #define v_WIN1_ACT_WIDTH(x) (((x-1)&0x1fff)<<0)
616 #define v_WIN1_ACT_HEIGHT(x) (((x-1)&0x1fff)<<16)
617 #define m_WIN1_ACT_WIDTH (0x1fff<<0)
618 #define m_WIN1_ACT_HEIGHT (0x1fff<<16)
620 #define WIN1_DSP_INFO (0x008c)
621 #define v_WIN1_DSP_WIDTH(x) (((x-1)&0xfff)<<0)
622 #define v_WIN1_DSP_HEIGHT(x) (((x-1)&0xfff)<<16)
623 #define m_WIN1_DSP_WIDTH (0xfff<<0)
624 #define m_WIN1_DSP_HEIGHT (0xfff<<16)
626 #define WIN1_DSP_ST (0x0090)
627 #define v_WIN1_DSP_XST(x) (((x)&0x1fff)<<0)
628 #define v_WIN1_DSP_YST(x) (((x)&0x1fff)<<16)
629 #define m_WIN1_DSP_XST (0x1fff<<0)
630 #define m_WIN1_DSP_YST (0x1fff<<16)
632 #define WIN1_SCL_FACTOR_YRGB (0x0094)
633 #define v_WIN1_HS_FACTOR_YRGB(x) (((x)&0xffff)<<0)
634 #define v_WIN1_VS_FACTOR_YRGB(x) (((x)&0xffff)<<16)
635 #define m_WIN1_HS_FACTOR_YRGB (0xffff<<0)
636 #define m_WIN1_VS_FACTOR_YRGB ((u32)0xffff<<16)
638 #define WIN1_SCL_FACTOR_CBR (0x0098)
639 #define v_WIN1_HS_FACTOR_CBR(x) (((x)&0xffff)<<0)
640 #define v_WIN1_VS_FACTOR_CBR(x) (((x)&0xffff)<<16)
641 #define m_WIN1_HS_FACTOR_CBR (0xffff<<0)
642 #define m_WIN1_VS_FACTOR_CBR ((u32)0xffff<<16)
644 #define WIN1_SCL_OFFSET (0x009c)
645 #define v_WIN1_HS_OFFSET_YRGB(x) (((x)&0xff)<<0)
646 #define v_WIN1_HS_OFFSET_CBR(x) (((x)&0xff)<<8)
647 #define v_WIN1_VS_OFFSET_YRGB(x) (((x)&0xff)<<16)
648 #define v_WIN1_VS_OFFSET_CBR(x) (((x)&0xff)<<24)
650 #define m_WIN1_HS_OFFSET_YRGB (0xff<<0)
651 #define m_WIN1_HS_OFFSET_CBR (0xff<<8)
652 #define m_WIN1_VS_OFFSET_YRGB (0xff<<16)
653 #define m_WIN1_VS_OFFSET_CBR ((u32)0xff<<24)
655 #define WIN1_SRC_ALPHA_CTRL (0x00a0)
656 #define v_WIN1_SRC_ALPHA_EN(x) (((x)&1)<<0)
657 #define v_WIN1_SRC_COLOR_M0(x) (((x)&1)<<1)
658 #define v_WIN1_SRC_ALPHA_M0(x) (((x)&1)<<2)
659 #define v_WIN1_SRC_BLEND_M0(x) (((x)&3)<<3)
660 #define v_WIN1_SRC_ALPHA_CAL_M0(x) (((x)&1)<<5)
661 #define v_WIN1_SRC_FACTOR_M0(x) (((x)&7)<<6)
662 #define v_WIN1_SRC_GLOBAL_ALPHA(x) (((x)&0xff)<<16)
663 #define v_WIN1_FADING_VALUE(x) (((x)&0xff)<<24)
665 #define m_WIN1_SRC_ALPHA_EN (1<<0)
666 #define m_WIN1_SRC_COLOR_M0 (1<<1)
667 #define m_WIN1_SRC_ALPHA_M0 (1<<2)
668 #define m_WIN1_SRC_BLEND_M0 (3<<3)
669 #define m_WIN1_SRC_ALPHA_CAL_M0 (1<<5)
670 #define m_WIN1_SRC_FACTOR_M0 (7<<6)
671 #define m_WIN1_SRC_GLOBAL_ALPHA (0xff<<16)
672 #define m_WIN1_FADING_VALUE (0xff<<24)
674 #define WIN1_DST_ALPHA_CTRL (0x00a4)
675 #define v_WIN1_DST_FACTOR_M0(x) (((x)&7)<<6)
676 #define m_WIN1_DST_FACTOR_M0 (7<<6)
678 #define WIN1_FADING_CTRL (0x00a8)
679 #define v_WIN1_FADING_OFFSET_R(x) (((x)&0xff)<<0)
680 #define v_WIN1_FADING_OFFSET_G(x) (((x)&0xff)<<8)
681 #define v_WIN1_FADING_OFFSET_B(x) (((x)&0xff)<<16)
682 #define v_WIN1_FADING_EN(x) (((x)&1)<<24)
684 #define m_WIN1_FADING_OFFSET_R (0xff<<0)
685 #define m_WIN1_FADING_OFFSET_G (0xff<<8)
686 #define m_WIN1_FADING_OFFSET_B (0xff<<16)
687 #define m_WIN1_FADING_EN (1<<24)
689 #define WIN1_CTRL2 (0xac)
690 #define v_WIN_RID_WIN1_YRGB(x) (((x)&0xf)<<0)
691 #define v_WIN_RID_WIN1_CBR(x) (((x)&0xf)<<4)
692 #define m_WIN_RID_WIN1_YRGB ((0xf)<<0)
693 #define m_WIN_RID_WIN1_CBR ((0xf)<<4)
695 #define WIN2_CTRL0 (0x00b0)
696 #define v_WIN2_EN(x) (((x)&1)<<0)
697 #define v_WIN2_INTERLACE_READ(x) (((x)&1)<<1)
698 #define v_WIN2_CSC_MODE(x) (((x)&1)<<2)
699 #define v_WIN2_MST0_EN(x) (((x)&1)<<4)
700 #define v_WIN2_DATA_FMT0(x) (((x)&3)<<5)
701 #define v_WIN2_MST1_EN(x) (((x)&1)<<8)
702 #define v_WIN2_DATA_FMT1(x) (((x)&3)<<9)
703 #define v_WIN2_MST2_EN(x) (((x)&1)<<12)
704 #define v_WIN2_DATA_FMT2(x) (((x)&3)<<13)
705 #define v_WIN2_MST3_EN(x) (((x)&1)<<16)
706 #define v_WIN2_DATA_FMT3(x) (((x)&3)<<17)
707 #define v_WIN2_RB_SWAP0(x) (((x)&1)<<20)
708 #define v_WIN2_ALPHA_SWAP0(x) (((x)&1)<<21)
709 #define v_WIN2_ENDIAN_SWAP0(x) (((x)&1)<<22)
710 #define v_WIN2_RB_SWAP1(x) (((x)&1)<<23)
711 #define v_WIN2_ALPHA_SWAP1(x) (((x)&1)<<24)
712 #define v_WIN2_ENDIAN_SWAP1(x) (((x)&1)<<25)
713 #define v_WIN2_RB_SWAP2(x) (((x)&1)<<26)
714 #define v_WIN2_ALPHA_SWAP2(x) (((x)&1)<<27)
715 #define v_WIN2_ENDIAN_SWAP2(x) (((x)&1)<<28)
716 #define v_WIN2_RB_SWAP3(x) (((x)&1)<<29)
717 #define v_WIN2_ALPHA_SWAP3(x) (((x)&1)<<30)
718 #define v_WIN2_ENDIAN_SWAP3(x) (((x)&1)<<31)
720 #define m_WIN2_EN (1<<0)
721 #define m_WIN2_INTERLACE_READ (1<<1)
722 #define m_WIN2_CSC_MODE (1<<2)
723 #define m_WIN2_MST0_EN (1<<4)
724 #define m_WIN2_DATA_FMT0 (3<<5)
725 #define m_WIN2_MST1_EN (1<<8)
726 #define m_WIN2_DATA_FMT1 (3<<9)
727 #define m_WIN2_MST2_EN (1<<12)
728 #define m_WIN2_DATA_FMT2 (3<<13)
729 #define m_WIN2_MST3_EN (1<<16)
730 #define m_WIN2_DATA_FMT3 (3<<17)
731 #define m_WIN2_RB_SWAP0 (1<<20)
732 #define m_WIN2_ALPHA_SWAP0 (1<<21)
733 #define m_WIN2_ENDIAN_SWAP0 (1<<22)
734 #define m_WIN2_RB_SWAP1 (1<<23)
735 #define m_WIN2_ALPHA_SWAP1 (1<<24)
736 #define m_WIN2_ENDIAN_SWAP1 (1<<25)
737 #define m_WIN2_RB_SWAP2 (1<<26)
738 #define m_WIN2_ALPHA_SWAP2 (1<<27)
739 #define m_WIN2_ENDIAN_SWAP2 (1<<28)
740 #define m_WIN2_RB_SWAP3 (1<<29)
741 #define m_WIN2_ALPHA_SWAP3 (1<<30)
742 #define m_WIN2_ENDIAN_SWAP3 (1<<31)
744 #define WIN2_CTRL1 (0x00b4)
745 #define v_WIN2_AXI_GATHER_EN(x) (((x)&1)<<0)
746 #define v_WIN2_AXI_MAX_OUTSTANDING_EN(x) (((x)&1)<<1)
747 #define v_WIN2_DMA_BURST_LENGTH(x) (((x)&0x3)<<2)
748 #define v_WIN2_AXI_GATHER_NUM(x) (((x)&0xf)<<4)
749 #define v_WIN2_AXI_OUTSTANDING_MAX_NUM(x) (((x)&0x1f)<<8)
750 #define v_WIN2_RGB2YUV_EN(x) (((x)&1)<<13)
751 #define v_WIN2_NO_OUTSTANDING(x) (((x)&1)<<14)
752 #define v_WIN2_Y_MIR(x) (((x)&1)<<15)
753 #define v_WIN2_LUT_EN(x) (((x)&1)<<16)
754 #define v_WIN_RID_WIN2(x) (((x)&0xf)<<20)
756 #define m_WIN2_AXI_GATHER_EN (1<<0)
757 #define m_WIN2_AXI_MAX_OUTSTANDING_EN (1<<1)
758 #define m_WIN2_DMA_BURST_LENGTH (0x3<<2)
759 #define m_WIN2_AXI_GATHER_NUM (0xf<<4)
760 #define m_WIN2_AXI_OUTSTANDING_MAX_NUM (0x1f<<8)
761 #define m_WIN2_RGB2YUV_EN (1<<13)
762 #define m_WIN2_NO_OUTSTANDING (1<<14)
763 #define m_WIN2_Y_MIR (1<<15)
764 #define m_WIN2_LUT_EN (1<<16)
765 #define m_WIN_RID_WIN2 (0xf<<20)
767 #define WIN2_VIR0_1 (0x00b8)
768 #define v_WIN2_VIR_STRIDE0(x) (((x)&0xffff)<<0)
769 #define v_WIN2_VIR_STRIDE1(x) (((x)&0xffff)<<16)
770 #define m_WIN2_VIR_STRIDE0 (((u32)0xffff)<<0)
771 #define m_WIN2_VIR_STRIDE1 (((u32)0xffff)<<16)
773 #define WIN2_VIR2_3 (0x00bc)
774 #define v_WIN2_VIR_STRIDE2(x) (((x)&0xffff)<<0)
775 #define v_WIN2_VIR_STRIDE3(x) (((x)&0xffff)<<16)
776 #define m_WIN2_VIR_STRIDE2 (((u32)0xffff)<<0)
777 #define m_WIN2_VIR_STRIDE3 (((u32)0xffff)<<16)
779 #define WIN2_MST0 (0x00c0)
780 #define WIN2_DSP_INFO0 (0x00c4)
781 #define v_WIN2_DSP_WIDTH0(x) (((x-1)&0xfff)<<0)
782 #define v_WIN2_DSP_HEIGHT0(x) (((x-1)&0xfff)<<16)
783 #define m_WIN2_DSP_WIDTH0 (0xfff<<0)
784 #define m_WIN2_DSP_HEIGHT0 (0xfff<<16)
786 #define WIN2_DSP_ST0 (0x00c8)
787 #define v_WIN2_DSP_XST0(x) (((x)&0x1fff)<<0)
788 #define v_WIN2_DSP_YST0(x) (((x)&0x1fff)<<16)
789 #define m_WIN2_DSP_XST0 (0x1fff<<0)
790 #define m_WIN2_DSP_YST0 (0x1fff<<16)
792 #define WIN2_COLOR_KEY (0x00cc)
793 #define v_WIN2_COLOR_KEY(x) (((x)&0xffffff)<<0)
794 #define v_WIN2_KEY_EN(x) (((x)&1)<<24)
795 #define m_WIN2_COLOR_KEY (0xffffff<<0)
796 #define m_WIN2_KEY_EN ((u32)1<<24)
799 #define WIN2_MST1 (0x00d0)
800 #define WIN2_DSP_INFO1 (0x00d4)
801 #define v_WIN2_DSP_WIDTH1(x) (((x-1)&0xfff)<<0)
802 #define v_WIN2_DSP_HEIGHT1(x) (((x-1)&0xfff)<<16)
804 #define m_WIN2_DSP_WIDTH1 (0xfff<<0)
805 #define m_WIN2_DSP_HEIGHT1 (0xfff<<16)
807 #define WIN2_DSP_ST1 (0x00d8)
808 #define v_WIN2_DSP_XST1(x) (((x)&0x1fff)<<0)
809 #define v_WIN2_DSP_YST1(x) (((x)&0x1fff)<<16)
810 #define m_WIN2_DSP_XST1 (0x1fff<<0)
811 #define m_WIN2_DSP_YST1 (0x1fff<<16)
813 #define WIN2_SRC_ALPHA_CTRL (0x00dc)
814 #define v_WIN2_SRC_ALPHA_EN(x) (((x)&1)<<0)
815 #define v_WIN2_SRC_COLOR_M0(x) (((x)&1)<<1)
816 #define v_WIN2_SRC_ALPHA_M0(x) (((x)&1)<<2)
817 #define v_WIN2_SRC_BLEND_M0(x) (((x)&3)<<3)
818 #define v_WIN2_SRC_ALPHA_CAL_M0(x) (((x)&1)<<5)
819 #define v_WIN2_SRC_FACTOR_M0(x) (((x)&7)<<6)
820 #define v_WIN2_SRC_GLOBAL_ALPHA(x) (((x)&0xff)<<16)
821 #define v_WIN2_FADING_VALUE(x) (((x)&0xff)<<24)
822 #define m_WIN2_SRC_ALPHA_EN (1<<0)
823 #define m_WIN2_SRC_COLOR_M0 (1<<1)
824 #define m_WIN2_SRC_ALPHA_M0 (1<<2)
825 #define m_WIN2_SRC_BLEND_M0 (3<<3)
826 #define m_WIN2_SRC_ALPHA_CAL_M0 (1<<5)
827 #define m_WIN2_SRC_FACTOR_M0 (7<<6)
828 #define m_WIN2_SRC_GLOBAL_ALPHA (0xff<<16)
829 #define m_WIN2_FADING_VALUE (0xff<<24)
831 #define WIN2_MST2 (0x00e0)
832 #define WIN2_DSP_INFO2 (0x00e4)
833 #define v_WIN2_DSP_WIDTH2(x) (((x-1)&0xfff)<<0)
834 #define v_WIN2_DSP_HEIGHT2(x) (((x-1)&0xfff)<<16)
835 #define m_WIN2_DSP_WIDTH2 (0xfff<<0)
836 #define m_WIN2_DSP_HEIGHT2 (0xfff<<16)
838 #define WIN2_DSP_ST2 (0x00e8)
839 #define v_WIN2_DSP_XST2(x) (((x)&0x1fff)<<0)
840 #define v_WIN2_DSP_YST2(x) (((x)&0x1fff)<<16)
841 #define m_WIN2_DSP_XST2 (0x1fff<<0)
842 #define m_WIN2_DSP_YST2 (0x1fff<<16)
844 #define WIN2_DST_ALPHA_CTRL (0x00ec)
845 #define v_WIN2_DST_FACTOR_M0(x) (((x)&7)<<6)
846 #define m_WIN2_DST_FACTOR_M0 (7<<6)
848 #define WIN2_MST3 (0x00f0)
849 #define WIN2_DSP_INFO3 (0x00f4)
850 #define v_WIN2_DSP_WIDTH3(x) (((x-1)&0xfff)<<0)
851 #define v_WIN2_DSP_HEIGHT3(x) (((x-1)&0xfff)<<16)
852 #define m_WIN2_DSP_WIDTH3 (0xfff<<0)
853 #define m_WIN2_DSP_HEIGHT3 (0xfff<<16)
855 #define WIN2_DSP_ST3 (0x00f8)
856 #define v_WIN2_DSP_XST3(x) (((x)&0x1fff)<<0)
857 #define v_WIN2_DSP_YST3(x) (((x)&0x1fff)<<16)
858 #define m_WIN2_DSP_XST3 (0x1fff<<0)
859 #define m_WIN2_DSP_YST3 (0x1fff<<16)
861 #define WIN2_FADING_CTRL (0x00fc)
862 #define v_WIN2_FADING_OFFSET_R(x) (((x)&0xff)<<0)
863 #define v_WIN2_FADING_OFFSET_G(x) (((x)&0xff)<<8)
864 #define v_WIN2_FADING_OFFSET_B(x) (((x)&0xff)<<16)
865 #define v_WIN2_FADING_EN(x) (((x)&1)<<24)
867 #define m_WIN2_FADING_OFFSET_R (0xff<<0)
868 #define m_WIN2_FADING_OFFSET_G (0xff<<8)
869 #define m_WIN2_FADING_OFFSET_B (0xff<<16)
870 #define m_WIN2_FADING_EN (1<<24)
873 #define WIN3_CTRL0 (0x0100)
874 #define v_WIN3_EN(x) (((x)&1)<<0)
875 #define v_WIN3_INTERLACE_READ(x) (((x)&1)<<1)
876 #define v_WIN3_CSC_MODE(x) (((x)&1)<<2)
877 #define v_WIN3_MST0_EN(x) (((x)&1)<<4)
878 #define v_WIN3_DATA_FMT0(x) (((x)&3)<<5)
879 #define v_WIN3_MST1_EN(x) (((x)&1)<<8)
880 #define v_WIN3_DATA_FMT1(x) (((x)&3)<<9)
881 #define v_WIN3_MST2_EN(x) (((x)&1)<<12)
882 #define v_WIN3_DATA_FMT2(x) (((x)&3)<<13)
883 #define v_WIN3_MST3_EN(x) (((x)&1)<<16)
884 #define v_WIN3_DATA_FMT3(x) (((x)&3)<<17)
885 #define v_WIN3_RB_SWAP0(x) (((x)&1)<<20)
886 #define v_WIN3_ALPHA_SWAP0(x) (((x)&1)<<21)
887 #define v_WIN3_ENDIAN_SWAP0(x) (((x)&1)<<22)
888 #define v_WIN3_RB_SWAP1(x) (((x)&1)<<23)
889 #define v_WIN3_ALPHA_SWAP1(x) (((x)&1)<<24)
890 #define v_WIN3_ENDIAN_SWAP1(x) (((x)&1)<<25)
891 #define v_WIN3_RB_SWAP2(x) (((x)&1)<<26)
892 #define v_WIN3_ALPHA_SWAP2(x) (((x)&1)<<27)
893 #define v_WIN3_ENDIAN_SWAP2(x) (((x)&1)<<28)
894 #define v_WIN3_RB_SWAP3(x) (((x)&1)<<29)
895 #define v_WIN3_ALPHA_SWAP3(x) (((x)&1)<<30)
896 #define v_WIN3_ENDIAN_SWAP3(x) (((x)&1)<<31)
898 #define m_WIN3_EN (1<<0)
899 #define m_WIN3_INTERLACE_READ (1<<1)
900 #define m_WIN3_CSC_MODE (1<<2)
901 #define m_WIN3_MST0_EN (1<<4)
902 #define m_WIN3_DATA_FMT0 (3<<5)
903 #define m_WIN3_MST1_EN (1<<8)
904 #define m_WIN3_DATA_FMT1 (3<<9)
905 #define m_WIN3_MST2_EN (1<<12)
906 #define m_WIN3_DATA_FMT2 (3<<13)
907 #define m_WIN3_MST3_EN (1<<16)
908 #define m_WIN3_DATA_FMT3 (3<<17)
909 #define m_WIN3_RB_SWAP0 (1<<20)
910 #define m_WIN3_ALPHA_SWAP0 (1<<21)
911 #define m_WIN3_ENDIAN_SWAP0 (1<<22)
912 #define m_WIN3_RB_SWAP1 (1<<23)
913 #define m_WIN3_ALPHA_SWAP1 (1<<24)
914 #define m_WIN3_ENDIAN_SWAP1 (1<<25)
915 #define m_WIN3_RB_SWAP2 (1<<26)
916 #define m_WIN3_ALPHA_SWAP2 (1<<27)
917 #define m_WIN3_ENDIAN_SWAP2 (1<<28)
918 #define m_WIN3_RB_SWAP3 (1<<29)
919 #define m_WIN3_ALPHA_SWAP3 (1<<30)
920 #define m_WIN3_ENDIAN_SWAP3 (1<<31)
922 #define WIN3_CTRL1 (0x0104)
923 #define v_WIN3_AXI_GATHER_EN(x) (((x)&1)<<0)
924 #define v_WIN3_AXI_MAX_OUTSTANDING_EN(x) (((x)&1)<<1)
925 #define v_WIN3_DMA_BURST_LENGTH(x) (((x)&0x3)<<2)
926 #define v_WIN3_AXI_GATHER_NUM(x) (((x)&0xf)<<4)
927 #define v_WIN3_AXI_OUTSTANDING_MAX_NUM(x) (((x)&0x1f)<<8)
928 #define v_WIN3_NO_OUTSTANDING(x) (((x)&1)<<14)
929 #define v_WIN3_Y_MIR(x) (((x)&1)<<15)
930 #define v_WIN3_LUT_EN(x) (((x)&1)<<16)
931 #define v_WIN_RID_WIN3(x) (((x)&0xf)<<20)
933 #define m_WIN3_AXI_GATHER_EN (1<<0)
934 #define m_WIN3_AXI_MAX_OUTSTANDING_EN (1<<1)
935 #define m_WIN3_DMA_BURST_LENGTH (0x3<<2)
936 #define m_WIN3_AXI_GATHER_NUM (0xf<<4)
937 #define m_WIN3_AXI_OUTSTANDING_MAX_NUM (0x1f<<8)
938 #define m_WIN3_NO_OUTSTANDING (1<<14)
939 #define m_WIN3_Y_MIR (1<<15)
940 #define m_WIN3_LUT_EN (1<<16)
941 #define m_WIN_RID_WIN3 (0xf<<20)
943 #define WIN3_VIR0_1 (0x0108)
944 #define v_WIN3_VIR_STRIDE0(x) (((x)&0xffff)<<0)
945 #define v_WIN3_VIR_STRIDE1(x) (((x)&0xffff)<<16)
946 #define m_WIN3_VIR_STRIDE0 (0xffff<<0)
947 #define m_WIN3_VIR_STRIDE1 (0xffff<<16)
949 #define WIN3_VIR2_3 (0x010c)
950 #define v_WIN3_VIR_STRIDE2(x) (((x)&0xffff)<<0)
951 #define v_WIN3_VIR_STRIDE3(x) (((x)&0xffff)<<16)
952 #define m_WIN3_VIR_STRIDE2 (0xffff<<0)
953 #define m_WIN3_VIR_STRIDE3 (0xffff<<16)
955 #define WIN3_MST0 (0x0110)
956 #define WIN3_DSP_INFO0 (0x0114)
957 #define v_WIN3_DSP_WIDTH0(x) (((x-1)&0xfff)<<0)
958 #define v_WIN3_DSP_HEIGHT0(x) (((x-1)&0xfff)<<16)
959 #define m_WIN3_DSP_WIDTH0 (0xfff<<0)
960 #define m_WIN3_DSP_HEIGHT0 (0xfff<<16)
962 #define WIN3_DSP_ST0 (0x0118)
963 #define v_WIN3_DSP_XST0(x) (((x)&0x1fff)<<0)
964 #define v_WIN3_DSP_YST0(x) (((x)&0x1fff)<<16)
965 #define m_WIN3_DSP_XST0 (0x1fff<<0)
966 #define m_WIN3_DSP_YST0 (0x1fff<<16)
968 #define WIN3_COLOR_KEY (0x011c)
969 #define v_WIN3_COLOR_KEY(x) (((x)&0xffffff)<<0)
970 #define v_WIN3_KEY_EN(x) (((x)&1)<<24)
971 #define m_WIN3_COLOR_KEY (0xffffff<<0)
972 #define m_WIN3_KEY_EN ((u32)1<<24)
974 #define WIN3_MST1 (0x0120)
975 #define WIN3_DSP_INFO1 (0x0124)
976 #define v_WIN3_DSP_WIDTH1(x) (((x-1)&0xfff)<<0)
977 #define v_WIN3_DSP_HEIGHT1(x) (((x-1)&0xfff)<<16)
978 #define m_WIN3_DSP_WIDTH1 (0xfff<<0)
979 #define m_WIN3_DSP_HEIGHT1 (0xfff<<16)
981 #define WIN3_DSP_ST1 (0x0128)
982 #define v_WIN3_DSP_XST1(x) (((x)&0x1fff)<<0)
983 #define v_WIN3_DSP_YST1(x) (((x)&0x1fff)<<16)
984 #define m_WIN3_DSP_XST1 (0x1fff<<0)
985 #define m_WIN3_DSP_YST1 (0x1fff<<16)
987 #define WIN3_SRC_ALPHA_CTRL (0x012c)
988 #define v_WIN3_SRC_ALPHA_EN(x) (((x)&1)<<0)
989 #define v_WIN3_SRC_COLOR_M0(x) (((x)&1)<<1)
990 #define v_WIN3_SRC_ALPHA_M0(x) (((x)&1)<<2)
991 #define v_WIN3_SRC_BLEND_M0(x) (((x)&3)<<3)
992 #define v_WIN3_SRC_ALPHA_CAL_M0(x) (((x)&1)<<5)
993 #define v_WIN3_SRC_FACTOR_M0(x) (((x)&7)<<6)
994 #define v_WIN3_SRC_GLOBAL_ALPHA(x) (((x)&0xff)<<16)
995 #define v_WIN3_FADING_VALUE(x) (((x)&0xff)<<24)
997 #define m_WIN3_SRC_ALPHA_EN (1<<0)
998 #define m_WIN3_SRC_COLOR_M0 (1<<1)
999 #define m_WIN3_SRC_ALPHA_M0 (1<<2)
1000 #define m_WIN3_SRC_BLEND_M0 (3<<3)
1001 #define m_WIN3_SRC_ALPHA_CAL_M0 (1<<5)
1002 #define m_WIN3_SRC_FACTOR_M0 (7<<6)
1003 #define m_WIN3_SRC_GLOBAL_ALPHA (0xff<<16)
1004 #define m_WIN3_FADING_VALUE (0xff<<24)
1006 #define WIN3_MST2 (0x0130)
1007 #define WIN3_DSP_INFO2 (0x0134)
1008 #define v_WIN3_DSP_WIDTH2(x) (((x-1)&0xfff)<<0)
1009 #define v_WIN3_DSP_HEIGHT2(x) (((x-1)&0xfff)<<16)
1010 #define m_WIN3_DSP_WIDTH2 (0xfff<<0)
1011 #define m_WIN3_DSP_HEIGHT2 (0xfff<<16)
1013 #define WIN3_DSP_ST2 (0x0138)
1014 #define v_WIN3_DSP_XST2(x) (((x)&0x1fff)<<0)
1015 #define v_WIN3_DSP_YST2(x) (((x)&0x1fff)<<16)
1016 #define m_WIN3_DSP_XST2 (0x1fff<<0)
1017 #define m_WIN3_DSP_YST2 (0x1fff<<16)
1019 #define WIN3_DST_ALPHA_CTRL (0x013c)
1020 #define v_WIN3_DST_FACTOR_M0(x) (((x)&7)<<6)
1021 #define m_WIN3_DST_FACTOR_M0 (7<<6)
1024 #define WIN3_MST3 (0x0140)
1025 #define WIN3_DSP_INFO3 (0x0144)
1026 #define v_WIN3_DSP_WIDTH3(x) (((x-1)&0xfff)<<0)
1027 #define v_WIN3_DSP_HEIGHT3(x) (((x-1)&0xfff)<<16)
1028 #define m_WIN3_DSP_WIDTH3 (0xfff<<0)
1029 #define m_WIN3_DSP_HEIGHT3 (0xfff<<16)
1031 #define WIN3_DSP_ST3 (0x0148)
1032 #define v_WIN3_DSP_XST3(x) (((x)&0x1fff)<<0)
1033 #define v_WIN3_DSP_YST3(x) (((x)&0x1fff)<<16)
1034 #define m_WIN3_DSP_XST3 (0x1fff<<0)
1035 #define m_WIN3_DSP_YST3 (0x1fff<<16)
1037 #define WIN3_FADING_CTRL (0x014c)
1038 #define v_WIN3_FADING_OFFSET_R(x) (((x)&0xff)<<0)
1039 #define v_WIN3_FADING_OFFSET_G(x) (((x)&0xff)<<8)
1040 #define v_WIN3_FADING_OFFSET_B(x) (((x)&0xff)<<16)
1041 #define v_WIN3_FADING_EN(x) (((x)&1)<<24)
1043 #define m_WIN3_FADING_OFFSET_R (0xff<<0)
1044 #define m_WIN3_FADING_OFFSET_G (0xff<<8)
1045 #define m_WIN3_FADING_OFFSET_B (0xff<<16)
1046 #define m_WIN3_FADING_EN (1<<24)
1050 #define HWC_CTRL0 (0x0150)
1051 #define v_HWC_EN(x) (((x)&1)<<0)
1052 #define v_HWC_DATA_FMT(x) (((x)&7)<<1)
1053 #define v_HWC_MODE(x) (((x)&1)<<4)
1054 #define v_HWC_SIZE(x) (((x)&3)<<5)
1055 #define v_HWC_INTERLACE_READ(x) (((x)&1)<<8)
1056 #define v_HWC_CSC_MODE(x) (((x)&1)<<10)
1057 #define v_HWC_RB_SWAP(x) (((x)&1)<<12)
1058 #define v_HWC_ALPHA_SWAP(x) (((x)&1)<<13)
1059 #define v_HWC_ENDIAN_SWAP(x) (((x)&1)<<14)
1061 #define m_HWC_EN (1<<0)
1062 #define m_HWC_DATA_FMT (7<<1)
1063 #define m_HWC_MODE (1<<4)
1064 #define m_HWC_SIZE (3<<5)
1065 #define m_HWC_INTERLACE_READ (1<<8)
1066 #define m_HWC_CSC_MODE (1<<10)
1067 #define m_HWC_RB_SWAP (1<<12)
1068 #define m_HWC_ALPHA_SWAP (1<<13)
1069 #define m_HWC_ENDIAN_SWAP (1<<14)
1072 #define HWC_CTRL1 (0x0154)
1073 #define v_HWC_AXI_GATHER_EN(x) (((x)&1)<<0)
1074 #define v_HWC_AXI_MAX_OUTSTANDING_EN(x) (((x)&1)<<1)
1075 #define v_HWC_DMA_BURST_LENGTH(x) (((x)&0x3)<<2)
1076 #define v_HWC_AXI_GATHER_NUM(x) (((x)&0x7)<<4)
1077 #define v_HWC_AXI_OUTSTANDING_MAX_NUM(x) (((x)&0x1f)<<8)
1078 #define v_HWC_RGB2YUV_EN(x) (((x)&1)<<13)
1079 #define v_HWC_NO_OUTSTANDING(x) (((x)&1)<<14)
1080 #define v_HWC_Y_MIR(x) (((x)&1)<<15)
1081 #define v_HWC_LUT_EN(x) (((x)&1)<<16)
1082 #define v_WIN_RID_HWC(x) (((x)&0xf)<<20)
1084 #define m_HWC_AXI_GATHER_EN (1<<0)
1085 #define m_HWC_AXI_MAX_OUTSTANDING_EN (1<<1)
1086 #define m_HWC_DMA_BURST_LENGTH (0x3<<2)
1087 #define m_HWC_AXI_GATHER_NUM (0x7<<4)
1088 #define m_HWC_AXI_OUTSTANDING_MAX_NUM (0x1f<<8)
1089 #define m_HWC_RGB2YUV_EN (1<<13)
1090 #define m_HWC_NO_OUTSTANDING (1<<14)
1091 #define m_HWC_Y_MIR (1<<15)
1092 #define m_HWC_LUT_EN (1<<16)
1093 #define m_WIN_RID_HWC (0xf<<20)
1095 #define HWC_MST (0x0158)
1096 #define HWC_DSP_ST (0x015c)
1097 #define v_HWC_DSP_XST(x) (((x)&0x1fff)<<0)
1098 #define v_HWC_DSP_YST(x) (((x)&0x1fff)<<16)
1099 #define m_HWC_DSP_XST (0x1fff<<0)
1100 #define m_HWC_DSP_YST (0x1fff<<16)
1102 #define HWC_SRC_ALPHA_CTRL (0x0160)
1103 #define v_HWC_SRC_ALPHA_EN(x) (((x)&1)<<0)
1104 #define v_HWC_SRC_COLOR_M0(x) (((x)&1)<<1)
1105 #define v_HWC_SRC_ALPHA_M0(x) (((x)&1)<<2)
1106 #define v_HWC_SRC_BLEND_M0(x) (((x)&3)<<3)
1107 #define v_HWC_SRC_ALPHA_CAL_M0(x) (((x)&1)<<5)
1108 #define v_HWC_SRC_FACTOR_M0(x) (((x)&7)<<6)
1109 #define v_HWC_SRC_GLOBAL_ALPHA(x) (((x)&0xff)<<16)
1110 #define v_HWC_FADING_VALUE(x) (((x)&0xff)<<24)
1112 #define m_HWC_SRC_ALPHA_EN (1<<0)
1113 #define m_HWC_SRC_COLOR_M0 (1<<1)
1114 #define m_HWC_SRC_ALPHA_M0 (1<<2)
1115 #define m_HWC_SRC_BLEND_M0 (3<<3)
1116 #define m_HWC_SRC_ALPHA_CAL_M0 (1<<5)
1117 #define m_HWC_SRC_FACTOR_M0 (7<<6)
1118 #define m_HWC_SRC_GLOBAL_ALPHA (0xff<<16)
1119 #define m_HWC_FADING_VALUE (0xff<<24)
1121 #define HWC_DST_ALPHA_CTRL (0x0164)
1122 #define v_HWC_DST_FACTOR_M0(x) (((x)&7)<<6)
1123 #define m_HWC_DST_FACTOR_M0 (7<<6)
1126 #define HWC_FADING_CTRL (0x0168)
1127 #define v_HWC_FADING_OFFSET_R(x) (((x)&0xff)<<0)
1128 #define v_HWC_FADING_OFFSET_G(x) (((x)&0xff)<<8)
1129 #define v_HWC_FADING_OFFSET_B(x) (((x)&0xff)<<16)
1130 #define v_HWC_FADING_EN(x) (((x)&1)<<24)
1132 #define m_HWC_FADING_OFFSET_R (0xff<<0)
1133 #define m_HWC_FADING_OFFSET_G (0xff<<8)
1134 #define m_HWC_FADING_OFFSET_B (0xff<<16)
1135 #define m_HWC_FADING_EN (1<<24)
1137 /*post process register*/
1138 #define POST_DSP_HACT_INFO (0x0170)
1139 #define v_DSP_HACT_END_POST(x) (((x)&0x1fff)<<0)
1140 #define v_DSP_HACT_ST_POST(x) (((x)&0x1fff)<<16)
1141 #define m_DSP_HACT_END_POST (0x1fff<<0)
1142 #define m_DSP_HACT_ST_POST (0x1fff<<16)
1144 #define POST_DSP_VACT_INFO (0x0174)
1145 #define v_DSP_VACT_END_POST(x) (((x)&0x1fff)<<0)
1146 #define v_DSP_VACT_ST_POST(x) (((x)&0x1fff)<<16)
1147 #define m_DSP_VACT_END_POST (0x1fff<<0)
1148 #define m_DSP_VACT_ST_POST (0x1fff<<16)
1150 #define POST_SCL_FACTOR_YRGB (0x0178)
1151 #define v_POST_HS_FACTOR_YRGB(x) (((x)&0xffff)<<0)
1152 #define v_POST_VS_FACTOR_YRGB(x) (((x)&0xffff)<<16)
1153 #define m_POST_HS_FACTOR_YRGB (0xffff<<0)
1154 #define m_POST_VS_FACTOR_YRGB (0xffff<<16)
1156 #define POST_SCL_CTRL (0x0180)
1157 #define v_POST_HOR_SD_EN(x) (((x)&1)<<0)
1158 #define v_POST_VER_SD_EN(x) (((x)&1)<<1)
1160 #define m_POST_HOR_SD_EN (0x1<<0)
1161 #define m_POST_VER_SD_EN (0x1<<1)
1163 #define POST_DSP_VACT_INFO_F1 (0x0184)
1164 #define v_DSP_VACT_END_POST_F1(x) (((x)&0x1fff)<<0)
1165 #define v_DSP_VACT_ST_POST_F1(x) (((x)&0x1fff)<<16)
1167 #define m_DSP_VACT_END_POST_F1 (0x1fff<<0)
1168 #define m_DSP_VACT_ST_POST_F1 (0x1fff<<16)
1170 #define DSP_HTOTAL_HS_END (0x0188)
1171 #define v_DSP_HS_PW(x) (((x)&0x1fff)<<0)
1172 #define v_DSP_HTOTAL(x) (((x)&0x1fff)<<16)
1173 #define m_DSP_HS_PW (0x1fff<<0)
1174 #define m_DSP_HTOTAL (0x1fff<<16)
1176 #define DSP_HACT_ST_END (0x018c)
1177 #define v_DSP_HACT_END(x) (((x)&0x1fff)<<0)
1178 #define v_DSP_HACT_ST(x) (((x)&0x1fff)<<16)
1179 #define m_DSP_HACT_END (0x1fff<<0)
1180 #define m_DSP_HACT_ST (0x1fff<<16)
1182 #define DSP_VTOTAL_VS_END (0x0190)
1183 #define v_DSP_VS_PW(x) (((x)&0x1fff)<<0)
1184 #define v_DSP_VTOTAL(x) (((x)&0x1fff)<<16)
1185 #define m_DSP_VS_PW (0x1fff<<0)
1186 #define m_DSP_VTOTAL (0x1fff<<16)
1188 #define DSP_VACT_ST_END (0x0194)
1189 #define v_DSP_VACT_END(x) (((x)&0x1fff)<<0)
1190 #define v_DSP_VACT_ST(x) (((x)&0x1fff)<<16)
1191 #define m_DSP_VACT_END (0x1fff<<0)
1192 #define m_DSP_VACT_ST (0x1fff<<16)
1194 #define DSP_VS_ST_END_F1 (0x0198)
1195 #define v_DSP_VS_END_F1(x) (((x)&0x1fff)<<0)
1196 #define v_DSP_VS_ST_F1(x) (((x)&0x1fff)<<16)
1197 #define m_DSP_VS_END_F1 (0x1fff<<0)
1198 #define m_DSP_VS_ST_F1 (0x1fff<<16)
1200 #define DSP_VACT_ST_END_F1 (0x019c)
1201 #define v_DSP_VACT_END_F1(x) (((x)&0x1fff)<<0)
1202 #define v_DSP_VAC_ST_F1(x) (((x)&0x1fff)<<16)
1203 #define m_DSP_VACT_END_F1 (0x1fff<<0)
1204 #define m_DSP_VAC_ST_F1 (0x1fff<<16)
1208 #define PWM_CTRL (0x01a0)
1209 #define v_PWM_EN(x) (((x)&1)<<0)
1210 #define v_PWM_MODE(x) (((x)&3)<<1)
1212 #define v_DUTY_POL(x) (((x)&1)<<3)
1213 #define v_INACTIVE_POL(x) (((x)&1)<<4)
1214 #define v_OUTPUT_MODE(x) (((x)&1)<<5)
1215 #define v_BL_EN(x) (((x)&1)<<8)
1216 #define v_CLK_SEL(x) (((x)&1)<<9)
1217 #define v_PRESCALE(x) (((x)&7)<<12)
1218 #define v_SCALE(x) (((x)&0xff)<<16)
1219 #define v_RPT(x) (((x)&0xff)<<24)
1221 #define m_PWM_EN (1<<0)
1222 #define m_PWM_MODE (3<<1)
1224 #define m_DUTY_POL (1<<3)
1225 #define m_INACTIVE_POL (1<<4)
1226 #define m_OUTPUT_MODE (1<<5)
1227 #define m_BL_EN (1<<8)
1228 #define m_CLK_SEL (1<<9)
1229 #define m_PRESCALE (7<<12)
1230 #define m_SCALE (0xff<<16)
1231 #define m_RPT ((u32)0xff<<24)
1233 #define PWM_PERIOD_HPR (0x01a4)
1234 #define PWM_DUTY_LPR (0x01a8)
1235 #define PWM_CNT (0x01ac)
1238 #define BCSH_COLOR_BAR (0x01b0)
1239 #define v_BCSH_EN(x) (((x)&1)<<0)
1240 #define v_BCSH_COLOR_BAR_Y(x) (((x)&0xff)<<8)
1241 #define v_BCSH_COLOR_BAR_U(x) (((x)&0xff)<<16)
1242 #define v_BCSH_COLOR_BAR_V(x) (((x)&0xff)<<24)
1243 #define m_BCSH_EN (1<<0)
1244 #define m_BCSH_COLOR_BAR_Y (0xff<<8)
1245 #define m_BCSH_COLOR_BAR_U (0xff<<16)
1246 #define m_BCSH_COLOR_BAR_V (0xff<<24)
1248 #define BCSH_BCS (0x01b4)
1249 #define v_BCSH_BRIGHTNESS(x) (((x)&0xff)<<0)
1250 #define v_BCSH_CONTRAST(x) (((x)&0x1ff)<<8)
1251 #define v_BCSH_SAT_CON(x) (((x)&0x3ff)<<20)
1252 #define v_BCSH_OUT_MODE(x) (((x)&0x3)<<30)
1253 #define m_BCSH_BRIGHTNESS (0xff<<0)
1254 #define m_BCSH_CONTRAST (0x1ff<<8)
1255 #define m_BCSH_SAT_CON (0x3ff<<20)
1256 #define m_BCSH_OUT_MODE ((u32)0x3<<30)
1258 #define BCSH_H (0x01b8)
1259 #define v_BCSH_SIN_HUE(x) (((x)&0x1ff)<<0)
1260 #define v_BCSH_COS_HUE(x) (((x)&0x1ff)<<16)
1262 #define m_BCSH_SIN_HUE (0x1ff<<0)
1263 #define m_BCSH_COS_HUE (0x1ff<<16)
1265 #define BCSH_CTRL (0x01bc)
1266 #define m_BCSH_Y2R_EN (0x1<<0)
1267 #define m_BCSH_Y2R_CSC_MODE (0x3<<2)
1268 #define m_BCSH_R2Y_EN (0x1<<4)
1269 #define m_BCSH_R2Y_CSC_MODE (0x1<<6)
1270 #define v_BCSH_Y2R_EN(x) (((x)&0x1)<<0)
1271 #define v_BCSH_Y2R_CSC_MODE(x) (((x)&0x3)<<2)
1272 #define v_BCSH_R2Y_EN(x) (((x)&0x1)<<4)
1273 #define v_BCSH_R2Y_CSC_MODE(x) (((x)&0x1)<<6)
1275 #define CABC_CTRL0 (0x01c0)
1276 #define v_CABC_EN(x) (((x)&1)<<0)
1277 #define v_CABC_CALC_PIXEL_NUM(x) (((x)&0xffffff)<<1)
1278 #define m_CABC_EN (1<<0)
1279 #define m_CABC_CALC_PIXEL_NUM (0xffffff<<1)
1282 #define CABC_CTRL1 (0x01c4)
1283 #define v_CABC_LUT_EN(x) (((x)&1)<<0)
1284 #define v_CABC_TOTAL_PIXEL_NUM(x) (((x)&0xffffff)<<1)
1285 #define m_CABC_LUT_EN (1<<0)
1286 #define m_CABC_TOTAL_PIXEL_NUM (0xffffff<<1)
1288 #define CABC_CTRL2 (0x01c8)
1289 #define v_CABC_STAGE_UP_REC(x) (((x)&0xff)<<0)
1290 #define m_CABC_STAGE_UP_REC (0xff<<0)
1291 #define v_CABC_STAGE_UP(x) (((x)&0x1ff)<<8)
1292 #define m_CABC_STAGE_UP (0x1ff<<8)
1293 #define v_CABC_GLOBAL_SU_LIMIT_EN(x) (((x)&0x1)<<23)
1294 #define m_CABC_GLOBAL_SU_LIMIT_EN (0x1<<23)
1295 #define v_CABC_GLOBAL_SU_REC(x) (((x)&0xff)<<24)
1296 #define m_CABC_GLOBAL_SU_REC (0xff<<24)
1298 #define CABC_CTRL3 (0x01cc)
1299 #define v_CABC_STAGE_DOWN(x) (((x)&0xff)<<0)
1300 #define m_CABC_STAGE_DOWN (0xff<<0)
1301 #define v_CABC_STAGE_DOWN_REC(x) (((x)&0x1ff)<<8)
1302 #define m_CABC_STAGE_DOWN_REC (0x1ff<<8)
1303 #define v_CABC_GLOBAL_SU(x) (((x)&0x1ff)<<23)
1304 #define m_CABC_GLOBAL_SU (0x1ff<<23)
1305 #define CABC_GAUSS_LINE0_0 (0x01d0)
1306 #define v_CABC_T_LINE0_0(x) (((x)&0xff)<<0)
1307 #define v_CABC_T_LINE0_1(x) (((x)&0xff)<<8)
1308 #define v_CABC_T_LINE0_2(x) (((x)&0xff)<<16)
1309 #define v_CABC_T_LINE0_3(x) (((x)&0xff)<<24)
1310 #define m_CABC_T_LINE0_0 (0xff<<0)
1311 #define m_CABC_T_LINE0_1 (0xff<<8)
1312 #define m_CABC_T_LINE0_2 (0xff<<16)
1313 #define m_CABC_T_LINE0_3 ((u32)0xff<<24)
1315 #define CABC_GAUSS_LINE0_1 (0x01d4)
1316 #define v_CABC_T_LINE0_4(x) (((x)&0xff)<<0)
1317 #define v_CABC_T_LINE0_5(x) (((x)&0xff)<<8)
1318 #define v_CABC_T_LINE0_6(x) (((x)&0xff)<<16)
1319 #define m_CABC_T_LINE0_4 (0xff<<0)
1320 #define m_CABC_T_LINE0_5 (0xff<<8)
1321 #define m_CABC_T_LINE0_6 (0xff<<16)
1324 #define CABC_GAUSS_LINE1_0 (0x01d8)
1325 #define v_CABC_T_LINE1_0(x) (((x)&0xff)<<0)
1326 #define v_CABC_T_LINE1_1(x) (((x)&0xff)<<8)
1327 #define v_CABC_T_LINE1_2(x) (((x)&0xff)<<16)
1328 #define v_CABC_T_LINE1_3(x) (((x)&0xff)<<24)
1329 #define m_CABC_T_LINE1_0 (0xff<<0)
1330 #define m_CABC_T_LINE1_1 (0xff<<8)
1331 #define m_CABC_T_LINE1_2 (0xff<<16)
1332 #define m_CABC_T_LINE1_3 ((u32)0xff<<24)
1335 #define CABC_GAUSS_LINE1_1 (0x01dc)
1336 #define v_CABC_T_LINE1_4(x) (((x)&0xff)<<0)
1337 #define v_CABC_T_LINE1_5(x) (((x)&0xff)<<8)
1338 #define v_CABC_T_LINE1_6(x) (((x)&0xff)<<16)
1339 #define m_CABC_T_LINE1_4 (0xff<<0)
1340 #define m_CABC_T_LINE1_5 (0xff<<8)
1341 #define m_CABC_T_LINE1_6 (0xff<<16)
1344 #define CABC_GAUSS_LINE2_0 (0x01e0)
1345 #define v_CABC_T_LINE2_0(x) (((x)&0xff)<<0)
1346 #define v_CABC_T_LINE2_1(x) (((x)&0xff)<<8)
1347 #define v_CABC_T_LINE2_2(x) (((x)&0xff)<<16)
1348 #define v_CABC_T_LINE2_3(x) (((x)&0xff)<<24)
1349 #define m_CABC_T_LINE2_0 (0xff<<0)
1350 #define m_CABC_T_LINE2_1 (0xff<<8)
1351 #define m_CABC_T_LINE2_2 (0xff<<16)
1352 #define m_CABC_T_LINE2_3 ((u32)0xff<<24)
1355 #define CABC_GAUSS_LINE2_1 (0x01e4)
1356 #define v_CABC_T_LINE2_4(x) (((x)&0xff)<<0)
1357 #define v_CABC_T_LINE2_5(x) (((x)&0xff)<<8)
1358 #define v_CABC_T_LINE2_6(x) (((x)&0xff)<<16)
1359 #define m_CABC_T_LINE2_4 (0xff<<0)
1360 #define m_CABC_T_LINE2_5 (0xff<<8)
1361 #define m_CABC_T_LINE2_6 (0xff<<16)
1364 #define FRC_LOWER01_0 (0x01e8)
1365 #define v_FRC_LOWER01_FRM0(x) (((x)&0xffff)<<0)
1366 #define v_FRC_LOWER01_FRM1(x) (((x)&0xffff)<<16)
1367 #define m_FRC_LOWER01_FRM0 (0xffff<<0)
1368 #define m_FRC_LOWER01_FRM1 ((u32)0xffff<<16)
1370 #define FRC_LOWER01_1 (0x01ec)
1371 #define v_FRC_LOWER01_FRM2(x) (((x)&0xffff)<<0)
1372 #define v_FRC_LOWER01_FRM3(x) (((x)&0xffff)<<16)
1373 #define m_FRC_LOWER01_FRM2 (0xffff<<0)
1374 #define m_FRC_LOWER01_FRM3 ((u32)0xffff<<16)
1377 #define FRC_LOWER10_0 (0x01f0)
1378 #define v_FRC_LOWER10_FRM0(x) (((x)&0xffff)<<0)
1379 #define v_FRC_LOWER10_FRM1(x) (((x)&0xffff)<<16)
1380 #define m_FRC_LOWER10_FRM0 (0xffff<<0)
1381 #define m_FRC_LOWER10_FRM1 ((u32)0xffff<<16)
1384 #define FRC_LOWER10_1 (0x01f4)
1385 #define v_FRC_LOWER10_FRM2(x) (((x)&0xffff)<<0)
1386 #define v_FRC_LOWER10_FRM3(x) (((x)&0xffff)<<16)
1387 #define m_FRC_LOWER10_FRM2 (0xffff<<0)
1388 #define m_FRC_LOWER10_FRM3 ((u32)0xffff<<16)
1391 #define FRC_LOWER11_0 (0x01f8)
1392 #define v_FRC_LOWER11_FRM0(x) (((x)&0xffff)<<0)
1393 #define v_FRC_LOWER11_FRM1(x) (((x)&0xffff)<<16)
1394 #define m_FRC_LOWER11_FRM0 (0xffff<<0)
1395 #define m_FRC_LOWER11_FRM1 ((u32)0xffff<<16)
1398 #define FRC_LOWER11_1 (0x01fc)
1399 #define v_FRC_LOWER11_FRM2(x) (((x)&0xffff)<<0)
1400 #define v_FRC_LOWER11_FRM3(x) (((x)&0xffff)<<16)
1401 #define m_FRC_LOWER11_FRM2 (0xffff<<0)
1402 #define m_FRC_LOWER11_FRM3 ((u32)0xffff<<16)
1404 #define IFBDC_CTRL (0x0200)
1405 #define v_IFBDC_CTRL_FBDC_EN(x) (((x)&0x1)<<0)
1406 #define v_IFBDC_CTRL_FBDC_COR_EN(x) (((x)&0x1)<<1)
1407 #define v_IFBDC_CTRL_FBDC_WIN_SEL(x) (((x)&0x3)<<2)
1408 #define v_IFBDC_CTRL_FBDC_ROTATION_MODE(x) (((x)&0x7)<<4)
1409 #define v_IFBDC_CTRL_FBDC_FMT(x) (((x)&0x7f)<<7)
1410 #define v_IFBDC_AXI_MAX_OUTSTANDING_EN(x) (((x)&0x1)<<14)
1411 #define v_IFBDC_AXI_OUTSTANDING_MAX_NUM(x) (((x)&0x1f)<<15)
1412 #define v_IFBDC_CTRL_WIDTH_RATIO(x) (((x)&0x1)<<20)
1413 #define v_IFBDC_FRAME_RST_EN(x) (((x)&0x1)<<21)
1414 #define v_IFBDC_ICTRL_NOTIFY(x) (((x)&0x1)<<22)
1415 #define v_IFBDC_INVALIDATE_PENDING_O(x) (((x)&0x1)<<23)
1416 #define v_IFBDC_RID(x) (((x)&0xf)<<24)
1417 #define v_IFBDC_RSTN(x) (((x)&0x1)<<28)
1419 #define m_IFBDC_CTRL_FBDC_EN (0x1<<0)
1420 #define m_IFBDC_CTRL_FBDC_COR_EN (0x1<<1)
1421 #define m_IFBDC_CTRL_FBDC_WIN_SEL (0x3<<2)
1422 #define m_IFBDC_CTRL_FBDC_ROTATION_MODE (0x7<<4)
1423 #define m_IFBDC_CTRL_FBDC_FMT (0x7f<<7)
1424 #define m_IFBDC_AXI_MAX_OUTSTANDING_EN (0x1<<14)
1425 #define m_IFBDC_AXI_OUTSTANDING_MAX_NUM (0x1f<<15)
1426 #define m_IFBDC_CTRL_WIDTH_RATIO (0x1<<20)
1427 #define m_IFBDC_FRAME_RST_EN (0x1<<21)
1428 #define m_IFBDC_ICTRL_NOTIFY (0x1<<22)
1429 #define m_IFBDC_INVALIDATE_PENDING_O (0x1<<23)
1430 #define m_IFBDC_RID (0xf<<24)
1431 #define m_IFBDC_RSTN (0x1<<28)
1433 #define IFBDC_TILES_NUM (0x0204)
1434 #define v_IFBDC_TILES_NUM(x) (((x-1)&0x7fffff)<<0)
1435 #define m_IFBDC_TILES_NUM (0x7fffff<<0)
1437 #define IFBDC_FRAME_RST_CYCLE (0x0208)
1438 #define v_IFBDC_FRAME_RST_CYCLE(x) (((x)&0x3ff)<<0)
1439 #define v_DMA_IFBDC_FRAME_RST_CYCLE(x) (((x)&0x3ff)<<16)
1440 #define m_IFBDC_FRAME_RST_CYCLE ((0x3ff)<<0)
1441 #define m_DMA_IFBDC_FRAME_RST_CYCLE ((0x3ff)<<16)
1445 #define IFBDC_BASE_ADDR (0x20c)
1446 #define v_IFBDC_BASE_ADDR(x) (((x)&0xffffffff)<<0)
1447 #define m_IFBDC_BASE_ADDR ((0xffffffff)<<0)
1449 #define IFBDC_MB_SIZE (0x210)
1450 #define v_IFBDC_MB_SIZE_WIDTH(x) (((x-1)&0x7f)<<0)
1451 #define v_IFBDC_MB_SIZE_HEIGHT(x) (((x-1)&0x1ff)<<16)
1452 #define m_IFBDC_MB_SIZE_WIDTH ((0x7f)<<0)
1453 #define m_IFBDC_MB_SIZE_HEIGHT ((0x1ff)<<16)
1456 #define IFBDC_CMP_INDEX_INIT (0x0214)
1457 #define v_IFBDC_CMP_INDEX_INIT(x) (((x)&0x7fffff) << 0)
1458 #define m_IFBDC_CMP_INDEX_INIT (0x7fffff<<0)
1460 #define IFBDC_MB_VIR_WIDTH (0x220)
1461 #define v_IFBDC_MB_VIR_WIDTH(x) (((x)&0xff)<<0)
1462 #define m_IFBDC_MB_VIR_WIDTH ((0xff)<<0)
1464 #define IFBDC_DEBUG0 (0x230)
1465 #define v_DBG_IFBDC_MB_Y_WCNT(x) (((x)&0x1ff)<<0)
1466 #define v_DBG_IFBDC_IDLE(x) (((x)&0x1)<<12)
1467 #define v_DBG_IFBDC_LB_RCNT(x) (((x)&0x7FF)<<16)
1468 #define v_DBG_IFBDC_INVALIDATE_PENDING_I(x) (((x)&0x1)<<28)
1470 #define m_DBG_IFBDC_MB_Y_WCNT (0x1ff<<0)
1471 #define m_DBG_IFBDC_IDLE (0x1<<12)
1472 #define m_DBG_IFBDC_LB_RCNT (0x7FF<<16)
1473 #define m_DBG_IFBDC_INVALIDATE_PENDING_I (0x1<<28)
1475 #define IFBDC_DEBUG1 (0x234)
1476 #define V_DBG_FBDC_CMP_TILE_INDEX(x) (((x)&0x7fffff)<<0)
1477 #define m_DBG_FBDC_CMP_TILE_INDEX (0x7fffff<<0)
1479 #define LATENCY_CTRL0 (0x250)
1480 #define v_RD_LATENCY_EN(x) (((x)&0x1)<<0)
1481 #define v_HAND_LATENCY_CLR(x) (((x)&0x1)<<1)
1482 #define v_RD_LATENCY_MODE(x) (((x)&0x1)<<2)
1483 #define v_RD_LATENCY_ID0(x) (((x)&0xf)<<4)
1484 #define v_RD_LATENCY_THR(x) (((x)&0xfff)<<8)
1485 #define v_RD_LATENCY_ST_NUM(x) (((x)&0x1f)<<20)
1486 #define m_RD_LATENCY_EN (0x1<<0)
1487 #define m_HAND_LATENCY_CLR (0x1<<1)
1488 #define m_RD_LATENCY_MODE (0x1<<2)
1489 #define m_RD_LATENCY_ID0 (0xf<<4)
1490 #define m_RD_LATENCY_THR (0xfff<<8)
1491 #define m_RD_LATENCY_ST_NUM (0x1f<<20)
1493 #define RD_MAX_LATENCY_NUM0 (0x254)
1494 #define v_RD_MAX_LATENCY_NUM_CH0(x) (((x)&0xFFF)<<0)
1495 #define v_RD_LATENCY_OVERFLOW_CH0(x) (((x)&0x1)<<16)
1496 #define m_RD_MAX_LATENCY_NUM_CH0 (0xFFF<<0)
1497 #define m_RD_LATENCY_OVERFLOW_CH0 (0x1<<16)
1499 #define RD_LATENCY_THR_NUM0 (0x258)
1500 #define v_RD_LATENCY_THR_NUM_CH0(x) (((x)&0xFFFFFF)<<0)
1501 #define m_RD_LATENCY_THR_NUM_CH0 (0xFFFFFF<<0)
1503 #define RD_LATENCY_SWAP_NUM0 (0x25c)
1504 #define v_RD_LATENCY_SAMP_NUM_CH0(x) (((x)&0xFFFFFF)<<0)
1505 #define m_RD_LATENCY_SAMP_NUM_CH0 (0xFFFFFF<<0)
1507 #define WIN0_DSP_BG (0x260)
1508 #define v_WIN0_DSP_BG_BLUE(x) (((x)&0xff)<<0)
1509 #define v_WIN0_DSP_BG_GREEN(x) (((x)&0xff)<<8)
1510 #define v_WIN0_DSP_BG_RED(x) (((x)&0xff)<<16)
1511 #define v_WIN0_DSP_BG_EN(x) (((x)&1)<<31)
1512 #define m_WIN0_DSP_BG_BLUE (0xff<<0)
1513 #define m_WIN0_DSP_BG_GREEN (0xff<<8)
1514 #define m_WIN0_DSP_BG_RED (0xff<<16)
1515 #define m_WIN0_DSP_BG_EN (0x1<<31)
1517 #define WIN1_DSP_BG (0x264)
1518 #define v_WIN1_DSP_BG_BLUE(x) (((x)&0xff)<<0)
1519 #define v_WIN1_DSP_BG_GREEN(x) (((x)&0xff)<<8)
1520 #define v_WIN1_DSP_BG_RED(x) (((x)&0xff)<<16)
1521 #define v_WIN1_DSP_BG_EN(x) (((x)&1)<<31)
1522 #define m_WIN1_DSP_BG_BLUE (0xff<<0)
1523 #define m_WIN1_DSP_BG_GREEN (0xff<<8)
1524 #define m_WIN1_DSP_BG_RED (0xff<<16)
1525 #define m_WIN1_DSP_BG_EN (0x1<<31)
1527 #define WIN2_DSP_BG (0x268)
1528 #define v_WIN2_DSP_BG_BLUE(x) (((x)&0xff)<<0)
1529 #define v_WIN2_DSP_BG_GREEN(x) (((x)&0xff)<<8)
1530 #define v_WIN2_DSP_BG_RED(x) (((x)&0xff)<<16)
1531 #define v_WIN2_DSP_BG_EN(x) (((x)&1)<<31)
1532 #define m_WIN2_DSP_BG_BLUE (0xff<<0)
1533 #define m_WIN2_DSP_BG_GREEN (0xff<<8)
1534 #define m_WIN2_DSP_BG_RED (0xff<<16)
1535 #define m_WIN2_DSP_BG_EN (0x1<<31)
1537 #define WIN3_DSP_BG (0x26c)
1538 #define v_WIN3_DSP_BG_BLUE(x) (((x)&0xff)<<0)
1539 #define v_WIN3_DSP_BG_GREEN(x) (((x)&0xff)<<8)
1540 #define v_WIN3_DSP_BG_RED(x) (((x)&0xff)<<16)
1541 #define v_WIN3_DSP_BG_EN(x) (((x)&1)<<31)
1542 #define m_WIN3_DSP_BG_BLUE (0xff<<0)
1543 #define m_WIN3_DSP_BG_GREEN (0xff<<8)
1544 #define m_WIN3_DSP_BG_RED (0xff<<16)
1545 #define m_WIN3_DSP_BG_EN (0x1<<31)
1547 #define SCAN_LINE_NUM (0x270)
1548 #define CABC_DEBUG0 (0x274)
1549 #define CABC_DEBUG1 (0x278)
1550 #define CABC_DEBUG2 (0x27c)
1551 #define DBG_REG_000 (0x280)
1552 #define DBG_REG_001 (0x284)
1553 #define DBG_REG_002 (0x288)
1554 #define DBG_REG_003 (0x28c)
1555 #define DBG_REG_004 (0x290)
1556 #define DBG_REG_005 (0x294)
1557 #define DBG_REG_006 (0x298)
1558 #define DBG_REG_007 (0x29c)
1559 #define DBG_REG_008 (0x2a0)
1560 #define DBG_REG_016 (0x2c0)
1561 #define DBG_REG_017 (0x2c4)
1562 #define DBG_REG_018 (0x2c8)
1563 #define DBG_REG_019 (0x2cc)
1564 #define DBG_REG_020 (0x2d0)
1565 #define DBG_REG_021 (0x2d4)
1566 #define DBG_REG_022 (0x2d8)
1567 #define DBG_REG_023 (0x2dc)
1568 #define DBG_REG_028 (0x2f0)
1570 #define MMU_DTE_ADDR (0x0300)
1571 #define v_MMU_DTE_ADDR(x) (((x)&0xffffffff)<<0)
1572 #define m_MMU_DTE_ADDR (0xffffffff<<0)
1574 #define MMU_STATUS (0x0304)
1575 #define v_PAGING_ENABLED(x) (((x)&1)<<0)
1576 #define v_PAGE_FAULT_ACTIVE(x) (((x)&1)<<1)
1577 #define v_STAIL_ACTIVE(x) (((x)&1)<<2)
1578 #define v_MMU_IDLE(x) (((x)&1)<<3)
1579 #define v_REPLAY_BUFFER_EMPTY(x) (((x)&1)<<4)
1580 #define v_PAGE_FAULT_IS_WRITE(x) (((x)&1)<<5)
1581 #define v_PAGE_FAULT_BUS_ID(x) (((x)&0x1f)<<6)
1582 #define m_PAGING_ENABLED (1<<0)
1583 #define m_PAGE_FAULT_ACTIVE (1<<1)
1584 #define m_STAIL_ACTIVE (1<<2)
1585 #define m_MMU_IDLE (1<<3)
1586 #define m_REPLAY_BUFFER_EMPTY (1<<4)
1587 #define m_PAGE_FAULT_IS_WRITE (1<<5)
1588 #define m_PAGE_FAULT_BUS_ID (0x1f<<6)
1590 #define MMU_COMMAND (0x0308)
1591 #define v_MMU_CMD(x) (((x)&0x3)<<0)
1592 #define m_MMU_CMD (0x3<<0)
1594 #define MMU_PAGE_FAULT_ADDR (0x030c)
1595 #define v_PAGE_FAULT_ADDR(x) (((x)&0xffffffff)<<0)
1596 #define m_PAGE_FAULT_ADDR (0xffffffff<<0)
1598 #define MMU_ZAP_ONE_LINE (0x0310)
1599 #define v_MMU_ZAP_ONE_LINE(x) (((x)&0xffffffff)<<0)
1600 #define m_MMU_ZAP_ONE_LINE (0xffffffff<<0)
1602 #define MMU_INT_RAWSTAT (0x0314)
1603 #define v_PAGE_FAULT_RAWSTAT(x) (((x)&1)<<0)
1604 #define v_READ_BUS_ERROR_RAWSTAT(x) (((x)&1)<<1)
1605 #define m_PAGE_FAULT_RAWSTAT (1<<0)
1606 #define m_READ_BUS_ERROR_RAWSTAT (1<<1)
1608 #define MMU_INT_CLEAR (0x0318)
1609 #define v_PAGE_FAULT_CLEAR(x) (((x)&1)<<0)
1610 #define v_READ_BUS_ERROR_CLEAR(x) (((x)&1)<<1)
1611 #define m_PAGE_FAULT_CLEAR (1<<0)
1612 #define m_READ_BUS_ERROR_CLEAR (1<<1)
1614 #define MMU_INT_MASK (0x031c)
1615 #define v_PAGE_FAULT_MASK(x) (((x)&1)<<0)
1616 #define v_READ_BUS_ERROR_MASK(x) (((x)&1)<<1)
1617 #define m_PAGE_FAULT_MASK (1<<0)
1618 #define m_READ_BUS_ERROR_MASK (1<<1)
1620 #define MMU_INT_STATUS (0x0320)
1621 #define v_PAGE_FAULT_STATUS(x) (((x)&1)<<0)
1622 #define v_READ_BUS_ERROR_STATUS(x) (((x)&1)<<1)
1623 #define m_PAGE_FAULT_STATUS (1<<0)
1624 #define m_READ_BUS_ERROR_STATUS (1<<1)
1626 #define MMU_AUTO_GATING (0x0324)
1627 #define v_MMU_AUTO_GATING(x) (((x)&1)<<0)
1628 #define m_MMU_AUTO_GATING (1<<0)
1630 #define WIN2_LUT_ADDR (0x0400)
1631 #define WIN3_LUT_ADDR (0x0800)
1632 #define HWC_LUT_ADDR (0x0c00)
1633 #define GAMMA_LUT_ADDR (0x1000)
1634 #define CABC_GAMMA_LUT_ADDR (0x1800)
1635 #define MCU_BYPASS_WPORT (0x2200)
1636 #define MCU_BYPASS_RPORT (0x2300)
1641 LB_YUV_3840X5 = 0x0,
1642 LB_YUV_2560X8 = 0x1,
1643 LB_RGB_3840X2 = 0x2,
1644 LB_RGB_2560X4 = 0x3,
1645 LB_RGB_1920X5 = 0x4,
1649 enum sacle_up_mode {
1654 enum scale_down_mode {
1655 SCALE_DOWN_BIL = 0x0,
1656 SCALE_DOWN_AVG = 0x1
1659 /*ALPHA BLENDING MODE*/
1660 enum alpha_mode { /* Fs Fd */
1661 AB_USER_DEFINE = 0x0,
1662 AB_CLEAR = 0x1,/* 0 0*/
1663 AB_SRC = 0x2,/* 1 0*/
1664 AB_DST = 0x3,/* 0 1 */
1665 AB_SRC_OVER = 0x4,/* 1 1-As''*/
1666 AB_DST_OVER = 0x5,/* 1-Ad'' 1*/
1674 AB_SRC_OVER_GLOBAL = 0xd
1675 }; /*alpha_blending_mode*/
1677 enum src_alpha_mode {
1680 };/*src_alpha_mode*/
1682 enum global_alpha_mode {
1685 AA_PER_PIX_GLOBAL = 0x2
1686 };/*src_global_alpha_mode*/
1688 enum src_alpha_sel {
1693 enum src_color_mode {
1694 AA_SRC_PRE_MUL = 0x0,
1695 AA_SRC_NO_PRE_MUL = 0x1
1696 };/*src_color_mode*/
1702 AA_SRC_INVERSE = 0x3,
1704 };/*src_factor_mode && dst_factor_mode*/
1706 enum _vop_r2y_csc_mode {
1707 VOP_R2Y_CSC_BT601 = 0,
1711 enum _vop_y2r_csc_mode {
1712 VOP_Y2R_CSC_MPEG = 0,
1718 VOP_FORMAT_ARGB888 = 0,
1721 VOP_FORMAT_YCBCR420 = 4,
1722 VOP_FORMAT_YCBCR422,
1726 enum _vop_overlay_mode {
1731 struct lcdc_device {
1733 struct rk_lcdc_driver driver;
1735 struct rk_screen *screen;
1738 void *regsbak; /*back up reg*/
1739 u32 reg_phy_base; /* physical basic address of lcdc register*/
1740 u32 len; /* physical map length of lcdc register*/
1741 /*one time only one process allowed to config the register*/
1742 spinlock_t reg_lock;
1744 int __iomem *dsp_lut_addr_base;
1747 int prop; /*used for primary or extended display device*/
1749 bool pwr18; /*if lcdc use 1.8v power supply*/
1750 /*if aclk or hclk is closed ,acess to register is not allowed*/
1752 /*active layer counter,when atv_layer_cnt = 0,disable lcdc*/
1758 struct clk *pd; /*lcdc power domain*/
1759 struct clk *hclk; /*lcdc AHP clk*/
1760 struct clk *dclk; /*lcdc dclk*/
1761 struct clk *aclk; /*lcdc share memory frequency*/
1764 u32 standby; /*1:standby,0:wrok*/
1766 struct backlight_device *backlight;
1767 struct clk *pll_sclk;
1770 struct alpha_config {
1771 enum src_alpha_mode src_alpha_mode; /*win0_src_alpha_m0*/
1772 u32 src_global_alpha_val; /*win0_src_global_alpha*/
1773 enum global_alpha_mode src_global_alpha_mode;/*win0_src_blend_m0*/
1774 enum src_alpha_sel src_alpha_cal_m0; /*win0_src_alpha_cal_m0*/
1775 enum src_color_mode src_color_mode; /*win0_src_color_m0*/
1776 enum factor_mode src_factor_mode; /*win0_src_factor_m0*/
1777 enum factor_mode dst_factor_mode; /*win0_dst_factor_m0*/
1780 struct lcdc_cabc_mode {
1781 u32 pixel_num; /* pixel precent number */
1782 u16 stage_up; /* up stride */
1783 u16 stage_down; /* down stride */
1787 static inline void lcdc_writel(struct lcdc_device *lcdc_dev, u32 offset, u32 v)
1789 u32 *_pv = (u32 *)lcdc_dev->regsbak;
1791 _pv += (offset >> 2);
1793 writel_relaxed(v, lcdc_dev->regs + offset);
1796 static inline u32 lcdc_readl(struct lcdc_device *lcdc_dev, u32 offset)
1799 u32 *_pv = (u32 *)lcdc_dev->regsbak;
1801 _pv += (offset >> 2);
1802 v = readl_relaxed(lcdc_dev->regs + offset);
1807 static inline u32 lcdc_read_bit(struct lcdc_device *lcdc_dev,
1808 u32 offset, u32 msk)
1811 u32 *_pv = (u32 *)lcdc_dev->regsbak;
1812 u32 _v = readl_relaxed(lcdc_dev->regs + offset);
1814 _pv += (offset >> 2);
1821 static inline void lcdc_set_bit(struct lcdc_device *lcdc_dev,
1822 u32 offset, u32 msk)
1824 u32 *_pv = (u32 *)lcdc_dev->regsbak;
1826 _pv += (offset >> 2);
1828 writel_relaxed(*_pv, lcdc_dev->regs + offset);
1831 static inline void lcdc_clr_bit(struct lcdc_device *lcdc_dev,
1832 u32 offset, u32 msk)
1834 u32 *_pv = (u32 *)lcdc_dev->regsbak;
1836 _pv += (offset >> 2);
1838 writel_relaxed(*_pv, lcdc_dev->regs + offset);
1841 static inline void lcdc_msk_reg(struct lcdc_device *lcdc_dev,
1842 u32 offset, u32 msk, u32 v)
1844 u32 *_pv = (u32 *)lcdc_dev->regsbak;
1846 _pv += (offset >> 2);
1849 writel_relaxed(*_pv, lcdc_dev->regs + offset);
1852 static inline void lcdc_cfg_done(struct lcdc_device *lcdc_dev)
1854 writel_relaxed(0x01, lcdc_dev->regs + REG_CFG_DONE);
1858 #define CUBIC_PRECISE 0
1859 #define CUBIC_SPLINE 1
1860 #define CUBIC_CATROM 2
1861 #define CUBIC_MITCHELL 3
1863 #define CUBIC_MODE_SELETION CUBIC_PRECISE
1865 /*************************************************************/
1866 #define SCALE_FACTOR_BILI_DN_FIXPOINT_SHIFT 12 /* 4.12*/
1867 #define SCALE_FACTOR_BILI_DN_FIXPOINT(x) \
1868 ((INT32)((x) * (1 << SCALE_FACTOR_BILI_DN_FIXPOINT_SHIFT)))
1870 #define SCALE_FACTOR_BILI_UP_FIXPOINT_SHIFT 16 /* 0.16*/
1872 #define SCALE_FACTOR_AVRG_FIXPOINT_SHIFT 16 /*0.16*/
1873 #define SCALE_FACTOR_AVRG_FIXPOINT(x) \
1874 ((INT32)((x) * (1 << SCALE_FACTOR_AVRG_FIXPOINT_SHIFT)))
1876 #define SCALE_FACTOR_BIC_FIXPOINT_SHIFT 16 /* 0.16*/
1877 #define SCALE_FACTOR_BIC_FIXPOINT(x) \
1878 ((INT32)((x) * (1 << SCALE_FACTOR_BIC_FIXPOINT_SHIFT)))
1880 #define SCALE_FACTOR_DEFAULT_FIXPOINT_SHIFT 12 /*NONE SCALE,vsd_bil*/
1881 #define SCALE_FACTOR_VSDBIL_FIXPOINT_SHIFT 12 /*VER SCALE DOWN BIL*/
1883 /*********************************************************/
1885 /*#define GET_SCALE_FACTOR_BILI(src, dst) \
1886 ((((src) - 1) << SCALE_FACTOR_BILI_FIXPOINT_SHIFT) / ((dst) - 1))*/
1887 /*#define GET_SCALE_FACTOR_BIC(src, dst) \
1888 ((((src) - 1) << SCALE_FACTOR_BIC_FIXPOINT_SHIFT) / ((dst) - 1))*/
1890 #define GET_SCALE_FACTOR_BILI_DN(src, dst) \
1891 ((((src) * 2 - 3) << (SCALE_FACTOR_BILI_DN_FIXPOINT_SHIFT - 1)) \
1893 #define GET_SCALE_FACTOR_BILI_UP(src, dst) \
1894 ((((src) * 2 - 3) << (SCALE_FACTOR_BILI_UP_FIXPOINT_SHIFT - 1)) \
1896 #define GET_SCALE_FACTOR_BIC(src, dst) \
1897 ((((src) * 2 - 3) << (SCALE_FACTOR_BIC_FIXPOINT_SHIFT - 1)) \
1900 /*********************************************************/
1901 /*NOTE: hardware in order to save resource , srch first to get interlace line
1902 (srch+vscalednmult-1)/vscalednmult; and do scale*/
1903 #define GET_SCALE_DN_ACT_HEIGHT(srch, vscalednmult) \
1904 (((srch) + (vscalednmult) - 1) / (vscalednmult))
1906 /*#define VSKIP_MORE_PRECISE*/
1908 #ifdef VSKIP_MORE_PRECISE
1909 #define MIN_SCALE_FACTOR_AFTER_VSKIP 1.5f
1910 #define GET_SCALE_FACTOR_BILI_DN_VSKIP(srch, dsth, vscalednmult) \
1911 (GET_SCALE_FACTOR_BILI_DN(GET_SCALE_DN_ACT_HEIGHT((srch),\
1912 (vscalednmult)), (dsth)))
1914 #define MIN_SCALE_FACTOR_AFTER_VSKIP 1
1916 #define GET_SCALE_FACTOR_BILI_DN_VSKIP(srch, dsth, vscalednmult) \
1917 ((GET_SCALE_DN_ACT_HEIGHT((srch), (vscalednmult)) == (dsth))\
1918 ? (GET_SCALE_FACTOR_BILI_DN((srch),\
1919 (dsth))/(vscalednmult))\
1920 : GET_SCALE_FACTOR_BILI_DN(GET_SCALE_DN_ACT_HEIGHT((srch),\
1921 (vscalednmult)), (dsth)))
1923 #define GET_SCALE_FACTOR_BILI_DN_VSKIP(srch, dsth, vscalednmult) \
1924 ((GET_SCALE_DN_ACT_HEIGHT((srch) , (vscalednmult)) == (dsth)) \
1925 ? (GET_SCALE_FACTOR_BILI_DN((srch) , (dsth)) / (vscalednmult)) \
1926 : (GET_SCALE_DN_ACT_HEIGHT((srch) , (vscalednmult)) == ((dsth) * 2)) \
1927 ? GET_SCALE_FACTOR_BILI_DN(GET_SCALE_DN_ACT_HEIGHT(((srch) - 1),\
1928 (vscalednmult)) , (dsth)) : \
1929 GET_SCALE_FACTOR_BILI_DN(GET_SCALE_DN_ACT_HEIGHT((srch),\
1930 (vscalednmult)) , (dsth)))
1935 /*****************************************************************/
1938 /*scalefactor must >= dst/src, or pixels at end of line may be unused*/
1939 /*scalefactor must < dst/(src-1), or dst buffer may overflow*/
1940 /*avrg old code: ((((dst) << SCALE_FACTOR_AVRG_FIXPOINT_SHIFT))\
1941 /((src) - 1)) hxx_chgsrc*/
1942 /*modified by hpz:*/
1943 #define GET_SCALE_FACTOR_AVRG(src, dst) ((((dst) << \
1944 (SCALE_FACTOR_AVRG_FIXPOINT_SHIFT + 1))) / (2 * (src) - 1))
1946 /*************************************************************************/
1947 /*Scale Coordinate Accumulate, x.16*/
1948 #define SCALE_COOR_ACC_FIXPOINT_SHIFT 16
1949 #define SCALE_COOR_ACC_FIXPOINT_ONE (1 << SCALE_COOR_ACC_FIXPOINT_SHIFT)
1950 #define SCALE_COOR_ACC_FIXPOINT(x) \
1951 ((INT32)((x)*(1 << SCALE_COOR_ACC_FIXPOINT_SHIFT)))
1952 #define SCALE_COOR_ACC_FIXPOINT_REVERT(x) \
1953 ((((x) >> (SCALE_COOR_ACC_FIXPOINT_SHIFT - 1)) + 1) >> 1)
1955 #define SCALE_GET_COOR_ACC_FIXPOINT(scalefactor, factorfixpointshift) \
1957 (SCALE_COOR_ACC_FIXPOINT_SHIFT - (factorfixpointshift)))
1960 /************************************************************************/
1961 /*CoarsePart of Scale Coordinate Accumulate, used for pixel mult-add factor, 0.8*/
1962 #define SCALE_FILTER_FACTOR_FIXPOINT_SHIFT 8
1963 #define SCALE_FILTER_FACTOR_FIXPOINT_ONE \
1964 (1 << SCALE_FILTER_FACTOR_FIXPOINT_SHIFT)
1965 #define SCALE_FILTER_FACTOR_FIXPOINT(x) \
1966 ((INT32)((x) * (1 << SCALE_FILTER_FACTOR_FIXPOINT_SHIFT)))
1967 #define SCALE_FILTER_FACTOR_FIXPOINT_REVERT(x) \
1968 ((((x) >> (SCALE_FILTER_FACTOR_FIXPOINT_SHIFT-1)) + 1) >> 1)
1970 #define SCALE_GET_FILTER_FACTOR_FIXPOINT(cooraccumulate, \
1971 cooraccfixpointshift) \
1972 (((cooraccumulate) >> \
1973 ((cooraccfixpointshift) - SCALE_FILTER_FACTOR_FIXPOINT_SHIFT)) & \
1974 (SCALE_FILTER_FACTOR_FIXPOINT_ONE - 1))
1976 #define SCALE_OFFSET_FIXPOINT_SHIFT 8
1977 #define SCALE_OFFSET_FIXPOINT(x) \
1978 ((INT32)((x) * (1 << SCALE_OFFSET_FIXPOINT_SHIFT)))