Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Copyright(c) 2016, Analogix Semiconductor.
0004  *
0005  * Based on anx7808 driver obtained from chromeos with copyright:
0006  * Copyright(c) 2013, Google Inc.
0007  */
0008 #ifndef _ANALOGIX_I2C_DPTX_H_
0009 #define _ANALOGIX_I2C_DPTX_H_
0010 
0011 /***************************************************************/
0012 /* Register definitions for TX_P0                              */
0013 /***************************************************************/
0014 
0015 /* HDCP Status Register */
0016 #define SP_TX_HDCP_STATUS_REG       0x00
0017 #define SP_AUTH_FAIL            BIT(5)
0018 #define SP_AUTHEN_PASS          BIT(1)
0019 
0020 /* HDCP Control Register 0 */
0021 #define SP_HDCP_CTRL0_REG       0x01
0022 #define SP_RX_REPEATER          BIT(6)
0023 #define SP_RE_AUTH          BIT(5)
0024 #define SP_SW_AUTH_OK           BIT(4)
0025 #define SP_HARD_AUTH_EN         BIT(3)
0026 #define SP_HDCP_ENC_EN          BIT(2)
0027 #define SP_BKSV_SRM_PASS        BIT(1)
0028 #define SP_KSVLIST_VLD          BIT(0)
0029 /* HDCP Function Enabled */
0030 #define SP_HDCP_FUNCTION_ENABLED    (BIT(0) | BIT(1) | BIT(2) | BIT(3))
0031 
0032 /* HDCP Receiver BSTATUS Register 0 */
0033 #define SP_HDCP_RX_BSTATUS0_REG     0x1b
0034 /* HDCP Receiver BSTATUS Register 1 */
0035 #define SP_HDCP_RX_BSTATUS1_REG     0x1c
0036 
0037 /* HDCP Embedded "Blue Screen" Content Registers */
0038 #define SP_HDCP_VID0_BLUE_SCREEN_REG    0x2c
0039 #define SP_HDCP_VID1_BLUE_SCREEN_REG    0x2d
0040 #define SP_HDCP_VID2_BLUE_SCREEN_REG    0x2e
0041 
0042 /* HDCP Wait R0 Timing Register */
0043 #define SP_HDCP_WAIT_R0_TIME_REG    0x40
0044 
0045 /* HDCP Link Integrity Check Timer Register */
0046 #define SP_HDCP_LINK_CHECK_TIMER_REG    0x41
0047 
0048 /* HDCP Repeater Ready Wait Timer Register */
0049 #define SP_HDCP_RPTR_RDY_WAIT_TIME_REG  0x42
0050 
0051 /* HDCP Auto Timer Register */
0052 #define SP_HDCP_AUTO_TIMER_REG      0x51
0053 
0054 /* HDCP Key Status Register */
0055 #define SP_HDCP_KEY_STATUS_REG      0x5e
0056 
0057 /* HDCP Key Command Register */
0058 #define SP_HDCP_KEY_COMMAND_REG     0x5f
0059 #define SP_DISABLE_SYNC_HDCP        BIT(2)
0060 
0061 /* OTP Memory Key Protection Registers */
0062 #define SP_OTP_KEY_PROTECT1_REG     0x60
0063 #define SP_OTP_KEY_PROTECT2_REG     0x61
0064 #define SP_OTP_KEY_PROTECT3_REG     0x62
0065 #define SP_OTP_PSW1         0xa2
0066 #define SP_OTP_PSW2         0x7e
0067 #define SP_OTP_PSW3         0xc6
0068 
0069 /* DP System Control Registers */
0070 #define SP_DP_SYSTEM_CTRL_BASE      (0x80 - 1)
0071 /* Bits for DP System Control Register 2 */
0072 #define SP_CHA_STA          BIT(2)
0073 /* Bits for DP System Control Register 3 */
0074 #define SP_HPD_STATUS           BIT(6)
0075 #define SP_HPD_FORCE            BIT(5)
0076 #define SP_HPD_CTRL         BIT(4)
0077 #define SP_STRM_VALID           BIT(2)
0078 #define SP_STRM_FORCE           BIT(1)
0079 #define SP_STRM_CTRL            BIT(0)
0080 /* Bits for DP System Control Register 4 */
0081 #define SP_ENHANCED_MODE        BIT(3)
0082 
0083 /* DP Video Control Register */
0084 #define SP_DP_VIDEO_CTRL_REG        0x84
0085 #define SP_COLOR_F_MASK         0x06
0086 #define SP_COLOR_F_SHIFT        1
0087 #define SP_BPC_MASK         0xe0
0088 #define SP_BPC_SHIFT            5
0089 #  define SP_BPC_6BITS          0x00
0090 #  define SP_BPC_8BITS          0x01
0091 #  define SP_BPC_10BITS         0x02
0092 #  define SP_BPC_12BITS         0x03
0093 
0094 /* DP Audio Control Register */
0095 #define SP_DP_AUDIO_CTRL_REG        0x87
0096 #define SP_AUD_EN           BIT(0)
0097 
0098 /* 10us Pulse Generate Timer Registers */
0099 #define SP_I2C_GEN_10US_TIMER0_REG  0x88
0100 #define SP_I2C_GEN_10US_TIMER1_REG  0x89
0101 
0102 /* Packet Send Control Register */
0103 #define SP_PACKET_SEND_CTRL_REG     0x90
0104 #define SP_AUD_IF_UP            BIT(7)
0105 #define SP_AVI_IF_UD            BIT(6)
0106 #define SP_MPEG_IF_UD           BIT(5)
0107 #define SP_SPD_IF_UD            BIT(4)
0108 #define SP_AUD_IF_EN            BIT(3)
0109 #define SP_AVI_IF_EN            BIT(2)
0110 #define SP_MPEG_IF_EN           BIT(1)
0111 #define SP_SPD_IF_EN            BIT(0)
0112 
0113 /* DP HDCP Control Register */
0114 #define SP_DP_HDCP_CTRL_REG     0x92
0115 #define SP_AUTO_EN          BIT(7)
0116 #define SP_AUTO_START           BIT(5)
0117 #define SP_LINK_POLLING         BIT(1)
0118 
0119 /* DP Main Link Bandwidth Setting Register */
0120 #define SP_DP_MAIN_LINK_BW_SET_REG  0xa0
0121 #define SP_LINK_BW_SET_MASK     0x1f
0122 #define SP_INITIAL_SLIM_M_AUD_SEL   BIT(5)
0123 
0124 /* DP Lane Count Setting Register */
0125 #define SP_DP_LANE_COUNT_SET_REG    0xa1
0126 
0127 /* DP Training Pattern Set Register */
0128 #define SP_DP_TRAINING_PATTERN_SET_REG  0xa2
0129 
0130 /* DP Lane 0 Link Training Control Register */
0131 #define SP_DP_LANE0_LT_CTRL_REG     0xa3
0132 #define SP_TX_SW_SET_MASK       0x1b
0133 #define SP_MAX_PRE_REACH        BIT(5)
0134 #define SP_MAX_DRIVE_REACH      BIT(4)
0135 #define SP_PRE_EMP_LEVEL1       BIT(3)
0136 #define SP_DRVIE_CURRENT_LEVEL1     BIT(0)
0137 
0138 /* DP Link Training Control Register */
0139 #define SP_DP_LT_CTRL_REG       0xa8
0140 #define SP_DP_LT_INPROGRESS     0x80
0141 #define SP_LT_ERROR_TYPE_MASK       0x70
0142 #  define SP_LT_NO_ERROR        0x00
0143 #  define SP_LT_AUX_WRITE_ERROR     0x01
0144 #  define SP_LT_MAX_DRIVE_REACHED   0x02
0145 #  define SP_LT_WRONG_LANE_COUNT_SET    0x03
0146 #  define SP_LT_LOOP_SAME_5_TIME    0x04
0147 #  define SP_LT_CR_FAIL_IN_EQ       0x05
0148 #  define SP_LT_EQ_LOOP_5_TIME      0x06
0149 #define SP_LT_EN            BIT(0)
0150 
0151 /* DP CEP Training Control Registers */
0152 #define SP_DP_CEP_TRAINING_CTRL0_REG    0xa9
0153 #define SP_DP_CEP_TRAINING_CTRL1_REG    0xaa
0154 
0155 /* DP Debug Register 1 */
0156 #define SP_DP_DEBUG1_REG        0xb0
0157 #define SP_DEBUG_PLL_LOCK       BIT(4)
0158 #define SP_POLLING_EN           BIT(1)
0159 
0160 /* DP Polling Control Register */
0161 #define SP_DP_POLLING_CTRL_REG      0xb4
0162 #define SP_AUTO_POLLING_DISABLE     BIT(0)
0163 
0164 /* DP Link Debug Control Register */
0165 #define SP_DP_LINK_DEBUG_CTRL_REG   0xb8
0166 #define SP_M_VID_DEBUG          BIT(5)
0167 #define SP_NEW_PRBS7            BIT(4)
0168 #define SP_INSERT_ER            BIT(1)
0169 #define SP_PRBS31_EN            BIT(0)
0170 
0171 /* AUX Misc control Register */
0172 #define SP_AUX_MISC_CTRL_REG        0xbf
0173 
0174 /* DP PLL control Register */
0175 #define SP_DP_PLL_CTRL_REG      0xc7
0176 #define SP_PLL_RST          BIT(6)
0177 
0178 /* DP Analog Power Down Register */
0179 #define SP_DP_ANALOG_POWER_DOWN_REG 0xc8
0180 #define SP_CH0_PD           BIT(0)
0181 
0182 /* DP Misc Control Register */
0183 #define SP_DP_MISC_CTRL_REG     0xcd
0184 #define SP_EQ_TRAINING_LOOP     BIT(6)
0185 
0186 /* DP Extra I2C Device Address Register */
0187 #define SP_DP_EXTRA_I2C_DEV_ADDR_REG    0xce
0188 #define SP_I2C_STRETCH_DISABLE      BIT(7)
0189 
0190 #define SP_I2C_EXTRA_ADDR       0x50
0191 
0192 /* DP Downspread Control Register 1 */
0193 #define SP_DP_DOWNSPREAD_CTRL1_REG  0xd0
0194 
0195 /* DP M Value Calculation Control Register */
0196 #define SP_DP_M_CALCULATION_CTRL_REG    0xd9
0197 #define SP_M_GEN_CLK_SEL        BIT(0)
0198 
0199 /* AUX Channel Access Status Register */
0200 #define SP_AUX_CH_STATUS_REG        0xe0
0201 #define SP_AUX_STATUS           0x0f
0202 
0203 /* AUX Channel DEFER Control Register */
0204 #define SP_AUX_DEFER_CTRL_REG       0xe2
0205 #define SP_DEFER_CTRL_EN        BIT(7)
0206 
0207 /* DP Buffer Data Count Register */
0208 #define SP_BUF_DATA_COUNT_REG       0xe4
0209 #define SP_BUF_DATA_COUNT_MASK      0x1f
0210 #define SP_BUF_CLR          BIT(7)
0211 
0212 /* DP AUX Channel Control Register 1 */
0213 #define SP_DP_AUX_CH_CTRL1_REG      0xe5
0214 #define SP_AUX_TX_COMM_MASK     0x0f
0215 #define SP_AUX_LENGTH_MASK      0xf0
0216 #define SP_AUX_LENGTH_SHIFT     4
0217 
0218 /* DP AUX CH Address Register 0 */
0219 #define SP_AUX_ADDR_7_0_REG     0xe6
0220 
0221 /* DP AUX CH Address Register 1 */
0222 #define SP_AUX_ADDR_15_8_REG        0xe7
0223 
0224 /* DP AUX CH Address Register 2 */
0225 #define SP_AUX_ADDR_19_16_REG       0xe8
0226 #define SP_AUX_ADDR_19_16_MASK      0x0f
0227 
0228 /* DP AUX Channel Control Register 2 */
0229 #define SP_DP_AUX_CH_CTRL2_REG      0xe9
0230 #define SP_AUX_SEL_RXCM         BIT(6)
0231 #define SP_AUX_CHSEL            BIT(3)
0232 #define SP_AUX_PN_INV           BIT(2)
0233 #define SP_ADDR_ONLY            BIT(1)
0234 #define SP_AUX_EN           BIT(0)
0235 
0236 /* DP Video Stream Control InfoFrame Register */
0237 #define SP_DP_3D_VSC_CTRL_REG       0xea
0238 #define SP_INFO_FRAME_VSC_EN        BIT(0)
0239 
0240 /* DP Video Stream Data Byte 1 Register */
0241 #define SP_DP_VSC_DB1_REG       0xeb
0242 
0243 /* DP AUX Channel Control Register 3 */
0244 #define SP_DP_AUX_CH_CTRL3_REG      0xec
0245 #define SP_WAIT_COUNTER_7_0_MASK    0xff
0246 
0247 /* DP AUX Channel Control Register 4 */
0248 #define SP_DP_AUX_CH_CTRL4_REG      0xed
0249 
0250 /* DP AUX Buffer Data Registers */
0251 #define SP_DP_BUF_DATA0_REG     0xf0
0252 
0253 ssize_t anx_dp_aux_transfer(struct regmap *map_dptx,
0254                 struct drm_dp_aux_msg *msg);
0255 
0256 #endif