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