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