1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 /* Register map for Exynos5 DP */ 4 5 #ifndef CPU_SAMSUNG_EXYNOS5420_DP_H 6 #define CPU_SAMSUNG_EXYNOS5420_DP_H 7 8 #include <soc/cpu.h> 9 10 /* DSIM register map */ 11 struct exynos_dp { 12 u8 res1[0x10]; 13 u32 tx_version; 14 u32 tx_sw_reset; 15 u32 func_en1; 16 u32 func_en2; 17 u32 video_ctl1; 18 u32 video_ctl2; 19 u32 video_ctl3; 20 u32 video_ctl4; 21 u32 color_blue_cb; 22 u32 color_green_y; 23 u32 color_red_cr; 24 u32 video_ctl8; 25 u8 res2[0x4]; 26 u32 video_ctl10; 27 u32 total_ln_cfg_l; 28 u32 total_ln_cfg_h; 29 u32 active_ln_cfg_l; 30 u32 active_ln_cfg_h; 31 u32 vfp_cfg; 32 u32 vsw_cfg; 33 u32 vbp_cfg; 34 u32 total_pix_cfg_l; 35 u32 total_pix_cfg_h; 36 u32 active_pix_cfg_l; 37 u32 active_pix_cfg_h; 38 u32 hfp_cfg_l; 39 u32 hfp_cfg_h; 40 u32 hsw_cfg_l; 41 u32 hsw_cfg_h; 42 u32 hbp_cfg_l; 43 u32 hbp_cfg_h; 44 u32 video_status; 45 u32 total_ln_sta_l; 46 u32 total_ln_sta_h; 47 u32 active_ln_sta_l; 48 u32 active_ln_sta_h; 49 50 u32 vfp_sta; 51 u32 vsw_sta; 52 u32 vbp_sta; 53 54 u32 total_pix_sta_l; 55 u32 total_pix_sta_h; 56 u32 active_pix_sta_l; 57 u32 active_pix_sta_h; 58 59 u32 hfp_sta_l; 60 u32 hfp_sta_h; 61 u32 hsw_sta_l; 62 u32 hsw_sta_h; 63 u32 hbp_sta_l; 64 u32 hbp_sta_h; 65 66 u8 res3[0x288]; 67 68 u32 lane_map; 69 u8 res4[0x10]; 70 u32 analog_ctl1; 71 u32 analog_ctl2; 72 u32 analog_ctl3; 73 74 u32 pll_filter_ctl1; 75 u32 amp_tuning_ctl; 76 u8 res5[0xc]; 77 78 u32 aux_hw_retry_ctl; 79 u8 res6[0x2c]; 80 u32 int_state; 81 u32 common_int_sta1; 82 u32 common_int_sta2; 83 u32 common_int_sta3; 84 u32 common_int_sta4; 85 u8 res7[0x8]; 86 87 u32 int_sta; 88 u8 res8[0x1c]; 89 u32 int_ctl; 90 u8 res9[0x200]; 91 u32 sys_ctl1; 92 u32 sys_ctl2; 93 u32 sys_ctl3; 94 u32 sys_ctl4; 95 u32 vid_ctl; 96 u8 res10[0x2c]; 97 u32 pkt_send_ctl; 98 u8 res[0x4]; 99 u32 hdcp_ctl; 100 u8 res11[0x34]; 101 u32 link_bw_set; 102 103 u32 lane_count_set; 104 u32 training_ptn_set; 105 u32 ln0_link_training_ctl; 106 u32 ln1_link_training_ctl; 107 u32 ln2_link_training_ctl; 108 u32 ln3_link_training_ctl; 109 u32 dn_spread_ctl; 110 u32 hw_link_training_ctl; 111 u8 res12[0x1c]; 112 113 u32 debug_ctl; 114 u32 hpd_deglitch_l; 115 u32 hpd_deglitch_h; 116 117 u8 res13[0x14]; 118 u32 link_debug_ctl; 119 120 u8 res14[0x1c]; 121 122 u32 m_vid0; 123 u32 m_vid1; 124 u32 m_vid2; 125 u32 n_vid0; 126 u32 n_vid1; 127 u32 n_vid2; 128 u32 m_vid_mon; 129 u32 pll_ctl; 130 u32 phy_pd; 131 u32 phy_test; 132 u8 res15[0x8]; 133 134 u32 video_fifo_thrd; 135 u8 res16[0x8]; 136 u32 audio_margin; 137 138 u32 dn_spread_ctl1; 139 u32 dn_spread_ctl2; 140 u8 res17[0x18]; 141 u32 m_cal_ctl; 142 u32 m_vid_gen_filter_th; 143 u8 res18[0x10]; 144 u32 m_aud_gen_filter_th; 145 u8 res50[0x4]; 146 147 u32 aux_ch_sta; 148 u32 aux_err_num; 149 u32 aux_ch_defer_ctl; 150 u32 aux_rx_comm; 151 u32 buffer_data_ctl; 152 153 u32 aux_ch_ctl1; 154 u32 aux_addr_7_0; 155 u32 aux_addr_15_8; 156 u32 aux_addr_19_16; 157 u32 aux_ch_ctl2; 158 u8 res19[0x18]; 159 u32 buf_data0; 160 u8 res20[0x3c]; 161 162 u32 soc_general_ctl; 163 u8 res21[0x8c]; 164 u32 crc_con; 165 u32 crc_result; 166 u8 res22[0x8]; 167 168 u32 common_int_mask1; 169 u32 common_int_mask2; 170 u32 common_int_mask3; 171 u32 common_int_mask4; 172 u32 int_sta_mask1; 173 u32 int_sta_mask2; 174 u32 int_sta_mask3; 175 u32 int_sta_mask4; 176 u32 int_sta_mask; 177 u32 crc_result2; 178 u32 scrambler_reset_cnt; 179 180 u32 pn_inv; 181 u32 psr_config; 182 u32 psr_command0; 183 u32 psr_command1; 184 u32 psr_crc_mon0; 185 u32 psr_crc_mon1; 186 187 u8 res24[0x30]; 188 u32 phy_bist_ctrl; 189 u8 res25[0xc]; 190 u32 phy_ctrl; 191 u8 res26[0x1c]; 192 u32 test_pattern_gen_en; 193 u32 test_pattern_gen_ctrl; 194 }; 195 check_member(exynos_dp, phy_ctrl, 0x924); 196 197 static struct exynos_dp * const exynos_dp0 = (void *)EXYNOS5_DP0_BASE; 198 static struct exynos_dp * const exynos_dp1 = (void *)EXYNOS5_DP1_BASE; 199 200 /* For DP VIDEO CTL 1 */ 201 #define VIDEO_EN_MASK (0x01 << 7) 202 #define VIDEO_MUTE_MASK (0x01 << 6) 203 204 /* For DP VIDEO CTL 4 */ 205 #define VIDEO_BIST_MASK (0x1 << 3) 206 207 /* EXYNOS_DP_ANALOG_CTL_1 */ 208 #define SEL_BG_NEW_BANDGAP (0x0 << 6) 209 #define SEL_BG_INTERNAL_RESISTOR (0x1 << 6) 210 #define TX_TERMINAL_CTRL_73_OHM (0x0 << 4) 211 #define TX_TERMINAL_CTRL_61_OHM (0x1 << 4) 212 #define TX_TERMINAL_CTRL_50_OHM (0x2 << 4) 213 #define TX_TERMINAL_CTRL_45_OHM (0x3 << 4) 214 #define SWING_A_30PER_G_INCREASE (0x1 << 3) 215 #define SWING_A_30PER_G_NORMAL (0x0 << 3) 216 217 /* EXYNOS_DP_ANALOG_CTL_2 */ 218 #define CPREG_BLEED (0x1 << 4) 219 #define SEL_24M (0x1 << 3) 220 #define TX_DVDD_BIT_1_0000V (0x3 << 0) 221 #define TX_DVDD_BIT_1_0625V (0x4 << 0) 222 #define TX_DVDD_BIT_1_1250V (0x5 << 0) 223 224 /* EXYNOS_DP_ANALOG_CTL_3 */ 225 #define DRIVE_DVDD_BIT_1_0000V (0x3 << 5) 226 #define DRIVE_DVDD_BIT_1_0625V (0x4 << 5) 227 #define DRIVE_DVDD_BIT_1_1250V (0x5 << 5) 228 #define SEL_CURRENT_DEFAULT (0x0 << 3) 229 #define VCO_BIT_000_MICRO (0x0 << 0) 230 #define VCO_BIT_200_MICRO (0x1 << 0) 231 #define VCO_BIT_300_MICRO (0x2 << 0) 232 #define VCO_BIT_400_MICRO (0x3 << 0) 233 #define VCO_BIT_500_MICRO (0x4 << 0) 234 #define VCO_BIT_600_MICRO (0x5 << 0) 235 #define VCO_BIT_700_MICRO (0x6 << 0) 236 #define VCO_BIT_900_MICRO (0x7 << 0) 237 238 /* EXYNOS_DP_PLL_FILTER_CTL_1 */ 239 #define PD_RING_OSC (0x1 << 6) 240 #define AUX_TERMINAL_CTRL_52_OHM (0x3 << 4) 241 #define AUX_TERMINAL_CTRL_69_OHM (0x2 << 4) 242 #define AUX_TERMINAL_CTRL_102_OHM (0x1 << 4) 243 #define AUX_TERMINAL_CTRL_200_OHM (0x0 << 4) 244 #define TX_CUR1_1X (0x0 << 2) 245 #define TX_CUR1_2X (0x1 << 2) 246 #define TX_CUR1_3X (0x2 << 2) 247 #define TX_CUR_1_MA (0x0 << 0) 248 #define TX_CUR_2_MA (0x1 << 0) 249 #define TX_CUR_3_MA (0x2 << 0) 250 #define TX_CUR_4_MA (0x3 << 0) 251 252 /* EXYNOS_DP_PLL_FILTER_CTL_2 */ 253 #define CH3_AMP_0_MV (0x3 << 12) 254 #define CH2_AMP_0_MV (0x3 << 8) 255 #define CH1_AMP_0_MV (0x3 << 4) 256 #define CH0_AMP_0_MV (0x3 << 0) 257 258 /* EXYNOS_DP_PLL_CTL */ 259 #define DP_PLL_PD (0x1 << 7) 260 #define DP_PLL_RESET (0x1 << 6) 261 #define DP_PLL_LOOP_BIT_DEFAULT (0x1 << 4) 262 #define DP_PLL_REF_BIT_1_1250V (0x5 << 0) 263 #define DP_PLL_REF_BIT_1_2500V (0x7 << 0) 264 265 /* EXYNOS_DP_INT_CTL */ 266 #define SOFT_INT_CTRL (0x1 << 2) 267 #define INT_POL (0x1 << 0) 268 269 /* DP TX SW RESET */ 270 #define RESET_DP_TX (0x01 << 0) 271 272 /* DP FUNC_EN_1 */ 273 #define MASTER_VID_FUNC_EN_N (0x1 << 7) 274 #define SLAVE_VID_FUNC_EN_N (0x1 << 5) 275 #define AUD_FIFO_FUNC_EN_N (0x1 << 4) 276 #define AUD_FUNC_EN_N (0x1 << 3) 277 #define HDCP_FUNC_EN_N (0x1 << 2) 278 #define CRC_FUNC_EN_N (0x1 << 1) 279 #define SW_FUNC_EN_N (0x1 << 0) 280 281 /* DP FUNC_EN_2 */ 282 #define SSC_FUNC_EN_N (0x1 << 7) 283 #define AUX_FUNC_EN_N (0x1 << 2) 284 #define SERDES_FIFO_FUNC_EN_N (0x1 << 1) 285 #define LS_CLK_DOMAIN_FUNC_EN_N (0x1 << 0) 286 287 /* EXYNOS_DP_PHY_PD */ 288 #define PHY_PD (0x1 << 5) 289 #define AUX_PD (0x1 << 4) 290 #define CH3_PD (0x1 << 3) 291 #define CH2_PD (0x1 << 2) 292 #define CH1_PD (0x1 << 1) 293 #define CH0_PD (0x1 << 0) 294 295 /* EXYNOS_DP_COMMON_INT_STA_1 */ 296 #define VSYNC_DET (0x1 << 7) 297 #define PLL_LOCK_CHG (0x1 << 6) 298 #define SPDIF_ERR (0x1 << 5) 299 #define SPDIF_UNSTBL (0x1 << 4) 300 #define VID_FORMAT_CHG (0x1 << 3) 301 #define AUD_CLK_CHG (0x1 << 2) 302 #define VID_CLK_CHG (0x1 << 1) 303 #define SW_INT (0x1 << 0) 304 305 /* EXYNOS_DP_DEBUG_CTL */ 306 #define PLL_LOCK (0x1 << 4) 307 #define F_PLL_LOCK (0x1 << 3) 308 #define PLL_LOCK_CTRL (0x1 << 2) 309 310 /* EXYNOS_DP_FUNC_EN_2 */ 311 #define SSC_FUNC_EN_N (0x1 << 7) 312 #define AUX_FUNC_EN_N (0x1 << 2) 313 #define SERDES_FIFO_FUNC_EN_N (0x1 << 1) 314 #define LS_CLK_DOMAIN_FUNC_EN_N (0x1 << 0) 315 316 /* EXYNOS_DP_COMMON_INT_STA_4 */ 317 #define PSR_ACTIVE (0x1 << 7) 318 #define PSR_INACTIVE (0x1 << 6) 319 #define SPDIF_BI_PHASE_ERR (0x1 << 5) 320 #define HOTPLUG_CHG (0x1 << 2) 321 #define HPD_LOST (0x1 << 1) 322 #define PLUG (0x1 << 0) 323 324 /* EXYNOS_DP_INT_STA */ 325 #define INT_HPD (0x1 << 6) 326 #define HW_TRAINING_FINISH (0x1 << 5) 327 #define RPLY_RECEIV (0x1 << 1) 328 #define AUX_ERR (0x1 << 0) 329 330 /* EXYNOS_DP_SYS_CTL_3 */ 331 #define HPD_STATUS (0x1 << 6) 332 #define F_HPD (0x1 << 5) 333 #define HPD_CTRL (0x1 << 4) 334 #define HDCP_RDY (0x1 << 3) 335 #define STRM_VALID (0x1 << 2) 336 #define F_VALID (0x1 << 1) 337 #define VALID_CTRL (0x1 << 0) 338 339 /* EXYNOS_DP_AUX_HW_RETRY_CTL */ 340 #define AUX_BIT_PERIOD_EXPECTED_DELAY(x) (((x) & 0x7) << 8) 341 #define AUX_HW_RETRY_INTERVAL_MASK (0x3 << 3) 342 #define AUX_HW_RETRY_INTERVAL_600_MICROSECONDS (0x0 << 3) 343 #define AUX_HW_RETRY_INTERVAL_800_MICROSECONDS (0x1 << 3) 344 #define AUX_HW_RETRY_INTERVAL_1000_MICROSECONDS (0x2 << 3) 345 #define AUX_HW_RETRY_INTERVAL_1800_MICROSECONDS (0x3 << 3) 346 #define AUX_HW_RETRY_COUNT_SEL(x) (((x) & 0x7) << 0) 347 348 /* EXYNOS_DP_AUX_CH_DEFER_CTL */ 349 #define DEFER_CTRL_EN (0x1 << 7) 350 #define DEFER_COUNT(x) (((x) & 0x7f) << 0) 351 352 #define COMMON_INT_MASK_1 (0) 353 #define COMMON_INT_MASK_2 (0) 354 #define COMMON_INT_MASK_3 (0) 355 #define COMMON_INT_MASK_4 (0) 356 #define INT_STA_MASK (0) 357 358 /* EXYNOS_DP_BUFFER_DATA_CTL */ 359 #define BUF_CLR (0x1 << 7) 360 #define BUF_DATA_COUNT(x) (((x) & 0x1f) << 0) 361 362 /* EXYNOS_DP_AUX_ADDR_7_0 */ 363 #define AUX_ADDR_7_0(x) (((x) >> 0) & 0xff) 364 365 /* EXYNOS_DP_AUX_ADDR_15_8 */ 366 #define AUX_ADDR_15_8(x) (((x) >> 8) & 0xff) 367 368 /* EXYNOS_DP_AUX_ADDR_19_16 */ 369 #define AUX_ADDR_19_16(x) (((x) >> 16) & 0x0f) 370 371 /* EXYNOS_DP_AUX_CH_CTL_1 */ 372 #define AUX_LENGTH(x) (((x - 1) & 0xf) << 4) 373 #define AUX_TX_COMM_MASK (0xf << 0) 374 #define AUX_TX_COMM_DP_TRANSACTION (0x1 << 3) 375 #define AUX_TX_COMM_I2C_TRANSACTION (0x0 << 3) 376 #define AUX_TX_COMM_MOT (0x1 << 2) 377 #define AUX_TX_COMM_WRITE (0x0 << 0) 378 #define AUX_TX_COMM_READ (0x1 << 0) 379 380 /* EXYNOS_DP_AUX_CH_CTL_2 */ 381 #define ADDR_ONLY (0x1 << 1) 382 #define AUX_EN (0x1 << 0) 383 384 /* EXYNOS_DP_AUX_CH_STA */ 385 #define AUX_BUSY (0x1 << 4) 386 #define AUX_STATUS_MASK (0xf << 0) 387 388 /* EXYNOS_DP_AUX_RX_COMM */ 389 #define AUX_RX_COMM_I2C_DEFER (0x2 << 2) 390 #define AUX_RX_COMM_AUX_DEFER (0x2 << 0) 391 392 /* EXYNOS_DP_PHY_TEST */ 393 #define MACRO_RST (0x1 << 5) 394 #define CH1_TEST (0x1 << 1) 395 #define CH0_TEST (0x1 << 0) 396 397 /* EXYNOS_DP_TRAINING_PTN_SET */ 398 #define SCRAMBLER_TYPE (0x1 << 9) 399 #define HW_LINK_TRAINING_PATTERN (0x1 << 8) 400 #define SCRAMBLING_DISABLE (0x1 << 5) 401 #define SCRAMBLING_ENABLE (0x0 << 5) 402 #define LINK_QUAL_PATTERN_SET_MASK (0x3 << 2) 403 #define LINK_QUAL_PATTERN_SET_PRBS7 (0x3 << 2) 404 #define LINK_QUAL_PATTERN_SET_D10_2 (0x1 << 2) 405 #define LINK_QUAL_PATTERN_SET_DISABLE (0x0 << 2) 406 #define SW_TRAINING_PATTERN_SET_MASK (0x3 << 0) 407 #define SW_TRAINING_PATTERN_SET_PTN2 (0x2 << 0) 408 #define SW_TRAINING_PATTERN_SET_PTN1 (0x1 << 0) 409 #define SW_TRAINING_PATTERN_SET_NORMAL (0x0 << 0) 410 411 /* EXYNOS_DP_TOTAL_LINE_CFG */ 412 #define TOTAL_LINE_CFG_L(x) ((x) & 0xff) 413 #define TOTAL_LINE_CFG_H(x) ((((x) >> 8)) & 0xff) 414 #define ACTIVE_LINE_CFG_L(x) ((x) & 0xff) 415 #define ACTIVE_LINE_CFG_H(x) (((x) >> 8) & 0xff) 416 #define TOTAL_PIXEL_CFG_L(x) ((x) & 0xff) 417 #define TOTAL_PIXEL_CFG_H(x) ((((x) >> 8)) & 0xff) 418 #define ACTIVE_PIXEL_CFG_L(x) ((x) & 0xff) 419 #define ACTIVE_PIXEL_CFG_H(x) ((((x) >> 8)) & 0xff) 420 421 #define H_F_PORCH_CFG_L(x) ((x) & 0xff) 422 #define H_F_PORCH_CFG_H(x) ((((x) >> 8)) & 0xff) 423 #define H_SYNC_PORCH_CFG_L(x) ((x) & 0xff) 424 #define H_SYNC_PORCH_CFG_H(x) ((((x) >> 8)) & 0xff) 425 #define H_B_PORCH_CFG_L(x) ((x) & 0xff) 426 #define H_B_PORCH_CFG_H(x) ((((x) >> 8)) & 0xff) 427 428 /* EXYNOS_DP_LN0_LINK_TRAINING_CTL */ 429 #define MAX_PRE_EMPHASIS_REACH_0 (0x1 << 5) 430 #define PRE_EMPHASIS_SET_0_SET(x) (((x) & 0x3) << 3) 431 #define PRE_EMPHASIS_SET_0_GET(x) (((x) >> 3) & 0x3) 432 #define PRE_EMPHASIS_SET_0_MASK (0x3 << 3) 433 #define PRE_EMPHASIS_SET_0_SHIFT (3) 434 #define PRE_EMPHASIS_SET_0_LEVEL_3 (0x3 << 3) 435 #define PRE_EMPHASIS_SET_0_LEVEL_2 (0x2 << 3) 436 #define PRE_EMPHASIS_SET_0_LEVEL_1 (0x1 << 3) 437 #define PRE_EMPHASIS_SET_0_LEVEL_0 (0x0 << 3) 438 #define MAX_DRIVE_CURRENT_REACH_0 (0x1 << 2) 439 #define DRIVE_CURRENT_SET_0_MASK (0x3 << 0) 440 #define DRIVE_CURRENT_SET_0_SET(x) (((x) & 0x3) << 0) 441 #define DRIVE_CURRENT_SET_0_GET(x) (((x) >> 0) & 0x3) 442 #define DRIVE_CURRENT_SET_0_LEVEL_3 (0x3 << 0) 443 #define DRIVE_CURRENT_SET_0_LEVEL_2 (0x2 << 0) 444 #define DRIVE_CURRENT_SET_0_LEVEL_1 (0x1 << 0) 445 #define DRIVE_CURRENT_SET_0_LEVEL_0 (0x0 << 0) 446 447 /* EXYNOS_DP_LN1_LINK_TRAINING_CTL */ 448 #define MAX_PRE_EMPHASIS_REACH_1 (0x1 << 5) 449 #define PRE_EMPHASIS_SET_1_SET(x) (((x) & 0x3) << 3) 450 #define PRE_EMPHASIS_SET_1_GET(x) (((x) >> 3) & 0x3) 451 #define PRE_EMPHASIS_SET_1_MASK (0x3 << 3) 452 #define PRE_EMPHASIS_SET_1_SHIFT (3) 453 #define PRE_EMPHASIS_SET_1_LEVEL_3 (0x3 << 3) 454 #define PRE_EMPHASIS_SET_1_LEVEL_2 (0x2 << 3) 455 #define PRE_EMPHASIS_SET_1_LEVEL_1 (0x1 << 3) 456 #define PRE_EMPHASIS_SET_1_LEVEL_0 (0x0 << 3) 457 #define MAX_DRIVE_CURRENT_REACH_1 (0x1 << 2) 458 #define DRIVE_CURRENT_SET_1_MASK (0x3 << 0) 459 #define DRIVE_CURRENT_SET_1_SET(x) (((x) & 0x3) << 0) 460 #define DRIVE_CURRENT_SET_1_GET(x) (((x) >> 0) & 0x3) 461 #define DRIVE_CURRENT_SET_1_LEVEL_3 (0x3 << 0) 462 #define DRIVE_CURRENT_SET_1_LEVEL_2 (0x2 << 0) 463 #define DRIVE_CURRENT_SET_1_LEVEL_1 (0x1 << 0) 464 #define DRIVE_CURRENT_SET_1_LEVEL_0 (0x0 << 0) 465 466 /* EXYNOS_DP_LN2_LINK_TRAINING_CTL */ 467 #define MAX_PRE_EMPHASIS_REACH_2 (0x1 << 5) 468 #define PRE_EMPHASIS_SET_2_SET(x) (((x) & 0x3) << 3) 469 #define PRE_EMPHASIS_SET_2_GET(x) (((x) >> 3) & 0x3) 470 #define PRE_EMPHASIS_SET_2_MASK (0x3 << 3) 471 #define PRE_EMPHASIS_SET_2_SHIFT (3) 472 #define PRE_EMPHASIS_SET_2_LEVEL_3 (0x3 << 3) 473 #define PRE_EMPHASIS_SET_2_LEVEL_2 (0x2 << 3) 474 #define PRE_EMPHASIS_SET_2_LEVEL_1 (0x1 << 3) 475 #define PRE_EMPHASIS_SET_2_LEVEL_0 (0x0 << 3) 476 #define MAX_DRIVE_CURRENT_REACH_2 (0x1 << 2) 477 #define DRIVE_CURRENT_SET_2_MASK (0x3 << 0) 478 #define DRIVE_CURRENT_SET_2_SET(x) (((x) & 0x3) << 0) 479 #define DRIVE_CURRENT_SET_2_GET(x) (((x) >> 0) & 0x3) 480 #define DRIVE_CURRENT_SET_2_LEVEL_3 (0x3 << 0) 481 #define DRIVE_CURRENT_SET_2_LEVEL_2 (0x2 << 0) 482 #define DRIVE_CURRENT_SET_2_LEVEL_1 (0x1 << 0) 483 #define DRIVE_CURRENT_SET_2_LEVEL_0 (0x0 << 0) 484 485 /* EXYNOS_DP_LN3_LINK_TRAINING_CTL */ 486 #define MAX_PRE_EMPHASIS_REACH_3 (0x1 << 5) 487 #define PRE_EMPHASIS_SET_3_SET(x) (((x) & 0x3) << 3) 488 #define PRE_EMPHASIS_SET_3_GET(x) (((x) >> 3) & 0x3) 489 #define PRE_EMPHASIS_SET_3_MASK (0x3 << 3) 490 #define PRE_EMPHASIS_SET_3_SHIFT (3) 491 #define PRE_EMPHASIS_SET_3_LEVEL_3 (0x3 << 3) 492 #define PRE_EMPHASIS_SET_3_LEVEL_2 (0x2 << 3) 493 #define PRE_EMPHASIS_SET_3_LEVEL_1 (0x1 << 3) 494 #define PRE_EMPHASIS_SET_3_LEVEL_0 (0x0 << 3) 495 #define MAX_DRIVE_CURRENT_REACH_3 (0x1 << 2) 496 #define DRIVE_CURRENT_SET_3_MASK (0x3 << 0) 497 #define DRIVE_CURRENT_SET_3_SET(x) (((x) & 0x3) << 0) 498 #define DRIVE_CURRENT_SET_3_GET(x) (((x) >> 0) & 0x3) 499 #define DRIVE_CURRENT_SET_3_LEVEL_3 (0x3 << 0) 500 #define DRIVE_CURRENT_SET_3_LEVEL_2 (0x2 << 0) 501 #define DRIVE_CURRENT_SET_3_LEVEL_1 (0x1 << 0) 502 #define DRIVE_CURRENT_SET_3_LEVEL_0 (0x0 << 0) 503 504 /* EXYNOS_DP_VIDEO_CTL_10 */ 505 #define FORMAT_SEL (0x1 << 4) 506 #define INTERACE_SCAN_CFG (0x1 << 2) 507 #define INTERACE_SCAN_CFG_SHIFT (2) 508 #define VSYNC_POLARITY_CFG (0x1 << 1) 509 #define V_S_POLARITY_CFG_SHIFT (1) 510 #define HSYNC_POLARITY_CFG (0x1 << 0) 511 #define H_S_POLARITY_CFG_SHIFT (0) 512 513 /* EXYNOS_DP_SOC_GENERAL_CTL */ 514 #define AUDIO_MODE_SPDIF_MODE (0x1 << 8) 515 #define AUDIO_MODE_MASTER_MODE (0x0 << 8) 516 #define MASTER_VIDEO_INTERLACE_EN (0x1 << 4) 517 #define VIDEO_MASTER_CLK_SEL (0x1 << 2) 518 #define VIDEO_MASTER_MODE_EN (0x1 << 1) 519 #define VIDEO_MODE_MASK (0x1 << 0) 520 #define VIDEO_MODE_SLAVE_MODE (0x1 << 0) 521 #define VIDEO_MODE_MASTER_MODE (0x0 << 0) 522 523 /* EXYNOS_DP_VIDEO_CTL_1 */ 524 #define VIDEO_EN (0x1 << 7) 525 #define HDCP_VIDEO_MUTE (0x1 << 6) 526 527 /* EXYNOS_DP_VIDEO_CTL_2 */ 528 #define IN_D_RANGE_MASK (0x1 << 7) 529 #define IN_D_RANGE_SHIFT (7) 530 #define IN_D_RANGE_CEA (0x1 << 7) 531 #define IN_D_RANGE_VESA (0x0 << 7) 532 #define IN_BPC_MASK (0x7 << 4) 533 #define IN_BPC_SHIFT (4) 534 #define IN_BPC_12_BITS (0x3 << 4) 535 #define IN_BPC_10_BITS (0x2 << 4) 536 #define IN_BPC_8_BITS (0x1 << 4) 537 #define IN_BPC_6_BITS (0x0 << 4) 538 #define IN_COLOR_F_MASK (0x3 << 0) 539 #define IN_COLOR_F_SHIFT (0) 540 #define IN_COLOR_F_YCBCR444 (0x2 << 0) 541 #define IN_COLOR_F_YCBCR422 (0x1 << 0) 542 #define IN_COLOR_F_RGB (0x0 << 0) 543 544 /* EXYNOS_DP_VIDEO_CTL_3 */ 545 #define IN_YC_COEFFI_MASK (0x1 << 7) 546 #define IN_YC_COEFFI_SHIFT (7) 547 #define IN_YC_COEFFI_ITU709 (0x1 << 7) 548 #define IN_YC_COEFFI_ITU601 (0x0 << 7) 549 #define VID_CHK_UPDATE_TYPE_MASK (0x1 << 4) 550 #define VID_CHK_UPDATE_TYPE_SHIFT (4) 551 #define VID_CHK_UPDATE_TYPE_1 (0x1 << 4) 552 #define VID_CHK_UPDATE_TYPE_0 (0x0 << 4) 553 554 /* EXYNOS_DP_TEST_PATTERN_GEN_EN */ 555 #define TEST_PATTERN_GEN_EN (0x1 << 0) 556 #define TEST_PATTERN_GEN_DIS (0x0 << 0) 557 558 /* EXYNOS_DP_TEST_PATTERN_GEN_CTRL */ 559 #define TEST_PATTERN_MODE_COLOR_SQUARE (0x3 << 0) 560 #define TEST_PATTERN_MODE_BALCK_WHITE_V_LINES (0x2 << 0) 561 #define TEST_PATTERN_MODE_COLOR_RAMP (0x1 << 0) 562 563 /* EXYNOS_DP_VIDEO_CTL_4 */ 564 #define BIST_EN (0x1 << 3) 565 #define BIST_WIDTH_MASK (0x1 << 2) 566 #define BIST_WIDTH_BAR_32_PIXEL (0x0 << 2) 567 #define BIST_WIDTH_BAR_64_PIXEL (0x1 << 2) 568 #define BIST_TYPE_MASK (0x3 << 0) 569 #define BIST_TYPE_COLOR_BAR (0x0 << 0) 570 #define BIST_TYPE_WHITE_GRAY_BLACK_BAR (0x1 << 0) 571 #define BIST_TYPE_MOBILE_WHITE_BAR (0x2 << 0) 572 573 /* EXYNOS_DP_SYS_CTL_1 */ 574 #define DET_STA (0x1 << 2) 575 #define FORCE_DET (0x1 << 1) 576 #define DET_CTRL (0x1 << 0) 577 578 /* EXYNOS_DP_SYS_CTL_2 */ 579 #define CHA_CRI(x) (((x) & 0xf) << 4) 580 #define CHA_STA (0x1 << 2) 581 #define FORCE_CHA (0x1 << 1) 582 #define CHA_CTRL (0x1 << 0) 583 584 /* EXYNOS_DP_SYS_CTL_3 */ 585 #define HPD_STATUS (0x1 << 6) 586 #define F_HPD (0x1 << 5) 587 #define HPD_CTRL (0x1 << 4) 588 #define HDCP_RDY (0x1 << 3) 589 #define STRM_VALID (0x1 << 2) 590 #define F_VALID (0x1 << 1) 591 #define VALID_CTRL (0x1 << 0) 592 593 /* EXYNOS_DP_SYS_CTL_4 */ 594 #define FIX_M_AUD (0x1 << 4) 595 #define ENHANCED (0x1 << 3) 596 #define FIX_M_VID (0x1 << 2) 597 #define M_VID_UPDATE_CTRL (0x3 << 0) 598 599 /* EXYNOS_M_VID_X */ 600 #define M_VID0_CFG(x) ((x) & 0xff) 601 #define M_VID1_CFG(x) (((x) >> 8) & 0xff) 602 #define M_VID2_CFG(x) (((x) >> 16) & 0xff) 603 604 /* EXYNOS_M_VID_X */ 605 #define N_VID0_CFG(x) ((x) & 0xff) 606 #define N_VID1_CFG(x) (((x) >> 8) & 0xff) 607 #define N_VID2_CFG(x) (((x) >> 16) & 0xff) 608 609 /* DPCD_TRAINING_PATTERN_SET */ 610 #define DPCD_SCRAMBLING_DISABLED (0x1 << 5) 611 #define DPCD_SCRAMBLING_ENABLED (0x0 << 5) 612 #define DPCD_TRAINING_PATTERN_2 (0x2 << 0) 613 #define DPCD_TRAINING_PATTERN_1 (0x1 << 0) 614 #define DPCD_TRAINING_PATTERN_DISABLED (0x0 << 0) 615 616 /* Definition for DPCD Register */ 617 #define DPCD_DPCD_REV (0x0000) 618 #define DPCD_MAX_LINK_RATE (0x0001) 619 #define DPCD_MAX_LANE_COUNT (0x0002) 620 #define DPCD_LINK_BW_SET (0x0100) 621 #define DPCD_LANE_COUNT_SET (0x0101) 622 #define DPCD_TRAINING_PATTERN_SET (0x0102) 623 #define DPCD_TRAINING_LANE0_SET (0x0103) 624 #define DPCD_LANE0_1_STATUS (0x0202) 625 #define DPCD_LN_ALIGN_UPDATED (0x0204) 626 #define DPCD_ADJUST_REQUEST_LANE0_1 (0x0206) 627 #define DPCD_ADJUST_REQUEST_LANE2_3 (0x0207) 628 #define DPCD_TEST_REQUEST (0x0218) 629 #define DPCD_TEST_RESPONSE (0x0260) 630 #define DPCD_TEST_EDID_CHECKSUM (0x0261) 631 #define DPCD_SINK_POWER_STATE (0x0600) 632 633 /* DPCD_TEST_REQUEST */ 634 #define DPCD_TEST_EDID_READ (0x1 << 2) 635 636 /* DPCD_TEST_RESPONSE */ 637 #define DPCD_TEST_EDID_CHECKSUM_WRITE (0x1 << 2) 638 639 /* DPCD_SINK_POWER_STATE */ 640 #define DPCD_SET_POWER_STATE_D0 (0x1 << 0) 641 #define DPCD_SET_POWER_STATE_D4 (0x2 << 0) 642 643 /* I2C EDID Chip ID, Slave Address */ 644 #define I2C_EDID_DEVICE_ADDR (0x50) 645 #define I2C_E_EDID_DEVICE_ADDR (0x30) 646 #define EDID_BLOCK_LENGTH (0x80) 647 #define EDID_HEADER_PATTERN (0x00) 648 #define EDID_EXTENSION_FLAG (0x7e) 649 #define EDID_CHECKSUM (0x7f) 650 651 /* DPCD_LANE0_1_STATUS */ 652 #define DPCD_LANE1_SYMBOL_LOCKED (0x1 << 6) 653 #define DPCD_LANE1_CHANNEL_EQ_DONE (0x1 << 5) 654 #define DPCD_LANE1_CR_DONE (0x1 << 4) 655 #define DPCD_LANE0_SYMBOL_LOCKED (0x1 << 2) 656 #define DPCD_LANE0_CHANNEL_EQ_DONE (0x1 << 1) 657 #define DPCD_LANE0_CR_DONE (0x1 << 0) 658 659 /* DPCD_ADJUST_REQUEST_LANE0_1 */ 660 #define DPCD_PRE_EMPHASIS_LANE1_MASK (0x3 << 6) 661 #define DPCD_PRE_EMPHASIS_LANE1(x) (((x) >> 6) & 0x3) 662 #define DPCD_PRE_EMPHASIS_LANE1_LEVEL_3 (0x3 << 6) 663 #define DPCD_PRE_EMPHASIS_LANE1_LEVEL_2 (0x2 << 6) 664 #define DPCD_PRE_EMPHASIS_LANE1_LEVEL_1 (0x1 << 6) 665 #define DPCD_PRE_EMPHASIS_LANE1_LEVEL_0 (0x0 << 6) 666 #define DPCD_VOLTAGE_SWING_LANE1_MASK (0x3 << 4) 667 #define DPCD_VOLTAGE_SWING_LANE1(x) (((x) >> 4) & 0x3) 668 #define DPCD_VOLTAGE_SWING_LANE1_LEVEL_3 (0x3 << 4) 669 #define DPCD_VOLTAGE_SWING_LANE1_LEVEL_2 (0x2 << 4) 670 #define DPCD_VOLTAGE_SWING_LANE1_LEVEL_1 (0x1 << 4) 671 #define DPCD_VOLTAGE_SWING_LANE1_LEVEL_0 (0x0 << 4) 672 #define DPCD_PRE_EMPHASIS_LANE0_MASK (0x3 << 2) 673 #define DPCD_PRE_EMPHASIS_LANE0(x) (((x) >> 2) & 0x3) 674 #define DPCD_PRE_EMPHASIS_LANE0_LEVEL_3 (0x3 << 2) 675 #define DPCD_PRE_EMPHASIS_LANE0_LEVEL_2 (0x2 << 2) 676 #define DPCD_PRE_EMPHASIS_LANE0_LEVEL_1 (0x1 << 2) 677 #define DPCD_PRE_EMPHASIS_LANE0_LEVEL_0 (0x0 << 2) 678 #define DPCD_VOLTAGE_SWING_LANE0_MASK (0x3 << 0) 679 #define DPCD_VOLTAGE_SWING_LANE0(x) (((x) >> 0) & 0x3) 680 #define DPCD_VOLTAGE_SWING_LANE0_LEVEL_3 (0x3 << 0) 681 #define DPCD_VOLTAGE_SWING_LANE0_LEVEL_2 (0x2 << 0) 682 #define DPCD_VOLTAGE_SWING_LANE0_LEVEL_1 (0x1 << 0) 683 #define DPCD_VOLTAGE_SWING_LANE0_LEVEL_0 (0x0 << 0) 684 685 /* DPCD_ADJUST_REQUEST_LANE2_3 */ 686 #define DPCD_PRE_EMPHASIS_LANE2_MASK (0x3 << 6) 687 #define DPCD_PRE_EMPHASIS_LANE2(x) (((x) >> 6) & 0x3) 688 #define DPCD_PRE_EMPHASIS_LANE2_LEVEL_3 (0x3 << 6) 689 #define DPCD_PRE_EMPHASIS_LANE2_LEVEL_2 (0x2 << 6) 690 #define DPCD_PRE_EMPHASIS_LANE2_LEVEL_1 (0x1 << 6) 691 #define DPCD_PRE_EMPHASIS_LANE2_LEVEL_0 (0x0 << 6) 692 #define DPCD_VOLTAGE_SWING_LANE2_MASK (0x3 << 4) 693 #define DPCD_VOLTAGE_SWING_LANE2(x) (((x) >> 4) & 0x3) 694 #define DPCD_VOLTAGE_SWING_LANE2_LEVEL_3 (0x3 << 4) 695 #define DPCD_VOLTAGE_SWING_LANE2_LEVEL_2 (0x2 << 4) 696 #define DPCD_VOLTAGE_SWING_LANE2_LEVEL_1 (0x1 << 4) 697 #define DPCD_VOLTAGE_SWING_LANE2_LEVEL_0 (0x0 << 4) 698 #define DPCD_PRE_EMPHASIS_LANE3_MASK (0x3 << 2) 699 #define DPCD_PRE_EMPHASIS_LANE3(x) (((x) >> 2) & 0x3) 700 #define DPCD_PRE_EMPHASIS_LANE3_LEVEL_3 (0x3 << 2) 701 #define DPCD_PRE_EMPHASIS_LANE3_LEVEL_2 (0x2 << 2) 702 #define DPCD_PRE_EMPHASIS_LANE3_LEVEL_1 (0x1 << 2) 703 #define DPCD_PRE_EMPHASIS_LANE3_LEVEL_0 (0x0 << 2) 704 #define DPCD_VOLTAGE_SWING_LANE3_MASK (0x3 << 0) 705 #define DPCD_VOLTAGE_SWING_LANE3(x) (((x) >> 0) & 0x3) 706 #define DPCD_VOLTAGE_SWING_LANE3_LEVEL_3 (0x3 << 0) 707 #define DPCD_VOLTAGE_SWING_LANE3_LEVEL_2 (0x2 << 0) 708 #define DPCD_VOLTAGE_SWING_LANE3_LEVEL_1 (0x1 << 0) 709 #define DPCD_VOLTAGE_SWING_LANE3_LEVEL_0 (0x0 << 0) 710 711 /* DPCD_LANE_COUNT_SET */ 712 #define DPCD_ENHANCED_FRAME_EN (0x1 << 7) 713 #define DPCD_LN_COUNT_SET(x) ((x) & 0x1f) 714 715 /* DPCD_LANE_ALIGN__STATUS_UPDATED */ 716 #define DPCD_LINK_STATUS_UPDATED (0x1 << 7) 717 #define DPCD_DOWNSTREAM_PORT_STATUS_CHANGED (0x1 << 6) 718 #define DPCD_INTERLANE_ALIGN_DONE (0x1 << 0) 719 720 /* DPCD_TRAINING_LANE0_SET */ 721 #define DPCD_PRE_EMPHASIS_SET_PATTERN_2_LEVEL_3 (0x3 << 3) 722 #define DPCD_PRE_EMPHASIS_SET_PATTERN_2_LEVEL_2 (0x2 << 3) 723 #define DPCD_PRE_EMPHASIS_SET_PATTERN_2_LEVEL_1 (0x1 << 3) 724 #define DPCD_PRE_EMPHASIS_SET_PATTERN_2_LEVEL_0 (0x0 << 3) 725 #define DPCD_VOLTAGE_SWING_SET_PATTERN_1_LEVEL_3 (0x3 << 0) 726 #define DPCD_VOLTAGE_SWING_SET_PATTERN_1_LEVEL_2 (0x2 << 0) 727 #define DPCD_VOLTAGE_SWING_SET_PATTERN_1_LEVEL_1 (0x1 << 0) 728 #define DPCD_VOLTAGE_SWING_SET_PATTERN_1_LEVEL_0 (0x0 << 0) 729 730 #define DPCD_REQ_ADJ_SWING (0x00) 731 #define DPCD_REQ_ADJ_EMPHASIS (0x01) 732 733 #define DP_LANE_STAT_CR_DONE (0x01 << 0) 734 #define DP_LANE_STAT_CE_DONE (0x01 << 1) 735 #define DP_LANE_STAT_SYM_LOCK (0x01 << 2) 736 737 struct exynos_fb { 738 u32 vidcon0; 739 u32 vidcon1; 740 u32 vidcon2; 741 u32 vidcon3; 742 u32 vidtcon0; 743 u32 vidtcon1; 744 u32 vidtcon2; 745 u32 vidtcon3; 746 u32 wincon0; 747 u32 wincon1; 748 u32 wincon2; 749 u32 wincon3; 750 u32 wincon4; 751 752 u32 winshmap; 753 u32 res1; 754 755 u32 winchmap2; 756 u32 vidosd0a; 757 u32 vidosd0b; 758 u32 vidosd0c; 759 u32 res2; 760 761 u32 vidosd1a; 762 u32 vidosd1b; 763 u32 vidosd1c; 764 u32 vidosd1d; 765 766 u32 vidosd2a; 767 u32 vidosd2b; 768 u32 vidosd2c; 769 u32 vidosd2d; 770 771 u32 vidosd3a; 772 u32 vidosd3b; 773 u32 vidosd3c; 774 u32 res3; 775 776 u32 vidosd4a; 777 u32 vidosd4b; 778 u32 vidosd4c; 779 u32 res4[5]; 780 781 u32 vidw00add0b0; 782 u32 vidw00add0b1; 783 u32 vidw01add0b0; 784 u32 vidw01add0b1; 785 786 u32 vidw02add0b0; 787 u32 vidw02add0b1; 788 u32 vidw03add0b0; 789 u32 vidw03add0b1; 790 u32 vidw04add0b0; 791 u32 vidw04add0b1; 792 u32 res5[2]; 793 794 u32 vidw00add1b0; 795 u32 vidw00add1b1; 796 u32 vidw01add1b0; 797 u32 vidw01add1b1; 798 799 u32 vidw02add1b0; 800 u32 vidw02add1b1; 801 u32 vidw03add1b0; 802 u32 vidw03add1b1; 803 804 u32 vidw04add1b0; 805 u32 vidw04add1b1; 806 u32 res7[2]; 807 808 u32 vidw00add2; 809 u32 vidw01add2; 810 u32 vidw02add2; 811 u32 vidw03add2; 812 u32 vidw04add2; 813 u32 res8[7]; 814 815 u32 vidintcon0; 816 u32 vidintcon1; 817 u32 res9[1]; 818 819 u32 w1keycon0; 820 u32 w1keycon1; 821 u32 w2keycon0; 822 u32 w2keycon1; 823 u32 w3keycon0; 824 u32 w3keycon1; 825 u32 w4keycon0; 826 u32 w4keycon1; 827 828 u32 w1keyalpha; 829 u32 w2keyalpha; 830 u32 w3keyalpha; 831 u32 w4keyalpha; 832 833 u32 dithmode; 834 u32 res10[2]; 835 836 u32 win0map; 837 u32 win1map; 838 u32 win2map; 839 u32 win3map; 840 u32 win4map; 841 u32 res11[1]; 842 843 u32 wpalcon_h; 844 u32 wpalcon_l; 845 846 u32 trigcon; 847 u32 res12[2]; 848 849 u32 i80ifcona0; 850 u32 i80ifcona1; 851 u32 i80ifconb0; 852 u32 i80ifconb1; 853 854 u32 colorgaincon; 855 u32 res13[2]; 856 857 u32 ldi_cmdcon0; 858 u32 ldi_cmdcon1; 859 u32 res14[1]; 860 861 /* To be updated */ 862 863 u8 res15[156]; 864 u32 dualrgb; 865 u8 res16[16]; 866 u32 dp_mie_clkcon; 867 }; 868 /* TODO: can't decipher this, someone add a check_member() please */ 869 870 /* LCD IF register offset */ 871 #define EXYNOS5_LCD_IF_BASE_OFFSET 0x20000 872 873 /* 874 * Register offsets 875 */ 876 #define EXYNOS_WINCON(x) (x) 877 #define EXYNOS_VIDOSD(x) (x * 4) 878 #define EXYNOS_BUFFER_OFFSET(x) (x * 2) 879 #define EXYNOS_BUFFER_SIZE(x) (x) 880 881 /* 882 * Bit Definitions 883 */ 884 885 /* VIDCON0 */ 886 #define EXYNOS_VIDCON0_DSI_DISABLE (0 << 30) 887 #define EXYNOS_VIDCON0_DSI_ENABLE (1 << 30) 888 #define EXYNOS_VIDCON0_SCAN_PROGRESSIVE (0 << 29) 889 #define EXYNOS_VIDCON0_SCAN_INTERLACE (1 << 29) 890 #define EXYNOS_VIDCON0_SCAN_MASK (1 << 29) 891 #define EXYNOS_VIDCON0_VIDOUT_RGB (0 << 26) 892 #define EXYNOS_VIDCON0_VIDOUT_ITU (1 << 26) 893 #define EXYNOS_VIDCON0_VIDOUT_I80LDI0 (2 << 26) 894 #define EXYNOS_VIDCON0_VIDOUT_I80LDI1 (3 << 26) 895 #define EXYNOS_VIDCON0_VIDOUT_WB_RGB (4 << 26) 896 #define EXYNOS_VIDCON0_VIDOUT_WB_I80LDI0 (6 << 26) 897 #define EXYNOS_VIDCON0_VIDOUT_WB_I80LDI1 (7 << 26) 898 #define EXYNOS_VIDCON0_VIDOUT_MASK (7 << 26) 899 #define EXYNOS_VIDCON0_PNRMODE_RGB_P (0 << 17) 900 #define EXYNOS_VIDCON0_PNRMODE_BGR_P (1 << 17) 901 #define EXYNOS_VIDCON0_PNRMODE_RGB_S (2 << 17) 902 #define EXYNOS_VIDCON0_PNRMODE_BGR_S (3 << 17) 903 #define EXYNOS_VIDCON0_PNRMODE_MASK (3 << 17) 904 #define EXYNOS_VIDCON0_PNRMODE_SHIFT (17) 905 #define EXYNOS_VIDCON0_CLKVALUP_ALWAYS (0 << 16) 906 #define EXYNOS_VIDCON0_CLKVALUP_START_FRAME (1 << 16) 907 #define EXYNOS_VIDCON0_CLKVALUP_MASK (1 << 16) 908 #define EXYNOS_VIDCON0_CLKVAL_F(x) (((x) & 0xff) << 6) 909 #define EXYNOS_VIDCON0_VCLKEN_NORMAL (0 << 5) 910 #define EXYNOS_VIDCON0_VCLKEN_FREERUN (1 << 5) 911 #define EXYNOS_VIDCON0_VCLKEN_MASK (1 << 5) 912 #define EXYNOS_VIDCON0_CLKDIR_DIRECTED (0 << 4) 913 #define EXYNOS_VIDCON0_CLKDIR_DIVIDED (1 << 4) 914 #define EXYNOS_VIDCON0_CLKDIR_MASK (1 << 4) 915 #define EXYNOS_VIDCON0_CLKSEL_HCLK (0 << 2) 916 #define EXYNOS_VIDCON0_CLKSEL_SCLK (1 << 2) 917 #define EXYNOS_VIDCON0_CLKSEL_MASK (1 << 2) 918 #define EXYNOS_VIDCON0_ENVID_ENABLE (1 << 1) 919 #define EXYNOS_VIDCON0_ENVID_DISABLE (0 << 1) 920 #define EXYNOS_VIDCON0_ENVID_F_ENABLE (1 << 0) 921 #define EXYNOS_VIDCON0_ENVID_F_DISABLE (0 << 0) 922 923 /* VIDCON1 */ 924 #define EXYNOS_VIDCON1_IVCLK_FALLING_EDGE (0 << 7) 925 #define EXYNOS_VIDCON1_IVCLK_RISING_EDGE (1 << 7) 926 #define EXYNOS_VIDCON1_IHSYNC_NORMAL (0 << 6) 927 #define EXYNOS_VIDCON1_IHSYNC_INVERT (1 << 6) 928 #define EXYNOS_VIDCON1_IVSYNC_NORMAL (0 << 5) 929 #define EXYNOS_VIDCON1_IVSYNC_INVERT (1 << 5) 930 #define EXYNOS_VIDCON1_IVDEN_NORMAL (0 << 4) 931 #define EXYNOS_VIDCON1_IVDEN_INVERT (1 << 4) 932 933 /* VIDCON2 */ 934 #define EXYNOS_VIDCON2_EN601_DISABLE (0 << 23) 935 #define EXYNOS_VIDCON2_EN601_ENABLE (1 << 23) 936 #define EXYNOS_VIDCON2_EN601_MASK (1 << 23) 937 #define EXYNOS_VIDCON2_WB_DISABLE (0 << 15) 938 #define EXYNOS_VIDCON2_WB_ENABLE (1 << 15) 939 #define EXYNOS_VIDCON2_WB_MASK (1 << 15) 940 #define EXYNOS_VIDCON2_TVFORMATSEL_HW (0 << 14) 941 #define EXYNOS_VIDCON2_TVFORMATSEL_SW (1 << 14) 942 #define EXYNOS_VIDCON2_TVFORMATSEL_MASK (1 << 14) 943 #define EXYNOS_VIDCON2_TVFORMATSEL_YUV422 (1 << 12) 944 #define EXYNOS_VIDCON2_TVFORMATSEL_YUV444 (2 << 12) 945 #define EXYNOS_VIDCON2_TVFORMATSEL_YUV_MASK (3 << 12) 946 #define EXYNOS_VIDCON2_ORGYUV_YCBCR (0 << 8) 947 #define EXYNOS_VIDCON2_ORGYUV_CBCRY (1 << 8) 948 #define EXYNOS_VIDCON2_ORGYUV_MASK (1 << 8) 949 #define EXYNOS_VIDCON2_YUVORD_CBCR (0 << 7) 950 #define EXYNOS_VIDCON2_YUVORD_CRCB (1 << 7) 951 #define EXYNOS_VIDCON2_YUVORD_MASK (1 << 7) 952 953 /* PRTCON */ 954 #define EXYNOS_PRTCON_UPDATABLE (0 << 11) 955 #define EXYNOS_PRTCON_PROTECT (1 << 11) 956 957 /* VIDTCON0 */ 958 #define EXYNOS_VIDTCON0_VBPDE(x) (((x) & 0xff) << 24) 959 #define EXYNOS_VIDTCON0_VBPD(x) (((x) & 0xff) << 16) 960 #define EXYNOS_VIDTCON0_VFPD(x) (((x) & 0xff) << 8) 961 #define EXYNOS_VIDTCON0_VSPW(x) (((x) & 0xff) << 0) 962 963 /* VIDTCON1 */ 964 #define EXYNOS_VIDTCON1_VFPDE(x) (((x) & 0xff) << 24) 965 #define EXYNOS_VIDTCON1_HBPD(x) (((x) & 0xff) << 16) 966 #define EXYNOS_VIDTCON1_HFPD(x) (((x) & 0xff) << 8) 967 #define EXYNOS_VIDTCON1_HSPW(x) (((x) & 0xff) << 0) 968 969 /* VIDTCON2 */ 970 #define EXYNOS_VIDTCON2_LINEVAL(x) (((x) & 0x7ff) << 11) 971 #define EXYNOS_VIDTCON2_HOZVAL(x) (((x) & 0x7ff) << 0) 972 #define EXYNOS_VIDTCON2_LINEVAL_E(x) ((((x) & 0x800) >> 11) << 23) 973 #define EXYNOS_VIDTCON2_HOZVAL_E(x) ((((x) & 0x800) >> 11) << 22) 974 975 /* Window 0~4 Control - WINCONx */ 976 #define EXYNOS_WINCON_DATAPATH_DMA (0 << 22) 977 #define EXYNOS_WINCON_DATAPATH_LOCAL (1 << 22) 978 #define EXYNOS_WINCON_DATAPATH_MASK (1 << 22) 979 #define EXYNOS_WINCON_BUFSEL_0 (0 << 20) 980 #define EXYNOS_WINCON_BUFSEL_1 (1 << 20) 981 #define EXYNOS_WINCON_BUFSEL_MASK (1 << 20) 982 #define EXYNOS_WINCON_BUFSEL_SHIFT (20) 983 #define EXYNOS_WINCON_BUFAUTO_DISABLE (0 << 19) 984 #define EXYNOS_WINCON_BUFAUTO_ENABLE (1 << 19) 985 #define EXYNOS_WINCON_BUFAUTO_MASK (1 << 19) 986 #define EXYNOS_WINCON_BITSWP_DISABLE (0 << 18) 987 #define EXYNOS_WINCON_BITSWP_ENABLE (1 << 18) 988 #define EXYNOS_WINCON_BITSWP_SHIFT (18) 989 #define EXYNOS_WINCON_BYTESWP_DISABLE (0 << 17) 990 #define EXYNOS_WINCON_BYTESWP_ENABLE (1 << 17) 991 #define EXYNOS_WINCON_BYTESWP_SHIFT (17) 992 #define EXYNOS_WINCON_HAWSWP_DISABLE (0 << 16) 993 #define EXYNOS_WINCON_HAWSWP_ENABLE (1 << 16) 994 #define EXYNOS_WINCON_HAWSWP_SHIFT (16) 995 #define EXYNOS_WINCON_WSWP_DISABLE (0 << 15) 996 #define EXYNOS_WINCON_WSWP_ENABLE (1 << 15) 997 #define EXYNOS_WINCON_WSWP_SHIFT (15) 998 #define EXYNOS_WINCON_INRGB_RGB (0 << 13) 999 #define EXYNOS_WINCON_INRGB_YUV (1 << 13) 1000 #define EXYNOS_WINCON_INRGB_MASK (1 << 13) 1001 #define EXYNOS_WINCON_BURSTLEN_16WORD (0 << 9) 1002 #define EXYNOS_WINCON_BURSTLEN_8WORD (1 << 9) 1003 #define EXYNOS_WINCON_BURSTLEN_4WORD (2 << 9) 1004 #define EXYNOS_WINCON_BURSTLEN_MASK (3 << 9) 1005 #define EXYNOS_WINCON_ALPHA_MULTI_DISABLE (0 << 7) 1006 #define EXYNOS_WINCON_ALPHA_MULTI_ENABLE (1 << 7) 1007 #define EXYNOS_WINCON_BLD_PLANE (0 << 6) 1008 #define EXYNOS_WINCON_BLD_PIXEL (1 << 6) 1009 #define EXYNOS_WINCON_BLD_MASK (1 << 6) 1010 #define EXYNOS_WINCON_BPPMODE_1BPP (0 << 2) 1011 #define EXYNOS_WINCON_BPPMODE_2BPP (1 << 2) 1012 #define EXYNOS_WINCON_BPPMODE_4BPP (2 << 2) 1013 #define EXYNOS_WINCON_BPPMODE_8BPP_PAL (3 << 2) 1014 #define EXYNOS_WINCON_BPPMODE_8BPP (4 << 2) 1015 #define EXYNOS_WINCON_BPPMODE_16BPP_565 (5 << 2) 1016 #define EXYNOS_WINCON_BPPMODE_16BPP_A555 (6 << 2) 1017 #define EXYNOS_WINCON_BPPMODE_18BPP_666 (8 << 2) 1018 #define EXYNOS_WINCON_BPPMODE_18BPP_A665 (9 << 2) 1019 #define EXYNOS_WINCON_BPPMODE_24BPP_888 (0xb << 2) 1020 #define EXYNOS_WINCON_BPPMODE_24BPP_A887 (0xc << 2) 1021 #define EXYNOS_WINCON_BPPMODE_32BPP (0xd << 2) 1022 #define EXYNOS_WINCON_BPPMODE_16BPP_A444 (0xe << 2) 1023 #define EXYNOS_WINCON_BPPMODE_15BPP_555 (0xf << 2) 1024 #define EXYNOS_WINCON_BPPMODE_MASK (0xf << 2) 1025 #define EXYNOS_WINCON_BPPMODE_SHIFT (2) 1026 #define EXYNOS_WINCON_ALPHA0_SEL (0 << 1) 1027 #define EXYNOS_WINCON_ALPHA1_SEL (1 << 1) 1028 #define EXYNOS_WINCON_ALPHA_SEL_MASK (1 << 1) 1029 #define EXYNOS_WINCON_ENWIN_DISABLE (0 << 0) 1030 #define EXYNOS_WINCON_ENWIN_ENABLE (1 << 0) 1031 1032 /* WINCON1 special */ 1033 #define EXYNOS_WINCON1_VP_DISABLE (0 << 24) 1034 #define EXYNOS_WINCON1_VP_ENABLE (1 << 24) 1035 #define EXYNOS_WINCON1_LOCALSEL_FIMC1 (0 << 23) 1036 #define EXYNOS_WINCON1_LOCALSEL_VP (1 << 23) 1037 #define EXYNOS_WINCON1_LOCALSEL_MASK (1 << 23) 1038 1039 /* WINSHMAP */ 1040 #define EXYNOS_WINSHMAP_PROTECT(x) (((x) & 0x1f) << 10) 1041 #define EXYNOS_WINSHMAP_CH_ENABLE(x) (1 << (x)) 1042 #define EXYNOS_WINSHMAP_CH_DISABLE(x) (1 << (x)) 1043 #define EXYNOS_WINSHMAP_LOCAL_ENABLE(x) (0x20 << (x)) 1044 #define EXYNOS_WINSHMAP_LOCAL_DISABLE(x) (0x20 << (x)) 1045 1046 /* VIDOSDxA, VIDOSDxB */ 1047 #define EXYNOS_VIDOSD_LEFT_X(x) (((x) & 0x7ff) << 11) 1048 #define EXYNOS_VIDOSD_TOP_Y(x) (((x) & 0x7ff) << 0) 1049 #define EXYNOS_VIDOSD_RIGHT_X(x) (((x) & 0x7ff) << 11) 1050 #define EXYNOS_VIDOSD_BOTTOM_Y(x) (((x) & 0x7ff) << 0) 1051 #define EXYNOS_VIDOSD_RIGHT_X_E(x) (((x) & 0x1) << 23) 1052 #define EXYNOS_VIDOSD_BOTTOM_Y_E(x) (((x) & 0x1) << 22) 1053 1054 /* VIDOSD0C, VIDOSDxD */ 1055 #define EXYNOS_VIDOSD_SIZE(x) (((x) & 0xffffff) << 0) 1056 1057 /* VIDOSDxC (1~4) */ 1058 #define EXYNOS_VIDOSD_ALPHA0_R(x) (((x) & 0xf) << 20) 1059 #define EXYNOS_VIDOSD_ALPHA0_G(x) (((x) & 0xf) << 16) 1060 #define EXYNOS_VIDOSD_ALPHA0_B(x) (((x) & 0xf) << 12) 1061 #define EXYNOS_VIDOSD_ALPHA1_R(x) (((x) & 0xf) << 8) 1062 #define EXYNOS_VIDOSD_ALPHA1_G(x) (((x) & 0xf) << 4) 1063 #define EXYNOS_VIDOSD_ALPHA1_B(x) (((x) & 0xf) << 0) 1064 #define EXYNOS_VIDOSD_ALPHA0_SHIFT (12) 1065 #define EXYNOS_VIDOSD_ALPHA1_SHIFT (0) 1066 1067 /* Start Address */ 1068 #define EXYNOS_VIDADDR_START_VBANK(x) (((x) & 0xff) << 24) 1069 #define EXYNOS_VIDADDR_START_VBASEU(x) (((x) & 0xffffff) << 0) 1070 1071 /* End Address */ 1072 #define EXYNOS_VIDADDR_END_VBASEL(x) (((x) & 0xffffff) << 0) 1073 1074 /* Buffer Size */ 1075 #define EXYNOS_VIDADDR_OFFSIZE(x) (((x) & 0x1fff) << 13) 1076 #define EXYNOS_VIDADDR_PAGEWIDTH(x) (((x) & 0x1fff) << 0) 1077 #define EXYNOS_VIDADDR_OFFSIZE_E(x) ((((x) & 0x2000) >> 13) << 27) 1078 #define EXYNOS_VIDADDR_PAGEWIDTH_E(x) ((((x) & 0x2000) >> 13) << 26) 1079 1080 /* WIN Color Map */ 1081 #define EXYNOS_WINMAP_COLOR(x) ((x) & 0xffffff) 1082 1083 /* VIDINTCON0 */ 1084 #define EXYNOS_VIDINTCON0_SYSMAINCON_DISABLE (0 << 19) 1085 #define EXYNOS_VIDINTCON0_SYSMAINCON_ENABLE (1 << 19) 1086 #define EXYNOS_VIDINTCON0_SYSSUBCON_DISABLE (0 << 18) 1087 #define EXYNOS_VIDINTCON0_SYSSUBCON_ENABLE (1 << 18) 1088 #define EXYNOS_VIDINTCON0_SYSIFDONE_DISABLE (0 << 17) 1089 #define EXYNOS_VIDINTCON0_SYSIFDONE_ENABLE (1 << 17) 1090 #define EXYNOS_VIDINTCON0_FRAMESEL0_BACK (0 << 15) 1091 #define EXYNOS_VIDINTCON0_FRAMESEL0_VSYNC (1 << 15) 1092 #define EXYNOS_VIDINTCON0_FRAMESEL0_ACTIVE (2 << 15) 1093 #define EXYNOS_VIDINTCON0_FRAMESEL0_FRONT (3 << 15) 1094 #define EXYNOS_VIDINTCON0_FRAMESEL0_MASK (3 << 15) 1095 #define EXYNOS_VIDINTCON0_FRAMESEL1_NONE (0 << 13) 1096 #define EXYNOS_VIDINTCON0_FRAMESEL1_BACK (1 << 13) 1097 #define EXYNOS_VIDINTCON0_FRAMESEL1_VSYNC (2 << 13) 1098 #define EXYNOS_VIDINTCON0_FRAMESEL1_FRONT (3 << 13) 1099 #define EXYNOS_VIDINTCON0_INTFRMEN_DISABLE (0 << 12) 1100 #define EXYNOS_VIDINTCON0_INTFRMEN_ENABLE (1 << 12) 1101 #define EXYNOS_VIDINTCON0_FIFOSEL_WIN4 (1 << 11) 1102 #define EXYNOS_VIDINTCON0_FIFOSEL_WIN3 (1 << 10) 1103 #define EXYNOS_VIDINTCON0_FIFOSEL_WIN2 (1 << 9) 1104 #define EXYNOS_VIDINTCON0_FIFOSEL_WIN1 (1 << 6) 1105 #define EXYNOS_VIDINTCON0_FIFOSEL_WIN0 (1 << 5) 1106 #define EXYNOS_VIDINTCON0_FIFOSEL_ALL (0x73 << 5) 1107 #define EXYNOS_VIDINTCON0_FIFOSEL_MASK (0x73 << 5) 1108 #define EXYNOS_VIDINTCON0_FIFOLEVEL_25 (0 << 2) 1109 #define EXYNOS_VIDINTCON0_FIFOLEVEL_50 (1 << 2) 1110 #define EXYNOS_VIDINTCON0_FIFOLEVEL_75 (2 << 2) 1111 #define EXYNOS_VIDINTCON0_FIFOLEVEL_EMPTY (3 << 2) 1112 #define EXYNOS_VIDINTCON0_FIFOLEVEL_FULL (4 << 2) 1113 #define EXYNOS_VIDINTCON0_FIFOLEVEL_MASK (7 << 2) 1114 #define EXYNOS_VIDINTCON0_INTFIFO_DISABLE (0 << 1) 1115 #define EXYNOS_VIDINTCON0_INTFIFO_ENABLE (1 << 1) 1116 #define EXYNOS_VIDINTCON0_INT_DISABLE (0 << 0) 1117 #define EXYNOS_VIDINTCON0_INT_ENABLE (1 << 0) 1118 #define EXYNOS_VIDINTCON0_INT_MASK (1 << 0) 1119 1120 /* VIDINTCON1 */ 1121 #define EXYNOS_VIDINTCON1_INTVPPEND (1 << 5) 1122 #define EXYNOS_VIDINTCON1_INTI80PEND (1 << 2) 1123 #define EXYNOS_VIDINTCON1_INTFRMPEND (1 << 1) 1124 #define EXYNOS_VIDINTCON1_INTFIFOPEND (1 << 0) 1125 1126 /* WINMAP */ 1127 #define EXYNOS_WINMAP_ENABLE (1 << 24) 1128 1129 /* WxKEYCON0 (1~4) */ 1130 #define EXYNOS_KEYCON0_KEYBLEN_DISABLE (0 << 26) 1131 #define EXYNOS_KEYCON0_KEYBLEN_ENABLE (1 << 26) 1132 #define EXYNOS_KEYCON0_KEY_DISABLE (0 << 25) 1133 #define EXYNOS_KEYCON0_KEY_ENABLE (1 << 25) 1134 #define EXYNOS_KEYCON0_DIRCON_MATCH_FG (0 << 24) 1135 #define EXYNOS_KEYCON0_DIRCON_MATCH_BG (1 << 24) 1136 #define EXYNOS_KEYCON0_COMPKEY(x) (((x) & 0xffffff) << 0) 1137 1138 /* WxKEYCON1 (1~4) */ 1139 #define EXYNOS_KEYCON1_COLVAL(x) (((x) & 0xffffff) << 0) 1140 1141 /* DUALRGB */ 1142 #define EXYNOS_DUALRGB_BYPASS_SINGLE (0x00 << 0) 1143 #define EXYNOS_DUALRGB_BYPASS_DUAL (0x01 << 0) 1144 #define EXYNOS_DUALRGB_MIE_DUAL (0x10 << 0) 1145 #define EXYNOS_DUALRGB_MIE_SINGLE (0x11 << 0) 1146 #define EXYNOS_DUALRGB_LINESPLIT (0x0 << 2) 1147 #define EXYNOS_DUALRGB_FRAMESPLIT (0x1 << 2) 1148 #define EXYNOS_DUALRGB_SUB_CNT(x) ((x & 0xfff) << 4) 1149 #define EXYNOS_DUALRGB_VDEN_EN_DISABLE (0x0 << 16) 1150 #define EXYNOS_DUALRGB_VDEN_EN_ENABLE (0x1 << 16) 1151 #define EXYNOS_DUALRGB_MAIN_CNT(x) ((x & 0xfff) << 18) 1152 1153 /* I80IFCONA0 and I80IFCONA1 */ 1154 #define EXYNOS_LCD_CS_SETUP(x) (((x) & 0xf) << 16) 1155 #define EXYNOS_LCD_WR_SETUP(x) (((x) & 0xf) << 12) 1156 #define EXYNOS_LCD_WR_ACT(x) (((x) & 0xf) << 8) 1157 #define EXYNOS_LCD_WR_HOLD(x) (((x) & 0xf) << 4) 1158 #define EXYNOS_RSPOL_LOW (0 << 2) 1159 #define EXYNOS_RSPOL_HIGH (1 << 2) 1160 #define EXYNOS_I80IFEN_DISABLE (0 << 0) 1161 #define EXYNOS_I80IFEN_ENABLE (1 << 0) 1162 1163 /* TRIGCON */ 1164 #define EXYNOS_I80SOFT_TRIG_EN (1 << 0) 1165 #define EXYNOS_I80START_TRIG (1 << 1) 1166 #define EXYNOS_I80STATUS_TRIG_DONE (1 << 2) 1167 1168 /* DP_MIE_CLKCON */ 1169 #define EXYNOS_DP_MIE_DISABLE (0 << 0) 1170 #define EXYNOS_DP_CLK_ENABLE (1 << 1) 1171 #define EXYNOS_MIE_CLK_ENABLE (3 << 0) 1172 1173 #define DP_TIMEOUT_LOOP_COUNT 1000 1174 #define MAX_CR_LOOP 5 1175 #define MAX_EQ_LOOP 4 1176 1177 #define EXYNOS_DP_SUCCESS 0 1178 1179 enum { 1180 DP_DISABLE, 1181 DP_ENABLE, 1182 }; 1183 1184 struct edp_disp_info { 1185 char *name; 1186 unsigned int h_total; 1187 unsigned int h_res; 1188 unsigned int h_sync_width; 1189 unsigned int h_back_porch; 1190 unsigned int h_front_porch; 1191 unsigned int v_total; 1192 unsigned int v_res; 1193 unsigned int v_sync_width; 1194 unsigned int v_back_porch; 1195 unsigned int v_front_porch; 1196 unsigned int v_sync_rate; 1197 }; 1198 1199 struct edp_link_train_info { 1200 unsigned int lt_status; 1201 unsigned int ep_loop; 1202 unsigned int cr_loop[4]; 1203 }; 1204 1205 struct edp_video_info { 1206 unsigned int master_mode; 1207 unsigned int bist_mode; 1208 unsigned int bist_pattern; 1209 unsigned int h_sync_polarity; 1210 unsigned int v_sync_polarity; 1211 unsigned int interlaced; 1212 unsigned int color_space; 1213 unsigned int dynamic_range; 1214 unsigned int ycbcr_coeff; 1215 unsigned int color_depth; 1216 }; 1217 1218 struct edp_device_info { 1219 struct edp_disp_info disp_info; 1220 struct edp_link_train_info lt_info; 1221 struct edp_video_info video_info; 1222 1223 /* below info get from panel during training */ 1224 u8 lane_bw; 1225 u8 lane_cnt; 1226 u8 dpcd_rev; 1227 /* support enhanced frame cap */ 1228 u8 dpcd_efc; 1229 u8 *raw_edid; 1230 }; 1231 1232 enum analog_power_block { 1233 AUX_BLOCK, 1234 CH0_BLOCK, 1235 CH1_BLOCK, 1236 CH2_BLOCK, 1237 CH3_BLOCK, 1238 ANALOG_TOTAL, 1239 POWER_ALL 1240 }; 1241 1242 enum pll_status { 1243 PLL_UNLOCKED = 0, 1244 PLL_LOCKED 1245 }; 1246 1247 enum { 1248 COLOR_RGB, 1249 COLOR_YCBCR422, 1250 COLOR_YCBCR444 1251 }; 1252 1253 enum { 1254 VESA, 1255 CEA 1256 }; 1257 1258 enum { 1259 COLOR_YCBCR601, 1260 COLOR_YCBCR709 1261 }; 1262 1263 enum { 1264 COLOR_6, 1265 COLOR_8, 1266 COLOR_10, 1267 COLOR_12 1268 }; 1269 1270 enum { 1271 DP_LANE_BW_1_62 = 0x06, 1272 DP_LANE_BW_2_70 = 0x0a, 1273 }; 1274 1275 enum { 1276 DP_LANE_CNT_1 = 1, 1277 DP_LANE_CNT_2 = 2, 1278 DP_LANE_CNT_4 = 4, 1279 }; 1280 1281 enum { 1282 DP_DPCD_REV_10 = 0x10, 1283 DP_DPCD_REV_11 = 0x11, 1284 }; 1285 1286 enum { 1287 DP_LT_NONE, 1288 DP_LT_START, 1289 DP_LT_CR, 1290 DP_LT_ET, 1291 DP_LT_FINISHED, 1292 DP_LT_FAIL, 1293 }; 1294 1295 enum { 1296 PRE_EMPHASIS_LEVEL_0, 1297 PRE_EMPHASIS_LEVEL_1, 1298 PRE_EMPHASIS_LEVEL_2, 1299 PRE_EMPHASIS_LEVEL_3, 1300 }; 1301 1302 enum { 1303 PRBS7, 1304 D10_2, 1305 TRAINING_PTN1, 1306 TRAINING_PTN2, 1307 DP_NONE 1308 }; 1309 1310 enum { 1311 VOLTAGE_LEVEL_0, 1312 VOLTAGE_LEVEL_1, 1313 VOLTAGE_LEVEL_2, 1314 VOLTAGE_LEVEL_3, 1315 }; 1316 1317 enum pattern_type { 1318 NO_PATTERN, 1319 COLOR_RAMP, 1320 BALCK_WHITE_V_LINES, 1321 COLOR_SQUARE, 1322 INVALID_PATTERN, 1323 COLORBAR_32, 1324 COLORBAR_64, 1325 WHITE_GRAY_BALCKBAR_32, 1326 WHITE_GRAY_BALCKBAR_64, 1327 MOBILE_WHITEBAR_32, 1328 MOBILE_WHITEBAR_64 1329 }; 1330 1331 enum { 1332 CALCULATED_M, 1333 REGISTER_M 1334 }; 1335 1336 enum { 1337 VIDEO_TIMING_FROM_CAPTURE, 1338 VIDEO_TIMING_FROM_REGISTER 1339 }; 1340 1341 struct exynos_dp_platform_data { 1342 struct edp_device_info *edp_dev_info; 1343 }; 1344 1345 int exynos_init_dp(struct edp_device_info *edp_info); 1346 1347 void exynos_set_dp_platform_data(struct exynos_dp_platform_data *pd); 1348 1349 void exynos_dp_disable_video_bist(void); 1350 void exynos_dp_enable_video_mute(unsigned int enable); 1351 void exynos_dp_reset(void); 1352 void exynos_dp_enable_sw_func(unsigned int enable); 1353 unsigned int exynos_dp_set_analog_power_down(unsigned int block, u32 enable); 1354 unsigned int exynos_dp_get_pll_lock_status(void); 1355 int exynos_dp_init_analog_func(void); 1356 void exynos_dp_init_hpd(void); 1357 void exynos_dp_init_aux(void); 1358 void exynos_dp_config_interrupt(void); 1359 unsigned int exynos_dp_get_plug_in_status(void); 1360 unsigned int exynos_dp_detect_hpd(void); 1361 unsigned int exynos_dp_start_aux_transaction(void); 1362 unsigned int exynos_dp_write_byte_to_dpcd(u32 reg_addr, 1363 u8 data); 1364 unsigned int exynos_dp_read_byte_from_dpcd(u32 reg_addr, 1365 u8 *data); 1366 unsigned int exynos_dp_write_bytes_to_dpcd(u32 reg_addr, 1367 unsigned int count, 1368 u8 data[]); 1369 u32 exynos_dp_read_bytes_from_dpcd( unsigned int reg_addr, 1370 unsigned int count, 1371 u8 data[]); 1372 int exynos_dp_select_i2c_device( u32 device_addr, 1373 u32 reg_addr); 1374 int exynos_dp_read_byte_from_i2c(u32 device_addr, 1375 u32 reg_addr, unsigned int *data); 1376 int exynos_dp_read_bytes_from_i2c(u32 device_addr, 1377 u32 reg_addr, unsigned int count, 1378 u8 edid[]); 1379 void exynos_dp_reset_macro(void); 1380 void exynos_dp_set_link_bandwidth(u8 bwtype); 1381 u8 exynos_dp_get_link_bandwidth(void); 1382 void exynos_dp_set_lane_count(u8 count); 1383 unsigned int exynos_dp_get_lane_count(void); 1384 u8 exynos_dp_get_lanex_pre_emphasis(u8 lanecnt); 1385 void exynos_dp_set_lane_pre_emphasis(unsigned int level, 1386 u8 lanecnt); 1387 void exynos_dp_set_lanex_pre_emphasis(u8 request_val, 1388 u8 lanecnt); 1389 void exynos_dp_set_training_pattern(unsigned int pattern); 1390 void exynos_dp_enable_enhanced_mode(u8 enable); 1391 void exynos_dp_enable_scrambling(unsigned int enable); 1392 int exynos_dp_init_video(void); 1393 void exynos_dp_config_video_slave_mode(struct edp_video_info *video_info); 1394 void exynos_dp_set_video_color_format(struct edp_video_info *video_info); 1395 int exynos_dp_config_video_bist(struct edp_device_info *edp_info); 1396 unsigned int exynos_dp_is_slave_video_stream_clock_on(void); 1397 void exynos_dp_set_video_cr_mn(unsigned int type, unsigned int m_value, 1398 unsigned int n_value); 1399 void exynos_dp_set_video_timing_mode(unsigned int type); 1400 void exynos_dp_enable_video_master(unsigned int enable); 1401 void exynos_dp_start_video(void); 1402 unsigned int exynos_dp_is_video_stream_on(void); 1403 void exynos_dp_set_base_addr(void); 1404 void dp_phy_control(unsigned int enable); 1405 1406 #endif 1407