video: rockchip: tve: fix compile error and warning
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / lcdc / rk322x_lcdc.h
1 #ifndef RK322X_LCDC_H_
2 #define RK322X_LCDC_H_
3
4 #include<linux/rk_fb.h>
5 #include<linux/io.h>
6 #include<linux/clk.h>
7 #include<linux/mfd/syscon.h>
8 #include<linux/regmap.h>
9
10 #define VOP_INPUT_MAX_WIDTH 4096
11 /*
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
107  *                     and end 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
112  *                        and end point F1
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
145  * AFBCD0_CTRL:
146  * AFBCD0_HDR_PTR:
147  * AFBCD0_PIC_SIZE:
148  * AFBCD0_STATUS:
149  * AFBCD1_CTRL:
150  * AFBCD1_HDR_PTR:
151  * AFBCD1_PIC_SIZE:
152  * AFBCD1_STATUS:
153  * AFBCD2_CTRL:
154  * AFBCD2_HDR_PTR:
155  * AFBCD2_PIC_SIZE:
156  * AFBCD2_STATUS:
157  * AFBCD3_CTRL:
158  * AFBCD3_HDR_PTR:
159  * AFBCD3_PIC_SIZE:
160  * AFBCD3_STATUS:
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
179  *                               threshold value
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
213  * MCU_BYPASS_WPORT:
214  * MCU_BYPASS_RPORT:
215  */
216
217 static inline u64 val_mask(int val, u64 msk, int shift)
218 {
219         return (msk << (shift + 32)) | ((msk & val) << shift);
220 }
221
222 #define VAL_MASK(x, width, shift) val_mask(x, (1 << width) - 1, shift)
223
224 #define MASK(x) (V_##x(0) >> 32)
225
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
1255
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)
1272
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)
1278
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)
1294
1295 #define OUT_CCIR656_MODE_0              5
1296 #define OUT_CCIR656_MODE_1              6
1297 #define OUT_CCIR656_MODE_2              7
1298
1299 struct vop_device {
1300         int id;
1301         struct rk_lcdc_driver driver;
1302         struct device *dev;
1303         struct rk_screen *screen;
1304
1305         void __iomem *regs;
1306         void *regsbak;
1307         u32 reg_phy_base;
1308         u32 len;
1309
1310         /* one time only one process allowed to config the register */
1311         spinlock_t reg_lock;
1312
1313         int prop;               /*used for primary or extended display device*/
1314         bool pre_init;
1315         bool pwr18;             /*if lcdc use 1.8v power supply*/
1316         /*if aclk or hclk is closed ,acess to register is not allowed*/
1317         bool clk_on;
1318         /*active layer counter,when  atv_layer_cnt = 0,disable lcdc*/
1319         u8 atv_layer_cnt;
1320
1321         unsigned int            irq;
1322
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;
1328         u32 pixclock;
1329
1330         u32 standby;                            /*1:standby,0:wrok*/
1331         u32 iommu_status;
1332         struct backlight_device *backlight;
1333         struct clk              *pll_sclk;
1334
1335         /* lock vop irq reg */
1336         spinlock_t irq_lock;
1337 };
1338
1339 static inline void vop_writel(struct vop_device *vop_dev, u32 offset, u32 v)
1340 {
1341         u32 *_pv = (u32 *)vop_dev->regsbak;
1342
1343         _pv += (offset >> 2);
1344         *_pv = v;
1345         writel_relaxed(v, vop_dev->regs + offset);
1346 }
1347
1348 static inline u32 vop_readl(struct vop_device *vop_dev, u32 offset)
1349 {
1350         u32 v;
1351
1352         v = readl_relaxed(vop_dev->regs + offset);
1353         return v;
1354 }
1355
1356 static inline u32 vop_readl_backup(struct vop_device *vop_dev, u32 offset)
1357 {
1358         u32 v;
1359         u32 *_pv = (u32 *)vop_dev->regsbak;
1360
1361         _pv += (offset >> 2);
1362         v = readl_relaxed(vop_dev->regs + offset);
1363         *_pv = v;
1364         return v;
1365 }
1366
1367 static inline u32 vop_read_bit(struct vop_device *vop_dev, u32 offset, u64 v)
1368 {
1369         u32 _v = readl_relaxed(vop_dev->regs + offset);
1370
1371         _v &= v >> 32;
1372         v = (_v ? 1 : 0);
1373         return v;
1374 }
1375
1376 static inline void vop_set_bit(struct vop_device *vop_dev, u32 offset, u64 v)
1377 {
1378         u32 *_pv = (u32 *)vop_dev->regsbak;
1379
1380         _pv += (offset >> 2);
1381         (*_pv) |= v >> 32;
1382         writel_relaxed(*_pv, vop_dev->regs + offset);
1383 }
1384
1385 static inline void vop_clr_bit(struct vop_device *vop_dev, u32 offset, u64 v)
1386 {
1387         u32 *_pv = (u32 *)vop_dev->regsbak;
1388
1389         _pv += (offset >> 2);
1390         (*_pv) &= (~(v >> 32));
1391         writel_relaxed(*_pv, vop_dev->regs + offset);
1392 }
1393
1394 static inline void  vop_msk_reg(struct vop_device *vop_dev, u32 offset, u64 v)
1395 {
1396         u32 *_pv = (u32 *)vop_dev->regsbak;
1397
1398         _pv += (offset >> 2);
1399         (*_pv) &= (~(v >> 32));
1400         (*_pv) |= (u32)v;
1401         writel_relaxed(*_pv, vop_dev->regs + offset);
1402 }
1403
1404 static inline void vop_mask_writel(struct vop_device *vop_dev, u32 offset,
1405                                    u32 mask, u32 v)
1406 {
1407         v = mask << 16 | v;
1408         writel_relaxed(v , vop_dev->regs + offset);
1409 }
1410
1411 static inline void vop_cfg_done(struct vop_device *vop_dev)
1412 {
1413         writel_relaxed(0x001f001f, vop_dev->regs + REG_CFG_DONE);
1414         dsb(sy);
1415 }
1416
1417 static inline int vop_grf_writel(struct regmap *base, u32 offset, u32 val)
1418 {
1419         regmap_write(base, offset, val);
1420         dsb(sy);
1421
1422         return 0;
1423 }
1424
1425 static inline int vop_cru_writel(struct regmap *base, u32 offset, u32 val)
1426 {
1427         regmap_write(base, offset, val);
1428         dsb(sy);
1429
1430         return 0;
1431 }
1432
1433 static inline int vop_cru_readl(struct regmap *base, u32 offset)
1434 {
1435         u32 v;
1436
1437         regmap_read(base, offset, &v);
1438
1439         return v;
1440 }
1441
1442 enum lb_mode {
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,
1448         LB_RGB_1280X8 = 0x5
1449 };
1450
1451 enum sacle_up_mode {
1452         SCALE_UP_BIL = 0x0,
1453         SCALE_UP_BIC = 0x1
1454 };
1455
1456 enum scale_down_mode {
1457         SCALE_DOWN_BIL = 0x0,
1458         SCALE_DOWN_AVG = 0x1
1459 };
1460
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*/
1469         AB_SRC_IN          = 0x6,
1470         AB_DST_IN          = 0x7,
1471         AB_SRC_OUT         = 0x8,
1472         AB_DST_OUT         = 0x9,
1473         AB_SRC_ATOP        = 0xa,
1474         AB_DST_ATOP        = 0xb,
1475         XOR                = 0xc,
1476         AB_SRC_OVER_GLOBAL = 0xd
1477 }; /*alpha_blending_mode*/
1478
1479 enum src_alpha_mode {
1480         AA_STRAIGHT        = 0x0,
1481         AA_INVERSE         = 0x1
1482 };/*src_alpha_mode*/
1483
1484 enum global_alpha_mode {
1485         AA_GLOBAL         = 0x0,
1486         AA_PER_PIX        = 0x1,
1487         AA_PER_PIX_GLOBAL = 0x2
1488 };/*src_global_alpha_mode*/
1489
1490 enum src_alpha_sel {
1491         AA_SAT          = 0x0,
1492         AA_NO_SAT       = 0x1
1493 };/*src_alpha_sel*/
1494
1495 enum src_color_mode {
1496         AA_SRC_PRE_MUL         = 0x0,
1497         AA_SRC_NO_PRE_MUL      = 0x1
1498 };/*src_color_mode*/
1499
1500 enum factor_mode {
1501         AA_ZERO                 = 0x0,
1502         AA_ONE                  = 0x1,
1503         AA_SRC                  = 0x2,
1504         AA_SRC_INVERSE          = 0x3,
1505         AA_SRC_GLOBAL           = 0x4
1506 };/*src_factor_mode  &&  dst_factor_mode*/
1507
1508 enum _vop_r2y_csc_mode {
1509         VOP_R2Y_CSC_BT601 = 0,
1510         VOP_R2Y_CSC_BT709
1511 };
1512
1513 enum _vop_y2r_csc_mode {
1514         VOP_Y2R_CSC_MPEG = 0,
1515         VOP_Y2R_CSC_JPEG,
1516         VOP_Y2R_CSC_HD,
1517         VOP_Y2R_CSC_BYPASS
1518 };
1519 enum _vop_format {
1520         VOP_FORMAT_ARGB888 = 0,
1521         VOP_FORMAT_RGB888,
1522         VOP_FORMAT_RGB565,
1523         VOP_FORMAT_YCBCR420 = 4,
1524         VOP_FORMAT_YCBCR422,
1525         VOP_FORMAT_YCBCR444
1526 };
1527
1528 #define IS_YUV(x) ((x) >= VOP_FORMAT_YCBCR420)
1529
1530 enum _vop_overlay_mode {
1531         VOP_RGB_DOMAIN,
1532         VOP_YUV_DOMAIN
1533 };
1534
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*/
1543 };
1544
1545 struct lcdc_cabc_mode {
1546         u32 pixel_num;                  /* pixel precent number */
1547         u16 stage_up;                   /* up stride */
1548         u16 stage_down;         /* down stride */
1549         u16 global_su;
1550 };
1551
1552 #define CUBIC_PRECISE  0
1553 #define CUBIC_SPLINE   1
1554 #define CUBIC_CATROM   2
1555 #define CUBIC_MITCHELL 3
1556
1557 #define FBDC_FMT_RGB565         0x5
1558 #define FBDC_FMT_U8U8U8U8       0xc /*ARGB888*/
1559 #define FBDC_FMT_U8U8U8         0x3a /*RGBP888*/
1560
1561 #define CUBIC_MODE_SELETION      CUBIC_PRECISE
1562
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)))
1567
1568 #define SCALE_FACTOR_BILI_UP_FIXPOINT_SHIFT   16   /* 0.16*/
1569
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)))
1573
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)))
1577
1578 #define SCALE_FACTOR_DEFAULT_FIXPOINT_SHIFT    12  /*NONE SCALE,vsd_bil*/
1579 #define SCALE_FACTOR_VSDBIL_FIXPOINT_SHIFT     12  /*VER SCALE DOWN BIL*/
1580
1581 /*********************************************************/
1582
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))*/
1587 /*modified by hpz*/
1588 #define GET_SCALE_FACTOR_BILI_DN(src, dst)  \
1589         ((((src) * 2 - 3) << (SCALE_FACTOR_BILI_DN_FIXPOINT_SHIFT - 1)) \
1590         / ((dst) - 1))
1591 #define GET_SCALE_FACTOR_BILI_UP(src, dst)  \
1592         ((((src) * 2 - 3) << (SCALE_FACTOR_BILI_UP_FIXPOINT_SHIFT - 1)) \
1593         / ((dst) - 1))
1594 #define GET_SCALE_FACTOR_BIC(src, dst)      \
1595         ((((src) * 2 - 3) << (SCALE_FACTOR_BIC_FIXPOINT_SHIFT - 1)) \
1596         / ((dst) - 1))
1597
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))
1603
1604 /*#define VSKIP_MORE_PRECISE*/
1605
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)))
1611 #else
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)))
1621
1622 #endif
1623 /*****************************************************************/
1624
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))
1632
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)
1641
1642 #define SCALE_GET_COOR_ACC_FIXPOINT(scalefactor, factorfixpointshift)  \
1643         ((scalefactor) << \
1644         (SCALE_COOR_ACC_FIXPOINT_SHIFT - (factorfixpointshift)))
1645
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)
1655
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))
1661
1662 #define SCALE_OFFSET_FIXPOINT_SHIFT            8
1663 #define SCALE_OFFSET_FIXPOINT(x)              \
1664         ((INT32)((x) * (1 << SCALE_OFFSET_FIXPOINT_SHIFT)))
1665
1666 static inline u32 vop_get_hard_ware_vskiplines(u32 srch, u32 dsth)
1667 {
1668         u32 vscalednmult;
1669
1670         if (srch >= (u32) (4 * dsth * MIN_SCALE_FACTOR_AFTER_VSKIP))
1671                 vscalednmult = 4;
1672         else if (srch >= (u32) (2 * dsth * MIN_SCALE_FACTOR_AFTER_VSKIP))
1673                 vscalednmult = 2;
1674         else
1675                 vscalednmult = 1;
1676
1677         return vscalednmult;
1678 }
1679
1680 #endif