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