1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright (c) 2015 Google, Inc 3*4882a593Smuzhiyun * Copyright 2014 Rockchip Inc. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef _ASM_ARCH_VOP_RK3288_H 9*4882a593Smuzhiyun #define _ASM_ARCH_VOP_RK3288_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun struct rk3288_vop { 12*4882a593Smuzhiyun u32 reg_cfg_done; 13*4882a593Smuzhiyun u32 version_info; 14*4882a593Smuzhiyun u32 sys_ctrl; 15*4882a593Smuzhiyun u32 sys_ctrl1; 16*4882a593Smuzhiyun u32 dsp_ctrl0; 17*4882a593Smuzhiyun u32 dsp_ctrl1; 18*4882a593Smuzhiyun u32 dsp_bg; 19*4882a593Smuzhiyun u32 mcu_ctrl; 20*4882a593Smuzhiyun u32 intr_ctrl0; 21*4882a593Smuzhiyun u32 intr_ctrl1; 22*4882a593Smuzhiyun u32 intr_reserved0; 23*4882a593Smuzhiyun u32 intr_reserved1; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun u32 win0_ctrl0; 26*4882a593Smuzhiyun u32 win0_ctrl1; 27*4882a593Smuzhiyun u32 win0_color_key; 28*4882a593Smuzhiyun u32 win0_vir; 29*4882a593Smuzhiyun u32 win0_yrgb_mst; 30*4882a593Smuzhiyun u32 win0_cbr_mst; 31*4882a593Smuzhiyun u32 win0_act_info; 32*4882a593Smuzhiyun u32 win0_dsp_info; 33*4882a593Smuzhiyun u32 win0_dsp_st; 34*4882a593Smuzhiyun u32 win0_scl_factor_yrgb; 35*4882a593Smuzhiyun u32 win0_scl_factor_cbr; 36*4882a593Smuzhiyun u32 win0_scl_offset; 37*4882a593Smuzhiyun u32 win0_src_alpha_ctrl; 38*4882a593Smuzhiyun u32 win0_dst_alpha_ctrl; 39*4882a593Smuzhiyun u32 win0_fading_ctrl; 40*4882a593Smuzhiyun u32 win0_reserved0; 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun u32 win1_ctrl0; 43*4882a593Smuzhiyun u32 win1_ctrl1; 44*4882a593Smuzhiyun u32 win1_color_key; 45*4882a593Smuzhiyun u32 win1_vir; 46*4882a593Smuzhiyun u32 win1_yrgb_mst; 47*4882a593Smuzhiyun u32 win1_cbr_mst; 48*4882a593Smuzhiyun u32 win1_act_info; 49*4882a593Smuzhiyun u32 win1_dsp_info; 50*4882a593Smuzhiyun u32 win1_dsp_st; 51*4882a593Smuzhiyun u32 win1_scl_factor_yrgb; 52*4882a593Smuzhiyun u32 win1_scl_factor_cbr; 53*4882a593Smuzhiyun u32 win1_scl_offset; 54*4882a593Smuzhiyun u32 win1_src_alpha_ctrl; 55*4882a593Smuzhiyun u32 win1_dst_alpha_ctrl; 56*4882a593Smuzhiyun u32 win1_fading_ctrl; 57*4882a593Smuzhiyun u32 win1_reservd0; 58*4882a593Smuzhiyun u32 reserved2[48]; 59*4882a593Smuzhiyun u32 post_dsp_hact_info; 60*4882a593Smuzhiyun u32 post_dsp_vact_info; 61*4882a593Smuzhiyun u32 post_scl_factor_yrgb; 62*4882a593Smuzhiyun u32 post_reserved; 63*4882a593Smuzhiyun u32 post_scl_ctrl; 64*4882a593Smuzhiyun u32 post_dsp_vact_info_f1; 65*4882a593Smuzhiyun u32 dsp_htotal_hs_end; 66*4882a593Smuzhiyun u32 dsp_hact_st_end; 67*4882a593Smuzhiyun u32 dsp_vtotal_vs_end; 68*4882a593Smuzhiyun u32 dsp_vact_st_end; 69*4882a593Smuzhiyun u32 dsp_vs_st_end_f1; 70*4882a593Smuzhiyun u32 dsp_vact_st_end_f1; 71*4882a593Smuzhiyun }; 72*4882a593Smuzhiyun check_member(rk3288_vop, dsp_vact_st_end_f1, 0x19c); 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun enum rockchip_fb_data_format_t { 75*4882a593Smuzhiyun ARGB8888 = 0, 76*4882a593Smuzhiyun RGB888 = 1, 77*4882a593Smuzhiyun RGB565 = 2, 78*4882a593Smuzhiyun }; 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun enum { 81*4882a593Smuzhiyun LB_YUV_3840X5 = 0x0, 82*4882a593Smuzhiyun LB_YUV_2560X8 = 0x1, 83*4882a593Smuzhiyun LB_RGB_3840X2 = 0x2, 84*4882a593Smuzhiyun LB_RGB_2560X4 = 0x3, 85*4882a593Smuzhiyun LB_RGB_1920X5 = 0x4, 86*4882a593Smuzhiyun LB_RGB_1280X8 = 0x5 87*4882a593Smuzhiyun }; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun enum vop_modes { 90*4882a593Smuzhiyun VOP_MODE_EDP = 0, 91*4882a593Smuzhiyun VOP_MODE_HDMI, 92*4882a593Smuzhiyun VOP_MODE_LVDS, 93*4882a593Smuzhiyun VOP_MODE_MIPI, 94*4882a593Smuzhiyun VOP_MODE_NONE, 95*4882a593Smuzhiyun VOP_MODE_AUTO_DETECT, 96*4882a593Smuzhiyun VOP_MODE_UNKNOWN, 97*4882a593Smuzhiyun }; 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun /* VOP_VERSION_INFO */ 100*4882a593Smuzhiyun #define M_FPGA_VERSION (0xffff << 16) 101*4882a593Smuzhiyun #define M_RTL_VERSION (0xffff) 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun /* VOP_SYS_CTRL */ 104*4882a593Smuzhiyun #define M_AUTO_GATING_EN (1 << 23) 105*4882a593Smuzhiyun #define M_STANDBY_EN (1 << 22) 106*4882a593Smuzhiyun #define M_DMA_STOP (1 << 21) 107*4882a593Smuzhiyun #define M_MMU_EN (1 << 20) 108*4882a593Smuzhiyun #define M_DAM_BURST_LENGTH (0x3 << 18) 109*4882a593Smuzhiyun #define M_MIPI_OUT_EN (1 << 15) 110*4882a593Smuzhiyun #define M_EDP_OUT_EN (1 << 14) 111*4882a593Smuzhiyun #define M_HDMI_OUT_EN (1 << 13) 112*4882a593Smuzhiyun #define M_RGB_OUT_EN (1 << 12) 113*4882a593Smuzhiyun #define M_ALL_OUT_EN \ 114*4882a593Smuzhiyun (M_MIPI_OUT_EN | M_EDP_OUT_EN | M_HDMI_OUT_EN | M_RGB_OUT_EN) 115*4882a593Smuzhiyun #define M_EDPI_WMS_FS (1 << 10) 116*4882a593Smuzhiyun #define M_EDPI_WMS_MODE (1 << 9) 117*4882a593Smuzhiyun #define M_EDPI_HALT_EN (1 << 8) 118*4882a593Smuzhiyun #define M_DOUB_CH_OVERLAP_NUM (0xf << 4) 119*4882a593Smuzhiyun #define M_DOUB_CHANNEL_EN (1 << 3) 120*4882a593Smuzhiyun #define M_DIRECT_PATH_LAYER_SEL (0x3 << 1) 121*4882a593Smuzhiyun #define M_DIRECT_PATH_EN (1) 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun #define V_AUTO_GATING_EN(x) (((x) & 1) << 23) 124*4882a593Smuzhiyun #define V_STANDBY_EN(x) (((x) & 1) << 22) 125*4882a593Smuzhiyun #define V_DMA_STOP(x) (((x) & 1) << 21) 126*4882a593Smuzhiyun #define V_MMU_EN(x) (((x) & 1) << 20) 127*4882a593Smuzhiyun #define V_DMA_BURST_LENGTH(x) (((x) & 3) << 18) 128*4882a593Smuzhiyun #define V_MIPI_OUT_EN(x) (((x) & 1) << 15) 129*4882a593Smuzhiyun #define V_EDP_OUT_EN(x) (((x) & 1) << 14) 130*4882a593Smuzhiyun #define V_HDMI_OUT_EN(x) (((x) & 1) << 13) 131*4882a593Smuzhiyun #define V_RGB_OUT_EN(x) (((x) & 1) << 12) 132*4882a593Smuzhiyun #define V_EDPI_WMS_FS(x) (((x) & 1) << 10) 133*4882a593Smuzhiyun #define V_EDPI_WMS_MODE(x) (((x) & 1) << 9) 134*4882a593Smuzhiyun #define V_EDPI_HALT_EN(x) (((x)&1)<<8) 135*4882a593Smuzhiyun #define V_DOUB_CH_OVERLAP_NUM(x) (((x) & 0xf) << 4) 136*4882a593Smuzhiyun #define V_DOUB_CHANNEL_EN(x) (((x) & 1) << 3) 137*4882a593Smuzhiyun #define V_DIRECT_PATH_LAYER_SEL(x) (((x) & 3) << 1) 138*4882a593Smuzhiyun #define V_DIRECT_PATH_EN(x) ((x) & 1) 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun /* VOP_SYS_CTRL1 */ 141*4882a593Smuzhiyun #define M_AXI_OUTSTANDING_MAX_NUM (0x1f << 13) 142*4882a593Smuzhiyun #define M_AXI_MAX_OUTSTANDING_EN (1 << 12) 143*4882a593Smuzhiyun #define M_NOC_WIN_QOS (3 << 10) 144*4882a593Smuzhiyun #define M_NOC_QOS_EN (1 << 9) 145*4882a593Smuzhiyun #define M_NOC_HURRY_THRESHOLD (0x3f << 3) 146*4882a593Smuzhiyun #define M_NOC_HURRY_VALUE (0x3 << 1) 147*4882a593Smuzhiyun #define M_NOC_HURRY_EN (1) 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun #define V_AXI_OUTSTANDING_MAX_NUM(x) (((x) & 0x1f) << 13) 150*4882a593Smuzhiyun #define V_AXI_MAX_OUTSTANDING_EN(x) (((x) & 1) << 12) 151*4882a593Smuzhiyun #define V_NOC_WIN_QOS(x) (((x) & 3) << 10) 152*4882a593Smuzhiyun #define V_NOC_QOS_EN(x) (((x) & 1) << 9) 153*4882a593Smuzhiyun #define V_NOC_HURRY_THRESHOLD(x) (((x) & 0x3f) << 3) 154*4882a593Smuzhiyun #define V_NOC_HURRY_VALUE(x) (((x) & 3) << 1) 155*4882a593Smuzhiyun #define V_NOC_HURRY_EN(x) ((x) & 1) 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun /* VOP_DSP_CTRL0 */ 158*4882a593Smuzhiyun #define M_DSP_Y_MIR_EN (1 << 23) 159*4882a593Smuzhiyun #define M_DSP_X_MIR_EN (1 << 22) 160*4882a593Smuzhiyun #define M_DSP_YUV_CLIP (1 << 21) 161*4882a593Smuzhiyun #define M_DSP_CCIR656_AVG (1 << 20) 162*4882a593Smuzhiyun #define M_DSP_BLACK_EN (1 << 19) 163*4882a593Smuzhiyun #define M_DSP_BLANK_EN (1 << 18) 164*4882a593Smuzhiyun #define M_DSP_OUT_ZERO (1 << 17) 165*4882a593Smuzhiyun #define M_DSP_DUMMY_SWAP (1 << 16) 166*4882a593Smuzhiyun #define M_DSP_DELTA_SWAP (1 << 15) 167*4882a593Smuzhiyun #define M_DSP_RG_SWAP (1 << 14) 168*4882a593Smuzhiyun #define M_DSP_RB_SWAP (1 << 13) 169*4882a593Smuzhiyun #define M_DSP_BG_SWAP (1 << 12) 170*4882a593Smuzhiyun #define M_DSP_FIELD_POL (1 << 11) 171*4882a593Smuzhiyun #define M_DSP_INTERLACE (1 << 10) 172*4882a593Smuzhiyun #define M_DSP_DDR_PHASE (1 << 9) 173*4882a593Smuzhiyun #define M_DSP_DCLK_DDR (1 << 8) 174*4882a593Smuzhiyun #define M_DSP_DCLK_POL (1 << 7) 175*4882a593Smuzhiyun #define M_DSP_DEN_POL (1 << 6) 176*4882a593Smuzhiyun #define M_DSP_VSYNC_POL (1 << 5) 177*4882a593Smuzhiyun #define M_DSP_HSYNC_POL (1 << 4) 178*4882a593Smuzhiyun #define M_DSP_OUT_MODE (0xf) 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun #define V_DSP_Y_MIR_EN(x) (((x) & 1) << 23) 181*4882a593Smuzhiyun #define V_DSP_X_MIR_EN(x) (((x) & 1) << 22) 182*4882a593Smuzhiyun #define V_DSP_YUV_CLIP(x) (((x) & 1) << 21) 183*4882a593Smuzhiyun #define V_DSP_CCIR656_AVG(x) (((x) & 1) << 20) 184*4882a593Smuzhiyun #define V_DSP_BLACK_EN(x) (((x) & 1) << 19) 185*4882a593Smuzhiyun #define V_DSP_BLANK_EN(x) (((x) & 1) << 18) 186*4882a593Smuzhiyun #define V_DSP_OUT_ZERO(x) (((x) & 1) << 17) 187*4882a593Smuzhiyun #define V_DSP_DUMMY_SWAP(x) (((x) & 1) << 16) 188*4882a593Smuzhiyun #define V_DSP_DELTA_SWAP(x) (((x) & 1) << 15) 189*4882a593Smuzhiyun #define V_DSP_RG_SWAP(x) (((x) & 1) << 14) 190*4882a593Smuzhiyun #define V_DSP_RB_SWAP(x) (((x) & 1) << 13) 191*4882a593Smuzhiyun #define V_DSP_BG_SWAP(x) (((x) & 1) << 12) 192*4882a593Smuzhiyun #define V_DSP_FIELD_POL(x) (((x) & 1) << 11) 193*4882a593Smuzhiyun #define V_DSP_INTERLACE(x) (((x) & 1) << 10) 194*4882a593Smuzhiyun #define V_DSP_DDR_PHASE(x) (((x) & 1) << 9) 195*4882a593Smuzhiyun #define V_DSP_DCLK_DDR(x) (((x) & 1) << 8) 196*4882a593Smuzhiyun #define V_DSP_DCLK_POL(x) (((x) & 1) << 7) 197*4882a593Smuzhiyun #define V_DSP_DEN_POL(x) (((x) & 1) << 6) 198*4882a593Smuzhiyun #define V_DSP_VSYNC_POL(x) (((x) & 1) << 5) 199*4882a593Smuzhiyun #define V_DSP_HSYNC_POL(x) (((x) & 1) << 4) 200*4882a593Smuzhiyun #define V_DSP_PIN_POL(x) (((x) & 0xf) << 4) 201*4882a593Smuzhiyun #define V_DSP_OUT_MODE(x) ((x) & 0xf) 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun /* VOP_DSP_CTRL1 */ 204*4882a593Smuzhiyun #define V_RK3399_DSP_MIPI_POL(x) ((x) << 28) 205*4882a593Smuzhiyun #define V_RK3399_DSP_EDP_POL(x) ((x) << 24) 206*4882a593Smuzhiyun #define V_RK3399_DSP_HDMI_POL(x) ((x) << 20) 207*4882a593Smuzhiyun #define V_RK3399_DSP_LVDS_POL(x) ((x) << 16) 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun #define M_RK3399_DSP_MIPI_POL (V_RK3399_DSP_MIPI_POL(0xf)) 210*4882a593Smuzhiyun #define M_RK3399_DSP_EDP_POL (V_RK3399_DSP_EDP_POL(0xf)) 211*4882a593Smuzhiyun #define M_RK3399_DSP_HDMI_POL (V_RK3399_DSP_HDMI_POL(0xf)) 212*4882a593Smuzhiyun #define M_RK3399_DSP_LVDS_POL (V_RK3399_DSP_LVDS_POL(0xf)) 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun #define M_DSP_LAYER3_SEL (3 << 14) 215*4882a593Smuzhiyun #define M_DSP_LAYER2_SEL (3 << 12) 216*4882a593Smuzhiyun #define M_DSP_LAYER1_SEL (3 << 10) 217*4882a593Smuzhiyun #define M_DSP_LAYER0_SEL (3 << 8) 218*4882a593Smuzhiyun #define M_DITHER_UP_EN (1 << 6) 219*4882a593Smuzhiyun #define M_DITHER_DOWN_SEL (1 << 4) 220*4882a593Smuzhiyun #define M_DITHER_DOWN_MODE (1 << 3) 221*4882a593Smuzhiyun #define M_DITHER_DOWN_EN (1 << 2) 222*4882a593Smuzhiyun #define M_PRE_DITHER_DOWN_EN (1 << 1) 223*4882a593Smuzhiyun #define M_DSP_LUT_EN (1) 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun #define V_DSP_LAYER3_SEL(x) (((x) & 3) << 14) 226*4882a593Smuzhiyun #define V_DSP_LAYER2_SEL(x) (((x) & 3) << 12) 227*4882a593Smuzhiyun #define V_DSP_LAYER1_SEL(x) (((x) & 3) << 10) 228*4882a593Smuzhiyun #define V_DSP_LAYER0_SEL(x) (((x) & 3) << 8) 229*4882a593Smuzhiyun #define V_DITHER_UP_EN(x) (((x) & 1) << 6) 230*4882a593Smuzhiyun #define V_DITHER_DOWN_SEL(x) (((x) & 1) << 4) 231*4882a593Smuzhiyun #define V_DITHER_DOWN_MODE(x) (((x) & 1) << 3) 232*4882a593Smuzhiyun #define V_DITHER_DOWN_EN(x) (((x) & 1) << 2) 233*4882a593Smuzhiyun #define V_PRE_DITHER_DOWN_EN(x) (((x) & 1) << 1) 234*4882a593Smuzhiyun #define V_DSP_LUT_EN(x) ((x)&1) 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun /* VOP_DSP_BG */ 237*4882a593Smuzhiyun #define M_DSP_BG_RED (0x3f << 20) 238*4882a593Smuzhiyun #define M_DSP_BG_GREEN (0x3f << 10) 239*4882a593Smuzhiyun #define M_DSP_BG_BLUE (0x3f << 0) 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun #define V_DSP_BG_RED(x) (((x) & 0x3f) << 20) 242*4882a593Smuzhiyun #define V_DSP_BG_GREEN(x) (((x) & 0x3f) << 10) 243*4882a593Smuzhiyun #define V_DSP_BG_BLUE(x) (((x) & 0x3f) << 0) 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun /* VOP_WIN0_CTRL0 */ 246*4882a593Smuzhiyun #define M_WIN0_YUV_CLIP (1 << 20) 247*4882a593Smuzhiyun #define M_WIN0_CBR_DEFLICK (1 << 19) 248*4882a593Smuzhiyun #define M_WIN0_YRGB_DEFLICK (1 << 18) 249*4882a593Smuzhiyun #define M_WIN0_PPAS_ZERO_EN (1 << 16) 250*4882a593Smuzhiyun #define M_WIN0_UV_SWAP (1 << 15) 251*4882a593Smuzhiyun #define M_WIN0_MID_SWAP (1 << 14) 252*4882a593Smuzhiyun #define M_WIN0_ALPHA_SWAP (1 << 13) 253*4882a593Smuzhiyun #define M_WIN0_RB_SWAP (1 << 12) 254*4882a593Smuzhiyun #define M_WIN0_CSC_MODE (3 << 10) 255*4882a593Smuzhiyun #define M_WIN0_NO_OUTSTANDING (1 << 9) 256*4882a593Smuzhiyun #define M_WIN0_INTERLACE_READ (1 << 8) 257*4882a593Smuzhiyun #define M_WIN0_LB_MODE (7 << 5) 258*4882a593Smuzhiyun #define M_WIN0_FMT_10 (1 << 4) 259*4882a593Smuzhiyun #define M_WIN0_DATA_FMT (7 << 1) 260*4882a593Smuzhiyun #define M_WIN0_EN (1 << 0) 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun #define V_WIN0_YUV_CLIP(x) (((x) & 1) << 20) 263*4882a593Smuzhiyun #define V_WIN0_CBR_DEFLICK(x) (((x) & 1) << 19) 264*4882a593Smuzhiyun #define V_WIN0_YRGB_DEFLICK(x) (((x) & 1) << 18) 265*4882a593Smuzhiyun #define V_WIN0_PPAS_ZERO_EN(x) (((x) & 1) << 16) 266*4882a593Smuzhiyun #define V_WIN0_UV_SWAP(x) (((x) & 1) << 15) 267*4882a593Smuzhiyun #define V_WIN0_MID_SWAP(x) (((x) & 1) << 14) 268*4882a593Smuzhiyun #define V_WIN0_ALPHA_SWAP(x) (((x) & 1) << 13) 269*4882a593Smuzhiyun #define V_WIN0_RB_SWAP(x) (((x) & 1) << 12) 270*4882a593Smuzhiyun #define V_WIN0_CSC_MODE(x) (((x) & 3) << 10) 271*4882a593Smuzhiyun #define V_WIN0_NO_OUTSTANDING(x) (((x) & 1) << 9) 272*4882a593Smuzhiyun #define V_WIN0_INTERLACE_READ(x) (((x) & 1) << 8) 273*4882a593Smuzhiyun #define V_WIN0_LB_MODE(x) (((x) & 7) << 5) 274*4882a593Smuzhiyun #define V_WIN0_FMT_10(x) (((x) & 1) << 4) 275*4882a593Smuzhiyun #define V_WIN0_DATA_FMT(x) (((x) & 7) << 1) 276*4882a593Smuzhiyun #define V_WIN0_EN(x) ((x) & 1) 277*4882a593Smuzhiyun 278*4882a593Smuzhiyun /* VOP_WIN0_CTRL1 */ 279*4882a593Smuzhiyun #define M_WIN0_CBR_VSD_MODE (1 << 31) 280*4882a593Smuzhiyun #define M_WIN0_CBR_VSU_MODE (1 << 30) 281*4882a593Smuzhiyun #define M_WIN0_CBR_HSD_MODE (3 << 28) 282*4882a593Smuzhiyun #define M_WIN0_CBR_VER_SCL_MODE (3 << 26) 283*4882a593Smuzhiyun #define M_WIN0_CBR_HOR_SCL_MODE (3 << 24) 284*4882a593Smuzhiyun #define M_WIN0_YRGB_VSD_MODE (1 << 23) 285*4882a593Smuzhiyun #define M_WIN0_YRGB_VSU_MODE (1 << 22) 286*4882a593Smuzhiyun #define M_WIN0_YRGB_HSD_MODE (3 << 20) 287*4882a593Smuzhiyun #define M_WIN0_YRGB_VER_SCL_MODE (3 << 18) 288*4882a593Smuzhiyun #define M_WIN0_YRGB_HOR_SCL_MODE (3 << 16) 289*4882a593Smuzhiyun #define M_WIN0_LINE_LOAD_MODE (1 << 15) 290*4882a593Smuzhiyun #define M_WIN0_CBR_AXI_GATHER_NUM (7 << 12) 291*4882a593Smuzhiyun #define M_WIN0_YRGB_AXI_GATHER_NUM (0xf << 8) 292*4882a593Smuzhiyun #define M_WIN0_VSD_CBR_GT2 (1 << 7) 293*4882a593Smuzhiyun #define M_WIN0_VSD_CBR_GT4 (1 << 6) 294*4882a593Smuzhiyun #define M_WIN0_VSD_YRGB_GT2 (1 << 5) 295*4882a593Smuzhiyun #define M_WIN0_VSD_YRGB_GT4 (1 << 4) 296*4882a593Smuzhiyun #define M_WIN0_BIC_COE_SEL (3 << 2) 297*4882a593Smuzhiyun #define M_WIN0_CBR_AXI_GATHER_EN (1 << 1) 298*4882a593Smuzhiyun #define M_WIN0_YRGB_AXI_GATHER_EN (1) 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun #define V_WIN0_CBR_VSD_MODE(x) (((x) & 1) << 31) 301*4882a593Smuzhiyun #define V_WIN0_CBR_VSU_MODE(x) (((x) & 1) << 30) 302*4882a593Smuzhiyun #define V_WIN0_CBR_HSD_MODE(x) (((x) & 3) << 28) 303*4882a593Smuzhiyun #define V_WIN0_CBR_VER_SCL_MODE(x) (((x) & 3) << 26) 304*4882a593Smuzhiyun #define V_WIN0_CBR_HOR_SCL_MODE(x) (((x) & 3) << 24) 305*4882a593Smuzhiyun #define V_WIN0_YRGB_VSD_MODE(x) (((x) & 1) << 23) 306*4882a593Smuzhiyun #define V_WIN0_YRGB_VSU_MODE(x) (((x) & 1) << 22) 307*4882a593Smuzhiyun #define V_WIN0_YRGB_HSD_MODE(x) (((x) & 3) << 20) 308*4882a593Smuzhiyun #define V_WIN0_YRGB_VER_SCL_MODE(x) (((x) & 3) << 18) 309*4882a593Smuzhiyun #define V_WIN0_YRGB_HOR_SCL_MODE(x) (((x) & 3) << 16) 310*4882a593Smuzhiyun #define V_WIN0_LINE_LOAD_MODE(x) (((x) & 1) << 15) 311*4882a593Smuzhiyun #define V_WIN0_CBR_AXI_GATHER_NUM(x) (((x) & 7) << 12) 312*4882a593Smuzhiyun #define V_WIN0_YRGB_AXI_GATHER_NUM(x) (((x) & 0xf) << 8) 313*4882a593Smuzhiyun #define V_WIN0_VSD_CBR_GT2(x) (((x) & 1) << 7) 314*4882a593Smuzhiyun #define V_WIN0_VSD_CBR_GT4(x) (((x) & 1) << 6) 315*4882a593Smuzhiyun #define V_WIN0_VSD_YRGB_GT2(x) (((x) & 1) << 5) 316*4882a593Smuzhiyun #define V_WIN0_VSD_YRGB_GT4(x) (((x) & 1) << 4) 317*4882a593Smuzhiyun #define V_WIN0_BIC_COE_SEL(x) (((x) & 3) << 2) 318*4882a593Smuzhiyun #define V_WIN0_CBR_AXI_GATHER_EN(x) (((x) & 1) << 1) 319*4882a593Smuzhiyun #define V_WIN0_YRGB_AXI_GATHER_EN(x) ((x) & 1) 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun /*VOP_WIN0_COLOR_KEY*/ 322*4882a593Smuzhiyun #define M_WIN0_KEY_EN (1 << 31) 323*4882a593Smuzhiyun #define M_WIN0_KEY_COLOR (0x3fffffff) 324*4882a593Smuzhiyun 325*4882a593Smuzhiyun #define V_WIN0_KEY_EN(x) (((x) & 1) << 31) 326*4882a593Smuzhiyun #define V_WIN0_KEY_COLOR(x) ((x) & 0x3fffffff) 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun /* VOP_WIN0_VIR */ 329*4882a593Smuzhiyun #define V_ARGB888_VIRWIDTH(x) (((x) & 0x3fff) << 0) 330*4882a593Smuzhiyun #define V_RGB888_VIRWIDTH(x) (((((x * 3) >> 2)+((x) % 3)) & 0x3fff) << 0) 331*4882a593Smuzhiyun #define V_RGB565_VIRWIDTH(x) (((x / 2) & 0x3fff) << 0) 332*4882a593Smuzhiyun #define YUV_VIRWIDTH(x) (((x / 4) & 0x3fff) << 0) 333*4882a593Smuzhiyun 334*4882a593Smuzhiyun /* VOP_WIN0_ACT_INFO */ 335*4882a593Smuzhiyun #define V_ACT_HEIGHT(x) (((x) & 0x1fff) << 16) 336*4882a593Smuzhiyun #define V_ACT_WIDTH(x) ((x) & 0x1fff) 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun /* VOP_WIN0_DSP_INFO */ 339*4882a593Smuzhiyun #define V_DSP_HEIGHT(x) (((x) & 0xfff) << 16) 340*4882a593Smuzhiyun #define V_DSP_WIDTH(x) ((x) & 0xfff) 341*4882a593Smuzhiyun 342*4882a593Smuzhiyun /* VOP_WIN0_DSP_ST */ 343*4882a593Smuzhiyun #define V_DSP_YST(x) (((x) & 0x1fff) << 16) 344*4882a593Smuzhiyun #define V_DSP_XST(x) ((x) & 0x1fff) 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun /* VOP_WIN0_SCL_OFFSET */ 347*4882a593Smuzhiyun #define V_WIN0_VS_OFFSET_CBR(x) (((x) & 0xff) << 24) 348*4882a593Smuzhiyun #define V_WIN0_VS_OFFSET_YRGB(x) (((x) & 0xff) << 16) 349*4882a593Smuzhiyun #define V_WIN0_HS_OFFSET_CBR(x) (((x) & 0xff) << 8) 350*4882a593Smuzhiyun #define V_WIN0_HS_OFFSET_YRGB(x) ((x) & 0xff) 351*4882a593Smuzhiyun 352*4882a593Smuzhiyun #define V_HSYNC(x) (((x)&0x1fff)<<0) /* hsync pulse width */ 353*4882a593Smuzhiyun #define V_HORPRD(x) (((x)&0x1fff)<<16) /* horizontal period */ 354*4882a593Smuzhiyun #define V_VSYNC(x) (((x)&0x1fff)<<0) 355*4882a593Smuzhiyun #define V_VERPRD(x) (((x)&0x1fff)<<16) 356*4882a593Smuzhiyun 357*4882a593Smuzhiyun #define V_HEAP(x) (((x)&0x1fff)<<0)/* horizontal active end */ 358*4882a593Smuzhiyun #define V_HASP(x) (((x)&0x1fff)<<16)/* horizontal active start */ 359*4882a593Smuzhiyun #define V_VAEP(x) (((x)&0x1fff)<<0) 360*4882a593Smuzhiyun #define V_VASP(x) (((x)&0x1fff)<<16) 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun #endif 363