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