1*5852d539SSimon Glass /* 2*5852d539SSimon Glass * Copyright (c) 2015 Google, Inc 3*5852d539SSimon Glass * Copyright 2014 Rockchip Inc. 4*5852d539SSimon Glass * 5*5852d539SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 6*5852d539SSimon Glass */ 7*5852d539SSimon Glass 8*5852d539SSimon Glass #ifndef _ASM_ARCH_EDP_H 9*5852d539SSimon Glass #define _ASM_ARCH_EDP_H 10*5852d539SSimon Glass 11*5852d539SSimon Glass struct rk3288_edp { 12*5852d539SSimon Glass u8 res0[0x10]; 13*5852d539SSimon Glass u32 dp_tx_version; 14*5852d539SSimon Glass u8 res1[0x4]; 15*5852d539SSimon Glass u32 func_en_1; 16*5852d539SSimon Glass u32 func_en_2; 17*5852d539SSimon Glass u32 video_ctl_1; 18*5852d539SSimon Glass u32 video_ctl_2; 19*5852d539SSimon Glass u32 video_ctl_3; 20*5852d539SSimon Glass u32 video_ctl_4; 21*5852d539SSimon Glass u8 res2[0xc]; 22*5852d539SSimon Glass u32 video_ctl_8; 23*5852d539SSimon Glass u8 res3[0x4]; 24*5852d539SSimon Glass u32 video_ctl_10; 25*5852d539SSimon Glass u32 total_line_l; 26*5852d539SSimon Glass u32 total_line_h; 27*5852d539SSimon Glass u32 active_line_l; 28*5852d539SSimon Glass u32 active_line_h; 29*5852d539SSimon Glass u32 v_f_porch; 30*5852d539SSimon Glass u32 vsync; 31*5852d539SSimon Glass u32 v_b_porch; 32*5852d539SSimon Glass u32 total_pixel_l; 33*5852d539SSimon Glass u32 total_pixel_h; 34*5852d539SSimon Glass u32 active_pixel_l; 35*5852d539SSimon Glass u32 active_pixel_h; 36*5852d539SSimon Glass u32 h_f_porch_l; 37*5852d539SSimon Glass u32 h_f_porch_h; 38*5852d539SSimon Glass u32 hsync_l; 39*5852d539SSimon Glass u32 hysnc_h; 40*5852d539SSimon Glass u32 h_b_porch_l; 41*5852d539SSimon Glass u32 h_b_porch_h; 42*5852d539SSimon Glass u32 vid_status; 43*5852d539SSimon Glass u32 total_line_sta_l; 44*5852d539SSimon Glass u32 total_line_sta_h; 45*5852d539SSimon Glass u32 active_line_sta_l; 46*5852d539SSimon Glass u32 active_line_sta_h; 47*5852d539SSimon Glass u32 v_f_porch_sta; 48*5852d539SSimon Glass u32 vsync_sta; 49*5852d539SSimon Glass u32 v_b_porch_sta; 50*5852d539SSimon Glass u32 total_pixel_sta_l; 51*5852d539SSimon Glass u32 total_pixel_sta_h; 52*5852d539SSimon Glass u32 active_pixel_sta_l; 53*5852d539SSimon Glass u32 active_pixel_sta_h; 54*5852d539SSimon Glass u32 h_f_porch_sta_l; 55*5852d539SSimon Glass u32 h_f_porch_sta_h; 56*5852d539SSimon Glass u32 hsync_sta_l; 57*5852d539SSimon Glass u32 hsync_sta_h; 58*5852d539SSimon Glass u32 h_b_porch_sta_l; 59*5852d539SSimon Glass u32 h_b_porch__sta_h; 60*5852d539SSimon Glass u8 res4[0x28]; 61*5852d539SSimon Glass u32 pll_reg_1; 62*5852d539SSimon Glass u8 res5[4]; 63*5852d539SSimon Glass u32 ssc_reg; 64*5852d539SSimon Glass u8 res6[0xc]; 65*5852d539SSimon Glass u32 tx_common; 66*5852d539SSimon Glass u32 tx_common2; 67*5852d539SSimon Glass u8 res7[0x4]; 68*5852d539SSimon Glass u32 dp_aux; 69*5852d539SSimon Glass u32 dp_bias; 70*5852d539SSimon Glass u32 dp_test; 71*5852d539SSimon Glass u32 dp_pd; 72*5852d539SSimon Glass u32 dp_reserv1; 73*5852d539SSimon Glass u32 dp_reserv2; 74*5852d539SSimon Glass u8 res8[0x224]; 75*5852d539SSimon Glass u32 lane_map; 76*5852d539SSimon Glass u8 res9[0x14]; 77*5852d539SSimon Glass u32 analog_ctl_2; 78*5852d539SSimon Glass u8 res10[0x48]; 79*5852d539SSimon Glass u32 int_state; 80*5852d539SSimon Glass u32 common_int_sta_1; 81*5852d539SSimon Glass u32 common_int_sta_2; 82*5852d539SSimon Glass u32 common_int_sta_3; 83*5852d539SSimon Glass u32 common_int_sta_4; 84*5852d539SSimon Glass u32 spdif_biphase_int_sta; 85*5852d539SSimon Glass u8 res11[0x4]; 86*5852d539SSimon Glass u32 dp_int_sta; 87*5852d539SSimon Glass u32 common_int_mask_1; 88*5852d539SSimon Glass u32 common_int_mask_2; 89*5852d539SSimon Glass u32 common_int_mask_3; 90*5852d539SSimon Glass u32 common_int_mask_4; 91*5852d539SSimon Glass u8 res12[0x08]; 92*5852d539SSimon Glass u32 int_sta_mask; 93*5852d539SSimon Glass u32 int_ctl; 94*5852d539SSimon Glass u8 res13[0x200]; 95*5852d539SSimon Glass u32 sys_ctl_1; 96*5852d539SSimon Glass u32 sys_ctl_2; 97*5852d539SSimon Glass u32 sys_ctl_3; 98*5852d539SSimon Glass u32 sys_ctl_4; 99*5852d539SSimon Glass u32 dp_vid_ctl; 100*5852d539SSimon Glass u8 res14[0x4]; 101*5852d539SSimon Glass u32 dp_aud_ctl; 102*5852d539SSimon Glass u8 res15[0x24]; 103*5852d539SSimon Glass u32 pkt_send_ctl; 104*5852d539SSimon Glass u8 res16[0x4]; 105*5852d539SSimon Glass u32 dp_hdcp_ctl; 106*5852d539SSimon Glass u8 res17[0x34]; 107*5852d539SSimon Glass u32 link_bw_set; 108*5852d539SSimon Glass u32 lane_count_set; 109*5852d539SSimon Glass u32 dp_training_ptn_set; 110*5852d539SSimon Glass u32 ln_link_trn_ctl[4]; 111*5852d539SSimon Glass u8 res18[0x4]; 112*5852d539SSimon Glass u32 dp_hw_link_training; 113*5852d539SSimon Glass u8 res19[0x1c]; 114*5852d539SSimon Glass u32 dp_debug_ctl; 115*5852d539SSimon Glass u32 hpd_deglitch_l; 116*5852d539SSimon Glass u32 hpd_deglitch_h; 117*5852d539SSimon Glass u8 res20[0x14]; 118*5852d539SSimon Glass u32 dp_link_debug_ctl; 119*5852d539SSimon Glass u8 res21[0x1c]; 120*5852d539SSimon Glass u32 m_vid_0; 121*5852d539SSimon Glass u32 m_vid_1; 122*5852d539SSimon Glass u32 m_vid_2; 123*5852d539SSimon Glass u32 n_vid_0; 124*5852d539SSimon Glass u32 n_vid_1; 125*5852d539SSimon Glass u32 n_vid_2; 126*5852d539SSimon Glass u32 m_vid_mon; 127*5852d539SSimon Glass u8 res22[0x14]; 128*5852d539SSimon Glass u32 dp_video_fifo_thrd; 129*5852d539SSimon Glass u8 res23[0x8]; 130*5852d539SSimon Glass u32 dp_audio_margin; 131*5852d539SSimon Glass u8 res24[0x20]; 132*5852d539SSimon Glass u32 dp_m_cal_ctl; 133*5852d539SSimon Glass u32 m_vid_gen_filter_th; 134*5852d539SSimon Glass u8 res25[0x10]; 135*5852d539SSimon Glass u32 m_aud_gen_filter_th; 136*5852d539SSimon Glass u8 res26[0x4]; 137*5852d539SSimon Glass u32 aux_ch_sta; 138*5852d539SSimon Glass u32 aux_err_num; 139*5852d539SSimon Glass u32 aux_ch_defer_dtl; 140*5852d539SSimon Glass u32 aux_rx_comm; 141*5852d539SSimon Glass u32 buf_data_ctl; 142*5852d539SSimon Glass u32 aux_ch_ctl_1; 143*5852d539SSimon Glass u32 aux_addr_7_0; 144*5852d539SSimon Glass u32 aux_addr_15_8; 145*5852d539SSimon Glass u32 aux_addr_19_16; 146*5852d539SSimon Glass u32 aux_ch_ctl_2; 147*5852d539SSimon Glass u8 res27[0x18]; 148*5852d539SSimon Glass u32 buf_data[16]; 149*5852d539SSimon Glass u32 soc_general_ctl; 150*5852d539SSimon Glass u8 res29[0x1e0]; 151*5852d539SSimon Glass u32 pll_reg_2; 152*5852d539SSimon Glass u32 pll_reg_3; 153*5852d539SSimon Glass u32 pll_reg_4; 154*5852d539SSimon Glass u8 res30[0x10]; 155*5852d539SSimon Glass u32 pll_reg_5; 156*5852d539SSimon Glass }; 157*5852d539SSimon Glass check_member(rk3288_edp, pll_reg_5, 0xa00); 158*5852d539SSimon Glass 159*5852d539SSimon Glass /* func_en_1 */ 160*5852d539SSimon Glass #define VID_CAP_FUNC_EN_N (0x1 << 6) 161*5852d539SSimon Glass #define VID_FIFO_FUNC_EN_N (0x1 << 5) 162*5852d539SSimon Glass #define AUD_FIFO_FUNC_EN_N (0x1 << 4) 163*5852d539SSimon Glass #define AUD_FUNC_EN_N (0x1 << 3) 164*5852d539SSimon Glass #define HDCP_FUNC_EN_N (0x1 << 2) 165*5852d539SSimon Glass #define SW_FUNC_EN_N (0x1 << 0) 166*5852d539SSimon Glass 167*5852d539SSimon Glass /* func_en_2 */ 168*5852d539SSimon Glass #define SSC_FUNC_EN_N (0x1 << 7) 169*5852d539SSimon Glass #define AUX_FUNC_EN_N (0x1 << 2) 170*5852d539SSimon Glass #define SERDES_FIFO_FUNC_EN_N (0x1 << 1) 171*5852d539SSimon Glass #define LS_CLK_DOMAIN_FUNC_EN_N (0x1 << 0) 172*5852d539SSimon Glass 173*5852d539SSimon Glass /* video_ctl_1 */ 174*5852d539SSimon Glass #define VIDEO_EN (0x1 << 7) 175*5852d539SSimon Glass #define VIDEO_MUTE (0x1 << 6) 176*5852d539SSimon Glass 177*5852d539SSimon Glass /* video_ctl_2 */ 178*5852d539SSimon Glass #define IN_D_RANGE_MASK (0x1 << 7) 179*5852d539SSimon Glass #define IN_D_RANGE_SHIFT (7) 180*5852d539SSimon Glass #define IN_D_RANGE_CEA (0x1 << 7) 181*5852d539SSimon Glass #define IN_D_RANGE_VESA (0x0 << 7) 182*5852d539SSimon Glass #define IN_BPC_MASK (0x7 << 4) 183*5852d539SSimon Glass #define IN_BPC_SHIFT (4) 184*5852d539SSimon Glass #define IN_BPC_12_BITS (0x3 << 4) 185*5852d539SSimon Glass #define IN_BPC_10_BITS (0x2 << 4) 186*5852d539SSimon Glass #define IN_BPC_8_BITS (0x1 << 4) 187*5852d539SSimon Glass #define IN_BPC_6_BITS (0x0 << 4) 188*5852d539SSimon Glass #define IN_COLOR_F_MASK (0x3 << 0) 189*5852d539SSimon Glass #define IN_COLOR_F_SHIFT (0) 190*5852d539SSimon Glass #define IN_COLOR_F_YCBCR444 (0x2 << 0) 191*5852d539SSimon Glass #define IN_COLOR_F_YCBCR422 (0x1 << 0) 192*5852d539SSimon Glass #define IN_COLOR_F_RGB (0x0 << 0) 193*5852d539SSimon Glass 194*5852d539SSimon Glass /* video_ctl_3 */ 195*5852d539SSimon Glass #define IN_YC_COEFFI_MASK (0x1 << 7) 196*5852d539SSimon Glass #define IN_YC_COEFFI_SHIFT (7) 197*5852d539SSimon Glass #define IN_YC_COEFFI_ITU709 (0x1 << 7) 198*5852d539SSimon Glass #define IN_YC_COEFFI_ITU601 (0x0 << 7) 199*5852d539SSimon Glass #define VID_CHK_UPDATE_TYPE_MASK (0x1 << 4) 200*5852d539SSimon Glass #define VID_CHK_UPDATE_TYPE_SHIFT (4) 201*5852d539SSimon Glass #define VID_CHK_UPDATE_TYPE_1 (0x1 << 4) 202*5852d539SSimon Glass #define VID_CHK_UPDATE_TYPE_0 (0x0 << 4) 203*5852d539SSimon Glass 204*5852d539SSimon Glass /* video_ctl_4 */ 205*5852d539SSimon Glass #define BIST_EN (0x1 << 3) 206*5852d539SSimon Glass #define BIST_WH_64 (0x1 << 2) 207*5852d539SSimon Glass #define BIST_WH_32 (0x0 << 2) 208*5852d539SSimon Glass #define BIST_TYPE_COLR_BAR (0x0 << 0) 209*5852d539SSimon Glass #define BIST_TYPE_GRAY_BAR (0x1 << 0) 210*5852d539SSimon Glass #define BIST_TYPE_MOBILE_BAR (0x2 << 0) 211*5852d539SSimon Glass 212*5852d539SSimon Glass /* video_ctl_8 */ 213*5852d539SSimon Glass #define VID_HRES_TH(x) (((x) & 0xf) << 4) 214*5852d539SSimon Glass #define VID_VRES_TH(x) (((x) & 0xf) << 0) 215*5852d539SSimon Glass 216*5852d539SSimon Glass /* video_ctl_10 */ 217*5852d539SSimon Glass #define F_SEL (0x1 << 4) 218*5852d539SSimon Glass #define INTERACE_SCAN_CFG (0x1 << 2) 219*5852d539SSimon Glass #define INTERACD_SCAN_CFG_OFFSET 2 220*5852d539SSimon Glass #define VSYNC_POLARITY_CFG (0x1 << 1) 221*5852d539SSimon Glass #define VSYNC_POLARITY_CFG_OFFSET 1 222*5852d539SSimon Glass #define HSYNC_POLARITY_CFG (0x1 << 0) 223*5852d539SSimon Glass #define HSYNC_POLARITY_CFG_OFFSET 0 224*5852d539SSimon Glass 225*5852d539SSimon Glass /* dp_pd */ 226*5852d539SSimon Glass #define PD_INC_BG (0x1 << 7) 227*5852d539SSimon Glass #define PD_EXP_BG (0x1 << 6) 228*5852d539SSimon Glass #define PD_AUX (0x1 << 5) 229*5852d539SSimon Glass #define PD_PLL (0x1 << 4) 230*5852d539SSimon Glass #define PD_CH3 (0x1 << 3) 231*5852d539SSimon Glass #define PD_CH2 (0x1 << 2) 232*5852d539SSimon Glass #define PD_CH1 (0x1 << 1) 233*5852d539SSimon Glass #define PD_CH0 (0x1 << 0) 234*5852d539SSimon Glass 235*5852d539SSimon Glass /* pll_reg_1 */ 236*5852d539SSimon Glass #define REF_CLK_24M (0x1 << 1) 237*5852d539SSimon Glass #define REF_CLK_27M (0x0 << 1) 238*5852d539SSimon Glass 239*5852d539SSimon Glass /* line_map */ 240*5852d539SSimon Glass #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6) 241*5852d539SSimon Glass #define LANE3_MAP_LOGIC_LANE_1 (0x1 << 6) 242*5852d539SSimon Glass #define LANE3_MAP_LOGIC_LANE_2 (0x2 << 6) 243*5852d539SSimon Glass #define LANE3_MAP_LOGIC_LANE_3 (0x3 << 6) 244*5852d539SSimon Glass #define LANE2_MAP_LOGIC_LANE_0 (0x0 << 4) 245*5852d539SSimon Glass #define LANE2_MAP_LOGIC_LANE_1 (0x1 << 4) 246*5852d539SSimon Glass #define LANE2_MAP_LOGIC_LANE_2 (0x2 << 4) 247*5852d539SSimon Glass #define LANE2_MAP_LOGIC_LANE_3 (0x3 << 4) 248*5852d539SSimon Glass #define LANE1_MAP_LOGIC_LANE_0 (0x0 << 2) 249*5852d539SSimon Glass #define LANE1_MAP_LOGIC_LANE_1 (0x1 << 2) 250*5852d539SSimon Glass #define LANE1_MAP_LOGIC_LANE_2 (0x2 << 2) 251*5852d539SSimon Glass #define LANE1_MAP_LOGIC_LANE_3 (0x3 << 2) 252*5852d539SSimon Glass #define LANE0_MAP_LOGIC_LANE_0 (0x0 << 0) 253*5852d539SSimon Glass #define LANE0_MAP_LOGIC_LANE_1 (0x1 << 0) 254*5852d539SSimon Glass #define LANE0_MAP_LOGIC_LANE_2 (0x2 << 0) 255*5852d539SSimon Glass #define LANE0_MAP_LOGIC_LANE_3 (0x3 << 0) 256*5852d539SSimon Glass 257*5852d539SSimon Glass /* analog_ctl_2 */ 258*5852d539SSimon Glass #define SEL_24M (0x1 << 3) 259*5852d539SSimon Glass 260*5852d539SSimon Glass /* common_int_sta_1 */ 261*5852d539SSimon Glass #define VSYNC_DET (0x1 << 7) 262*5852d539SSimon Glass #define PLL_LOCK_CHG (0x1 << 6) 263*5852d539SSimon Glass #define SPDIF_ERR (0x1 << 5) 264*5852d539SSimon Glass #define SPDIF_UNSTBL (0x1 << 4) 265*5852d539SSimon Glass #define VID_FORMAT_CHG (0x1 << 3) 266*5852d539SSimon Glass #define AUD_CLK_CHG (0x1 << 2) 267*5852d539SSimon Glass #define VID_CLK_CHG (0x1 << 1) 268*5852d539SSimon Glass #define SW_INT (0x1 << 0) 269*5852d539SSimon Glass 270*5852d539SSimon Glass /* common_int_sta_2 */ 271*5852d539SSimon Glass #define ENC_EN_CHG (0x1 << 6) 272*5852d539SSimon Glass #define HW_BKSV_RDY (0x1 << 3) 273*5852d539SSimon Glass #define HW_SHA_DONE (0x1 << 2) 274*5852d539SSimon Glass #define HW_AUTH_STATE_CHG (0x1 << 1) 275*5852d539SSimon Glass #define HW_AUTH_DONE (0x1 << 0) 276*5852d539SSimon Glass 277*5852d539SSimon Glass /* common_int_sta_3 */ 278*5852d539SSimon Glass #define AFIFO_UNDER (0x1 << 7) 279*5852d539SSimon Glass #define AFIFO_OVER (0x1 << 6) 280*5852d539SSimon Glass #define R0_CHK_FLAG (0x1 << 5) 281*5852d539SSimon Glass 282*5852d539SSimon Glass /* common_int_sta_4 */ 283*5852d539SSimon Glass #define PSR_ACTIVE (0x1 << 7) 284*5852d539SSimon Glass #define PSR_INACTIVE (0x1 << 6) 285*5852d539SSimon Glass #define SPDIF_BI_PHASE_ERR (0x1 << 5) 286*5852d539SSimon Glass #define HOTPLUG_CHG (0x1 << 2) 287*5852d539SSimon Glass #define HPD_LOST (0x1 << 1) 288*5852d539SSimon Glass #define PLUG (0x1 << 0) 289*5852d539SSimon Glass 290*5852d539SSimon Glass /* dp_int_sta */ 291*5852d539SSimon Glass #define INT_HPD (0x1 << 6) 292*5852d539SSimon Glass #define HW_LT_DONE (0x1 << 5) 293*5852d539SSimon Glass #define SINK_LOST (0x1 << 3) 294*5852d539SSimon Glass #define LINK_LOST (0x1 << 2) 295*5852d539SSimon Glass #define RPLY_RECEIV (0x1 << 1) 296*5852d539SSimon Glass #define AUX_ERR (0x1 << 0) 297*5852d539SSimon Glass 298*5852d539SSimon Glass /* int_ctl */ 299*5852d539SSimon Glass #define SOFT_INT_CTRL (0x1 << 2) 300*5852d539SSimon Glass #define INT_POL (0x1 << 0) 301*5852d539SSimon Glass 302*5852d539SSimon Glass /* sys_ctl_1 */ 303*5852d539SSimon Glass #define DET_STA (0x1 << 2) 304*5852d539SSimon Glass #define FORCE_DET (0x1 << 1) 305*5852d539SSimon Glass #define DET_CTRL (0x1 << 0) 306*5852d539SSimon Glass 307*5852d539SSimon Glass /* sys_ctl_2 */ 308*5852d539SSimon Glass #define CHA_CRI(x) (((x) & 0xf) << 4) 309*5852d539SSimon Glass #define CHA_STA (0x1 << 2) 310*5852d539SSimon Glass #define FORCE_CHA (0x1 << 1) 311*5852d539SSimon Glass #define CHA_CTRL (0x1 << 0) 312*5852d539SSimon Glass 313*5852d539SSimon Glass /* sys_ctl_3 */ 314*5852d539SSimon Glass #define HPD_STATUS (0x1 << 6) 315*5852d539SSimon Glass #define F_HPD (0x1 << 5) 316*5852d539SSimon Glass #define HPD_CTRL (0x1 << 4) 317*5852d539SSimon Glass #define HDCP_RDY (0x1 << 3) 318*5852d539SSimon Glass #define STRM_VALID (0x1 << 2) 319*5852d539SSimon Glass #define F_VALID (0x1 << 1) 320*5852d539SSimon Glass #define VALID_CTRL (0x1 << 0) 321*5852d539SSimon Glass 322*5852d539SSimon Glass /* sys_ctl_4 */ 323*5852d539SSimon Glass #define FIX_M_AUD (0x1 << 4) 324*5852d539SSimon Glass #define ENHANCED (0x1 << 3) 325*5852d539SSimon Glass #define FIX_M_VID (0x1 << 2) 326*5852d539SSimon Glass #define M_VID_UPDATE_CTRL (0x3 << 0) 327*5852d539SSimon Glass 328*5852d539SSimon Glass /* pll_reg_2 */ 329*5852d539SSimon Glass #define LDO_OUTPUT_V_SEL_145 (2 << 6) 330*5852d539SSimon Glass #define KVCO_DEFALUT (1 << 4) 331*5852d539SSimon Glass #define CHG_PUMP_CUR_SEL_5US (1 << 2) 332*5852d539SSimon Glass #define V2L_CUR_SEL_1MA (1 << 0) 333*5852d539SSimon Glass 334*5852d539SSimon Glass /* pll_reg_3 */ 335*5852d539SSimon Glass #define LOCK_DET_CNT_SEL_256 (2 << 5) 336*5852d539SSimon Glass #define LOOP_FILTER_RESET (0 << 4) 337*5852d539SSimon Glass #define PALL_SSC_RESET (0 << 3) 338*5852d539SSimon Glass #define LOCK_DET_BYPASS (0 << 2) 339*5852d539SSimon Glass #define PLL_LOCK_DET_MODE (0 << 1) 340*5852d539SSimon Glass #define PLL_LOCK_DET_FORCE (0 << 0) 341*5852d539SSimon Glass 342*5852d539SSimon Glass /* pll_reg_5 */ 343*5852d539SSimon Glass #define REGULATOR_V_SEL_950MV (2 << 4) 344*5852d539SSimon Glass #define STANDBY_CUR_SEL (0 << 3) 345*5852d539SSimon Glass #define CHG_PUMP_INOUT_CTRL_1200MV (1 << 1) 346*5852d539SSimon Glass #define CHG_PUMP_INPUT_CTRL_OP (0 << 0) 347*5852d539SSimon Glass 348*5852d539SSimon Glass /* ssc_reg */ 349*5852d539SSimon Glass #define SSC_OFFSET (0 << 6) 350*5852d539SSimon Glass #define SSC_MODE (1 << 4) 351*5852d539SSimon Glass #define SSC_DEPTH (9 << 0) 352*5852d539SSimon Glass 353*5852d539SSimon Glass /* tx_common */ 354*5852d539SSimon Glass #define TX_SWING_PRE_EMP_MODE (1 << 7) 355*5852d539SSimon Glass #define PRE_DRIVER_PW_CTRL1 (0 << 5) 356*5852d539SSimon Glass #define LP_MODE_CLK_REGULATOR (0 << 4) 357*5852d539SSimon Glass #define RESISTOR_MSB_CTRL (0 << 3) 358*5852d539SSimon Glass #define RESISTOR_CTRL (7 << 0) 359*5852d539SSimon Glass 360*5852d539SSimon Glass /* dp_aux */ 361*5852d539SSimon Glass #define DP_AUX_COMMON_MODE (0 << 4) 362*5852d539SSimon Glass #define DP_AUX_EN (0 << 3) 363*5852d539SSimon Glass #define AUX_TERM_50OHM (3 << 0) 364*5852d539SSimon Glass 365*5852d539SSimon Glass /* dp_bias */ 366*5852d539SSimon Glass #define DP_BG_OUT_SEL (4 << 4) 367*5852d539SSimon Glass #define DP_DB_CUR_CTRL (0 << 3) 368*5852d539SSimon Glass #define DP_BG_SEL (1 << 2) 369*5852d539SSimon Glass #define DP_RESISTOR_TUNE_BG (2 << 0) 370*5852d539SSimon Glass 371*5852d539SSimon Glass /* dp_reserv2 */ 372*5852d539SSimon Glass #define CH1_CH3_SWING_EMP_CTRL (5 << 4) 373*5852d539SSimon Glass #define CH0_CH2_SWING_EMP_CTRL (5 << 0) 374*5852d539SSimon Glass 375*5852d539SSimon Glass /* dp_training_ptn_set */ 376*5852d539SSimon Glass #define SCRAMBLING_DISABLE (0x1 << 5) 377*5852d539SSimon Glass #define SCRAMBLING_ENABLE (0x0 << 5) 378*5852d539SSimon Glass #define LINK_QUAL_PATTERN_SET_MASK (0x7 << 2) 379*5852d539SSimon Glass #define LINK_QUAL_PATTERN_SET_HBR2 (0x5 << 2) 380*5852d539SSimon Glass #define LINK_QUAL_PATTERN_SET_80BIT (0x4 << 2) 381*5852d539SSimon Glass #define LINK_QUAL_PATTERN_SET_PRBS7 (0x3 << 2) 382*5852d539SSimon Glass #define LINK_QUAL_PATTERN_SET_D10_2 (0x1 << 2) 383*5852d539SSimon Glass #define LINK_QUAL_PATTERN_SET_DISABLE (0x0 << 2) 384*5852d539SSimon Glass #define SW_TRAINING_PATTERN_SET_MASK (0x3 << 0) 385*5852d539SSimon Glass #define SW_TRAINING_PATTERN_SET_PTN2 (0x2 << 0) 386*5852d539SSimon Glass #define SW_TRAINING_PATTERN_SET_PTN1 (0x1 << 0) 387*5852d539SSimon Glass #define SW_TRAINING_PATTERN_SET_DISABLE (0x0 << 0) 388*5852d539SSimon Glass 389*5852d539SSimon Glass /* dp_hw_link_training_ctl */ 390*5852d539SSimon Glass #define HW_LT_ERR_CODE_MASK 0x70 391*5852d539SSimon Glass #define HW_LT_ERR_CODE_SHIFT 4 392*5852d539SSimon Glass #define HW_LT_EN (0x1 << 0) 393*5852d539SSimon Glass 394*5852d539SSimon Glass /* dp_debug_ctl */ 395*5852d539SSimon Glass #define PLL_LOCK (0x1 << 4) 396*5852d539SSimon Glass #define F_PLL_LOCK (0x1 << 3) 397*5852d539SSimon Glass #define PLL_LOCK_CTRL (0x1 << 2) 398*5852d539SSimon Glass #define POLL_EN (0x1 << 1) 399*5852d539SSimon Glass #define PN_INV (0x1 << 0) 400*5852d539SSimon Glass 401*5852d539SSimon Glass /* aux_ch_sta */ 402*5852d539SSimon Glass #define AUX_BUSY (0x1 << 4) 403*5852d539SSimon Glass #define AUX_STATUS_MASK (0xf << 0) 404*5852d539SSimon Glass 405*5852d539SSimon Glass /* aux_ch_defer_ctl */ 406*5852d539SSimon Glass #define DEFER_CTRL_EN (0x1 << 7) 407*5852d539SSimon Glass #define DEFER_COUNT(x) (((x) & 0x7f) << 0) 408*5852d539SSimon Glass 409*5852d539SSimon Glass /* aux_rx_comm */ 410*5852d539SSimon Glass #define AUX_RX_COMM_I2C_DEFER (0x2 << 2) 411*5852d539SSimon Glass #define AUX_RX_COMM_AUX_DEFER (0x2 << 0) 412*5852d539SSimon Glass 413*5852d539SSimon Glass /* buffer_data_ctl */ 414*5852d539SSimon Glass #define BUF_CLR (0x1 << 7) 415*5852d539SSimon Glass #define BUF_HAVE_DATA (0x1 << 4) 416*5852d539SSimon Glass #define BUF_DATA_COUNT(x) (((x) & 0xf) << 0) 417*5852d539SSimon Glass 418*5852d539SSimon Glass /* aux_ch_ctl_1 */ 419*5852d539SSimon Glass #define AUX_LENGTH(x) (((x - 1) & 0xf) << 4) 420*5852d539SSimon Glass #define AUX_TX_COMM_MASK (0xf << 0) 421*5852d539SSimon Glass #define AUX_TX_COMM_DP_TRANSACTION (0x1 << 3) 422*5852d539SSimon Glass #define AUX_TX_COMM_I2C_TRANSACTION (0x0 << 3) 423*5852d539SSimon Glass #define AUX_TX_COMM_MOT (0x1 << 2) 424*5852d539SSimon Glass #define AUX_TX_COMM_WRITE (0x0 << 0) 425*5852d539SSimon Glass #define AUX_TX_COMM_READ (0x1 << 0) 426*5852d539SSimon Glass 427*5852d539SSimon Glass /* aux_ch_ctl_2 */ 428*5852d539SSimon Glass #define PD_AUX_IDLE (0x1 << 3) 429*5852d539SSimon Glass #define ADDR_ONLY (0x1 << 1) 430*5852d539SSimon Glass #define AUX_EN (0x1 << 0) 431*5852d539SSimon Glass 432*5852d539SSimon Glass /* tx_sw_reset */ 433*5852d539SSimon Glass #define RST_DP_TX (0x1 << 0) 434*5852d539SSimon Glass 435*5852d539SSimon Glass /* analog_ctl_1 */ 436*5852d539SSimon Glass #define TX_TERMINAL_CTRL_50_OHM (0x1 << 4) 437*5852d539SSimon Glass 438*5852d539SSimon Glass /* analog_ctl_3 */ 439*5852d539SSimon Glass #define DRIVE_DVDD_BIT_1_0625V (0x4 << 5) 440*5852d539SSimon Glass #define VCO_BIT_600_MICRO (0x5 << 0) 441*5852d539SSimon Glass 442*5852d539SSimon Glass /* pll_filter_ctl_1 */ 443*5852d539SSimon Glass #define PD_RING_OSC (0x1 << 6) 444*5852d539SSimon Glass #define AUX_TERMINAL_CTRL_37_5_OHM (0x0 << 4) 445*5852d539SSimon Glass #define AUX_TERMINAL_CTRL_45_OHM (0x1 << 4) 446*5852d539SSimon Glass #define AUX_TERMINAL_CTRL_50_OHM (0x2 << 4) 447*5852d539SSimon Glass #define AUX_TERMINAL_CTRL_65_OHM (0x3 << 4) 448*5852d539SSimon Glass #define TX_CUR1_2X (0x1 << 2) 449*5852d539SSimon Glass #define TX_CUR_16_MA (0x3 << 0) 450*5852d539SSimon Glass 451*5852d539SSimon Glass /* Definition for DPCD Register */ 452*5852d539SSimon Glass #define DPCD_DPCD_REV (0x0000) 453*5852d539SSimon Glass #define DPCD_MAX_LINK_RATE (0x0001) 454*5852d539SSimon Glass #define DPCD_MAX_LANE_COUNT (0x0002) 455*5852d539SSimon Glass #define DP_MAX_LANE_COUNT_MASK 0x1f 456*5852d539SSimon Glass #define DP_TPS3_SUPPORTED (1 << 6) 457*5852d539SSimon Glass #define DP_ENHANCED_FRAME_CAP (1 << 7) 458*5852d539SSimon Glass 459*5852d539SSimon Glass #define DPCD_LINK_BW_SET (0x0100) 460*5852d539SSimon Glass #define DPCD_LANE_COUNT_SET (0x0101) 461*5852d539SSimon Glass 462*5852d539SSimon Glass #define DPCD_TRAINING_PATTERN_SET (0x0102) 463*5852d539SSimon Glass #define DP_TRAINING_PATTERN_DISABLE 0 464*5852d539SSimon Glass #define DP_TRAINING_PATTERN_1 1 465*5852d539SSimon Glass #define DP_TRAINING_PATTERN_2 2 466*5852d539SSimon Glass #define DP_TRAINING_PATTERN_3 3 467*5852d539SSimon Glass #define DP_TRAINING_PATTERN_MASK 0x3 468*5852d539SSimon Glass 469*5852d539SSimon Glass #define DPCD_TRAINING_LANE0_SET (0x0103) 470*5852d539SSimon Glass #define DP_TRAIN_VOLTAGE_SWING_MASK 0x3 471*5852d539SSimon Glass #define DP_TRAIN_VOLTAGE_SWING_SHIFT 0 472*5852d539SSimon Glass #define DP_TRAIN_MAX_SWING_REACHED (1 << 2) 473*5852d539SSimon Glass #define DP_TRAIN_VOLTAGE_SWING_400 (0 << 0) 474*5852d539SSimon Glass #define DP_TRAIN_VOLTAGE_SWING_600 (1 << 0) 475*5852d539SSimon Glass #define DP_TRAIN_VOLTAGE_SWING_800 (2 << 0) 476*5852d539SSimon Glass #define DP_TRAIN_VOLTAGE_SWING_1200 (3 << 0) 477*5852d539SSimon Glass 478*5852d539SSimon Glass #define DP_TRAIN_PRE_EMPHASIS_MASK (3 << 3) 479*5852d539SSimon Glass #define DP_TRAIN_PRE_EMPHASIS_0 (0 << 3) 480*5852d539SSimon Glass #define DP_TRAIN_PRE_EMPHASIS_3_5 (1 << 3) 481*5852d539SSimon Glass #define DP_TRAIN_PRE_EMPHASIS_6 (2 << 3) 482*5852d539SSimon Glass #define DP_TRAIN_PRE_EMPHASIS_9_5 (3 << 3) 483*5852d539SSimon Glass 484*5852d539SSimon Glass #define DP_TRAIN_PRE_EMPHASIS_SHIFT 3 485*5852d539SSimon Glass #define DP_TRAIN_MAX_PRE_EMPHASIS_REACHED (1 << 5) 486*5852d539SSimon Glass 487*5852d539SSimon Glass #define DPCD_LANE0_1_STATUS (0x0202) 488*5852d539SSimon Glass #define DPCD_LANE2_3_STATUS (0x0203) 489*5852d539SSimon Glass #define DP_LANE_CR_DONE (1 << 0) 490*5852d539SSimon Glass #define DP_LANE_CHANNEL_EQ_DONE (1 << 1) 491*5852d539SSimon Glass #define DP_LANE_SYMBOL_LOCKED (1 << 2) 492*5852d539SSimon Glass #define DP_CHANNEL_EQ_BITS (DP_LANE_CR_DONE |\ 493*5852d539SSimon Glass DP_LANE_CHANNEL_EQ_DONE |\ 494*5852d539SSimon Glass DP_LANE_SYMBOL_LOCKED) 495*5852d539SSimon Glass 496*5852d539SSimon Glass #define DPCD_LANE_ALIGN_STATUS_UPDATED (0x0204) 497*5852d539SSimon Glass #define DP_INTERLANE_ALIGN_DONE (1 << 0) 498*5852d539SSimon Glass #define DP_DOWNSTREAM_PORT_STATUS_CHANGED (1 << 6) 499*5852d539SSimon Glass #define DP_LINK_STATUS_UPDATED (1 << 7) 500*5852d539SSimon Glass 501*5852d539SSimon Glass #define DPCD_ADJUST_REQUEST_LANE0_1 (0x0206) 502*5852d539SSimon Glass #define DPCD_ADJUST_REQUEST_LANE2_3 (0x0207) 503*5852d539SSimon Glass #define DP_ADJUST_VOLTAGE_SWING_LANE0_MASK 0x03 504*5852d539SSimon Glass #define DP_ADJUST_VOLTAGE_SWING_LANE0_SHIFT 0 505*5852d539SSimon Glass #define DP_ADJUST_PRE_EMPHASIS_LANE0_MASK 0x0c 506*5852d539SSimon Glass #define DP_ADJUST_PRE_EMPHASIS_LANE0_SHIFT 2 507*5852d539SSimon Glass #define DP_ADJUST_VOLTAGE_SWING_LANE1_MASK 0x30 508*5852d539SSimon Glass #define DP_ADJUST_VOLTAGE_SWING_LANE1_SHIFT 4 509*5852d539SSimon Glass #define DP_ADJUST_PRE_EMPHASIS_LANE1_MASK 0xc0 510*5852d539SSimon Glass #define DP_ADJUST_PRE_EMPHASIS_LANE1_SHIFT 6 511*5852d539SSimon Glass 512*5852d539SSimon Glass #define DPCD_TEST_REQUEST (0x0218) 513*5852d539SSimon Glass #define DPCD_TEST_RESPONSE (0x0260) 514*5852d539SSimon Glass #define DPCD_TEST_EDID_CHECKSUM (0x0261) 515*5852d539SSimon Glass #define DPCD_LINK_POWER_STATE (0x0600) 516*5852d539SSimon Glass #define DP_SET_POWER_D0 0x1 517*5852d539SSimon Glass #define DP_SET_POWER_D3 0x2 518*5852d539SSimon Glass #define DP_SET_POWER_MASK 0x3 519*5852d539SSimon Glass 520*5852d539SSimon Glass #define AUX_ADDR_7_0(x) (((x) >> 0) & 0xff) 521*5852d539SSimon Glass #define AUX_ADDR_15_8(x) (((x) >> 8) & 0xff) 522*5852d539SSimon Glass #define AUX_ADDR_19_16(x) (((x) >> 16) & 0x0f) 523*5852d539SSimon Glass 524*5852d539SSimon Glass #define STREAM_ON_TIMEOUT 100 525*5852d539SSimon Glass #define PLL_LOCK_TIMEOUT 10 526*5852d539SSimon Glass #define DP_INIT_TRIES 10 527*5852d539SSimon Glass 528*5852d539SSimon Glass #define EDID_ADDR 0x50 529*5852d539SSimon Glass #define EDID_LENGTH 0x80 530*5852d539SSimon Glass #define EDID_HEADER 0x00 531*5852d539SSimon Glass #define EDID_EXTENSION_FLAG 0x7e 532*5852d539SSimon Glass 533*5852d539SSimon Glass 534*5852d539SSimon Glass enum dpcd_request { 535*5852d539SSimon Glass DPCD_READ, 536*5852d539SSimon Glass DPCD_WRITE, 537*5852d539SSimon Glass }; 538*5852d539SSimon Glass 539*5852d539SSimon Glass enum dp_irq_type { 540*5852d539SSimon Glass DP_IRQ_TYPE_HP_CABLE_IN, 541*5852d539SSimon Glass DP_IRQ_TYPE_HP_CABLE_OUT, 542*5852d539SSimon Glass DP_IRQ_TYPE_HP_CHANGE, 543*5852d539SSimon Glass DP_IRQ_TYPE_UNKNOWN, 544*5852d539SSimon Glass }; 545*5852d539SSimon Glass 546*5852d539SSimon Glass enum color_coefficient { 547*5852d539SSimon Glass COLOR_YCBCR601, 548*5852d539SSimon Glass COLOR_YCBCR709 549*5852d539SSimon Glass }; 550*5852d539SSimon Glass 551*5852d539SSimon Glass enum dynamic_range { 552*5852d539SSimon Glass VESA, 553*5852d539SSimon Glass CEA 554*5852d539SSimon Glass }; 555*5852d539SSimon Glass 556*5852d539SSimon Glass enum clock_recovery_m_value_type { 557*5852d539SSimon Glass CALCULATED_M, 558*5852d539SSimon Glass REGISTER_M 559*5852d539SSimon Glass }; 560*5852d539SSimon Glass 561*5852d539SSimon Glass enum video_timing_recognition_type { 562*5852d539SSimon Glass VIDEO_TIMING_FROM_CAPTURE, 563*5852d539SSimon Glass VIDEO_TIMING_FROM_REGISTER 564*5852d539SSimon Glass }; 565*5852d539SSimon Glass 566*5852d539SSimon Glass enum pattern_set { 567*5852d539SSimon Glass PRBS7, 568*5852d539SSimon Glass D10_2, 569*5852d539SSimon Glass TRAINING_PTN1, 570*5852d539SSimon Glass TRAINING_PTN2, 571*5852d539SSimon Glass DP_NONE 572*5852d539SSimon Glass }; 573*5852d539SSimon Glass 574*5852d539SSimon Glass enum color_space { 575*5852d539SSimon Glass CS_RGB, 576*5852d539SSimon Glass CS_YCBCR422, 577*5852d539SSimon Glass CS_YCBCR444 578*5852d539SSimon Glass }; 579*5852d539SSimon Glass 580*5852d539SSimon Glass enum color_depth { 581*5852d539SSimon Glass COLOR_6, 582*5852d539SSimon Glass COLOR_8, 583*5852d539SSimon Glass COLOR_10, 584*5852d539SSimon Glass COLOR_12 585*5852d539SSimon Glass }; 586*5852d539SSimon Glass 587*5852d539SSimon Glass enum link_rate_type { 588*5852d539SSimon Glass LINK_RATE_1_62GBPS = 0x06, 589*5852d539SSimon Glass LINK_RATE_2_70GBPS = 0x0a 590*5852d539SSimon Glass }; 591*5852d539SSimon Glass 592*5852d539SSimon Glass enum link_lane_count_type { 593*5852d539SSimon Glass LANE_CNT1 = 1, 594*5852d539SSimon Glass LANE_CNT2 = 2, 595*5852d539SSimon Glass LANE_CNT4 = 4 596*5852d539SSimon Glass }; 597*5852d539SSimon Glass 598*5852d539SSimon Glass enum link_training_state { 599*5852d539SSimon Glass LT_START, 600*5852d539SSimon Glass LT_CLK_RECOVERY, 601*5852d539SSimon Glass LT_EQ_TRAINING, 602*5852d539SSimon Glass FINISHED, 603*5852d539SSimon Glass FAILED 604*5852d539SSimon Glass }; 605*5852d539SSimon Glass 606*5852d539SSimon Glass enum voltage_swing_level { 607*5852d539SSimon Glass VOLTAGE_LEVEL_0, 608*5852d539SSimon Glass VOLTAGE_LEVEL_1, 609*5852d539SSimon Glass VOLTAGE_LEVEL_2, 610*5852d539SSimon Glass VOLTAGE_LEVEL_3, 611*5852d539SSimon Glass }; 612*5852d539SSimon Glass 613*5852d539SSimon Glass enum pre_emphasis_level { 614*5852d539SSimon Glass PRE_EMPHASIS_LEVEL_0, 615*5852d539SSimon Glass PRE_EMPHASIS_LEVEL_1, 616*5852d539SSimon Glass PRE_EMPHASIS_LEVEL_2, 617*5852d539SSimon Glass PRE_EMPHASIS_LEVEL_3, 618*5852d539SSimon Glass }; 619*5852d539SSimon Glass 620*5852d539SSimon Glass enum analog_power_block { 621*5852d539SSimon Glass AUX_BLOCK, 622*5852d539SSimon Glass CH0_BLOCK, 623*5852d539SSimon Glass CH1_BLOCK, 624*5852d539SSimon Glass CH2_BLOCK, 625*5852d539SSimon Glass CH3_BLOCK, 626*5852d539SSimon Glass ANALOG_TOTAL, 627*5852d539SSimon Glass POWER_ALL 628*5852d539SSimon Glass }; 629*5852d539SSimon Glass 630*5852d539SSimon Glass struct link_train { 631*5852d539SSimon Glass unsigned char revision; 632*5852d539SSimon Glass u8 link_rate; 633*5852d539SSimon Glass u8 lane_count; 634*5852d539SSimon Glass }; 635*5852d539SSimon Glass 636*5852d539SSimon Glass #endif 637