xref: /openbmc/u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
27b7ad5c3SSimon Glass /*
37b7ad5c3SSimon Glass  * Copyright (c) 2015 Google, Inc
47b7ad5c3SSimon Glass  * Copyright 2014 Rockchip Inc.
57b7ad5c3SSimon Glass  */
67b7ad5c3SSimon Glass 
77b7ad5c3SSimon Glass #ifndef _ASM_ARCH_VOP_RK3288_H
87b7ad5c3SSimon Glass #define _ASM_ARCH_VOP_RK3288_H
97b7ad5c3SSimon Glass 
107b7ad5c3SSimon Glass struct rk3288_vop {
117b7ad5c3SSimon Glass 	u32 reg_cfg_done;
127b7ad5c3SSimon Glass 	u32 version_info;
137b7ad5c3SSimon Glass 	u32 sys_ctrl;
147b7ad5c3SSimon Glass 	u32 sys_ctrl1;
157b7ad5c3SSimon Glass 	u32 dsp_ctrl0;
167b7ad5c3SSimon Glass 	u32 dsp_ctrl1;
177b7ad5c3SSimon Glass 	u32 dsp_bg;
187b7ad5c3SSimon Glass 	u32 mcu_ctrl;
197b7ad5c3SSimon Glass 	u32 intr_ctrl0;
207b7ad5c3SSimon Glass 	u32 intr_ctrl1;
217b7ad5c3SSimon Glass 	u32 intr_reserved0;
227b7ad5c3SSimon Glass 	u32 intr_reserved1;
237b7ad5c3SSimon Glass 
247b7ad5c3SSimon Glass 	u32 win0_ctrl0;
257b7ad5c3SSimon Glass 	u32 win0_ctrl1;
267b7ad5c3SSimon Glass 	u32 win0_color_key;
277b7ad5c3SSimon Glass 	u32 win0_vir;
287b7ad5c3SSimon Glass 	u32 win0_yrgb_mst;
297b7ad5c3SSimon Glass 	u32 win0_cbr_mst;
307b7ad5c3SSimon Glass 	u32 win0_act_info;
317b7ad5c3SSimon Glass 	u32 win0_dsp_info;
327b7ad5c3SSimon Glass 	u32 win0_dsp_st;
337b7ad5c3SSimon Glass 	u32 win0_scl_factor_yrgb;
347b7ad5c3SSimon Glass 	u32 win0_scl_factor_cbr;
357b7ad5c3SSimon Glass 	u32 win0_scl_offset;
367b7ad5c3SSimon Glass 	u32 win0_src_alpha_ctrl;
377b7ad5c3SSimon Glass 	u32 win0_dst_alpha_ctrl;
387b7ad5c3SSimon Glass 	u32 win0_fading_ctrl;
397b7ad5c3SSimon Glass 	u32 win0_reserved0;
407b7ad5c3SSimon Glass 
417b7ad5c3SSimon Glass 	u32 win1_ctrl0;
427b7ad5c3SSimon Glass 	u32 win1_ctrl1;
437b7ad5c3SSimon Glass 	u32 win1_color_key;
447b7ad5c3SSimon Glass 	u32 win1_vir;
457b7ad5c3SSimon Glass 	u32 win1_yrgb_mst;
467b7ad5c3SSimon Glass 	u32 win1_cbr_mst;
477b7ad5c3SSimon Glass 	u32 win1_act_info;
487b7ad5c3SSimon Glass 	u32 win1_dsp_info;
497b7ad5c3SSimon Glass 	u32 win1_dsp_st;
507b7ad5c3SSimon Glass 	u32 win1_scl_factor_yrgb;
517b7ad5c3SSimon Glass 	u32 win1_scl_factor_cbr;
527b7ad5c3SSimon Glass 	u32 win1_scl_offset;
537b7ad5c3SSimon Glass 	u32 win1_src_alpha_ctrl;
547b7ad5c3SSimon Glass 	u32 win1_dst_alpha_ctrl;
557b7ad5c3SSimon Glass 	u32 win1_fading_ctrl;
567b7ad5c3SSimon Glass 	u32 win1_reservd0;
577b7ad5c3SSimon Glass 	u32 reserved2[48];
587b7ad5c3SSimon Glass 	u32 post_dsp_hact_info;
597b7ad5c3SSimon Glass 	u32 post_dsp_vact_info;
607b7ad5c3SSimon Glass 	u32 post_scl_factor_yrgb;
617b7ad5c3SSimon Glass 	u32 post_reserved;
627b7ad5c3SSimon Glass 	u32 post_scl_ctrl;
637b7ad5c3SSimon Glass 	u32 post_dsp_vact_info_f1;
647b7ad5c3SSimon Glass 	u32 dsp_htotal_hs_end;
657b7ad5c3SSimon Glass 	u32 dsp_hact_st_end;
667b7ad5c3SSimon Glass 	u32 dsp_vtotal_vs_end;
677b7ad5c3SSimon Glass 	u32 dsp_vact_st_end;
687b7ad5c3SSimon Glass 	u32 dsp_vs_st_end_f1;
697b7ad5c3SSimon Glass 	u32 dsp_vact_st_end_f1;
707b7ad5c3SSimon Glass };
717b7ad5c3SSimon Glass check_member(rk3288_vop, dsp_vact_st_end_f1, 0x19c);
727b7ad5c3SSimon Glass 
737b7ad5c3SSimon Glass enum rockchip_fb_data_format_t {
747b7ad5c3SSimon Glass 	ARGB8888 = 0,
757b7ad5c3SSimon Glass 	RGB888 = 1,
767b7ad5c3SSimon Glass 	RGB565 = 2,
777b7ad5c3SSimon Glass };
787b7ad5c3SSimon Glass 
797b7ad5c3SSimon Glass enum {
807b7ad5c3SSimon Glass 	LB_YUV_3840X5 = 0x0,
817b7ad5c3SSimon Glass 	LB_YUV_2560X8 = 0x1,
827b7ad5c3SSimon Glass 	LB_RGB_3840X2 = 0x2,
837b7ad5c3SSimon Glass 	LB_RGB_2560X4 = 0x3,
847b7ad5c3SSimon Glass 	LB_RGB_1920X5 = 0x4,
857b7ad5c3SSimon Glass 	LB_RGB_1280X8 = 0x5
867b7ad5c3SSimon Glass };
877b7ad5c3SSimon Glass 
887b7ad5c3SSimon Glass enum vop_modes {
897b7ad5c3SSimon Glass 	VOP_MODE_EDP = 0,
907b7ad5c3SSimon Glass 	VOP_MODE_HDMI,
9185307835SJacob Chen 	VOP_MODE_LVDS,
929f819931SEric Gao 	VOP_MODE_MIPI,
937b7ad5c3SSimon Glass 	VOP_MODE_NONE,
947b7ad5c3SSimon Glass 	VOP_MODE_AUTO_DETECT,
957b7ad5c3SSimon Glass 	VOP_MODE_UNKNOWN,
967b7ad5c3SSimon Glass };
977b7ad5c3SSimon Glass 
987b7ad5c3SSimon Glass /* VOP_VERSION_INFO */
997b7ad5c3SSimon Glass #define M_FPGA_VERSION (0xffff << 16)
1007b7ad5c3SSimon Glass #define M_RTL_VERSION  (0xffff)
1017b7ad5c3SSimon Glass 
1027b7ad5c3SSimon Glass /* VOP_SYS_CTRL */
1037b7ad5c3SSimon Glass #define M_AUTO_GATING_EN (1 << 23)
1047b7ad5c3SSimon Glass #define M_STANDBY_EN     (1 << 22)
1057b7ad5c3SSimon Glass #define M_DMA_STOP       (1 << 21)
1067b7ad5c3SSimon Glass #define M_MMU_EN         (1 << 20)
1077b7ad5c3SSimon Glass #define M_DAM_BURST_LENGTH (0x3 << 18)
1087b7ad5c3SSimon Glass #define M_MIPI_OUT_EN	   (1 << 15)
1097b7ad5c3SSimon Glass #define M_EDP_OUT_EN       (1 << 14)
1107b7ad5c3SSimon Glass #define M_HDMI_OUT_EN      (1 << 13)
1117b7ad5c3SSimon Glass #define M_RGB_OUT_EN       (1 << 12)
1127b7ad5c3SSimon Glass #define M_ALL_OUT_EN		\
1137b7ad5c3SSimon Glass 		(M_MIPI_OUT_EN | M_EDP_OUT_EN | M_HDMI_OUT_EN | M_RGB_OUT_EN)
1147b7ad5c3SSimon Glass #define M_EDPI_WMS_FS      (1 << 10)
1157b7ad5c3SSimon Glass #define M_EDPI_WMS_MODE    (1 << 9)
1167b7ad5c3SSimon Glass #define M_EDPI_HALT_EN     (1 << 8)
1177b7ad5c3SSimon Glass #define M_DOUB_CH_OVERLAP_NUM (0xf << 4)
1187b7ad5c3SSimon Glass #define M_DOUB_CHANNEL_EN     (1 << 3)
1197b7ad5c3SSimon Glass #define M_DIRECT_PATH_LAYER_SEL (0x3 << 1)
1207b7ad5c3SSimon Glass #define M_DIRECT_PATH_EN       (1)
1217b7ad5c3SSimon Glass 
1227b7ad5c3SSimon Glass #define V_AUTO_GATING_EN(x) (((x) & 1) << 23)
1237b7ad5c3SSimon Glass #define V_STANDBY_EN(x)     (((x) & 1) << 22)
1247b7ad5c3SSimon Glass #define V_DMA_STOP(x)       (((x) & 1) << 21)
1257b7ad5c3SSimon Glass #define V_MMU_EN(x)         (((x) & 1) << 20)
1267b7ad5c3SSimon Glass #define V_DMA_BURST_LENGTH(x) (((x) & 3) << 18)
1277b7ad5c3SSimon Glass #define V_MIPI_OUT_EN(x)      (((x) & 1) << 15)
1287b7ad5c3SSimon Glass #define V_EDP_OUT_EN(x)       (((x) & 1) << 14)
1297b7ad5c3SSimon Glass #define V_HDMI_OUT_EN(x)      (((x) & 1) << 13)
1307b7ad5c3SSimon Glass #define V_RGB_OUT_EN(x)       (((x) & 1) << 12)
1317b7ad5c3SSimon Glass #define V_EDPI_WMS_FS(x)      (((x) & 1) << 10)
1327b7ad5c3SSimon Glass #define V_EDPI_WMS_MODE(x)    (((x) & 1) << 9)
1337b7ad5c3SSimon Glass #define V_EDPI_HALT_EN(x)     (((x)&1)<<8)
1347b7ad5c3SSimon Glass #define V_DOUB_CH_OVERLAP_NUM(x) (((x) & 0xf) << 4)
1357b7ad5c3SSimon Glass #define V_DOUB_CHANNEL_EN(x)     (((x) & 1) << 3)
1367b7ad5c3SSimon Glass #define V_DIRECT_PATH_LAYER_SEL(x) (((x) & 3) << 1)
1377b7ad5c3SSimon Glass #define V_DIRECT_PATH_EN(x)       ((x) & 1)
1387b7ad5c3SSimon Glass 
1397b7ad5c3SSimon Glass /* VOP_SYS_CTRL1 */
1407b7ad5c3SSimon Glass #define M_AXI_OUTSTANDING_MAX_NUM (0x1f << 13)
1417b7ad5c3SSimon Glass #define M_AXI_MAX_OUTSTANDING_EN  (1 << 12)
1427b7ad5c3SSimon Glass #define M_NOC_WIN_QOS             (3 << 10)
1437b7ad5c3SSimon Glass #define M_NOC_QOS_EN              (1 << 9)
1447b7ad5c3SSimon Glass #define M_NOC_HURRY_THRESHOLD     (0x3f << 3)
1457b7ad5c3SSimon Glass #define M_NOC_HURRY_VALUE         (0x3 << 1)
1467b7ad5c3SSimon Glass #define M_NOC_HURRY_EN            (1)
1477b7ad5c3SSimon Glass 
1487b7ad5c3SSimon Glass #define V_AXI_OUTSTANDING_MAX_NUM(x) (((x) & 0x1f) << 13)
1497b7ad5c3SSimon Glass #define V_AXI_MAX_OUTSTANDING_EN(x)  (((x) & 1) << 12)
1507b7ad5c3SSimon Glass #define V_NOC_WIN_QOS(x)             (((x) & 3) << 10)
1517b7ad5c3SSimon Glass #define V_NOC_QOS_EN(x)              (((x) & 1) << 9)
1527b7ad5c3SSimon Glass #define V_NOC_HURRY_THRESHOLD(x)     (((x) & 0x3f) << 3)
1537b7ad5c3SSimon Glass #define V_NOC_HURRY_VALUE(x)         (((x) & 3) << 1)
1547b7ad5c3SSimon Glass #define V_NOC_HURRY_EN(x)            ((x) & 1)
1557b7ad5c3SSimon Glass 
1567b7ad5c3SSimon Glass /* VOP_DSP_CTRL0 */
1577b7ad5c3SSimon Glass #define M_DSP_Y_MIR_EN              (1 << 23)
1587b7ad5c3SSimon Glass #define M_DSP_X_MIR_EN              (1 << 22)
1597b7ad5c3SSimon Glass #define M_DSP_YUV_CLIP              (1 << 21)
1607b7ad5c3SSimon Glass #define M_DSP_CCIR656_AVG           (1 << 20)
1617b7ad5c3SSimon Glass #define M_DSP_BLACK_EN              (1 << 19)
1627b7ad5c3SSimon Glass #define M_DSP_BLANK_EN              (1 << 18)
1637b7ad5c3SSimon Glass #define M_DSP_OUT_ZERO              (1 << 17)
1647b7ad5c3SSimon Glass #define M_DSP_DUMMY_SWAP            (1 << 16)
1657b7ad5c3SSimon Glass #define M_DSP_DELTA_SWAP            (1 << 15)
1667b7ad5c3SSimon Glass #define M_DSP_RG_SWAP               (1 << 14)
1677b7ad5c3SSimon Glass #define M_DSP_RB_SWAP               (1 << 13)
1687b7ad5c3SSimon Glass #define M_DSP_BG_SWAP               (1 << 12)
1697b7ad5c3SSimon Glass #define M_DSP_FIELD_POL             (1 << 11)
1707b7ad5c3SSimon Glass #define M_DSP_INTERLACE             (1 << 10)
1717b7ad5c3SSimon Glass #define M_DSP_DDR_PHASE             (1 << 9)
1727b7ad5c3SSimon Glass #define M_DSP_DCLK_DDR              (1 << 8)
1737b7ad5c3SSimon Glass #define M_DSP_DCLK_POL              (1 << 7)
1747b7ad5c3SSimon Glass #define M_DSP_DEN_POL               (1 << 6)
1757b7ad5c3SSimon Glass #define M_DSP_VSYNC_POL             (1 << 5)
1767b7ad5c3SSimon Glass #define M_DSP_HSYNC_POL             (1 << 4)
1777b7ad5c3SSimon Glass #define M_DSP_OUT_MODE              (0xf)
1787b7ad5c3SSimon Glass 
1797b7ad5c3SSimon Glass #define V_DSP_Y_MIR_EN(x)              (((x) & 1) << 23)
1807b7ad5c3SSimon Glass #define V_DSP_X_MIR_EN(x)              (((x) & 1) << 22)
1817b7ad5c3SSimon Glass #define V_DSP_YUV_CLIP(x)              (((x) & 1) << 21)
1827b7ad5c3SSimon Glass #define V_DSP_CCIR656_AVG(x)           (((x) & 1) << 20)
1837b7ad5c3SSimon Glass #define V_DSP_BLACK_EN(x)              (((x) & 1) << 19)
1847b7ad5c3SSimon Glass #define V_DSP_BLANK_EN(x)              (((x) & 1) << 18)
1857b7ad5c3SSimon Glass #define V_DSP_OUT_ZERO(x)              (((x) & 1) << 17)
1867b7ad5c3SSimon Glass #define V_DSP_DUMMY_SWAP(x)            (((x) & 1) << 16)
1877b7ad5c3SSimon Glass #define V_DSP_DELTA_SWAP(x)            (((x) & 1) << 15)
1887b7ad5c3SSimon Glass #define V_DSP_RG_SWAP(x)               (((x) & 1) << 14)
1897b7ad5c3SSimon Glass #define V_DSP_RB_SWAP(x)               (((x) & 1) << 13)
1907b7ad5c3SSimon Glass #define V_DSP_BG_SWAP(x)               (((x) & 1) << 12)
1917b7ad5c3SSimon Glass #define V_DSP_FIELD_POL(x)             (((x) & 1) << 11)
1927b7ad5c3SSimon Glass #define V_DSP_INTERLACE(x)             (((x) & 1) << 10)
1937b7ad5c3SSimon Glass #define V_DSP_DDR_PHASE(x)             (((x) & 1) << 9)
1947b7ad5c3SSimon Glass #define V_DSP_DCLK_DDR(x)              (((x) & 1) << 8)
1957b7ad5c3SSimon Glass #define V_DSP_DCLK_POL(x)              (((x) & 1) << 7)
1967b7ad5c3SSimon Glass #define V_DSP_DEN_POL(x)               (((x) & 1) << 6)
1977b7ad5c3SSimon Glass #define V_DSP_VSYNC_POL(x)             (((x) & 1) << 5)
1987b7ad5c3SSimon Glass #define V_DSP_HSYNC_POL(x)             (((x) & 1) << 4)
199d46d4047SPhilipp Tomsich #define V_DSP_PIN_POL(x)               (((x) & 0xf) << 4)
2007b7ad5c3SSimon Glass #define V_DSP_OUT_MODE(x)              ((x) & 0xf)
2017b7ad5c3SSimon Glass 
2027b7ad5c3SSimon Glass /* VOP_DSP_CTRL1 */
203cc75afc5SPhilipp Tomsich #define V_RK3399_DSP_MIPI_POL(x)       ((x) << 28)
204cc75afc5SPhilipp Tomsich #define V_RK3399_DSP_EDP_POL(x)        ((x) << 24)
205cc75afc5SPhilipp Tomsich #define V_RK3399_DSP_HDMI_POL(x)       ((x) << 20)
206cc75afc5SPhilipp Tomsich #define V_RK3399_DSP_LVDS_POL(x)       ((x) << 16)
207cc75afc5SPhilipp Tomsich 
208cc75afc5SPhilipp Tomsich #define M_RK3399_DSP_MIPI_POL          (V_RK3399_DSP_MIPI_POL(0xf))
209cc75afc5SPhilipp Tomsich #define M_RK3399_DSP_EDP_POL           (V_RK3399_DSP_EDP_POL(0xf))
210cc75afc5SPhilipp Tomsich #define M_RK3399_DSP_HDMI_POL          (V_RK3399_DSP_HDMI_POL(0xf))
211cc75afc5SPhilipp Tomsich #define M_RK3399_DSP_LVDS_POL          (V_RK3399_DSP_LVDS_POL(0xf))
212cc75afc5SPhilipp Tomsich 
2137b7ad5c3SSimon Glass #define M_DSP_LAYER3_SEL               (3 << 14)
2147b7ad5c3SSimon Glass #define M_DSP_LAYER2_SEL               (3 << 12)
2157b7ad5c3SSimon Glass #define M_DSP_LAYER1_SEL               (3 << 10)
2167b7ad5c3SSimon Glass #define M_DSP_LAYER0_SEL               (3 << 8)
2177b7ad5c3SSimon Glass #define M_DITHER_UP_EN                 (1 << 6)
2187b7ad5c3SSimon Glass #define M_DITHER_DOWN_SEL              (1 << 4)
2197b7ad5c3SSimon Glass #define M_DITHER_DOWN_MODE             (1 << 3)
2207b7ad5c3SSimon Glass #define M_DITHER_DOWN_EN               (1 << 2)
2217b7ad5c3SSimon Glass #define M_PRE_DITHER_DOWN_EN           (1 << 1)
2227b7ad5c3SSimon Glass #define M_DSP_LUT_EN                   (1)
2237b7ad5c3SSimon Glass 
2247b7ad5c3SSimon Glass #define V_DSP_LAYER3_SEL(x)                (((x) & 3) << 14)
2257b7ad5c3SSimon Glass #define V_DSP_LAYER2_SEL(x)                (((x) & 3) << 12)
2267b7ad5c3SSimon Glass #define V_DSP_LAYER1_SEL(x)                (((x) & 3) << 10)
2277b7ad5c3SSimon Glass #define V_DSP_LAYER0_SEL(x)                (((x) & 3) << 8)
2287b7ad5c3SSimon Glass #define V_DITHER_UP_EN(x)                  (((x) & 1) << 6)
2297b7ad5c3SSimon Glass #define V_DITHER_DOWN_SEL(x)               (((x) & 1) << 4)
2307b7ad5c3SSimon Glass #define V_DITHER_DOWN_MODE(x)              (((x) & 1) << 3)
2317b7ad5c3SSimon Glass #define V_DITHER_DOWN_EN(x)                (((x) & 1) << 2)
2327b7ad5c3SSimon Glass #define V_PRE_DITHER_DOWN_EN(x)            (((x) & 1) << 1)
2337b7ad5c3SSimon Glass #define V_DSP_LUT_EN(x)                    ((x)&1)
2347b7ad5c3SSimon Glass 
2357b7ad5c3SSimon Glass /* VOP_DSP_BG */
2367b7ad5c3SSimon Glass #define M_DSP_BG_RED     (0x3f << 20)
2377b7ad5c3SSimon Glass #define M_DSP_BG_GREEN   (0x3f << 10)
2387b7ad5c3SSimon Glass #define M_DSP_BG_BLUE    (0x3f << 0)
2397b7ad5c3SSimon Glass 
2407b7ad5c3SSimon Glass #define V_DSP_BG_RED(x)     (((x) & 0x3f) << 20)
2417b7ad5c3SSimon Glass #define V_DSP_BG_GREEN(x)   (((x) & 0x3f) << 10)
2427b7ad5c3SSimon Glass #define V_DSP_BG_BLUE(x)    (((x) & 0x3f) << 0)
2437b7ad5c3SSimon Glass 
2447b7ad5c3SSimon Glass /* VOP_WIN0_CTRL0 */
2457b7ad5c3SSimon Glass #define M_WIN0_YUV_CLIP     (1 << 20)
2467b7ad5c3SSimon Glass #define M_WIN0_CBR_DEFLICK  (1 << 19)
2477b7ad5c3SSimon Glass #define M_WIN0_YRGB_DEFLICK  (1 << 18)
2487b7ad5c3SSimon Glass #define M_WIN0_PPAS_ZERO_EN  (1 << 16)
2497b7ad5c3SSimon Glass #define M_WIN0_UV_SWAP       (1 << 15)
2507b7ad5c3SSimon Glass #define M_WIN0_MID_SWAP      (1 << 14)
2517b7ad5c3SSimon Glass #define M_WIN0_ALPHA_SWAP    (1 << 13)
2527b7ad5c3SSimon Glass #define M_WIN0_RB_SWAP       (1 << 12)
2537b7ad5c3SSimon Glass #define M_WIN0_CSC_MODE      (3 << 10)
2547b7ad5c3SSimon Glass #define M_WIN0_NO_OUTSTANDING (1 << 9)
2557b7ad5c3SSimon Glass #define M_WIN0_INTERLACE_READ  (1 << 8)
2567b7ad5c3SSimon Glass #define M_WIN0_LB_MODE         (7 << 5)
2577b7ad5c3SSimon Glass #define M_WIN0_FMT_10          (1 << 4)
2587b7ad5c3SSimon Glass #define M_WIN0_DATA_FMT        (7 << 1)
2597b7ad5c3SSimon Glass #define M_WIN0_EN              (1 << 0)
2607b7ad5c3SSimon Glass 
2617b7ad5c3SSimon Glass #define V_WIN0_YUV_CLIP(x)       (((x) & 1) << 20)
2627b7ad5c3SSimon Glass #define V_WIN0_CBR_DEFLICK(x)    (((x) & 1) << 19)
2637b7ad5c3SSimon Glass #define V_WIN0_YRGB_DEFLICK(x)   (((x) & 1) << 18)
2647b7ad5c3SSimon Glass #define V_WIN0_PPAS_ZERO_EN(x)   (((x) & 1) << 16)
2657b7ad5c3SSimon Glass #define V_WIN0_UV_SWAP(x)        (((x) & 1) << 15)
2667b7ad5c3SSimon Glass #define V_WIN0_MID_SWAP(x)       (((x) & 1) << 14)
2677b7ad5c3SSimon Glass #define V_WIN0_ALPHA_SWAP(x)     (((x) & 1) << 13)
2687b7ad5c3SSimon Glass #define V_WIN0_RB_SWAP(x)        (((x) & 1) << 12)
2697b7ad5c3SSimon Glass #define V_WIN0_CSC_MODE(x)       (((x) & 3) << 10)
2707b7ad5c3SSimon Glass #define V_WIN0_NO_OUTSTANDING(x) (((x) & 1) << 9)
2717b7ad5c3SSimon Glass #define V_WIN0_INTERLACE_READ(x)  (((x) & 1) << 8)
2727b7ad5c3SSimon Glass #define V_WIN0_LB_MODE(x)         (((x) & 7) << 5)
2737b7ad5c3SSimon Glass #define V_WIN0_FMT_10(x)          (((x) & 1) << 4)
2747b7ad5c3SSimon Glass #define V_WIN0_DATA_FMT(x)        (((x) & 7) << 1)
2757b7ad5c3SSimon Glass #define V_WIN0_EN(x)              ((x) & 1)
2767b7ad5c3SSimon Glass 
2777b7ad5c3SSimon Glass /* VOP_WIN0_CTRL1 */
2787b7ad5c3SSimon Glass #define M_WIN0_CBR_VSD_MODE        (1 << 31)
2797b7ad5c3SSimon Glass #define M_WIN0_CBR_VSU_MODE        (1 << 30)
2807b7ad5c3SSimon Glass #define M_WIN0_CBR_HSD_MODE        (3 << 28)
2817b7ad5c3SSimon Glass #define M_WIN0_CBR_VER_SCL_MODE    (3 << 26)
2827b7ad5c3SSimon Glass #define M_WIN0_CBR_HOR_SCL_MODE    (3 << 24)
2837b7ad5c3SSimon Glass #define M_WIN0_YRGB_VSD_MODE       (1 << 23)
2847b7ad5c3SSimon Glass #define M_WIN0_YRGB_VSU_MODE       (1 << 22)
2857b7ad5c3SSimon Glass #define M_WIN0_YRGB_HSD_MODE       (3 << 20)
2867b7ad5c3SSimon Glass #define M_WIN0_YRGB_VER_SCL_MODE   (3 << 18)
2877b7ad5c3SSimon Glass #define M_WIN0_YRGB_HOR_SCL_MODE   (3 << 16)
2887b7ad5c3SSimon Glass #define M_WIN0_LINE_LOAD_MODE      (1 << 15)
2897b7ad5c3SSimon Glass #define M_WIN0_CBR_AXI_GATHER_NUM  (7 << 12)
2907b7ad5c3SSimon Glass #define M_WIN0_YRGB_AXI_GATHER_NUM (0xf << 8)
2917b7ad5c3SSimon Glass #define M_WIN0_VSD_CBR_GT2         (1 << 7)
2927b7ad5c3SSimon Glass #define M_WIN0_VSD_CBR_GT4         (1 << 6)
2937b7ad5c3SSimon Glass #define M_WIN0_VSD_YRGB_GT2        (1 << 5)
2947b7ad5c3SSimon Glass #define M_WIN0_VSD_YRGB_GT4        (1 << 4)
2957b7ad5c3SSimon Glass #define M_WIN0_BIC_COE_SEL         (3 << 2)
2967b7ad5c3SSimon Glass #define M_WIN0_CBR_AXI_GATHER_EN   (1 << 1)
2977b7ad5c3SSimon Glass #define M_WIN0_YRGB_AXI_GATHER_EN  (1)
2987b7ad5c3SSimon Glass 
2997b7ad5c3SSimon Glass #define V_WIN0_CBR_VSD_MODE(x)        (((x) & 1) << 31)
3007b7ad5c3SSimon Glass #define V_WIN0_CBR_VSU_MODE(x)        (((x) & 1) << 30)
3017b7ad5c3SSimon Glass #define V_WIN0_CBR_HSD_MODE(x)        (((x) & 3) << 28)
3027b7ad5c3SSimon Glass #define V_WIN0_CBR_VER_SCL_MODE(x)    (((x) & 3) << 26)
3037b7ad5c3SSimon Glass #define V_WIN0_CBR_HOR_SCL_MODE(x)    (((x) & 3) << 24)
3047b7ad5c3SSimon Glass #define V_WIN0_YRGB_VSD_MODE(x)       (((x) & 1) << 23)
3057b7ad5c3SSimon Glass #define V_WIN0_YRGB_VSU_MODE(x)       (((x) & 1) << 22)
3067b7ad5c3SSimon Glass #define V_WIN0_YRGB_HSD_MODE(x)       (((x) & 3) << 20)
3077b7ad5c3SSimon Glass #define V_WIN0_YRGB_VER_SCL_MODE(x)   (((x) & 3) << 18)
3087b7ad5c3SSimon Glass #define V_WIN0_YRGB_HOR_SCL_MODE(x)   (((x) & 3) << 16)
3097b7ad5c3SSimon Glass #define V_WIN0_LINE_LOAD_MODE(x)      (((x) & 1) << 15)
3107b7ad5c3SSimon Glass #define V_WIN0_CBR_AXI_GATHER_NUM(x)  (((x) & 7) << 12)
3117b7ad5c3SSimon Glass #define V_WIN0_YRGB_AXI_GATHER_NUM(x) (((x) & 0xf) << 8)
3127b7ad5c3SSimon Glass #define V_WIN0_VSD_CBR_GT2(x)         (((x) & 1) << 7)
3137b7ad5c3SSimon Glass #define V_WIN0_VSD_CBR_GT4(x)         (((x) & 1) << 6)
3147b7ad5c3SSimon Glass #define V_WIN0_VSD_YRGB_GT2(x)        (((x) & 1) << 5)
3157b7ad5c3SSimon Glass #define V_WIN0_VSD_YRGB_GT4(x)        (((x) & 1) << 4)
3167b7ad5c3SSimon Glass #define V_WIN0_BIC_COE_SEL(x)         (((x) & 3) << 2)
3177b7ad5c3SSimon Glass #define V_WIN0_CBR_AXI_GATHER_EN(x)   (((x) & 1) << 1)
3187b7ad5c3SSimon Glass #define V_WIN0_YRGB_AXI_GATHER_EN(x)  ((x) & 1)
3197b7ad5c3SSimon Glass 
3207b7ad5c3SSimon Glass /*VOP_WIN0_COLOR_KEY*/
3217b7ad5c3SSimon Glass #define M_WIN0_KEY_EN                 (1 << 31)
3227b7ad5c3SSimon Glass #define M_WIN0_KEY_COLOR              (0x3fffffff)
3237b7ad5c3SSimon Glass 
3247b7ad5c3SSimon Glass #define V_WIN0_KEY_EN(x)              (((x) & 1) << 31)
3257b7ad5c3SSimon Glass #define V_WIN0_KEY_COLOR(x)           ((x) & 0x3fffffff)
3267b7ad5c3SSimon Glass 
3277b7ad5c3SSimon Glass /* VOP_WIN0_VIR */
3287b7ad5c3SSimon Glass #define V_ARGB888_VIRWIDTH(x)	(((x) & 0x3fff) << 0)
3297b7ad5c3SSimon Glass #define V_RGB888_VIRWIDTH(x)	(((((x * 3) >> 2)+((x) % 3)) & 0x3fff) << 0)
3307b7ad5c3SSimon Glass #define V_RGB565_VIRWIDTH(x)	(((x / 2) & 0x3fff) << 0)
3317b7ad5c3SSimon Glass #define YUV_VIRWIDTH(x)		(((x / 4) & 0x3fff) << 0)
3327b7ad5c3SSimon Glass 
3337b7ad5c3SSimon Glass /* VOP_WIN0_ACT_INFO */
3347b7ad5c3SSimon Glass #define V_ACT_HEIGHT(x)         (((x) & 0x1fff) << 16)
3357b7ad5c3SSimon Glass #define V_ACT_WIDTH(x)          ((x) & 0x1fff)
3367b7ad5c3SSimon Glass 
3377b7ad5c3SSimon Glass /* VOP_WIN0_DSP_INFO */
3387b7ad5c3SSimon Glass #define V_DSP_HEIGHT(x)         (((x) & 0xfff) << 16)
3397b7ad5c3SSimon Glass #define V_DSP_WIDTH(x)          ((x) & 0xfff)
3407b7ad5c3SSimon Glass 
3417b7ad5c3SSimon Glass /* VOP_WIN0_DSP_ST */
3427b7ad5c3SSimon Glass #define V_DSP_YST(x)            (((x) & 0x1fff) << 16)
3437b7ad5c3SSimon Glass #define V_DSP_XST(x)            ((x) & 0x1fff)
3447b7ad5c3SSimon Glass 
3457b7ad5c3SSimon Glass /* VOP_WIN0_SCL_OFFSET */
3467b7ad5c3SSimon Glass #define V_WIN0_VS_OFFSET_CBR(x)     (((x) & 0xff) << 24)
3477b7ad5c3SSimon Glass #define V_WIN0_VS_OFFSET_YRGB(x)    (((x) & 0xff) << 16)
3487b7ad5c3SSimon Glass #define V_WIN0_HS_OFFSET_CBR(x)     (((x) & 0xff) << 8)
3497b7ad5c3SSimon Glass #define V_WIN0_HS_OFFSET_YRGB(x)    ((x) & 0xff)
3507b7ad5c3SSimon Glass 
3517b7ad5c3SSimon Glass #define V_HSYNC(x)		(((x)&0x1fff)<<0)   /* hsync pulse width */
3527b7ad5c3SSimon Glass #define V_HORPRD(x)		(((x)&0x1fff)<<16)   /* horizontal period */
3537b7ad5c3SSimon Glass #define V_VSYNC(x)		(((x)&0x1fff)<<0)
3547b7ad5c3SSimon Glass #define V_VERPRD(x)		(((x)&0x1fff)<<16)
3557b7ad5c3SSimon Glass 
3567b7ad5c3SSimon Glass #define V_HEAP(x)		(((x)&0x1fff)<<0)/* horizontal active end */
3577b7ad5c3SSimon Glass #define V_HASP(x)		(((x)&0x1fff)<<16)/* horizontal active start */
3587b7ad5c3SSimon Glass #define V_VAEP(x)		(((x)&0x1fff)<<0)
3597b7ad5c3SSimon Glass #define V_VASP(x)		(((x)&0x1fff)<<16)
3607b7ad5c3SSimon Glass 
3617b7ad5c3SSimon Glass #endif
362