4 #include<linux/rk_fb.h>
7 #include<linux/mfd/syscon.h>
8 #include<linux/regmap.h>
10 #define VOP_INPUT_MAX_WIDTH 4096
12 * Registers in this file
13 * REG_CFG_DONE: Register config done flag
14 * VERSION_INFO: Version for vop
15 * SYS_CTRL: System control register0
16 * SYS_CTRL1: System control register1
17 * DSP_CTRL0: Display control register0
18 * DSP_CTRL1: Display control register1
19 * DSP_BG: Background color
20 * MCU_CTRL: MCU mode control register
21 * WB_CTRL0: write back ctrl0
22 * WB_CTRL1: write back ctrl1
23 * WB_YRGB_MST: write back yrgb mst
24 * WB_CBR_MST: write back cbr mst
25 * WIN0_CTRL0: Win0 ctrl register0
26 * WIN0_CTRL1: Win0 ctrl register1
27 * WIN0_COLOR_KEY: Win0 color key register
28 * WIN0_VIR: Win0 virtual stride
29 * WIN0_YRGB_MST: Win0 YRGB memory start address
30 * WIN0_CBR_MST: Win0 Cbr memory start address
31 * WIN0_ACT_INFO: Win0 active window width/height
32 * WIN0_DSP_INFO: Win0 display width/height on panel
33 * WIN0_DSP_ST: Win0 display start point on panel
34 * WIN0_SCL_FACTOR_YRGB: Win0 YRGB scaling factor
35 * WIN0_SCL_FACTOR_CBR: Win0 Cbr scaling factor
36 * WIN0_SCL_OFFSET: Win0 scaling start point offset
37 * WIN0_SRC_ALPHA_CTRL: Win0 alpha source control register
38 * WIN0_DST_ALPHA_CTRL: Win0 alpha destination control register
39 * WIN0_FADING_CTRL: Win0 fading contrl register
40 * WIN0_CTRL2: Win0 ctrl register2
41 * WIN1_CTRL0: Win1 ctrl register0
42 * WIN1_CTRL1: Win1 ctrl register1
43 * WIN1_COLOR_KEY: Win1 color key register
44 * WIN1_VIR: win1 virtual stride
45 * WIN1_YRGB_MST: Win1 YRGB memory start address
46 * WIN1_CBR_MST: Win1 Cbr memory start address
47 * WIN1_ACT_INFO: Win1 active window width/height
48 * WIN1_DSP_INFO: Win1 display width/height on panel
49 * WIN1_DSP_ST: Win1 display start point on panel
50 * WIN1_SCL_FACTOR_YRGB: Win1 YRGB scaling factor
51 * WIN1_SCL_FACTOR_CBR: Win1 Cbr scaling factor
52 * WIN1_SCL_OFFSET: Win1 scaling start point offset
53 * WIN1_SRC_ALPHA_CTRL: Win1 alpha source control register
54 * WIN1_DST_ALPHA_CTRL: Win1 alpha destination control register
55 * WIN1_FADING_CTRL: Win1 fading contrl register
56 * WIN1_CTRL2: Win1 ctrl register2
57 * WIN2_CTRL0: win2 ctrl register0
58 * WIN2_CTRL1: win2 ctrl register1
59 * WIN2_VIR0_1: Win2 virtual stride0 and virtaul stride1
60 * WIN2_VIR2_3: Win2 virtual stride2 and virtaul stride3
61 * WIN2_MST0: Win2 memory start address0
62 * WIN2_DSP_INFO0: Win2 display width0/height0 on panel
63 * WIN2_DSP_ST0: Win2 display start point0 on panel
64 * WIN2_COLOR_KEY: Win2 color key register
65 * WIN2_MST1: Win2 memory start address1
66 * WIN2_DSP_INFO1: Win2 display width1/height1 on panel
67 * WIN2_DSP_ST1: Win2 display start point1 on panel
68 * WIN2_SRC_ALPHA_CTRL: Win2 alpha source control register
69 * WIN2_MST2: Win2 memory start address2
70 * WIN2_DSP_INFO2: Win2 display width2/height2 on panel
71 * WIN2_DSP_ST2: Win2 display start point2 on panel
72 * WIN2_DST_ALPHA_CTRL: Win2 alpha destination control register
73 * WIN2_MST3: Win2 memory start address3
74 * WIN2_DSP_INFO3: Win2 display width3/height3 on panel
75 * WIN2_DSP_ST3: Win2 display start point3 on panel
76 * WIN2_FADING_CTRL: Win2 fading contrl register
77 * WIN3_CTRL0: Win3 ctrl register0
78 * WIN3_CTRL1: Win3 ctrl register1
79 * WIN3_VIR0_1: Win3 virtual stride0 and virtaul stride1
80 * WIN3_VIR2_3: Win3 virtual stride2 and virtaul stride3
81 * WIN3_MST0: Win3 memory start address0
82 * WIN3_DSP_INFO0: Win3 display width0/height0 on panel
83 * WIN3_DSP_ST0: Win3 display start point0 on panel
84 * WIN3_COLOR_KEY: Win3 color key register
85 * WIN3_MST1: Win3 memory start address1
86 * WIN3_DSP_INFO1: Win3 display width1/height1 on panel
87 * WIN3_DSP_ST1: Win3 display start point1 on panel
88 * WIN3_SRC_ALPHA_CTRL: Win3 alpha source control register
89 * WIN3_MST2: Win3 memory start address2
90 * WIN3_DSP_INFO2: Win3 display width2/height2 on panel
91 * WIN3_DSP_ST2: Win3 display start point2 on panel
92 * WIN3_DST_ALPHA_CTRL: Win3 alpha destination control register
93 * WIN3_MST3: Win3 memory start address3
94 * WIN3_DSP_INFO3: Win3 display width3/height3 on panel
95 * WIN3_DSP_ST3: Win3 display start point3 on panel
96 * WIN3_FADING_CTRL: Win3 fading contrl register
97 * HWC_CTRL0: Hwc ctrl register0
98 * HWC_CTRL1: Hwc ctrl register1
99 * HWC_MST: Hwc memory start address
100 * HWC_DSP_ST: Hwc display start point on panel
101 * HWC_SRC_ALPHA_CTRL: Hwc alpha source control register
102 * HWC_DST_ALPHA_CTRL: Hwc alpha destination control register
103 * HWC_FADING_CTRL: Hwc fading contrl register
104 * HWC_RESERVED1: Hwc reserved
105 * POST_DSP_HACT_INFO: Post scaler down horizontal start and end
106 * POST_DSP_VACT_INFO: Panel active horizontal scanning start point
108 * POST_SCL_FACTOR_YRGB: Post yrgb scaling factor
109 * POST_RESERVED: Post reserved
110 * POST_SCL_CTRL: Post scaling start point offset
111 * POST_DSP_VACT_INFO_F1: Panel active horizontal scanning start point
113 * DSP_HTOTAL_HS_END: Panel scanning horizontal width and hsync pulse end point
114 * DSP_HACT_ST_END: Panel active horizontal scanning start point and end point
115 * DSP_VTOTAL_VS_END: Panel scanning vertical height and vsync pulse end point
116 * DSP_VACT_ST_END: Panel active vertical scanning start point and end point
117 * DSP_VS_ST_END_F1: Vertical scanning start point and vsync pulse end point
118 * of even filed in interlace mode
119 * DSP_VACT_ST_END_F1: Vertical scanning active start point and end point of
120 * even filed in interlace mode
121 * PWM_CTRL: PWM Control Register
122 * PWM_PERIOD_HPR: PWM Period Register/High Polarity Capture Register
123 * PWM_DUTY_LPR: PWM Duty Register/Low Polarity Capture Register
124 * PWM_CNT: PWM Counter Register
125 * BCSH_COLOR_BAR: Color bar config register
126 * BCSH_BCS: Brightness contrast saturation*contrast config register
127 * BCSH_H: Sin hue and cos hue config register
128 * BCSH_CTRL: BCSH contrl register
129 * CABC_CTRL0: Content Adaptive Backlight Control register0
130 * CABC_CTRL1: Content Adaptive Backlight Control register1
131 * CABC_CTRL2: Content Adaptive Backlight Control register2
132 * CABC_CTRL3: Content Adaptive Backlight Control register3
133 * CABC_GAUSS_LINE0_0: CABC gauss line config register00
134 * CABC_GAUSS_LINE0_1: CABC gauss line config register01
135 * CABC_GAUSS_LINE1_0: CABC gauss line config register10
136 * CABC_GAUSS_LINE1_1: CABC gauss line config register11
137 * CABC_GAUSS_LINE2_0: CABC gauss line config register20
138 * CABC_GAUSS_LINE2_1: CABC gauss line config register21
139 * FRC_LOWER01_0: FRC lookup table config register010
140 * FRC_LOWER01_1: FRC lookup table config register011
141 * FRC_LOWER10_0: FRC lookup table config register100
142 * FRC_LOWER10_1: FRC lookup table config register101
143 * FRC_LOWER11_0: FRC lookup table config register110
144 * FRC_LOWER11_1: FRC lookup table config register111
161 * INTR_EN0: Interrupt enable register
162 * INTR_CLEAR0: Interrupt clear register
163 * INTR_STATUS0: interrupt status
164 * INTR_RAW_STATUS0: raw interrupt status
165 * INTR_EN1: Interrupt enable register
166 * INTR_CLEAR1: Interrupt clear register
167 * INTR_STATUS1: interrupt status
168 * INTR_RAW_STATUS1: raw interrupt status
169 * LINE_FLAG: Line flag config register
170 * VOP_STATUS: vop status register
171 * BLANKING_VALUE: Register0000 Abstract
172 * MCU_BYPASS_PORT: Mcu bypass value
173 * WIN0_DSP_BG: Win0 layer background color
174 * WIN1_DSP_BG: Win1 layer background color
175 * WIN2_DSP_BG: Win2 layer background color
176 * WIN3_DSP_BG: Win3 layer background color
177 * YUV2YUV_WIN: YUV to YUV win
178 * YUV2YUV_POST: Post YUV to YUV
179 * AUTO_GATING_EN: Auto gating enable
180 * DBG_PERF_LATENCY_CTRL0: Axi performance latency module contrl register0
181 * DBG_PERF_RD_MAX_LATENCY_NUM0: Read max latency number
182 * DBG_PERF_RD_LATENCY_THR_NUM0: The number of bigger than configed
184 * DBG_PERF_RD_LATENCY_SAMP_NUM0: Total sample number
185 * DBG_CABC0: CABC debug register0
186 * DBG_CABC1: CABC debug register1
187 * DBG_CABC2: CABC debug register2
188 * DBG_CABC3: CABC debug register3
189 * DBG_WIN0_REG0: Vop debug win0 register0
190 * DBG_WIN0_REG1: Vop debug win0 register1
191 * DBG_WIN0_REG2: Vop debug win0 register2
192 * DBG_WIN0_RESERVED: Vop debug win0 register3 reserved
193 * DBG_WIN1_REG0: Vop debug win1 register0
194 * DBG_WIN1_REG1: Vop debug win1 register1
195 * DBG_WIN1_REG2: Vop debug win1 register2
196 * DBG_WIN1_RESERVED: Vop debug win1 register3 reserved
197 * DBG_WIN2_REG0: Vop debug win2 register0
198 * DBG_WIN2_REG1: Vop debug win2 register1
199 * DBG_WIN2_REG2: Vop debug win2 register2
200 * DBG_WIN2_REG3: Vop debug win2 register3
201 * DBG_WIN3_REG0: Vop debug win3 register0
202 * DBG_WIN3_REG1: Vop debug win3 register1
203 * DBG_WIN3_REG2: Vop debug win3 register2
204 * DBG_WIN3_REG3: Vop debug win3 register3
205 * DBG_PRE_REG0: Vop debug pre register0
206 * DBG_PRE_RESERVED: Vop debug pre register1 reserved
207 * DBG_POST_REG0: Vop debug post register0
208 * DBG_POST_REG1: Vop debug
209 * DBG_DATAO: debug data output path
210 * DBG_DATAO_2: debug data output path 2
211 * WIN2_LUT_ADDR: Win2 lut base address
212 * WIN3_LUT_ADDR: Win3 lut base address
213 * HWC_LUT_ADDR: Hwc lut base address
214 * GAMMA0_LUT_ADDR: GAMMA lut base address
215 * GAMMA1_LUT_ADDR: GAMMA lut base address
216 * CABC_GAMMA_LUT_ADDR: CABC GAMMA lut base address
221 static inline u64 val_mask(int val, u64 msk, int shift)
223 return (msk << (shift + 32)) | ((msk & val) << shift);
226 #define VAL_MASK(x, width, shift) val_mask(x, (1 << width) - 1, shift)
228 #define MASK(x) (V_##x(0) >> 32)
230 #define REG_CFG_DONE 0x00000000
231 #define V_REG_LOAD_EN(x) VAL_MASK(x, 1, 0)
232 #define V_REG_LOAD_WIN0_EN(x) VAL_MASK(x, 1, 1)
233 #define V_REG_LOAD_WIN1_EN(x) VAL_MASK(x, 1, 2)
234 #define V_REG_LOAD_WIN2_EN(x) VAL_MASK(x, 1, 3)
235 #define V_REG_LOAD_WIN3_EN(x) VAL_MASK(x, 1, 4)
236 #define V_REG_LOAD_HWC_EN(x) VAL_MASK(x, 1, 5)
237 #define V_REG_LOAD_IEP_EN(x) VAL_MASK(x, 1, 6)
238 #define V_REG_LOAD_FBDC_EN(x) VAL_MASK(x, 1, 7)
239 #define V_REG_LOAD_SYS_EN(x) VAL_MASK(x, 1, 8)
240 #define V_WRITE_MASK(x) VAL_MASK(x, 16, 16)
241 #define VERSION_INFO 0x00000004
242 #define V_SVNBUILD(x) VAL_MASK(x, 16, 0)
243 #define V_MINOR(x) VAL_MASK(x, 8, 16)
244 #define V_MAJOR(x) VAL_MASK(x, 8, 24)
245 #define SYS_CTRL 0x00000008
246 #define V_DIRECT_PATH_EN(x) VAL_MASK(x, 1, 0)
247 #define V_DIRECT_PATH_LAYER_SEL(x) VAL_MASK(x, 2, 1)
248 #define V_MIPI_DUAL_CHANNEL_EN(x) VAL_MASK(x, 1, 3)
249 #define V_EDPI_HALT_EN(x) VAL_MASK(x, 1, 8)
250 #define V_EDPI_WMS_MODE(x) VAL_MASK(x, 1, 9)
251 #define V_EDPI_WMS_FS(x) VAL_MASK(x, 1, 10)
252 #define V_GLOBAL_REGDONE_EN(x) VAL_MASK(x, 1, 11)
253 #define V_RGB_OUT_EN(x) VAL_MASK(x, 1, 12)
254 #define V_HDMI_OUT_EN(x) VAL_MASK(x, 1, 13)
255 #define V_EDP_OUT_EN(x) VAL_MASK(x, 1, 14)
256 #define V_MIPI_OUT_EN(x) VAL_MASK(x, 1, 15)
257 #define V_OVERLAY_MODE(x) VAL_MASK(x, 1, 16)
259 #define V_FS_SAME_ADDR_MASK_EN(x) VAL_MASK(x, 1, 17)
260 #define V_POST_LB_MODE(x) VAL_MASK(x, 1, 18)
261 #define V_WIN23_PRI_OPT_MODE(x) VAL_MASK(x, 1, 19)
263 #define V_VOP_MMU_EN(x) VAL_MASK(x, 1, 20)
265 #define V_VOP_FIELD_TVE_TIMING_POL(x) VAL_MASK(x, 1, 20)
266 #define V_VOP_DMA_STOP(x) VAL_MASK(x, 1, 21)
267 #define V_VOP_STANDBY_EN(x) VAL_MASK(x, 1, 22)
268 #define V_AUTO_GATING_EN(x) VAL_MASK(x, 1, 23)
269 #define V_SW_IMD_TVE_DCLK_EN(x) VAL_MASK(x, 1, 24)
270 #define V_SW_IMD_TVE_DCLK_POL(x) VAL_MASK(x, 1, 25)
271 #define V_SW_TVE_MODE(x) VAL_MASK(x, 1, 26)
272 #define V_SW_UV_OFFSET_EN(x) VAL_MASK(x, 1, 27)
273 #define V_SW_GENLOCK(x) VAL_MASK(x, 1, 28)
274 #define V_SW_DAC_SEL(x) VAL_MASK(x, 1, 29)
275 #define V_VOP_FIELD_TVE_POL(x) VAL_MASK(x, 1, 30)
276 #define V_IO_PAD_CLK_SEL(x) VAL_MASK(x, 1, 31)
277 #define SYS_CTRL1 0x0000000c
278 #define V_NOC_HURRY_EN(x) VAL_MASK(x, 1, 0)
279 #define V_NOC_HURRY_VALUE(x) VAL_MASK(x, 2, 1)
280 #define V_NOC_HURRY_THRESHOLD(x) VAL_MASK(x, 6, 3)
281 #define V_NOC_QOS_EN(x) VAL_MASK(x, 1, 9)
282 #define V_NOC_WIN_QOS(x) VAL_MASK(x, 2, 10)
283 #define V_AXI_MAX_OUTSTANDING_EN(x) VAL_MASK(x, 1, 12)
284 #define V_AXI_OUTSTANDING_MAX_NUM(x) VAL_MASK(x, 5, 13)
285 #define V_NOC_HURRY_W_MODE(x) VAL_MASK(x, 2, 20)
286 #define V_NOC_HURRY_W_VALUE(x) VAL_MASK(x, 2, 22)
287 #define V_REG_DONE_FRM(x) VAL_MASK(x, 1, 24)
288 #define V_DSP_FP_STANDBY(x) VAL_MASK(x, 1, 31)
289 #define DSP_CTRL0 0x00000010
290 #define V_DSP_OUT_MODE(x) VAL_MASK(x, 4, 0)
291 #define V_SW_CORE_DCLK_SEL(x) VAL_MASK(x, 1, 4)
293 #define V_SW_HDMI_CLK_I_SEL(x) VAL_MASK(x, 1, 5)
295 #define V_P2I_EN(x) VAL_MASK(x, 1, 5)
296 #define V_DSP_DCLK_DDR(x) VAL_MASK(x, 1, 8)
297 #define V_DSP_DDR_PHASE(x) VAL_MASK(x, 1, 9)
298 #define V_DSP_INTERLACE(x) VAL_MASK(x, 1, 10)
299 #define V_DSP_FIELD_POL(x) VAL_MASK(x, 1, 11)
300 #define V_DSP_BG_SWAP(x) VAL_MASK(x, 1, 12)
301 #define V_DSP_RB_SWAP(x) VAL_MASK(x, 1, 13)
302 #define V_DSP_RG_SWAP(x) VAL_MASK(x, 1, 14)
303 #define V_DSP_DELTA_SWAP(x) VAL_MASK(x, 1, 15)
304 #define V_DSP_DUMMY_SWAP(x) VAL_MASK(x, 1, 16)
305 #define V_DSP_OUT_ZERO(x) VAL_MASK(x, 1, 17)
306 #define V_DSP_BLANK_EN(x) VAL_MASK(x, 1, 18)
307 #define V_DSP_BLACK_EN(x) VAL_MASK(x, 1, 19)
308 #define V_DSP_CCIR656_AVG(x) VAL_MASK(x, 1, 20)
309 #define V_DSP_YUV_CLIP(x) VAL_MASK(x, 1, 21)
310 #define V_DSP_X_MIR_EN(x) VAL_MASK(x, 1, 22)
311 #define V_DSP_Y_MIR_EN(x) VAL_MASK(x, 1, 23)
313 #define V_SW_TVE_OUTPUT_SEL(x) VAL_MASK(x, 1, 25)
314 #define V_DSP_FIELD(x) VAL_MASK(x, 1, 31)
315 #define DSP_CTRL1 0x00000014
316 #define V_DSP_LUT_EN(x) VAL_MASK(x, 1, 0)
317 #define V_PRE_DITHER_DOWN_EN(x) VAL_MASK(x, 1, 1)
318 #define V_DITHER_DOWN_EN(x) VAL_MASK(x, 1, 2)
319 #define V_DITHER_DOWN_MODE(x) VAL_MASK(x, 1, 3)
320 #define V_DITHER_DOWN_SEL(x) VAL_MASK(x, 1, 4)
321 #define V_DITHER_UP_EN(x) VAL_MASK(x, 1, 6)
322 #define V_UPDATE_GAMMA_LUT(x) VAL_MASK(x, 1, 7)
323 #define V_DSP_LAYER0_SEL(x) VAL_MASK(x, 2, 8)
324 #define V_DSP_LAYER1_SEL(x) VAL_MASK(x, 2, 10)
325 #define V_DSP_LAYER2_SEL(x) VAL_MASK(x, 2, 12)
326 #define V_DSP_LAYER3_SEL(x) VAL_MASK(x, 2, 14)
327 #define V_RGB_LVDS_HSYNC_POL(x) VAL_MASK(x, 1, 16)
328 #define V_RGB_LVDS_VSYNC_POL(x) VAL_MASK(x, 1, 17)
329 #define V_RGB_LVDS_DEN_POL(x) VAL_MASK(x, 1, 18)
330 #define V_RGB_LVDS_DCLK_POL(x) VAL_MASK(x, 1, 19)
331 #define V_HDMI_HSYNC_POL(x) VAL_MASK(x, 1, 20)
332 #define V_HDMI_VSYNC_POL(x) VAL_MASK(x, 1, 21)
333 #define V_HDMI_DEN_POL(x) VAL_MASK(x, 1, 22)
334 #define V_HDMI_DCLK_POL(x) VAL_MASK(x, 1, 23)
335 #define V_EDP_HSYNC_POL(x) VAL_MASK(x, 1, 24)
336 #define V_EDP_VSYNC_POL(x) VAL_MASK(x, 1, 25)
337 #define V_EDP_DEN_POL(x) VAL_MASK(x, 1, 26)
338 #define V_EDP_DCLK_POL(x) VAL_MASK(x, 1, 27)
339 #define V_MIPI_HSYNC_POL(x) VAL_MASK(x, 1, 28)
340 #define V_MIPI_VSYNC_POL(x) VAL_MASK(x, 1, 29)
341 #define V_MIPI_DEN_POL(x) VAL_MASK(x, 1, 30)
342 #define V_MIPI_DCLK_POL(x) VAL_MASK(x, 1, 31)
343 #define DSP_BG 0x00000018
344 #define V_DSP_BG_BLUE(x) VAL_MASK(x, 10, 0)
345 #define V_DSP_BG_GREEN(x) VAL_MASK(x, 10, 10)
346 #define V_DSP_BG_RED(x) VAL_MASK(x, 10, 20)
347 #define MCU_CTRL 0x0000001c
348 #define V_MCU_PIX_TOTAL(x) VAL_MASK(x, 6, 0)
349 #define V_MCU_CS_PST(x) VAL_MASK(x, 4, 6)
350 #define V_MCU_CS_PEND(x) VAL_MASK(x, 6, 10)
351 #define V_MCU_RW_PST(x) VAL_MASK(x, 4, 16)
352 #define V_MCU_RW_PEND(x) VAL_MASK(x, 6, 20)
353 #define V_MCU_CLK_SEL(x) VAL_MASK(x, 1, 26)
354 #define V_MCU_HOLD_MODE(x) VAL_MASK(x, 1, 27)
355 #define V_MCU_FRAME_ST(x) VAL_MASK(x, 1, 28)
356 #define V_MCU_RS(x) VAL_MASK(x, 1, 29)
357 #define V_MCU_BYPASS(x) VAL_MASK(x, 1, 30)
358 #define V_MCU_TYPE(x) VAL_MASK(x, 1, 31)
359 #define WB_CTRL0 0x00000020
360 #define V_WB_EN(x) VAL_MASK(x, 1, 0)
361 #define V_WB_FMT(x) VAL_MASK(x, 3, 1)
362 #define V_WB_DITHER_EN(x) VAL_MASK(x, 1, 4)
363 #define V_WB_RGB2YUV_EN(x) VAL_MASK(x, 1, 5)
364 #define V_WB_RGB2YUV_MODE(x) VAL_MASK(x, 1, 6)
365 #define V_WB_XPSD_BIL_EN(x) VAL_MASK(x, 1, 7)
366 #define V_WB_YTHROW_EN(x) VAL_MASK(x, 1, 8)
367 #define V_WB_YTHROW_MODE(x) VAL_MASK(x, 1, 9)
368 #define V_WB_HANDSHAKE_MODE(x) VAL_MASK(x, 1, 11)
369 #define V_WB_YRGB_ID(x) VAL_MASK(x, 4, 24)
370 #define V_WB_UV_ID(x) VAL_MASK(x, 4, 28)
371 #define WB_CTRL1 0x00000024
372 #define V_WB_WIDTH(x) VAL_MASK(x, 12, 0)
373 #define V_WB_XPSD_BIL_FACTOR(x) VAL_MASK(x, 14, 16)
374 #define WB_YRGB_MST 0x00000028
375 #define V_WB_YRGB_MST(x) VAL_MASK(x, 32, 0)
376 #define WB_CBR_MST 0x0000002c
377 #define V_WB_CBR_MST(x) VAL_MASK(x, 32, 0)
378 #define WIN0_CTRL0 0x00000030
379 #define V_WIN0_EN(x) VAL_MASK(x, 1, 0)
380 #define V_WIN0_DATA_FMT(x) VAL_MASK(x, 3, 1)
381 #define V_WIN0_FMT_10(x) VAL_MASK(x, 1, 4)
382 #define V_WIN0_LB_MODE(x) VAL_MASK(x, 3, 5)
383 #define V_WIN0_INTERLACE_READ(x) VAL_MASK(x, 1, 8)
384 #define V_WIN0_NO_OUTSTANDING(x) VAL_MASK(x, 1, 9)
385 #define V_WIN0_CSC_MODE(x) VAL_MASK(x, 2, 10)
386 #define V_WIN0_RB_SWAP(x) VAL_MASK(x, 1, 12)
387 #define V_WIN0_ALPHA_SWAP(x) VAL_MASK(x, 1, 13)
388 #define V_WIN0_MID_SWAP(x) VAL_MASK(x, 1, 14)
389 #define V_WIN0_UV_SWAP(x) VAL_MASK(x, 1, 15)
390 #define V_WIN0_HW_PRE_MUL_EN(x) VAL_MASK(x, 1, 16)
392 #define V_WIN0_YUYV(x) VAL_MASK(x, 1, 17)
393 #define V_WIN0_YRGB_DEFLICK(x) VAL_MASK(x, 1, 18)
394 #define V_WIN0_CBR_DEFLICK(x) VAL_MASK(x, 1, 19)
395 #define V_WIN0_YUV_CLIP(x) VAL_MASK(x, 1, 20)
396 #define V_WIN0_X_MIR_EN(x) VAL_MASK(x, 1, 21)
397 #define V_WIN0_Y_MIR_EN(x) VAL_MASK(x, 1, 22)
398 #define V_WIN0_AXI_MAX_OUTSTANDING_EN(x) VAL_MASK(x, 1, 24)
399 #define V_WIN0_AXI_OUTSTANDING_MAX_NUM(x) VAL_MASK(x, 5, 25)
400 #define V_WIN0_DMA_BURST_LENGTH(x) VAL_MASK(x, 2, 30)
401 #define WIN0_CTRL1 0x00000034
402 #define V_WIN0_YRGB_AXI_GATHER_EN(x) VAL_MASK(x, 1, 0)
403 #define V_WIN0_CBR_AXI_GATHER_EN(x) VAL_MASK(x, 1, 1)
404 #define V_WIN0_BIC_COE_SEL(x) VAL_MASK(x, 2, 2)
405 #define V_WIN0_VSD_YRGB_GT4(x) VAL_MASK(x, 1, 4)
406 #define V_WIN0_VSD_YRGB_GT2(x) VAL_MASK(x, 1, 5)
407 #define V_WIN0_VSD_CBR_GT4(x) VAL_MASK(x, 1, 6)
408 #define V_WIN0_VSD_CBR_GT2(x) VAL_MASK(x, 1, 7)
409 #define V_WIN0_YRGB_AXI_GATHER_NUM(x) VAL_MASK(x, 4, 8)
410 #define V_WIN0_CBR_AXI_GATHER_NUM(x) VAL_MASK(x, 3, 12)
411 #define V_WIN0_LINE_LOAD_MODE(x) VAL_MASK(x, 1, 15)
412 #define V_WIN0_YRGB_HOR_SCL_MODE(x) VAL_MASK(x, 2, 16)
413 #define V_WIN0_YRGB_VER_SCL_MODE(x) VAL_MASK(x, 2, 18)
414 #define V_WIN0_YRGB_HSD_MODE(x) VAL_MASK(x, 2, 20)
415 #define V_WIN0_YRGB_VSU_MODE(x) VAL_MASK(x, 1, 22)
416 #define V_WIN0_YRGB_VSD_MODE(x) VAL_MASK(x, 1, 23)
417 #define V_WIN0_CBR_HOR_SCL_MODE(x) VAL_MASK(x, 2, 24)
418 #define V_WIN0_CBR_VER_SCL_MODE(x) VAL_MASK(x, 2, 26)
419 #define V_WIN0_CBR_HSD_MODE(x) VAL_MASK(x, 2, 28)
420 #define V_WIN0_CBR_VSU_MODE(x) VAL_MASK(x, 1, 30)
421 #define V_WIN0_CBR_VSD_MODE(x) VAL_MASK(x, 1, 31)
422 #define WIN0_COLOR_KEY 0x00000038
423 #define V_WIN0_KEY_COLOR(x) VAL_MASK(x, 24, 0)
424 #define V_WIN0_KEY_EN(x) VAL_MASK(x, 1, 31)
425 #define WIN0_VIR 0x0000003c
426 #define V_WIN0_VIR_STRIDE(x) VAL_MASK(x, 16, 0)
427 #define V_WIN0_VIR_STRIDE_UV(x) VAL_MASK(x, 16, 16)
428 #define WIN0_YRGB_MST 0x00000040
429 #define V_WIN0_YRGB_MST(x) VAL_MASK(x, 32, 0)
430 #define WIN0_CBR_MST 0x00000044
431 #define V_WIN0_CBR_MST(x) VAL_MASK(x, 32, 0)
432 #define WIN0_ACT_INFO 0x00000048
433 #define V_WIN0_ACT_WIDTH(x) VAL_MASK(x, 13, 0)
434 #define V_FIELD0002(x) VAL_MASK(x, 1, 13)
435 #define V_FIELD0001(x) VAL_MASK(x, 1, 14)
436 #define V_FIELD0000(x) VAL_MASK(x, 1, 15)
437 #define V_WIN0_ACT_HEIGHT(x) VAL_MASK(x, 13, 16)
438 #define WIN0_DSP_INFO 0x0000004c
439 #define V_WIN0_DSP_WIDTH(x) VAL_MASK(x, 12, 0)
440 #define V_WIN0_DSP_HEIGHT(x) VAL_MASK(x, 12, 16)
441 #define WIN0_DSP_ST 0x00000050
442 #define V_WIN0_DSP_XST(x) VAL_MASK(x, 13, 0)
443 #define V_WIN0_DSP_YST(x) VAL_MASK(x, 13, 16)
444 #define WIN0_SCL_FACTOR_YRGB 0x00000054
445 #define V_WIN0_HS_FACTOR_YRGB(x) VAL_MASK(x, 16, 0)
446 #define V_WIN0_VS_FACTOR_YRGB(x) VAL_MASK(x, 16, 16)
447 #define WIN0_SCL_FACTOR_CBR 0x00000058
448 #define V_WIN0_HS_FACTOR_CBR(x) VAL_MASK(x, 16, 0)
449 #define V_WIN0_VS_FACTOR_CBR(x) VAL_MASK(x, 16, 16)
450 #define WIN0_SCL_OFFSET 0x0000005c
451 #define V_WIN0_HS_OFFSET_YRGB(x) VAL_MASK(x, 8, 0)
452 #define V_WIN0_HS_OFFSET_CBR(x) VAL_MASK(x, 8, 8)
453 #define V_WIN0_VS_OFFSET_YRGB(x) VAL_MASK(x, 8, 16)
454 #define V_WIN0_VS_OFFSET_CBR(x) VAL_MASK(x, 8, 24)
455 #define WIN0_SRC_ALPHA_CTRL 0x00000060
456 #define V_WIN0_SRC_ALPHA_EN(x) VAL_MASK(x, 1, 0)
457 #define V_WIN0_SRC_COLOR_MODE(x) VAL_MASK(x, 1, 1)
458 #define V_WIN0_SRC_ALPHA_MODE(x) VAL_MASK(x, 1, 2)
459 #define V_WIN0_SRC_BLEND_MODE(x) VAL_MASK(x, 2, 3)
460 #define V_WIN0_SRC_ALPHA_CAL_MODE(x) VAL_MASK(x, 1, 5)
461 #define V_WIN0_SRC_FACTOR_MODE(x) VAL_MASK(x, 3, 6)
462 #define V_WIN0_SRC_GLOBAL_ALPHA(x) VAL_MASK(x, 8, 16)
463 #define V_WIN0_FADING_VALUE(x) VAL_MASK(x, 8, 24)
464 #define WIN0_DST_ALPHA_CTRL 0x00000064
465 #define V_WIN0_DST_M0_RESERVED(x) VAL_MASK(x, 6, 0)
466 #define V_WIN0_DST_FACTOR_MODE(x) VAL_MASK(x, 3, 6)
467 #define WIN0_FADING_CTRL 0x00000068
468 #define V_LAYER0_FADING_OFFSET_R(x) VAL_MASK(x, 8, 0)
469 #define V_LAYER0_FADING_OFFSET_G(x) VAL_MASK(x, 8, 8)
470 #define V_LAYER0_FADING_OFFSET_B(x) VAL_MASK(x, 8, 16)
471 #define V_LAYER0_FADING_EN(x) VAL_MASK(x, 1, 24)
472 #define WIN0_CTRL2 0x0000006c
473 #define V_WIN_RID_WIN0_YRGB(x) VAL_MASK(x, 4, 0)
474 #define V_WIN_RID_WIN0_CBR(x) VAL_MASK(x, 4, 4)
475 #define WIN1_CTRL0 0x00000070
476 #define V_WIN1_EN(x) VAL_MASK(x, 1, 0)
477 #define V_WIN1_DATA_FMT(x) VAL_MASK(x, 3, 1)
478 #define V_WIN1_FMT_10(x) VAL_MASK(x, 1, 4)
479 #define V_WIN1_LB_MODE(x) VAL_MASK(x, 3, 5)
480 #define V_WIN1_INTERLACE_READ(x) VAL_MASK(x, 1, 8)
481 #define V_WIN1_NO_OUTSTANDING(x) VAL_MASK(x, 1, 9)
482 #define V_WIN1_CSC_MODE(x) VAL_MASK(x, 2, 10)
483 #define V_WIN1_RB_SWAP(x) VAL_MASK(x, 1, 12)
484 #define V_WIN1_ALPHA_SWAP(x) VAL_MASK(x, 1, 13)
485 #define V_WIN1_MID_SWAP(x) VAL_MASK(x, 1, 14)
486 #define V_WIN1_UV_SWAP(x) VAL_MASK(x, 1, 15)
487 #define V_WIN1_HW_PRE_MUL_EN(x) VAL_MASK(x, 1, 16)
489 #define V_WIN1_YUYV(x) VAL_MASK(x, 1, 17)
490 #define V_WIN1_YRGB_DEFLICK(x) VAL_MASK(x, 1, 18)
491 #define V_WIN1_CBR_DEFLICK(x) VAL_MASK(x, 1, 19)
492 #define V_WIN1_YUV_CLIP(x) VAL_MASK(x, 1, 20)
493 #define V_WIN1_X_MIR_EN(x) VAL_MASK(x, 1, 21)
494 #define V_WIN1_Y_MIR_EN(x) VAL_MASK(x, 1, 22)
495 #define V_WIN1_AXI_MAX_OUTSTANDING_EN(x) VAL_MASK(x, 1, 24)
496 #define V_WIN1_AXI_MAX_OUTSTANDING_NUM(x) VAL_MASK(x, 5, 25)
497 #define V_WIN1_DMA_BURST_LENGTH(x) VAL_MASK(x, 2, 30)
498 #define WIN1_CTRL1 0x00000074
499 #define V_WIN1_YRGB_AXI_GATHER_EN(x) VAL_MASK(x, 1, 0)
500 #define V_WIN1_CBR_AXI_GATHER_EN(x) VAL_MASK(x, 1, 1)
501 #define V_WIN1_BIC_COE_SEL(x) VAL_MASK(x, 2, 2)
502 #define V_WIN1_VSD_YRGB_GT4(x) VAL_MASK(x, 1, 4)
503 #define V_WIN1_VSD_YRGB_GT2(x) VAL_MASK(x, 1, 5)
504 #define V_WIN1_VSD_CBR_GT4(x) VAL_MASK(x, 1, 6)
505 #define V_WIN1_VSD_CBR_GT2(x) VAL_MASK(x, 1, 7)
506 #define V_WIN1_YRGB_AXI_GATHER_NUM(x) VAL_MASK(x, 4, 8)
507 #define V_WIN1_CBR_AXI_GATHER_NUM(x) VAL_MASK(x, 3, 12)
508 #define V_WIN1_LINE_LOAD_MODE(x) VAL_MASK(x, 1, 15)
509 #define V_WIN1_YRGB_HOR_SCL_MODE(x) VAL_MASK(x, 2, 16)
510 #define V_WIN1_YRGB_VER_SCL_MODE(x) VAL_MASK(x, 2, 18)
511 #define V_WIN1_YRGB_HSD_MODE(x) VAL_MASK(x, 2, 20)
512 #define V_WIN1_YRGB_VSU_MODE(x) VAL_MASK(x, 1, 22)
513 #define V_WIN1_YRGB_VSD_MODE(x) VAL_MASK(x, 1, 23)
514 #define V_WIN1_CBR_HOR_SCL_MODE(x) VAL_MASK(x, 2, 24)
515 #define V_WIN1_CBR_VER_SCL_MODE(x) VAL_MASK(x, 2, 26)
516 #define V_WIN1_CBR_HSD_MODE(x) VAL_MASK(x, 2, 28)
517 #define V_WIN1_CBR_VSU_MODE(x) VAL_MASK(x, 1, 30)
518 #define V_WIN1_CBR_VSD_MODE(x) VAL_MASK(x, 1, 31)
519 #define WIN1_COLOR_KEY 0x00000078
520 #define V_WIN1_KEY_COLOR(x) VAL_MASK(x, 24, 0)
521 #define V_WIN1_KEY_EN(x) VAL_MASK(x, 1, 31)
522 #define WIN1_VIR 0x0000007c
523 #define V_WIN1_VIR_STRIDE(x) VAL_MASK(x, 16, 0)
524 #define V_WIN1_VIR_STRIDE_UV(x) VAL_MASK(x, 16, 16)
525 #define WIN1_YRGB_MST 0x00000080
526 #define V_WIN1_YRGB_MST(x) VAL_MASK(x, 32, 0)
527 #define WIN1_CBR_MST 0x00000084
528 #define V_WIN1_CBR_MST(x) VAL_MASK(x, 32, 0)
529 #define WIN1_ACT_INFO 0x00000088
530 #define V_WIN1_ACT_WIDTH(x) VAL_MASK(x, 13, 0)
531 #define V_WIN1_ACT_HEIGHT(x) VAL_MASK(x, 13, 16)
532 #define WIN1_DSP_INFO 0x0000008c
533 #define V_WIN1_DSP_WIDTH(x) VAL_MASK(x, 12, 0)
534 #define V_WIN1_DSP_HEIGHT(x) VAL_MASK(x, 12, 16)
535 #define WIN1_DSP_ST 0x00000090
536 #define V_WIN1_DSP_XST(x) VAL_MASK(x, 13, 0)
537 #define V_WIN1_DSP_YST(x) VAL_MASK(x, 13, 16)
538 #define WIN1_SCL_FACTOR_YRGB 0x00000094
539 #define V_WIN1_HS_FACTOR_YRGB(x) VAL_MASK(x, 16, 0)
540 #define V_WIN1_VS_FACTOR_YRGB(x) VAL_MASK(x, 16, 16)
541 #define WIN1_SCL_FACTOR_CBR 0x00000098
542 #define V_WIN1_HS_FACTOR_CBR(x) VAL_MASK(x, 16, 0)
543 #define V_WIN1_VS_FACTOR_CBR(x) VAL_MASK(x, 16, 16)
544 #define WIN1_SCL_OFFSET 0x0000009c
545 #define V_WIN1_HS_OFFSET_YRGB(x) VAL_MASK(x, 8, 0)
546 #define V_WIN1_HS_OFFSET_CBR(x) VAL_MASK(x, 8, 8)
547 #define V_WIN1_VS_OFFSET_YRGB(x) VAL_MASK(x, 8, 16)
548 #define V_WIN1_VS_OFFSET_CBR(x) VAL_MASK(x, 8, 24)
549 #define WIN1_SRC_ALPHA_CTRL 0x000000a0
550 #define V_WIN1_SRC_ALPHA_EN(x) VAL_MASK(x, 1, 0)
551 #define V_WIN1_SRC_COLOR_MODE(x) VAL_MASK(x, 1, 1)
552 #define V_WIN1_SRC_ALPHA_MODE(x) VAL_MASK(x, 1, 2)
553 #define V_WIN1_SRC_BLEND_MODE(x) VAL_MASK(x, 2, 3)
554 #define V_WIN1_SRC_ALPHA_CAL_MODE(x) VAL_MASK(x, 1, 5)
555 #define V_WIN1_SRC_FACTOR_MODE(x) VAL_MASK(x, 3, 6)
556 #define V_WIN1_SRC_GLOBAL_ALPHA(x) VAL_MASK(x, 8, 16)
557 #define V_WIN1_FADING_VALUE(x) VAL_MASK(x, 8, 24)
558 #define WIN1_DST_ALPHA_CTRL 0x000000a4
559 #define V_WIN1_DSP_M0_RESERVED(x) VAL_MASK(x, 6, 0)
560 #define V_WIN1_DST_FACTOR_M0(x) VAL_MASK(x, 3, 6)
561 #define WIN1_FADING_CTRL 0x000000a8
562 #define V_WIN1_FADING_OFFSET_R(x) VAL_MASK(x, 8, 0)
563 #define V_WIN1_FADING_OFFSET_G(x) VAL_MASK(x, 8, 8)
564 #define V_WIN1_FADING_OFFSET_B(x) VAL_MASK(x, 8, 16)
565 #define V_WIN1_FADING_EN(x) VAL_MASK(x, 1, 24)
566 #define WIN1_CTRL2 0x000000ac
567 #define V_WIN_RID_WIN1_YRGB(x) VAL_MASK(x, 4, 0)
568 #define V_WIN_RID_WIN1_CBR(x) VAL_MASK(x, 4, 4)
569 #define WIN2_CTRL0 0x000000b0
570 #define V_WIN2_EN(x) VAL_MASK(x, 1, 0)
571 #define V_WIN2_INTERLACE_READ(x) VAL_MASK(x, 1, 1)
572 #define V_WIN2_CSC_MODE(x) VAL_MASK(x, 2, 2)
573 #define V_WIN2_MST0_EN(x) VAL_MASK(x, 1, 4)
574 #define V_WIN2_DATA_FMT0(x) VAL_MASK(x, 2, 5)
575 #define V_WIN2_MST1_EN(x) VAL_MASK(x, 1, 8)
576 #define V_WIN2_DATA_FMT1(x) VAL_MASK(x, 2, 9)
577 #define V_WIN2_MST2_EN(x) VAL_MASK(x, 1, 12)
578 #define V_WIN2_DATA_FMT2(x) VAL_MASK(x, 2, 13)
579 #define V_WIN2_MST3_EN(x) VAL_MASK(x, 1, 16)
580 #define V_WIN2_DATA_FMT3(x) VAL_MASK(x, 2, 17)
581 #define V_WIN2_RB_SWAP0(x) VAL_MASK(x, 1, 20)
582 #define V_WIN2_ALPHA_SWAP0(x) VAL_MASK(x, 1, 21)
583 #define V_WIN2_ENDIAN_SWAP0(x) VAL_MASK(x, 1, 22)
584 #define V_WIN2_RB_SWAP1(x) VAL_MASK(x, 1, 23)
585 #define V_WIN2_ALPHA_SWAP1(x) VAL_MASK(x, 1, 24)
586 #define V_WIN2_ENDIAN_SWAP1(x) VAL_MASK(x, 1, 25)
587 #define V_WIN2_RB_SWAP2(x) VAL_MASK(x, 1, 26)
588 #define V_WIN2_ALPHA_SWAP2(x) VAL_MASK(x, 1, 27)
589 #define V_WIN2_ENDIAN_SWAP2(x) VAL_MASK(x, 1, 28)
590 #define V_WIN2_RB_SWAP3(x) VAL_MASK(x, 1, 29)
591 #define V_WIN2_ALPHA_SWAP3(x) VAL_MASK(x, 1, 30)
592 #define V_WIN2_ENDIAN_SWAP3(x) VAL_MASK(x, 1, 31)
593 #define WIN2_CTRL1 0x000000b4
594 #define V_WIN2_AXI_GATHER_EN(x) VAL_MASK(x, 1, 0)
595 #define V_WIN2_AXI_MAX_OUTSTANDING_EN(x) VAL_MASK(x, 1, 1)
596 #define V_WIN2_DMA_BURST_LENGTH(x) VAL_MASK(x, 2, 2)
597 #define V_WIN2_AXI_GATHER_NUM(x) VAL_MASK(x, 4, 4)
598 #define V_WIN2_AXI_MAX_OUTSTANDING_NUM(x) VAL_MASK(x, 5, 8)
599 #define V_WIN2_NO_OUTSTANDING(x) VAL_MASK(x, 1, 14)
600 #define V_WIN2_Y_MIR_EN(x) VAL_MASK(x, 1, 15)
601 #define V_WIN2_LUT_EN(x) VAL_MASK(x, 1, 16)
602 #define V_WIN_RID_WIN2(x) VAL_MASK(x, 4, 20)
603 #define WIN2_VIR0_1 0x000000b8
604 #define V_WIN2_VIR_STRIDE0(x) VAL_MASK(x, 16, 0)
605 #define V_WIN2_VIR_STRIDE1(x) VAL_MASK(x, 16, 16)
606 #define WIN2_VIR2_3 0x000000bc
607 #define V_WIN2_VIR_STRIDE2(x) VAL_MASK(x, 16, 0)
608 #define V_WIN2_VIR_STRIDE3(x) VAL_MASK(x, 16, 16)
609 #define WIN2_MST0 0x000000c0
610 #define V_WIN2_MST0(x) VAL_MASK(x, 32, 0)
611 #define WIN2_DSP_INFO0 0x000000c4
612 #define V_WIN2_DSP_WIDTH0(x) VAL_MASK(x, 12, 0)
613 #define V_WIN2_DSP_HEIGHT0(x) VAL_MASK(x, 12, 16)
614 #define WIN2_DSP_ST0 0x000000c8
615 #define V_WIN2_DSP_XST0(x) VAL_MASK(x, 13, 0)
616 #define V_WIN2_DSP_YST0(x) VAL_MASK(x, 13, 16)
617 #define WIN2_COLOR_KEY 0x000000cc
618 #define V_WIN2_KEY_COLOR(x) VAL_MASK(x, 24, 0)
619 #define V_WIN2_KEY_EN(x) VAL_MASK(x, 1, 24)
620 #define WIN2_MST1 0x000000d0
621 #define V_WIN2_MST1(x) VAL_MASK(x, 32, 0)
622 #define WIN2_DSP_INFO1 0x000000d4
623 #define V_WIN2_DSP_WIDTH1(x) VAL_MASK(x, 12, 0)
624 #define V_WIN2_DSP_HEIGHT1(x) VAL_MASK(x, 12, 16)
625 #define WIN2_DSP_ST1 0x000000d8
626 #define V_WIN2_DSP_XST1(x) VAL_MASK(x, 13, 0)
627 #define V_WIN2_DSP_YST1(x) VAL_MASK(x, 13, 16)
628 #define WIN2_SRC_ALPHA_CTRL 0x000000dc
629 #define V_WIN2_SRC_ALPHA_EN(x) VAL_MASK(x, 1, 0)
630 #define V_WIN2_SRC_COLOR_MODE(x) VAL_MASK(x, 1, 1)
631 #define V_WIN2_SRC_ALPHA_MODE(x) VAL_MASK(x, 1, 2)
632 #define V_WIN2_SRC_BLEND_MODE(x) VAL_MASK(x, 2, 3)
633 #define V_WIN2_SRC_ALPHA_CAL_MODE(x) VAL_MASK(x, 1, 5)
634 #define V_WIN2_SRC_FACTOR_MODE(x) VAL_MASK(x, 3, 6)
635 #define V_WIN2_SRC_GLOBAL_ALPHA(x) VAL_MASK(x, 8, 16)
636 #define V_WIN2_FADING_VALUE(x) VAL_MASK(x, 8, 24)
637 #define WIN2_MST2 0x000000e0
638 #define V_WIN2_MST2(x) VAL_MASK(x, 32, 0)
639 #define WIN2_DSP_INFO2 0x000000e4
640 #define V_WIN2_DSP_WIDTH2(x) VAL_MASK(x, 12, 0)
641 #define V_WIN2_DSP_HEIGHT2(x) VAL_MASK(x, 12, 16)
642 #define WIN2_DSP_ST2 0x000000e8
643 #define V_WIN2_DSP_XST2(x) VAL_MASK(x, 13, 0)
644 #define V_WIN2_DSP_YST2(x) VAL_MASK(x, 13, 16)
645 #define WIN2_DST_ALPHA_CTRL 0x000000ec
646 #define V_WIN2_DST_M0_RESERVED(x) VAL_MASK(x, 6, 0)
647 #define V_WIN2_DST_FACTOR_MODE(x) VAL_MASK(x, 3, 6)
648 #define WIN2_MST3 0x000000f0
649 #define V_WIN2_MST3(x) VAL_MASK(x, 32, 0)
650 #define WIN2_DSP_INFO3 0x000000f4
651 #define V_WIN2_DSP_WIDTH3(x) VAL_MASK(x, 12, 0)
652 #define V_WIN2_DSP_HEIGHT3(x) VAL_MASK(x, 12, 16)
653 #define WIN2_DSP_ST3 0x000000f8
654 #define V_WIN2_DSP_XST3(x) VAL_MASK(x, 13, 0)
655 #define V_WIN2_DSP_YST3(x) VAL_MASK(x, 13, 16)
656 #define WIN2_FADING_CTRL 0x000000fc
657 #define V_WIN2_FADING_OFFSET_R(x) VAL_MASK(x, 8, 0)
658 #define V_WIN2_FADING_OFFSET_G(x) VAL_MASK(x, 8, 8)
659 #define V_WIN2_FADING_OFFSET_B(x) VAL_MASK(x, 8, 16)
660 #define V_WIN2_FADING_EN(x) VAL_MASK(x, 1, 24)
661 #define WIN3_CTRL0 0x00000100
662 #define V_WIN3_EN(x) VAL_MASK(x, 1, 0)
663 #define V_WIN3_INTERLACE_READ(x) VAL_MASK(x, 1, 1)
664 #define V_WIN3_CSC_MODE(x) VAL_MASK(x, 2, 2)
665 #define V_WIN3_MST0_EN(x) VAL_MASK(x, 1, 4)
666 #define V_WIN3_DATA_FMT0(x) VAL_MASK(x, 2, 5)
667 #define V_WIN3_MST1_EN(x) VAL_MASK(x, 1, 8)
668 #define V_WIN3_DATA_FMT1(x) VAL_MASK(x, 2, 9)
669 #define V_WIN3_MST2_EN(x) VAL_MASK(x, 1, 12)
670 #define V_WIN3_DATA_FMT2(x) VAL_MASK(x, 2, 13)
671 #define V_WIN3_MST3_EN(x) VAL_MASK(x, 1, 16)
672 #define V_WIN3_DATA_FMT3(x) VAL_MASK(x, 2, 17)
673 #define V_WIN3_RB_SWAP0(x) VAL_MASK(x, 1, 20)
674 #define V_WIN3_ALPHA_SWAP0(x) VAL_MASK(x, 1, 21)
675 #define V_WIN3_ENDIAN_SWAP0(x) VAL_MASK(x, 1, 22)
676 #define V_WIN3_RB_SWAP1(x) VAL_MASK(x, 1, 23)
677 #define V_WIN3_ALPHA_SWAP1(x) VAL_MASK(x, 1, 24)
678 #define V_WIN3_ENDIAN_SWAP1(x) VAL_MASK(x, 1, 25)
679 #define V_WIN3_RB_SWAP2(x) VAL_MASK(x, 1, 26)
680 #define V_WIN3_ALPHA_SWAP2(x) VAL_MASK(x, 1, 27)
681 #define V_WIN3_ENDIAN_SWAP2(x) VAL_MASK(x, 1, 28)
682 #define V_WIN3_RB_SWAP3(x) VAL_MASK(x, 1, 29)
683 #define V_WIN3_ALPHA_SWAP3(x) VAL_MASK(x, 1, 30)
684 #define V_WIN3_ENDIAN_SWAP3(x) VAL_MASK(x, 1, 31)
685 #define WIN3_CTRL1 0x00000104
686 #define V_WIN3_AXI_GATHER_EN(x) VAL_MASK(x, 1, 0)
687 #define V_WIN3_AXI_MAX_OUTSTANDING_EN(x) VAL_MASK(x, 1, 1)
688 #define V_WIN3_DMA_BURST_LENGTH(x) VAL_MASK(x, 2, 2)
689 #define V_WIN3_AXI_GATHER_NUM(x) VAL_MASK(x, 4, 4)
690 #define V_WIN3_AXI_MAX_OUTSTANDING_NUM(x) VAL_MASK(x, 5, 8)
691 #define V_WIN3_NO_OUTSTANDING(x) VAL_MASK(x, 1, 14)
692 #define V_WIN3_Y_MIR_EN(x) VAL_MASK(x, 1, 15)
693 #define V_WIN3_LUT_EN(x) VAL_MASK(x, 1, 16)
694 #define V_WIN_RID_WIN3(x) VAL_MASK(x, 4, 20)
695 #define WIN3_VIR0_1 0x00000108
696 #define V_WIN3_VIR_STRIDE0(x) VAL_MASK(x, 16, 0)
697 #define V_WIN3_VIR_STRIDE1(x) VAL_MASK(x, 16, 16)
698 #define WIN3_VIR2_3 0x0000010c
699 #define V_WIN3_VIR_STRIDE2(x) VAL_MASK(x, 16, 0)
700 #define V_WIN3_VIR_STRIDE3(x) VAL_MASK(x, 16, 16)
701 #define WIN3_MST0 0x00000110
702 #define V_WIN3_MST0(x) VAL_MASK(x, 32, 0)
703 #define WIN3_DSP_INFO0 0x00000114
704 #define V_WIN3_DSP_WIDTH0(x) VAL_MASK(x, 12, 0)
705 #define V_WIN3_DSP_HEIGHT0(x) VAL_MASK(x, 12, 16)
706 #define WIN3_DSP_ST0 0x00000118
707 #define V_WIN3_DSP_XST0(x) VAL_MASK(x, 13, 0)
708 #define V_WIN3_DSP_YST0(x) VAL_MASK(x, 13, 16)
709 #define WIN3_COLOR_KEY 0x0000011c
710 #define V_WIN3_KEY_COLOR(x) VAL_MASK(x, 24, 0)
711 #define V_WIN3_KEY_EN(x) VAL_MASK(x, 1, 24)
712 #define WIN3_MST1 0x00000120
713 #define V_WIN3_MST1(x) VAL_MASK(x, 32, 0)
714 #define WIN3_DSP_INFO1 0x00000124
715 #define V_WIN3_DSP_WIDTH1(x) VAL_MASK(x, 12, 0)
716 #define V_WIN3_DSP_HEIGHT1(x) VAL_MASK(x, 12, 16)
717 #define WIN3_DSP_ST1 0x00000128
718 #define V_WIN3_DSP_XST1(x) VAL_MASK(x, 13, 0)
719 #define V_WIN3_DSP_YST1(x) VAL_MASK(x, 13, 16)
720 #define WIN3_SRC_ALPHA_CTRL 0x0000012c
721 #define V_WIN3_SRC_ALPHA_EN(x) VAL_MASK(x, 1, 0)
722 #define V_WIN3_SRC_COLOR_MODE(x) VAL_MASK(x, 1, 1)
723 #define V_WIN3_SRC_ALPHA_MODE(x) VAL_MASK(x, 1, 2)
724 #define V_WIN3_SRC_BLEND_MODE(x) VAL_MASK(x, 2, 3)
725 #define V_WIN3_SRC_ALPHA_CAL_MODE(x) VAL_MASK(x, 1, 5)
726 #define V_WIN3_SRC_FACTOR_MODE(x) VAL_MASK(x, 3, 6)
727 #define V_WIN3_SRC_GLOBAL_ALPHA(x) VAL_MASK(x, 8, 16)
728 #define V_WIN3_FADING_VALUE(x) VAL_MASK(x, 8, 24)
729 #define WIN3_MST2 0x00000130
730 #define V_WIN3_MST2(x) VAL_MASK(x, 32, 0)
731 #define WIN3_DSP_INFO2 0x00000134
732 #define V_WIN3_DSP_WIDTH2(x) VAL_MASK(x, 12, 0)
733 #define V_WIN3_DSP_HEIGHT2(x) VAL_MASK(x, 12, 16)
734 #define WIN3_DSP_ST2 0x00000138
735 #define V_WIN3_DSP_XST2(x) VAL_MASK(x, 13, 0)
736 #define V_WIN3_DSP_YST2(x) VAL_MASK(x, 13, 16)
737 #define WIN3_DST_ALPHA_CTRL 0x0000013c
738 #define V_WIN3_DST_FACTOR_RESERVED(x) VAL_MASK(x, 6, 0)
739 #define V_WIN3_DST_FACTOR_MODE(x) VAL_MASK(x, 3, 6)
740 #define WIN3_MST3 0x00000140
741 #define V_WIN3_MST3(x) VAL_MASK(x, 32, 0)
742 #define WIN3_DSP_INFO3 0x00000144
743 #define V_WIN3_DSP_WIDTH3(x) VAL_MASK(x, 12, 0)
744 #define V_WIN3_DSP_HEIGHT3(x) VAL_MASK(x, 12, 16)
745 #define WIN3_DSP_ST3 0x00000148
746 #define V_WIN3_DSP_XST3(x) VAL_MASK(x, 13, 0)
747 #define V_WIN3_DSP_YST3(x) VAL_MASK(x, 13, 16)
748 #define WIN3_FADING_CTRL 0x0000014c
749 #define V_WIN3_FADING_OFFSET_R(x) VAL_MASK(x, 8, 0)
750 #define V_WIN3_FADING_OFFSET_G(x) VAL_MASK(x, 8, 8)
751 #define V_WIN3_FADING_OFFSET_B(x) VAL_MASK(x, 8, 16)
752 #define V_WIN3_FADING_EN(x) VAL_MASK(x, 1, 24)
753 #define HWC_CTRL0 0x00000150
754 #define V_HWC_EN(x) VAL_MASK(x, 1, 0)
755 #define V_HWC_DATA_FMT(x) VAL_MASK(x, 3, 1)
756 #define V_HWC_MODE(x) VAL_MASK(x, 1, 4)
757 #define V_HWC_SIZE(x) VAL_MASK(x, 2, 5)
758 #define V_HWC_INTERLACE_READ(x) VAL_MASK(x, 1, 8)
759 #define V_HWC_CSC_MODE(x) VAL_MASK(x, 2, 10)
760 #define V_HWC_RB_SWAP(x) VAL_MASK(x, 1, 12)
761 #define V_HWC_ALPHA_SWAP(x) VAL_MASK(x, 1, 13)
762 #define V_HWC_ENDIAN_SWAP(x) VAL_MASK(x, 1, 14)
763 #define HWC_CTRL1 0x00000154
764 #define V_HWC_AXI_GATHER_EN(x) VAL_MASK(x, 1, 0)
765 #define V_HWC_AXI_MAX_OUTSTANDING_EN(x) VAL_MASK(x, 1, 1)
766 #define V_HWC_DMA_BURST_LENGTH(x) VAL_MASK(x, 2, 2)
767 #define V_HWC_AXI_GATHER_NUM(x) VAL_MASK(x, 3, 4)
768 #define V_HWC_AXI_MAX_OUTSTANDING_NUM(x) VAL_MASK(x, 5, 8)
769 #define V_HWC_RGB2YUV_EN(x) VAL_MASK(x, 1, 13)
770 #define V_HWC_NO_OUTSTANDING(x) VAL_MASK(x, 1, 14)
771 #define V_HWC_Y_MIR_EN(x) VAL_MASK(x, 1, 15)
772 #define V_HWC_LUT_EN(x) VAL_MASK(x, 1, 16)
773 #define V_WIN_RID_HWC(x) VAL_MASK(x, 4, 20)
774 #define HWC_MST 0x00000158
775 #define V_HWC_MST(x) VAL_MASK(x, 32, 0)
776 #define HWC_DSP_ST 0x0000015c
777 #define V_HWC_DSP_XST(x) VAL_MASK(x, 13, 0)
778 #define V_HWC_DSP_YST(x) VAL_MASK(x, 13, 16)
779 #define HWC_SRC_ALPHA_CTRL 0x00000160
780 #define V_HWC_SRC_ALPHA_EN(x) VAL_MASK(x, 1, 0)
781 #define V_HWC_SRC_COLOR_MODE(x) VAL_MASK(x, 1, 1)
782 #define V_HWC_SRC_ALPHA_MODE(x) VAL_MASK(x, 1, 2)
783 #define V_HWC_SRC_BLEND_MODE(x) VAL_MASK(x, 2, 3)
784 #define V_HWC_SRC_ALPHA_CAL_MODE(x) VAL_MASK(x, 1, 5)
785 #define V_HWC_SRC_FACTOR_MODE(x) VAL_MASK(x, 3, 6)
786 #define V_HWC_SRC_GLOBAL_ALPHA(x) VAL_MASK(x, 8, 16)
787 #define V_HWC_FADING_VALUE(x) VAL_MASK(x, 8, 24)
788 #define HWC_DST_ALPHA_CTRL 0x00000164
789 #define V_HWC_DST_M0_RESERVED(x) VAL_MASK(x, 6, 0)
790 #define V_HWC_DST_FACTOR_MODE(x) VAL_MASK(x, 3, 6)
791 #define HWC_FADING_CTRL 0x00000168
792 #define V_HWC_FADING_OFFSET_R(x) VAL_MASK(x, 8, 0)
793 #define V_HWC_FADING_OFFSET_G(x) VAL_MASK(x, 8, 8)
794 #define V_HWC_FADING_OFFSET_B(x) VAL_MASK(x, 8, 16)
795 #define V_HWC_FADING_EN(x) VAL_MASK(x, 1, 24)
796 #define HWC_RESERVED1 0x0000016c
797 #define POST_DSP_HACT_INFO 0x00000170
798 #define V_DSP_HACT_END_POST(x) VAL_MASK(x, 13, 0)
799 #define V_DSP_HACT_ST_POST(x) VAL_MASK(x, 13, 16)
800 #define POST_DSP_VACT_INFO 0x00000174
801 #define V_DSP_VACT_END_POST(x) VAL_MASK(x, 13, 0)
802 #define V_DSP_VACT_ST_POST(x) VAL_MASK(x, 13, 16)
803 #define POST_SCL_FACTOR_YRGB 0x00000178
804 #define V_POST_HS_FACTOR_YRGB(x) VAL_MASK(x, 16, 0)
805 #define V_POST_VS_FACTOR_YRGB(x) VAL_MASK(x, 16, 16)
806 #define POST_RESERVED 0x0000017c
807 #define POST_SCL_CTRL 0x00000180
808 #define V_POST_HOR_SD_EN(x) VAL_MASK(x, 1, 0)
809 #define V_POST_VER_SD_EN(x) VAL_MASK(x, 1, 1)
810 #define V_DSP_OUT_RGB_YUV(x) VAL_MASK(x, 1, 2)
811 #define POST_DSP_VACT_INFO_F1 0x00000184
812 #define V_DSP_VACT_END_POST(x) VAL_MASK(x, 13, 0)
813 #define V_DSP_VACT_ST_POST(x) VAL_MASK(x, 13, 16)
814 #define DSP_HTOTAL_HS_END 0x00000188
815 #define V_DSP_HS_END(x) VAL_MASK(x, 13, 0)
816 #define V_DSP_HTOTAL(x) VAL_MASK(x, 13, 16)
817 #define DSP_HACT_ST_END 0x0000018c
818 #define V_DSP_HACT_END(x) VAL_MASK(x, 13, 0)
819 #define V_DSP_HACT_ST(x) VAL_MASK(x, 13, 16)
820 #define DSP_VTOTAL_VS_END 0x00000190
821 #define V_DSP_VS_END(x) VAL_MASK(x, 13, 0)
822 #define V_SW_DSP_VTOTAL_IMD(x) VAL_MASK(x, 1, 15)
823 #define V_DSP_VTOTAL(x) VAL_MASK(x, 13, 16)
824 #define DSP_VACT_ST_END 0x00000194
825 #define V_DSP_VACT_END(x) VAL_MASK(x, 13, 0)
826 #define V_DSP_VACT_ST(x) VAL_MASK(x, 13, 16)
827 #define DSP_VS_ST_END_F1 0x00000198
828 #define V_DSP_VS_END_F1(x) VAL_MASK(x, 13, 0)
829 #define V_DSP_VS_ST_F1(x) VAL_MASK(x, 13, 16)
830 #define DSP_VACT_ST_END_F1 0x0000019c
831 #define V_DSP_VACT_END_F1(x) VAL_MASK(x, 13, 0)
832 #define V_DSP_VACT_ST_F1(x) VAL_MASK(x, 13, 16)
833 #define PWM_CTRL 0x000001a0
834 #define V_PWM_EN(x) VAL_MASK(x, 1, 0)
835 #define V_PWM_MODE(x) VAL_MASK(x, 2, 1)
836 #define V_DUTY_POL(x) VAL_MASK(x, 1, 3)
837 #define V_INACTIVE_POL(x) VAL_MASK(x, 1, 4)
838 #define V_OUTPUT_MODE(x) VAL_MASK(x, 1, 5)
839 #define V_LP_EN(x) VAL_MASK(x, 1, 8)
840 #define V_CLK_SEL(x) VAL_MASK(x, 1, 9)
841 #define V_PRESCALE(x) VAL_MASK(x, 3, 12)
842 #define V_SCALE(x) VAL_MASK(x, 8, 16)
843 #define V_RPT(x) VAL_MASK(x, 8, 24)
844 #define PWM_PERIOD_HPR 0x000001a4
845 #define V_PWM_PERIOD(x) VAL_MASK(x, 32, 0)
846 #define PWM_DUTY_LPR 0x000001a8
847 #define V_PWM_DUTY(x) VAL_MASK(x, 32, 0)
848 #define PWM_CNT 0x000001ac
849 #define V_PWM_CNT(x) VAL_MASK(x, 32, 0)
850 #define BCSH_COLOR_BAR 0x000001b0
851 #define V_BCSH_EN(x) VAL_MASK(x, 1, 0)
852 #define V_COLOR_BAR_Y(x) VAL_MASK(x, 8, 8)
853 #define V_COLOR_BAR_U(x) VAL_MASK(x, 8, 16)
854 #define V_COLOR_BAR_V(x) VAL_MASK(x, 8, 24)
855 #define BCSH_BCS 0x000001b4
856 #define V_BRIGHTNESS(x) VAL_MASK(x, 8, 0)
857 #define V_CONTRAST(x) VAL_MASK(x, 9, 8)
858 #define V_SAT_CON(x) VAL_MASK(x, 10, 20)
859 #define V_OUT_MODE(x) VAL_MASK(x, 2, 30)
860 #define BCSH_H 0x000001b8
861 #define V_SIN_HUE(x) VAL_MASK(x, 9, 0)
862 #define V_COS_HUE(x) VAL_MASK(x, 9, 16)
863 #define BCSH_CTRL 0x000001bc
864 #define V_BCSH_Y2R_EN(x) VAL_MASK(x, 1, 0)
865 #define V_BCSH_Y2R_CSC_MODE(x) VAL_MASK(x, 2, 2)
866 #define V_BCSH_R2Y_EN(x) VAL_MASK(x, 1, 4)
867 #define V_BCSH_R2Y_CSC_MODE(x) VAL_MASK(x, 1, 6)
868 #define CABC_CTRL0 0x000001c0
869 #define V_CABC_EN(x) VAL_MASK(x, 1, 0)
870 #define V_CABC_HANDLE_EN(x) VAL_MASK(x, 1, 1)
871 #define V_PWM_CONFIG_MODE(x) VAL_MASK(x, 2, 2)
872 #define V_CABC_CALC_PIXEL_NUM(x) VAL_MASK(x, 23, 4)
873 #define CABC_CTRL1 0x000001c4
874 #define V_CABC_LUT_EN(x) VAL_MASK(x, 1, 0)
875 #define V_CABC_TOTAL_NUM(x) VAL_MASK(x, 23, 4)
876 #define CABC_CTRL2 0x000001c8
877 #define V_CABC_STAGE_DOWN(x) VAL_MASK(x, 8, 0)
878 #define V_CABC_STAGE_UP(x) VAL_MASK(x, 9, 8)
879 #define V_CABC_STAGE_UP_MODE(x) VAL_MASK(x, 1, 19)
880 #define V_MAX_SCALE_CFG_VALUE(x) VAL_MASK(x, 9, 20)
881 #define V_MAX_SCALE_CFG_ENABLE(x) VAL_MASK(x, 1, 31)
882 #define CABC_CTRL3 0x000001cc
883 #define V_CABC_GLOBAL_DN(x) VAL_MASK(x, 8, 0)
884 #define V_CABC_GLOBAL_DN_LIMIT_EN(x) VAL_MASK(x, 1, 8)
885 #define CABC_GAUSS_LINE0_0 0x000001d0
886 #define V_T_LINE0_0(x) VAL_MASK(x, 8, 0)
887 #define V_T_LINE0_1(x) VAL_MASK(x, 8, 8)
888 #define V_T_LINE0_2(x) VAL_MASK(x, 8, 16)
889 #define V_T_LINE0_3(x) VAL_MASK(x, 8, 24)
890 #define CABC_GAUSS_LINE0_1 0x000001d4
891 #define V_T_LINE0_4(x) VAL_MASK(x, 8, 0)
892 #define V_T_LINE0_5(x) VAL_MASK(x, 8, 8)
893 #define V_T_LINE0_6(x) VAL_MASK(x, 8, 16)
894 #define CABC_GAUSS_LINE1_0 0x000001d8
895 #define V_T_LINE1_0(x) VAL_MASK(x, 8, 0)
896 #define V_T_LINE1_1(x) VAL_MASK(x, 8, 8)
897 #define V_T_LINE1_2(x) VAL_MASK(x, 8, 16)
898 #define V_T_LINE1_3(x) VAL_MASK(x, 8, 24)
899 #define CABC_GAUSS_LINE1_1 0x000001dc
900 #define V_T_LINE1_4(x) VAL_MASK(x, 8, 0)
901 #define V_T_LINE1_5(x) VAL_MASK(x, 8, 8)
902 #define V_T_LINE1_6(x) VAL_MASK(x, 8, 16)
903 #define CABC_GAUSS_LINE2_0 0x000001e0
904 #define V_T_LINE2_0(x) VAL_MASK(x, 8, 0)
905 #define V_T_LINE2_1(x) VAL_MASK(x, 8, 8)
906 #define V_T_LINE2_2(x) VAL_MASK(x, 8, 16)
907 #define V_T_LINE2_3(x) VAL_MASK(x, 8, 24)
908 #define CABC_GAUSS_LINE2_1 0x000001e4
909 #define V_T_LINE2_4(x) VAL_MASK(x, 8, 0)
910 #define V_T_LINE2_5(x) VAL_MASK(x, 8, 8)
911 #define V_T_LINE2_6(x) VAL_MASK(x, 8, 16)
912 #define FRC_LOWER01_0 0x000001e8
913 #define V_LOWER01_FRM0(x) VAL_MASK(x, 16, 0)
914 #define V_LOWER01_FRM1(x) VAL_MASK(x, 16, 16)
915 #define FRC_LOWER01_1 0x000001ec
916 #define V_LOWER01_FRM2(x) VAL_MASK(x, 16, 0)
917 #define V_LOWER01_FRM3(x) VAL_MASK(x, 16, 16)
918 #define FRC_LOWER10_0 0x000001f0
919 #define V_LOWER10_FRM0(x) VAL_MASK(x, 16, 0)
920 #define V_LOWER10_FRM1(x) VAL_MASK(x, 16, 16)
921 #define FRC_LOWER10_1 0x000001f4
922 #define V_LOWER10_FRM2(x) VAL_MASK(x, 16, 0)
923 #define V_LOWER10_FRM3(x) VAL_MASK(x, 16, 16)
924 #define FRC_LOWER11_0 0x000001f8
925 #define V_LOWER11_FRM0(x) VAL_MASK(x, 16, 0)
926 #define V_LOWER11_FRM1(x) VAL_MASK(x, 16, 16)
927 #define FRC_LOWER11_1 0x000001fc
928 #define V_LOWER11_FRM2(x) VAL_MASK(x, 16, 0)
929 #define V_LOWER11_FRM3(x) VAL_MASK(x, 16, 16)
930 #define AFBCD0_CTRL 0x00000200
931 #define V_VOP_FBDC_EN(x) VAL_MASK(x, 1, 0)
932 #define V_VOP_FBDC_WIN_SEL(x) VAL_MASK(x, 2, 1)
933 #define V_FBDC_RSTN(x) VAL_MASK(x, 1, 3)
934 #define V_VOP_FBDC_AXI_MAX_OUTSTANDING_NUM(x) VAL_MASK(x, 5, 4)
935 #define V_VOP_FBDC_AXI_MAX_OUTSTANDING_EN(x) VAL_MASK(x, 1, 9)
936 #define V_FBDC_RID(x) VAL_MASK(x, 4, 12)
937 #define V_AFBCD_HREG_PIXEL_PACKING_FMT(x) VAL_MASK(x, 5, 16)
938 #define V_AFBCD_HREG_BLOCK_SPLIT(x) VAL_MASK(x, 1, 21)
939 #define AFBCD0_HDR_PTR 0x00000204
940 #define V_AFBCD_HREG_HDR_PTR(x) VAL_MASK(x, 32, 0)
941 #define AFBCD0_PIC_SIZE 0x00000208
942 #define V_AFBCD_HREG_PIC_WIDTH(x) VAL_MASK(x, 16, 0)
943 #define V_AFBCD_HREG_PIC_HEIGHT(x) VAL_MASK(x, 16, 16)
944 #define AFBCD0_STATUS 0x0000020c
945 #define V_AFBCD_HREG_IDLE_N(x) VAL_MASK(x, 1, 0)
946 #define V_AFBCD_HREG_DEC_RESP(x) VAL_MASK(x, 1, 1)
947 #define V_AFBCD_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 2)
948 #define AFBCD1_CTRL 0x00000220
949 #define V_VOP_FBDC1_EN(x) VAL_MASK(x, 1, 0)
950 #define V_VOP_FBDC1_WIN_SEL(x) VAL_MASK(x, 2, 1)
951 #define V_FBDC1_RSTN(x) VAL_MASK(x, 1, 3)
952 #define V_VOP_FBDC1_AXI_MAX_OUTSTANDING_NUM(x) VAL_MASK(x, 5, 4)
953 #define V_VOP_FBDC1_AXI_MAX_OUTSTANDING_EN(x) VAL_MASK(x, 1, 9)
954 #define V_FBDC1_RID(x) VAL_MASK(x, 4, 12)
955 #define V_AFBCD1_HREG_PIXEL_PACKING_FMT(x) VAL_MASK(x, 5, 16)
956 #define V_AFBCD1_HREG_BLOCK_SPLIT(x) VAL_MASK(x, 1, 21)
957 #define AFBCD1_HDR_PTR 0x00000224
958 #define V_AFBCD1_HREG_HDR_PTR(x) VAL_MASK(x, 32, 0)
959 #define AFBCD1_PIC_SIZE 0x00000228
960 #define V_AFBCD1_HREG_PIC_WIDTH(x) VAL_MASK(x, 16, 0)
961 #define V_AFBCD1_HREG_PIC_HEIGHT(x) VAL_MASK(x, 16, 16)
962 #define AFBCD1_STATUS 0x0000022c
963 #define V_AFBCD1_HREG_IDLE_N(x) VAL_MASK(x, 1, 0)
964 #define V_AFBCD1_HREG_DEC_RESP(x) VAL_MASK(x, 1, 1)
965 #define V_AFBCD1_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 2)
966 #define AFBCD2_CTRL 0x00000240
967 #define V_VOP_FBDC2_EN(x) VAL_MASK(x, 1, 0)
968 #define V_VOP_FBDC2_WIN_SEL(x) VAL_MASK(x, 2, 1)
969 #define V_FBDC2_RSTN(x) VAL_MASK(x, 1, 3)
970 #define V_VOP_FBDC2_AXI_MAX_OUTSTANDING_NUM(x) VAL_MASK(x, 5, 4)
971 #define V_VOP_FBDC2_AXI_MAX_OUTSTANDING_EN(x) VAL_MASK(x, 1, 9)
972 #define V_FBDC2_RID(x) VAL_MASK(x, 4, 12)
973 #define V_AFBCD2_HREG_PIXEL_PACKING_FMT(x) VAL_MASK(x, 5, 16)
974 #define V_AFBCD2_HREG_BLOCK_SPLIT(x) VAL_MASK(x, 1, 21)
975 #define AFBCD2_HDR_PTR 0x00000244
976 #define V_AFBCD2_HREG_HDR_PTR(x) VAL_MASK(x, 32, 0)
977 #define AFBCD2_PIC_SIZE 0x00000248
978 #define V_AFBCD2_HREG_PIC_WIDTH(x) VAL_MASK(x, 16, 0)
979 #define V_AFBCD2_HREG_PIC_HEIGHT(x) VAL_MASK(x, 16, 16)
980 #define AFBCD2_STATUS 0x0000024c
981 #define V_AFBCD2_HREG_IDLE_N(x) VAL_MASK(x, 1, 0)
982 #define V_AFBCD2_HREG_DEC_RESP(x) VAL_MASK(x, 1, 1)
983 #define V_AFBCD2_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 2)
984 #define AFBCD3_CTRL 0x00000260
985 #define V_VOP_FBDC3_EN(x) VAL_MASK(x, 1, 0)
986 #define V_VOP_FBDC3_WIN_SEL(x) VAL_MASK(x, 1, 1)
987 #define V_FBDC3_RSTN(x) VAL_MASK(x, 1, 2)
988 #define V_VOP_FBDC3_AXI_MAX_OUTSTANDING_NUM(x) VAL_MASK(x, 5, 3)
989 #define V_VOP_FBDC3_AXI_MAX_OUTSTANDING_EN(x) VAL_MASK(x, 1, 8)
990 #define V_FBDC3_RID(x) VAL_MASK(x, 4, 12)
991 #define V_AFBCD3_HREG_PIXEL_PACKING_FMT(x) VAL_MASK(x, 5, 16)
992 #define V_AFBCD3_HREG_BLOCK_SPLIT(x) VAL_MASK(x, 1, 21)
993 #define AFBCD3_HDR_PTR 0x00000264
994 #define V_AFBCD3_HREG_HDR_PTR(x) VAL_MASK(x, 32, 0)
995 #define AFBCD3_PIC_SIZE 0x00000268
996 #define V_AFBCD3_HREG_PIC_WIDTH(x) VAL_MASK(x, 16, 0)
997 #define V_AFBCD3_HREG_PIC_HEIGHT(x) VAL_MASK(x, 16, 16)
998 #define AFBCD3_STATUS 0x0000026c
999 #define V_AFBCD3_HREG_IDLE_N(x) VAL_MASK(x, 1, 0)
1000 #define V_AFBCD3_HREG_DEC_RESP(x) VAL_MASK(x, 1, 1)
1001 #define V_AFBCD3_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 2)
1002 #define INTR_EN0 0x00000280
1003 #define V_INTR_EN_FS(x) VAL_MASK(x, 1, 0)
1004 #define V_INTR_EN_FS_NEW(x) VAL_MASK(x, 1, 1)
1005 #define V_INTR_EN_ADDR_SAME(x) VAL_MASK(x, 1, 2)
1006 #define V_INTR_EN_LINE_FLAG0(x) VAL_MASK(x, 1, 3)
1007 #define V_INTR_EN_LINE_FLAG1(x) VAL_MASK(x, 1, 4)
1008 #define V_INTR_EN_BUS_ERROR(x) VAL_MASK(x, 1, 5)
1009 #define V_INTR_EN_WIN0_EMPTY(x) VAL_MASK(x, 1, 6)
1010 #define V_INTR_EN_WIN1_EMPTY(x) VAL_MASK(x, 1, 7)
1011 #define V_INTR_EN_WIN2_EMPTY(x) VAL_MASK(x, 1, 8)
1012 #define V_INTR_EN_WIN3_EMPTY(x) VAL_MASK(x, 1, 9)
1013 #define V_INTR_EN_HWC_EMPTY(x) VAL_MASK(x, 1, 10)
1014 #define V_INTR_EN_POST_BUF_EMPTY(x) VAL_MASK(x, 1, 11)
1016 #define V_INTR_EN_FS_FIELD(x) VAL_MASK(x, 1, 12)
1018 #define V_INTR_EN_PWM_GEN(x) VAL_MASK(x, 1, 12)
1019 #define V_INTR_EN_DSP_HOLD_VALID(x) VAL_MASK(x, 1, 13)
1020 #define V_INTR_EN_MMU(x) VAL_MASK(x, 1, 14)
1021 #define V_INTR_EN_DMA_FINISH(x) VAL_MASK(x, 1, 15)
1022 #define V_WRITE_MASK(x) VAL_MASK(x, 16, 16)
1023 #define INTR_CLEAR0 0x00000284
1024 #define V_INT_CLR_FS(x) VAL_MASK(x, 1, 0)
1025 #define V_INT_CLR_FS_NEW(x) VAL_MASK(x, 1, 1)
1026 #define V_INT_CLR_ADDR_SAME(x) VAL_MASK(x, 1, 2)
1027 #define V_INT_CLR_LINE_FLAG0(x) VAL_MASK(x, 1, 3)
1028 #define V_INT_CLR_LINE_FLAG1(x) VAL_MASK(x, 1, 4)
1029 #define V_INT_CLR_BUS_ERROR(x) VAL_MASK(x, 1, 5)
1030 #define V_INT_CLR_WIN0_EMPTY(x) VAL_MASK(x, 1, 6)
1031 #define V_INT_CLR_WIN1_EMPTY(x) VAL_MASK(x, 1, 7)
1032 #define V_INT_CLR_WIN2_EMPTY(x) VAL_MASK(x, 1, 8)
1033 #define V_INT_CLR_WIN3_EMPTY(x) VAL_MASK(x, 1, 9)
1034 #define V_INT_CLR_HWC_EMPTY(x) VAL_MASK(x, 1, 10)
1035 #define V_INT_CLR_POST_BUF_EMPTY(x) VAL_MASK(x, 1, 11)
1037 #define V_INT_CLR_FS_FIELD(x) VAL_MASK(x, 1, 12)
1039 #define V_INT_CLR_PWM_GEN(x) VAL_MASK(x, 1, 12)
1040 #define V_INT_CLR_DSP_HOLD_VALID(x) VAL_MASK(x, 1, 13)
1041 #define V_INT_CLR_MMU(x) VAL_MASK(x, 1, 14)
1042 #define V_INT_CLR_DMA_FINISH(x) VAL_MASK(x, 1, 15)
1043 #define V_WRITE_MASK(x) VAL_MASK(x, 16, 16)
1044 #define INTR_STATUS0 0x00000288
1045 #define V_INT_STATUS_FS(x) VAL_MASK(x, 1, 0)
1046 #define V_INT_STATUS_FS_NEW(x) VAL_MASK(x, 1, 1)
1047 #define V_INT_STATUS_ADDR_SAME(x) VAL_MASK(x, 1, 2)
1048 #define V_INT_STATUS_LINE_FLAG0(x) VAL_MASK(x, 1, 3)
1049 #define V_INT_STATUS_LINE_FLAG1(x) VAL_MASK(x, 1, 4)
1050 #define V_INT_STATUS_BUS_ERROR(x) VAL_MASK(x, 1, 5)
1051 #define V_INT_STATUS_WIN0_EMPTY(x) VAL_MASK(x, 1, 6)
1052 #define V_INT_STATUS_WIN1_EMPTY(x) VAL_MASK(x, 1, 7)
1053 #define V_INT_STATUS_WIN2_EMPTY(x) VAL_MASK(x, 1, 8)
1054 #define V_INT_STATUS_WIN3_EMPTY(x) VAL_MASK(x, 1, 9)
1055 #define V_INT_STATUS_HWC_EMPTY(x) VAL_MASK(x, 1, 10)
1056 #define V_INT_STATUS_POST_BUF_EMPTY(x) VAL_MASK(x, 1, 11)
1058 #define V_INT_STATUS_FS_FIELD(x) VAL_MASK(x, 1, 12)
1060 #define V_INT_STATUS_PWM_GEN(x) VAL_MASK(x, 1, 12)
1061 #define V_INT_STATUS_DSP_HOLD_VALID(x) VAL_MASK(x, 1, 13)
1062 #define V_INT_STATUS_MMU(x) VAL_MASK(x, 1, 14)
1063 #define V_INT_STATUS_DMA_FINISH(x) VAL_MASK(x, 1, 15)
1064 #define INTR_RAW_STATUS0 0x0000028c
1065 #define V_INT_RAW_STATUS_FS(x) VAL_MASK(x, 1, 0)
1066 #define V_INT_RAW_STATUS_FS_NEW(x) VAL_MASK(x, 1, 1)
1067 #define V_INT_RAW_STATUS_ADDR_SAME(x) VAL_MASK(x, 1, 2)
1068 #define V_INT_RAW_STATUS_LINE_FRAG0(x) VAL_MASK(x, 1, 3)
1069 #define V_INT_RAW_STATUS_LINE_FRAG1(x) VAL_MASK(x, 1, 4)
1070 #define V_INT_RAW_STATUS_BUS_ERROR(x) VAL_MASK(x, 1, 5)
1071 #define V_INT_RAW_STATUS_WIN0_EMPTY(x) VAL_MASK(x, 1, 6)
1072 #define V_INT_RAW_STATUS_WIN1_EMPTY(x) VAL_MASK(x, 1, 7)
1073 #define V_INT_RAW_STATUS_WIN2_EMPTY(x) VAL_MASK(x, 1, 8)
1074 #define V_INT_RAW_STATUS_WIN3_EMPTY(x) VAL_MASK(x, 1, 9)
1075 #define V_INT_RAW_STATUS_HWC_EMPTY(x) VAL_MASK(x, 1, 10)
1076 #define V_INT_RAW_STATUS_POST_BUF_EMPTY(x) VAL_MASK(x, 1, 11)
1078 #define V_INT_RAW_STATUS_FS_FIELD(x) VAL_MASK(x, 1, 12)
1080 #define V_INT_RAW_STATUS_PWM_GEN(x) VAL_MASK(x, 1, 12)
1081 #define V_INT_RAW_STATUS_DSP_HOLD_VALID(x) VAL_MASK(x, 1, 13)
1082 #define V_INT_RAW_STATUS_MMU(x) VAL_MASK(x, 1, 14)
1083 #define V_INT_RAW_STATUS_DMA_FINISH(x) VAL_MASK(x, 1, 15)
1084 #define INTR_EN1 0x00000290
1085 #define V_INT_EN_FBCD0(x) VAL_MASK(x, 1, 0)
1086 #define V_INT_EN_FBCD1(x) VAL_MASK(x, 1, 1)
1087 #define V_INT_EN_FBCD2(x) VAL_MASK(x, 1, 2)
1088 #define V_INT_EN_FBCD3(x) VAL_MASK(x, 1, 3)
1089 #define V_INT_EN_AFBCD0_HREG_DEC_RESP(x) VAL_MASK(x, 1, 4)
1090 #define V_INT_EN_AFBCD0_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 5)
1091 #define V_INT_EN_AFBCD1_HREG_DEC_RESP(x) VAL_MASK(x, 1, 6)
1092 #define V_INT_EN_AFBCD1_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 7)
1093 #define V_INT_EN_AFBCD2_HREG_DEC_RESP(x) VAL_MASK(x, 1, 8)
1094 #define V_INT_EN_AFBCD2_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 9)
1095 #define V_INT_EN_AFBCD3_HREG_DEC_RESP(x) VAL_MASK(x, 1, 10)
1096 #define V_INT_EN_AFBCD3_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 11)
1097 #define V_INT_EN_WB_YRGB_FIFO_FULL(x) VAL_MASK(x, 1, 12)
1098 #define V_INT_EN_WB_UV_FIFO_FULL(x) VAL_MASK(x, 1, 13)
1099 #define V_INT_EN_WB_FINISH(x) VAL_MASK(x, 1, 14)
1100 #define V_INT_EN_VFP(x) VAL_MASK(x, 1, 15)
1101 #define V_WRITE_MASK(x) VAL_MASK(x, 16, 16)
1102 #define INTR_CLEAR1 0x00000294
1103 #define V_INT_CLR_FBCD0(x) VAL_MASK(x, 1, 0)
1104 #define V_INT_CLR_FBCD1(x) VAL_MASK(x, 1, 1)
1105 #define V_INT_CLR_FBCD2(x) VAL_MASK(x, 1, 2)
1106 #define V_INT_CLR_FBCD3(x) VAL_MASK(x, 1, 3)
1107 #define V_INT_CLR_AFBCD0_HREG_DEC_RESP(x) VAL_MASK(x, 1, 4)
1108 #define V_INT_CLR_AFBCD0_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 5)
1109 #define V_INT_CLR_AFBCD1_HREG_DEC_RESP(x) VAL_MASK(x, 1, 6)
1110 #define V_INT_CLR_AFBCD1_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 7)
1111 #define V_INT_CLR_AFBCD2_HREG_DEC_RESP(x) VAL_MASK(x, 1, 8)
1112 #define V_INT_CLR_AFBCD2_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 9)
1113 #define V_INT_CLR_AFBCD3_HREG_DEC_RESP(x) VAL_MASK(x, 1, 10)
1114 #define V_INT_CLR_AFBCD3_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 11)
1115 #define V_INT_CLR_WB_YRGB_FIFO_FULL(x) VAL_MASK(x, 1, 12)
1116 #define V_INT_CLR_WB_UV_FIFO_FULL(x) VAL_MASK(x, 1, 13)
1117 #define V_INT_CLR_WB_DMA_FINISH(x) VAL_MASK(x, 1, 14)
1118 #define V_INT_CLR_VFP(x) VAL_MASK(x, 1, 15)
1119 #define INTR_STATUS1 0x00000298
1120 #define V_INT_STATUS_FBCD0(x) VAL_MASK(x, 1, 0)
1121 #define V_INT_STATUS_FBCD1(x) VAL_MASK(x, 1, 1)
1122 #define V_INT_STATUS_FBCD2(x) VAL_MASK(x, 1, 2)
1123 #define V_INT_STATUS_FBCD3(x) VAL_MASK(x, 1, 3)
1124 #define V_INT_STATUS_AFBCD0_HREG_DEC_RESP(x) VAL_MASK(x, 1, 4)
1125 #define V_INT_STATUS_AFBCD0_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 5)
1126 #define V_INT_STATUS_AFBCD1_HREG_DEC_RESP(x) VAL_MASK(x, 1, 6)
1127 #define V_INT_STATUS_AFBCD1_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 7)
1128 #define V_INT_STATUS_AFBCD2_HREG_DEC_RESP(x) VAL_MASK(x, 1, 8)
1129 #define V_INT_STATUS_AFBCD2_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 9)
1130 #define V_INT_STATUS_AFBCD3_HREG_DEC_RESP(x) VAL_MASK(x, 1, 10)
1131 #define V_INT_STATUS_AFBCD4_HREG_DEC_RESP(x) VAL_MASK(x, 1, 11)
1132 #define V_INT_STATUS_WB_YRGB_FIFO_FULL(x) VAL_MASK(x, 1, 12)
1133 #define V_INT_STATUS_WB_UV_FIFO_FULL(x) VAL_MASK(x, 1, 13)
1134 #define V_INT_STATUS_WB_DMA_FINISH(x) VAL_MASK(x, 1, 14)
1135 #define V_INT_STATUS_VFP(x) VAL_MASK(x, 1, 15)
1136 #define INTR_RAW_STATUS1 0x0000029c
1137 #define V_INT_RAW_STATUS_FBCD0(x) VAL_MASK(x, 1, 0)
1138 #define V_INT_RAW_STATUS_FBCD1(x) VAL_MASK(x, 1, 1)
1139 #define V_INT_RAW_STATUS_FBCD2(x) VAL_MASK(x, 1, 2)
1140 #define V_INT_RAW_STATUS_FBCD3(x) VAL_MASK(x, 1, 3)
1141 #define V_INT_RAW_STATUS_AFBCD0_HREG_DEC_RESP(x) VAL_MASK(x, 1, 4)
1142 #define V_INT_RAW_STATUS_AFBCD0_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 5)
1143 #define V_INT_RAW_STATUS_AFBCD1_HREG_DEC_RESP(x) VAL_MASK(x, 1, 6)
1144 #define V_INT_RAW_STATUS_AFBCD1_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 7)
1145 #define V_INT_RAW_STATUS_AFBCD2_HREG_DEC_RESP(x) VAL_MASK(x, 1, 8)
1146 #define V_INT_RAW_STATUS_AFBCD2_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 9)
1147 #define V_INT_RAW_STATUS_AFBCD3_HREG_DEC_RESP(x) VAL_MASK(x, 1, 10)
1148 #define V_INT_RAW_STATUS_AFBCD3_HREG_AXI_RRESP(x) VAL_MASK(x, 1, 11)
1149 #define V_INT_RAW_STATUS_WB_YRGB_FIFO_FULL(x) VAL_MASK(x, 1, 12)
1150 #define V_INT_RAW_STATUS_WB_UV_FIFO_FULL(x) VAL_MASK(x, 1, 13)
1151 #define V_INT_RAW_STATUS_WB_DMA_FINISH(x) VAL_MASK(x, 1, 14)
1152 #define V_INT_RAW_STATUS_VFP(x) VAL_MASK(x, 1, 15)
1153 #define LINE_FLAG 0x000002a0
1154 #define V_DSP_LINE_FLAG_NUM_0(x) VAL_MASK(x, 13, 0)
1155 #define V_DSP_LINE_FLAG_NUM_1(x) VAL_MASK(x, 13, 16)
1156 #define VOP_STATUS 0x000002a4
1157 #define V_DSP_VCNT(x) VAL_MASK(x, 13, 0)
1158 #define V_MMU_IDLE(x) VAL_MASK(x, 1, 16)
1159 #define V_DMA_STOP_VALID(x) VAL_MASK(x, 1, 17)
1160 #define BLANKING_VALUE 0x000002a8
1161 #define V_BLANKING_VALUE(x) VAL_MASK(x, 24, 0)
1162 #define V_BLANKING_VALUE_CONFIG_EN(x) VAL_MASK(x, 1, 24)
1163 #define MCU_BYPASS_PORT 0x000002ac
1164 #define WIN0_DSP_BG 0x000002b0
1165 #define V_WIN0_DSP_BG_BLUE(x) VAL_MASK(x, 10, 0)
1166 #define V_WIN0_DSP_BG_GREEN(x) VAL_MASK(x, 10, 10)
1167 #define V_WIN0_DSP_BG_RED(x) VAL_MASK(x, 10, 20)
1168 #define V_WIN0_BG_EN(x) VAL_MASK(x, 1, 31)
1169 #define WIN1_DSP_BG 0x000002b4
1170 #define V_WIN1_DSP_BG_BLUE(x) VAL_MASK(x, 10, 0)
1171 #define V_WIN1_DSP_BG_GREEN(x) VAL_MASK(x, 10, 10)
1172 #define V_WIN1_DSP_BG_RED(x) VAL_MASK(x, 10, 20)
1173 #define V_WIN1_BG_EN(x) VAL_MASK(x, 1, 31)
1174 #define WIN2_DSP_BG 0x000002b8
1175 #define V_WIN2_DSP_BG_BLUE(x) VAL_MASK(x, 10, 0)
1176 #define V_WIN2_DSP_BG_GREEN(x) VAL_MASK(x, 10, 10)
1177 #define V_WIN2_DSP_BG_RED(x) VAL_MASK(x, 10, 20)
1178 #define V_WIN2_BG_EN(x) VAL_MASK(x, 1, 31)
1179 #define WIN3_DSP_BG 0x000002bc
1180 #define V_WIN3_DSP_BG_BLUE(x) VAL_MASK(x, 10, 0)
1181 #define V_WIN3_DSP_BG_GREEN(x) VAL_MASK(x, 10, 10)
1182 #define V_WIN3_DSP_BG_RED(x) VAL_MASK(x, 10, 20)
1183 #define V_WIN3_BG_EN(x) VAL_MASK(x, 1, 31)
1184 #define YUV2YUV_WIN 0x000002c0
1185 #define V_WIN0_YUV2YUV_EN(x) VAL_MASK(x, 1, 0)
1186 #define V_WIN0_YUV2YUV_Y2R_EN(x) VAL_MASK(x, 1, 1)
1187 #define V_WIN0_YUV2YUV_R2Y_EN(x) VAL_MASK(x, 1, 2)
1188 #define V_WIN0_YUV2YUV_GAMMA_MODE(x) VAL_MASK(x, 1, 3)
1189 #define V_WIN0_YUV2YUV_Y2R_MODE(x) VAL_MASK(x, 2, 4)
1190 #define V_WIN0_YUV2YUV_R2Y_MODE(x) VAL_MASK(x, 2, 6)
1191 #define V_WIN1_YUV2YUV_EN(x) VAL_MASK(x, 1, 8)
1192 #define V_WIN1_YUV2YUV_Y2R_EN(x) VAL_MASK(x, 1, 9)
1193 #define V_WIN1_YUV2YUV_R2Y_EN(x) VAL_MASK(x, 1, 10)
1194 #define V_WIN1_YUV2YUV_GAMMA_MODE(x) VAL_MASK(x, 1, 11)
1195 #define V_WIN1_YUV2YUV_Y2R_MODE(x) VAL_MASK(x, 2, 12)
1196 #define V_WIN1_YUV2YUV_R2Y_MODE(x) VAL_MASK(x, 2, 14)
1197 #define V_WIN2_YUV2YUV_EN(x) VAL_MASK(x, 1, 16)
1198 #define V_WIN2_YUV2YUV_R2Y_EN(x) VAL_MASK(x, 1, 18)
1199 #define V_WIN2_YUV2YUV_GAMMA_MODE(x) VAL_MASK(x, 1, 19)
1200 #define V_WIN2_YUV2YUV_R2Y_MODE(x) VAL_MASK(x, 2, 22)
1201 #define V_WIN3_YUV2YUV_EN(x) VAL_MASK(x, 1, 24)
1202 #define V_WIN3_YUV2YUV_R2Y_EN(x) VAL_MASK(x, 1, 26)
1203 #define V_WIN3_YUV2YUV_GAMMA_MODE(x) VAL_MASK(x, 1, 27)
1204 #define V_WIN3_YUV2YUV_R2Y_MODE(x) VAL_MASK(x, 2, 30)
1205 #define YUV2YUV_POST 0x000002c4
1206 #define V_YUV2YUV_POST_EN(x) VAL_MASK(x, 1, 0)
1207 #define V_YUV2YUV_POST_Y2R_EN(x) VAL_MASK(x, 1, 1)
1208 #define V_YUV2YUV_POST_R2Y_EN(x) VAL_MASK(x, 1, 2)
1209 #define V_YUV2YUV_GAMMA_MODE(x) VAL_MASK(x, 1, 3)
1210 #define V_YUV2YUV_POST_Y2R_MODE(x) VAL_MASK(x, 2, 4)
1211 #define V_YUV2YUV_POST_R2Y_MODE(x) VAL_MASK(x, 2, 6)
1212 #define AUTO_GATING_EN 0x000002cc
1213 #define V_WIN0_ACLK_GATING_EN(x) VAL_MASK(x, 1, 0)
1214 #define V_WIN1_ACLK_GATING_EN(x) VAL_MASK(x, 1, 1)
1215 #define V_WIN2_ACLK_GATING_EN(x) VAL_MASK(x, 1, 2)
1216 #define V_WIN3_ACLK_GATING_EN(x) VAL_MASK(x, 1, 3)
1217 #define V_HWC_ACLK_GATING_EN(x) VAL_MASK(x, 1, 4)
1218 #define V_OVERLAY_ACLK_GATING_EN(x) VAL_MASK(x, 1, 5)
1219 #define V_GAMMA_ACLK_GATING_EN(x) VAL_MASK(x, 1, 6)
1220 #define V_CABC_ACLK_GATING_EN(x) VAL_MASK(x, 1, 7)
1221 #define V_WB_ACLK_GATING_EN(x) VAL_MASK(x, 1, 8)
1222 #define V_PWM_PWMCLK_GATING_EN(x) VAL_MASK(x, 1, 9)
1223 #define V_DIRECT_PATH_ACLK_GATING_EN(x) VAL_MASK(x, 1, 10)
1224 #define V_FBCD0_ACLK_GATING_EN(x) VAL_MASK(x, 1, 12)
1225 #define V_FBCD1_ACLK_GATING_EN(x) VAL_MASK(x, 1, 13)
1226 #define V_FBCD2_ACLK_GATING_EN(x) VAL_MASK(x, 1, 14)
1227 #define V_FBCD3_ACLK_GATING_EN(x) VAL_MASK(x, 1, 15)
1228 #define DBG_PERF_LATENCY_CTRL0 0x00000300
1229 #define V_RD_LATENCY_EN(x) VAL_MASK(x, 1, 0)
1230 #define V_HAND_LATENCY_CLR(x) VAL_MASK(x, 1, 1)
1231 #define V_RD_LATENCY_MODE(x) VAL_MASK(x, 1, 2)
1232 #define V_RD_LATENCY_ID0(x) VAL_MASK(x, 4, 4)
1233 #define V_RD_LATENCY_THR(x) VAL_MASK(x, 12, 8)
1234 #define V_RD_LATENCY_ST_NUM(x) VAL_MASK(x, 5, 20)
1235 #define DBG_PERF_RD_MAX_LATENCY_NUM0 0x00000304
1236 #define V_RD_MAX_LATENCY_NUM_CH0(x) VAL_MASK(x, 12, 0)
1237 #define V_RD_LATENCY_OVERFLOW_CH0(x) VAL_MASK(x, 1, 16)
1238 #define DBG_PERF_RD_LATENCY_THR_NUM0 0x00000308
1239 #define V_RD_LATENCY_THR_NUM_CH0(x) VAL_MASK(x, 24, 0)
1240 #define DBG_PERF_RD_LATENCY_SAMP_NUM0 0x0000030c
1241 #define V_RD_LATENCY_SAMP_NUM_CH0(x) VAL_MASK(x, 24, 0)
1242 #define DBG_CABC0 0x00000310
1243 #define DBG_CABC1 0x00000314
1244 #define DBG_CABC2 0x00000318
1245 #define V_PWM_MUL_POST_VALUE(x) VAL_MASK(x, 8, 8)
1246 #define DBG_CABC3 0x0000031c
1247 #define DBG_WIN0_REG0 0x00000320
1248 #define DBG_WIN0_REG1 0x00000324
1249 #define DBG_WIN0_REG2 0x00000328
1250 #define V_DBG_WIN0_YRGB_CMD_LINE_CNT(x) VAL_MASK(x, 13, 16)
1251 #define DBG_WIN0_RESERVED 0x0000032c
1252 #define DBG_WIN1_REG0 0x00000330
1253 #define DBG_WIN1_REG1 0x00000334
1254 #define DBG_WIN1_REG2 0x00000338
1255 #define DBG_WIN1_RESERVED 0x0000033c
1256 #define DBG_WIN2_REG0 0x00000340
1257 #define DBG_WIN2_REG1 0x00000344
1258 #define DBG_WIN2_REG2 0x00000348
1259 #define DBG_WIN2_REG3 0x0000034c
1260 #define DBG_WIN3_REG0 0x00000350
1261 #define DBG_WIN3_REG1 0x00000354
1262 #define DBG_WIN3_REG2 0x00000358
1263 #define DBG_WIN3_REG3 0x0000035c
1264 #define DBG_PRE_REG0 0x00000360
1265 #define DBG_PRE_RESERVED 0x00000364
1266 #define DBG_POST_REG0 0x00000368
1267 #define DBG_POST_REG1 0x0000036c
1268 #define V_GAMMA_A2HCLK_CHANGE_DONE(x) VAL_MASK(x, 1, 0)
1269 #define V_WHICH_GAMMA_LUT_WORKING(x) VAL_MASK(x, 1, 1)
1270 #define DBG_DATAO 0x00000370
1271 #define V_SW_DATAO_SEL(x) VAL_MASK(x, 2, 30)
1272 #define DBG_DATAO_2 0x00000374
1273 #define V_VOP_DATA_O_2(x) VAL_MASK(x, 30, 0)
1274 #define V_SW_DATAO_SEL_2(x) VAL_MASK(x, 2, 30)
1275 #define WIN0_CSC_COE 0x000003a0
1276 #define WIN1_CSC_COE 0x000003c0
1277 #define WIN2_CSC_COE 0x000003e0
1278 #define WIN3_CSC_COE 0x00000400
1279 #define HWC_CSC_COE 0x00000420
1280 #define BCSH_R2Y_CSC_COE 0x00000440
1281 #define BCSH_Y2R_CSC_COE 0x00000460
1282 #define POST_YUV2YUV_Y2R_COE 0x00000480
1283 #define POST_YUV2YUV_3x3_COE 0x000004a0
1284 #define POST_YUV2YUV_R2Y_COE 0x000004c0
1285 #define WIN0_YUV2YUV_Y2R 0x000004e0
1286 #define WIN0_YUV2YUV_R2R 0x00000500
1287 #define WIN0_YUV2YUV_R2Y 0x00000520
1288 #define WIN1_YUV2YUV_Y2R 0x00000540
1289 #define WIN1_YUV2YUV_R2R 0x00000560
1290 #define WIN1_YUV2YUV_R2Y 0x00000580
1291 #define WIN2_YUV2YUV_Y2R 0x000005a0
1292 #define WIN2_YUV2YUV_R2R 0x000005c0
1293 #define WIN2_YUV2YUV_R2Y 0x000005e0
1294 #define WIN3_YUV2YUV_Y2R 0x00000600
1295 #define WIN3_YUV2YUV_R2R 0x00000620
1296 #define WIN3_YUV2YUV_R2Y 0x00000640
1297 #define WIN2_LUT_ADDR 0x00001000
1298 #define V_WIN2_LUT_ADDR(x) VAL_MASK(x, 32, 0)
1299 #define WIN3_LUT_ADDR 0x00001400
1300 #define V_WIN3_LUT_ADDR(x) VAL_MASK(x, 32, 0)
1301 #define HWC_LUT_ADDR 0x00001800
1302 #define V_HWC_LUT_ADDR(x) VAL_MASK(x, 32, 0)
1303 #define CABC_GAMMA_LUT_ADDR 0x00001c00
1304 #define V_GAMMA_LUT_ADDR(x) VAL_MASK(x, 32, 0)
1305 #define GAMMA_LUT_ADDR 0x00002000
1306 #define V_GAMMA_LUT_ADDR(x) VAL_MASK(x, 32, 0)
1307 #define TVE 0x00003e00
1309 #define INTR_FS (1 << 0)
1310 #define INTR_FS_NEW (1 << 1)
1311 #define INTR_ADDR_SAME (1 << 2)
1312 #define INTR_LINE_FLAG0 (1 << 3)
1313 #define INTR_LINE_FLAG1 (1 << 4)
1314 #define INTR_BUS_ERROR (1 << 5)
1315 #define INTR_WIN0_EMPTY (1 << 6)
1316 #define INTR_WIN1_EMPTY (1 << 7)
1317 #define INTR_WIN2_EMPTY (1 << 8)
1318 #define INTR_WIN3_EMPTY (1 << 9)
1319 #define INTR_HWC_EMPTY (1 << 10)
1320 #define INTR_POST_BUF_EMPTY (1 << 11)
1322 #define INTR_PWM_GEN (1 << 12)
1324 #define INTR_FS_FIELD (1 << 12)
1325 #define INTR_DSP_HOLD_VALID (1 << 13)
1326 #define INTR_MMU (1 << 14)
1327 #define INTR_DMA_FINISH (1 << 15)
1329 #define INTR_MASK (INTR_FS | INTR_FS_NEW | INTR_ADDR_SAME | INTR_LINE_FLAG0 | \
1330 INTR_LINE_FLAG1 | INTR_BUS_ERROR | INTR_WIN0_EMPTY | \
1331 INTR_WIN1_EMPTY | INTR_WIN2_EMPTY | INTR_WIN3_EMPTY | \
1332 INTR_HWC_EMPTY | INTR_POST_BUF_EMPTY | INTR_PWM_GEN | \
1333 INTR_DSP_HOLD_VALID | INTR_MMU | INTR_DMA_FINISH)
1335 #define INTR1_FBCD0 (1 << 0)
1336 #define INTR1_FBCD1 (1 << 1)
1337 #define INTR1_FBCD2 (1 << 2)
1338 #define INTR1_FBCD3 (1 << 3)
1339 #define INTR1_AFBCD0_HREG_DEC_RESP (1 << 4)
1340 #define INTR1_AFBCD0_HREG_AXI_RRESP (1 << 5)
1341 #define INTR1_AFBCD1_HREG_DEC_RESP (1 << 6)
1342 #define INTR1_AFBCD1_HREG_AXI_RRESP (1 << 7)
1343 #define INTR1_AFBCD2_HREG_DEC_RESP (1 << 8)
1344 #define INTR1_AFBCD2_HREG_AXI_RRESP (1 << 9)
1345 #define INTR1_AFBCD3_HREG_DEC_RESP (1 << 10)
1346 #define INTR1_AFBCD3_HREG_AXI_RRESP (1 << 11)
1347 #define INTR1_WB_YRGB_FIFO_FULL (1 << 12)
1348 #define INTR1_WB_UV_FIFO_FULL (1 << 13)
1349 #define INTR1_WB_FINISH (1 << 14)
1351 #define OUT_CCIR656_MODE_0 5
1352 #define OUT_CCIR656_MODE_1 6
1353 #define OUT_CCIR656_MODE_2 7
1355 #define AFBDC_RGB_COLOR_TRANSFORM 0
1356 #define AFBDC_YUV_COLOR_TRANSFORM 1
1358 enum cabc_stage_mode {
1359 LAST_FRAME_PWM_VAL = 0x0,
1360 CUR_FRAME_PWM_VAL = 0x1,
1361 STAGE_BY_STAGE = 0x2
1380 struct rk_lcdc_win *win;
1386 const struct vop_data *data;
1387 struct rk_lcdc_driver driver;
1389 struct rk_screen *screen;
1390 struct regmap *grf_base;
1397 int __iomem *dsp_lut_addr_base;
1398 int __iomem *cabc_lut_addr_base;
1399 /* one time only one process allowed to config the register */
1400 spinlock_t reg_lock;
1402 int prop; /*used for primary or extended display device*/
1404 bool pwr18; /*if lcdc use 1.8v power supply*/
1405 /*if aclk or hclk is closed ,acess to register is not allowed*/
1407 /*active layer counter,when atv_layer_cnt = 0,disable lcdc*/
1409 /* point write back status */
1414 struct clk *hclk; /*lcdc AHP clk*/
1415 struct clk *dclk; /*lcdc dclk*/
1416 struct clk *aclk; /*lcdc share memory frequency*/
1417 struct clk *hclk_noc;
1418 struct clk *aclk_noc;
1421 u32 standby; /*1:standby,0:wrok*/
1423 struct backlight_device *backlight;
1424 struct clk *pll_sclk;
1426 /* lock vop irq reg */
1427 spinlock_t irq_lock;
1430 static inline void vop_writel(struct vop_device *vop_dev, u32 offset, u32 v)
1432 u32 *_pv = (u32 *)vop_dev->regsbak;
1434 _pv += (offset >> 2);
1436 writel_relaxed(v, vop_dev->regs + offset);
1439 static inline u32 vop_readl(struct vop_device *vop_dev, u32 offset)
1443 v = readl_relaxed(vop_dev->regs + offset);
1447 static inline u32 vop_readl_backup(struct vop_device *vop_dev, u32 offset)
1450 u32 *_pv = (u32 *)vop_dev->regsbak;
1452 _pv += (offset >> 2);
1453 v = readl_relaxed(vop_dev->regs + offset);
1458 static inline u32 vop_read_bit(struct vop_device *vop_dev, u32 offset, u64 v)
1460 u32 _v = readl_relaxed(vop_dev->regs + offset);
1467 static inline void vop_set_bit(struct vop_device *vop_dev, u32 offset, u64 v)
1469 u32 *_pv = (u32 *)vop_dev->regsbak;
1471 _pv += (offset >> 2);
1473 writel_relaxed(*_pv, vop_dev->regs + offset);
1476 static inline void vop_clr_bit(struct vop_device *vop_dev, u32 offset, u64 v)
1478 u32 *_pv = (u32 *)vop_dev->regsbak;
1480 _pv += (offset >> 2);
1481 (*_pv) &= (~(v >> 32));
1482 writel_relaxed(*_pv, vop_dev->regs + offset);
1485 static inline void vop_msk_reg(struct vop_device *vop_dev, u32 offset, u64 v)
1487 u32 *_pv = (u32 *)vop_dev->regsbak;
1489 _pv += (offset >> 2);
1490 (*_pv) &= (~(v >> 32));
1492 writel_relaxed(*_pv, vop_dev->regs + offset);
1495 static inline void vop_msk_reg_nobak(struct vop_device *vop_dev,
1498 u32 *_pv = (u32 *)vop_dev->regsbak;
1500 _pv += (offset >> 2);
1501 writel_relaxed((*_pv & (~(v >> 32))) | (u32)v, vop_dev->regs + offset);
1504 static inline void vop_mask_writel(struct vop_device *vop_dev, u32 offset,
1508 writel_relaxed(v , vop_dev->regs + offset);
1511 static inline void vop_cfg_done(struct vop_device *vop_dev)
1513 writel_relaxed(0x001f001f, vop_dev->regs + REG_CFG_DONE);
1517 static inline int vop_grf_writel(struct regmap *base, u32 offset, u32 val)
1519 regmap_write(base, offset, val);
1525 static inline int vop_cru_writel(struct regmap *base, u32 offset, u32 val)
1527 regmap_write(base, offset, val);
1533 static inline int vop_cru_readl(struct regmap *base, u32 offset)
1537 regmap_read(base, offset, &v);
1543 LB_YUV_3840X5 = 0x0,
1544 LB_YUV_2560X8 = 0x1,
1545 LB_RGB_3840X2 = 0x2,
1546 LB_RGB_2560X4 = 0x3,
1547 LB_RGB_1920X5 = 0x4,
1551 enum sacle_up_mode {
1556 enum scale_down_mode {
1557 SCALE_DOWN_BIL = 0x0,
1558 SCALE_DOWN_AVG = 0x1
1561 /*ALPHA BLENDING MODE*/
1562 enum alpha_mode { /* Fs Fd */
1563 AB_USER_DEFINE = 0x0,
1564 AB_CLEAR = 0x1,/* 0 0*/
1565 AB_SRC = 0x2,/* 1 0*/
1566 AB_DST = 0x3,/* 0 1 */
1567 AB_SRC_OVER = 0x4,/* 1 1-As''*/
1568 AB_DST_OVER = 0x5,/* 1-Ad'' 1*/
1576 AB_SRC_OVER_GLOBAL = 0xd
1577 }; /*alpha_blending_mode*/
1579 enum src_alpha_mode {
1582 };/*src_alpha_mode*/
1584 enum global_alpha_mode {
1587 AA_PER_PIX_GLOBAL = 0x2
1588 };/*src_global_alpha_mode*/
1590 enum src_alpha_sel {
1595 enum src_color_mode {
1596 AA_SRC_PRE_MUL = 0x0,
1597 AA_SRC_NO_PRE_MUL = 0x1
1598 };/*src_color_mode*/
1604 AA_SRC_INVERSE = 0x3,
1606 };/*src_factor_mode && dst_factor_mode*/
1608 enum _vop_r2y_csc_mode {
1609 VOP_R2Y_CSC_BT601 = 0,
1613 enum _vop_y2r_csc_mode {
1614 VOP_Y2R_CSC_MPEG = 0,
1620 VOP_FORMAT_ARGB888 = 0,
1623 VOP_FORMAT_YCBCR420 = 4,
1624 VOP_FORMAT_YCBCR422,
1628 #define IS_YUV(x) ((x) >= VOP_FORMAT_YCBCR420)
1630 enum _vop_overlay_mode {
1635 struct alpha_config {
1636 enum src_alpha_mode src_alpha_mode; /*win0_src_alpha_m0*/
1637 u32 src_global_alpha_val; /*win0_src_global_alpha*/
1638 enum global_alpha_mode src_global_alpha_mode;/*win0_src_blend_m0*/
1639 enum src_alpha_sel src_alpha_cal_m0; /*win0_src_alpha_cal_m0*/
1640 enum src_color_mode src_color_mode; /*win0_src_color_m0*/
1641 enum factor_mode src_factor_mode; /*win0_src_factor_m0*/
1642 enum factor_mode dst_factor_mode; /*win0_dst_factor_m0*/
1645 struct lcdc_cabc_mode {
1646 u32 pixel_num; /* pixel precent number */
1647 u16 stage_up; /* up stride */
1648 u16 stage_down; /* down stride */
1652 #define CUBIC_PRECISE 0
1653 #define CUBIC_SPLINE 1
1654 #define CUBIC_CATROM 2
1655 #define CUBIC_MITCHELL 3
1657 #define AFBDC_FMT_RGB565 0x0
1658 #define AFBDC_FMT_U8U8U8U8 0x5 /*ARGB888*/
1659 #define AFBDC_FMT_U8U8U8 0x4 /*RGBP888*/
1661 #define CUBIC_MODE_SELETION CUBIC_PRECISE
1663 /*************************************************************/
1664 #define SCALE_FACTOR_BILI_DN_FIXPOINT_SHIFT 12 /* 4.12*/
1665 #define SCALE_FACTOR_BILI_DN_FIXPOINT(x) \
1666 ((INT32)((x) * (1 << SCALE_FACTOR_BILI_DN_FIXPOINT_SHIFT)))
1668 #define SCALE_FACTOR_BILI_UP_FIXPOINT_SHIFT 16 /* 0.16*/
1670 #define SCALE_FACTOR_AVRG_FIXPOINT_SHIFT 16 /*0.16*/
1671 #define SCALE_FACTOR_AVRG_FIXPOINT(x) \
1672 ((INT32)((x) * (1 << SCALE_FACTOR_AVRG_FIXPOINT_SHIFT)))
1674 #define SCALE_FACTOR_BIC_FIXPOINT_SHIFT 16 /* 0.16*/
1675 #define SCALE_FACTOR_BIC_FIXPOINT(x) \
1676 ((INT32)((x) * (1 << SCALE_FACTOR_BIC_FIXPOINT_SHIFT)))
1678 #define SCALE_FACTOR_DEFAULT_FIXPOINT_SHIFT 12 /*NONE SCALE,vsd_bil*/
1679 #define SCALE_FACTOR_VSDBIL_FIXPOINT_SHIFT 12 /*VER SCALE DOWN BIL*/
1681 /*********************************************************/
1683 /*#define GET_SCALE_FACTOR_BILI(src, dst) \
1684 ((((src) - 1) << SCALE_FACTOR_BILI_FIXPOINT_SHIFT) / ((dst) - 1))*/
1685 /*#define GET_SCALE_FACTOR_BIC(src, dst) \
1686 ((((src) - 1) << SCALE_FACTOR_BIC_FIXPOINT_SHIFT) / ((dst) - 1))*/
1688 #define GET_SCALE_FACTOR_BILI_DN(src, dst) \
1689 ((((src) * 2 - 3) << (SCALE_FACTOR_BILI_DN_FIXPOINT_SHIFT - 1)) \
1691 #define GET_SCALE_FACTOR_BILI_UP(src, dst) \
1692 ((((src) * 2 - 3) << (SCALE_FACTOR_BILI_UP_FIXPOINT_SHIFT - 1)) \
1694 #define GET_SCALE_FACTOR_BIC(src, dst) \
1695 ((((src) * 2 - 3) << (SCALE_FACTOR_BIC_FIXPOINT_SHIFT - 1)) \
1698 /*********************************************************/
1699 /*NOTE: hardware in order to save resource , srch first to get interlace line
1700 (srch+vscalednmult-1)/vscalednmult; and do scale*/
1701 #define GET_SCALE_DN_ACT_HEIGHT(srch, vscalednmult) \
1702 (((srch) + (vscalednmult) - 1) / (vscalednmult))
1704 /*#define VSKIP_MORE_PRECISE*/
1706 #ifdef VSKIP_MORE_PRECISE
1707 #define MIN_SCALE_FACTOR_AFTER_VSKIP 1.5f
1708 #define GET_SCALE_FACTOR_BILI_DN_VSKIP(srch, dsth, vscalednmult) \
1709 (GET_SCALE_FACTOR_BILI_DN(GET_SCALE_DN_ACT_HEIGHT((srch),\
1710 (vscalednmult)), (dsth)))
1712 #define MIN_SCALE_FACTOR_AFTER_VSKIP 1
1713 #define GET_SCALE_FACTOR_BILI_DN_VSKIP(srch, dsth, vscalednmult) \
1714 ((GET_SCALE_DN_ACT_HEIGHT((srch) , (vscalednmult)) == (dsth)) \
1715 ? (GET_SCALE_FACTOR_BILI_DN((srch) , (dsth)) / (vscalednmult)) \
1716 : (GET_SCALE_DN_ACT_HEIGHT((srch) , (vscalednmult)) == ((dsth) * 2)) \
1717 ? GET_SCALE_FACTOR_BILI_DN(GET_SCALE_DN_ACT_HEIGHT(((srch) - 1),\
1718 (vscalednmult)) , (dsth)) : \
1719 GET_SCALE_FACTOR_BILI_DN(GET_SCALE_DN_ACT_HEIGHT((srch),\
1720 (vscalednmult)) , (dsth)))
1723 /*****************************************************************/
1725 /*scalefactor must >= dst/src, or pixels at end of line may be unused*/
1726 /*scalefactor must < dst/(src-1), or dst buffer may overflow*/
1727 /*avrg old code: ((((dst) << SCALE_FACTOR_AVRG_FIXPOINT_SHIFT))\
1728 /((src) - 1)) hxx_chgsrc*/
1729 /*modified by hpz:*/
1730 #define GET_SCALE_FACTOR_AVRG(src, dst) ((((dst) << \
1731 (SCALE_FACTOR_AVRG_FIXPOINT_SHIFT + 1))) / (2 * (src) - 1))
1733 /*************************************************************************/
1734 /*Scale Coordinate Accumulate, x.16*/
1735 #define SCALE_COOR_ACC_FIXPOINT_SHIFT 16
1736 #define SCALE_COOR_ACC_FIXPOINT_ONE (1 << SCALE_COOR_ACC_FIXPOINT_SHIFT)
1737 #define SCALE_COOR_ACC_FIXPOINT(x) \
1738 ((INT32)((x)*(1 << SCALE_COOR_ACC_FIXPOINT_SHIFT)))
1739 #define SCALE_COOR_ACC_FIXPOINT_REVERT(x) \
1740 ((((x) >> (SCALE_COOR_ACC_FIXPOINT_SHIFT - 1)) + 1) >> 1)
1742 #define SCALE_GET_COOR_ACC_FIXPOINT(scalefactor, factorfixpointshift) \
1744 (SCALE_COOR_ACC_FIXPOINT_SHIFT - (factorfixpointshift)))
1746 /************************************************************************/
1747 /*CoarsePart of Scale Coordinate Accumulate, used for pixel mult-add factor, 0.8*/
1748 #define SCALE_FILTER_FACTOR_FIXPOINT_SHIFT 8
1749 #define SCALE_FILTER_FACTOR_FIXPOINT_ONE \
1750 (1 << SCALE_FILTER_FACTOR_FIXPOINT_SHIFT)
1751 #define SCALE_FILTER_FACTOR_FIXPOINT(x) \
1752 ((INT32)((x) * (1 << SCALE_FILTER_FACTOR_FIXPOINT_SHIFT)))
1753 #define SCALE_FILTER_FACTOR_FIXPOINT_REVERT(x) \
1754 ((((x) >> (SCALE_FILTER_FACTOR_FIXPOINT_SHIFT-1)) + 1) >> 1)
1756 #define SCALE_GET_FILTER_FACTOR_FIXPOINT(cooraccumulate, \
1757 cooraccfixpointshift) \
1758 (((cooraccumulate) >> \
1759 ((cooraccfixpointshift) - SCALE_FILTER_FACTOR_FIXPOINT_SHIFT)) & \
1760 (SCALE_FILTER_FACTOR_FIXPOINT_ONE - 1))
1762 #define SCALE_OFFSET_FIXPOINT_SHIFT 8
1763 #define SCALE_OFFSET_FIXPOINT(x) \
1764 ((INT32)((x) * (1 << SCALE_OFFSET_FIXPOINT_SHIFT)))
1766 static inline u32 vop_get_hard_ware_vskiplines(u32 srch, u32 dsth)
1770 if (srch >= (u32) (4 * dsth * MIN_SCALE_FACTOR_AFTER_VSKIP))
1772 else if (srch >= (u32) (2 * dsth * MIN_SCALE_FACTOR_AFTER_VSKIP))
1777 return vscalednmult;