@@ -1203,6 +1203,127 @@ static const struct qmp_phy_init_tbl sc8280xp_usb43dp_pcs_tbl[] = {
12031203 QMP_PHY_INIT_CFG (QPHY_V5_PCS_USB3_RXEQTRAINING_DFE_TIME_S2 , 0x07 ),
12041204};
12051205
1206+ static const struct qmp_phy_init_tbl x1e80100_usb43dp_serdes_tbl [] = {
1207+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_EN_CENTER , 0x01 ),
1208+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_PER1 , 0x62 ),
1209+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_PER2 , 0x02 ),
1210+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_STEP_SIZE1_MODE0 , 0xc2 ),
1211+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_STEP_SIZE2_MODE0 , 0x03 ),
1212+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_STEP_SIZE1_MODE1 , 0xc2 ),
1213+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_STEP_SIZE2_MODE1 , 0x03 ),
1214+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SYSCLK_BUF_ENABLE , 0x0a ),
1215+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CP_CTRL_MODE0 , 0x02 ),
1216+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CP_CTRL_MODE1 , 0x02 ),
1217+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_RCTRL_MODE0 , 0x16 ),
1218+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_RCTRL_MODE1 , 0x16 ),
1219+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_CCTRL_MODE0 , 0x36 ),
1220+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_CCTRL_MODE1 , 0x36 ),
1221+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SYSCLK_EN_SEL , 0x1a ),
1222+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP_EN , 0x04 ),
1223+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP_CFG , 0x04 ),
1224+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP1_MODE0 , 0x08 ),
1225+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP2_MODE0 , 0x1a ),
1226+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP1_MODE1 , 0x16 ),
1227+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP2_MODE1 , 0x41 ),
1228+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DEC_START_MODE0 , 0x82 ),
1229+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DEC_START_MSB_MODE0 , 0x00 ),
1230+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DEC_START_MODE1 , 0x82 ),
1231+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DEC_START_MSB_MODE1 , 0x00 ),
1232+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START1_MODE0 , 0x55 ),
1233+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START2_MODE0 , 0x55 ),
1234+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START3_MODE0 , 0x03 ),
1235+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START1_MODE1 , 0x55 ),
1236+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START2_MODE1 , 0x55 ),
1237+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START3_MODE1 , 0x03 ),
1238+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE_MAP , 0x14 ),
1239+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE1_MODE0 , 0xba ),
1240+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE2_MODE0 , 0x00 ),
1241+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE1_MODE1 , 0xba ),
1242+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE2_MODE1 , 0x00 ),
1243+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_HSCLK_SEL_1 , 0x13 ),
1244+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_HSCLK_HS_SWITCH_SEL_1 , 0x00 ),
1245+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_CORE_CLK_DIV_MODE0 , 0x0a ),
1246+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CORECLK_DIV_MODE1 , 0x04 ),
1247+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CORE_CLK_EN , 0xa0 ),
1248+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CMN_CONFIG_1 , 0x76 ),
1249+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_IVCO , 0x0f ),
1250+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_IVCO_MODE1 , 0x0f ),
1251+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_INTEGLOOP_GAIN0_MODE0 , 0x20 ),
1252+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_INTEGLOOP_GAIN0_MODE1 , 0x20 ),
1253+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE_INITVAL2 , 0x00 ),
1254+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE_MAXVAL2 , 0x01 ),
1255+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SVS_MODE_CLK_SEL , 0x0a ),
1256+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_BG_TIMER , 0x0a ),
1257+ };
1258+
1259+ static const struct qmp_phy_init_tbl x1e80100_usb43dp_tx_tbl [] = {
1260+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_TX_LANE_MODE_1 , 0x05 ),
1261+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_TX_LANE_MODE_2 , 0x50 ),
1262+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_TX_LANE_MODE_3 , 0x50 ),
1263+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_TX_RES_CODE_LANE_OFFSET_TX , 0x1f ),
1264+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_TX_RES_CODE_LANE_OFFSET_RX , 0x0a ),
1265+ };
1266+
1267+ static const struct qmp_phy_init_tbl x1e80100_usb43dp_rx_tbl [] = {
1268+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_SIGDET_CNTRL , 0x04 ),
1269+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_SIGDET_DEGLITCH_CNTRL , 0x0e ),
1270+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_SIGDET_ENABLES , 0x00 ),
1271+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE_0_1_B0 , 0xc3 ),
1272+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE_0_1_B1 , 0xc3 ),
1273+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE_0_1_B2 , 0xd8 ),
1274+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE_0_1_B3 , 0x9e ),
1275+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE_0_1_B4 , 0x36 ),
1276+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE_0_1_B5 , 0xb6 ),
1277+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE_0_1_B6 , 0x64 ),
1278+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE2_B0 , 0xd6 ),
1279+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE2_B1 , 0xee ),
1280+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE2_B2 , 0x18 ),
1281+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE2_B3 , 0x9a ),
1282+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE2_B4 , 0x04 ),
1283+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE2_B5 , 0x36 ),
1284+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_MODE_RATE2_B6 , 0xe3 ),
1285+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_IVCM_CAL_CODE_OVERRIDE , 0x00 ),
1286+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_RX_IVCM_CAL_CTRL2 , 0x80 ),
1287+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_RX_SUMMER_CAL_SPD_MODE , 0x2f ),
1288+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_DFE_CTLE_POST_CAL_OFFSET , 0x08 ),
1289+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_UCDR_PI_CONTROLS , 0x15 ),
1290+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_UCDR_PI_CTRL1 , 0xd0 ),
1291+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_UCDR_PI_CTRL2 , 0x48 ),
1292+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_UCDR_SB2_GAIN2_RATE2 , 0x0a ),
1293+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_RX_IVCM_POSTCAL_OFFSET , 0x7c ),
1294+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_VGA_CAL_CNTRL1 , 0x00 ),
1295+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_VGA_CAL_MAN_VAL , 0x04 ),
1296+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_DFE_DAC_ENABLE1 , 0x88 ),
1297+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_DFE_3 , 0x45 ),
1298+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_GM_CAL , 0x0d ),
1299+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_UCDR_FO_GAIN_RATE2 , 0x09 ),
1300+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_UCDR_SO_GAIN_RATE2 , 0x05 ),
1301+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_Q_PI_INTRINSIC_BIAS_RATE32 , 0x2f ),
1302+ QMP_PHY_INIT_CFG (QSERDES_V6_N4_RX_RX_BKUP_CTRL1 , 0x14 ),
1303+ };
1304+
1305+ static const struct qmp_phy_init_tbl x1e80100_usb43dp_pcs_tbl [] = {
1306+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_RCVR_DTCT_DLY_P1U2_L , 0xe7 ),
1307+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_RCVR_DTCT_DLY_P1U2_H , 0x03 ),
1308+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_LOCK_DETECT_CONFIG1 , 0xc4 ),
1309+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_LOCK_DETECT_CONFIG2 , 0x89 ),
1310+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_LOCK_DETECT_CONFIG3 , 0x20 ),
1311+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_LOCK_DETECT_CONFIG6 , 0x13 ),
1312+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_REFGEN_REQ_CONFIG1 , 0x21 ),
1313+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_RX_SIGDET_LVL , 0x55 ),
1314+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_CDR_RESET_TIME , 0x0a ),
1315+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_ALIGN_DETECT_CONFIG1 , 0xd4 ),
1316+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_ALIGN_DETECT_CONFIG2 , 0x30 ),
1317+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_PCS_TX_RX_CONFIG , 0x0c ),
1318+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_EQ_CONFIG1 , 0x4b ),
1319+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_EQ_CONFIG5 , 0x10 ),
1320+ };
1321+
1322+ static const struct qmp_phy_init_tbl x1e80100_usb43dp_pcs_usb_tbl [] = {
1323+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_USB3_LFPS_DET_HIGH_COUNT_VAL , 0xf8 ),
1324+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_USB3_RXEQTRAINING_DFE_TIME_S2 , 0x07 ),
1325+ };
1326+
12061327/* list of regulators */
12071328struct qmp_regulator_data {
12081329 const char * name ;
@@ -1684,6 +1805,51 @@ static const struct qmp_phy_cfg sc8280xp_usb43dpphy_cfg = {
16841805 .regs = qmp_v5_5nm_usb3phy_regs_layout ,
16851806};
16861807
1808+ static const struct qmp_phy_cfg x1e80100_usb3dpphy_cfg = {
1809+ .offsets = & qmp_combo_offsets_v5 ,
1810+
1811+ .serdes_tbl = x1e80100_usb43dp_serdes_tbl ,
1812+ .serdes_tbl_num = ARRAY_SIZE (x1e80100_usb43dp_serdes_tbl ),
1813+ .tx_tbl = x1e80100_usb43dp_tx_tbl ,
1814+ .tx_tbl_num = ARRAY_SIZE (x1e80100_usb43dp_tx_tbl ),
1815+ .rx_tbl = x1e80100_usb43dp_rx_tbl ,
1816+ .rx_tbl_num = ARRAY_SIZE (x1e80100_usb43dp_rx_tbl ),
1817+ .pcs_tbl = x1e80100_usb43dp_pcs_tbl ,
1818+ .pcs_tbl_num = ARRAY_SIZE (x1e80100_usb43dp_pcs_tbl ),
1819+ .pcs_usb_tbl = x1e80100_usb43dp_pcs_usb_tbl ,
1820+ .pcs_usb_tbl_num = ARRAY_SIZE (x1e80100_usb43dp_pcs_usb_tbl ),
1821+
1822+ .dp_serdes_tbl = qmp_v6_dp_serdes_tbl ,
1823+ .dp_serdes_tbl_num = ARRAY_SIZE (qmp_v6_dp_serdes_tbl ),
1824+ .dp_tx_tbl = qmp_v6_dp_tx_tbl ,
1825+ .dp_tx_tbl_num = ARRAY_SIZE (qmp_v6_dp_tx_tbl ),
1826+
1827+ .serdes_tbl_rbr = qmp_v6_dp_serdes_tbl_rbr ,
1828+ .serdes_tbl_rbr_num = ARRAY_SIZE (qmp_v6_dp_serdes_tbl_rbr ),
1829+ .serdes_tbl_hbr = qmp_v6_dp_serdes_tbl_hbr ,
1830+ .serdes_tbl_hbr_num = ARRAY_SIZE (qmp_v6_dp_serdes_tbl_hbr ),
1831+ .serdes_tbl_hbr2 = qmp_v6_dp_serdes_tbl_hbr2 ,
1832+ .serdes_tbl_hbr2_num = ARRAY_SIZE (qmp_v6_dp_serdes_tbl_hbr2 ),
1833+ .serdes_tbl_hbr3 = qmp_v6_dp_serdes_tbl_hbr3 ,
1834+ .serdes_tbl_hbr3_num = ARRAY_SIZE (qmp_v6_dp_serdes_tbl_hbr3 ),
1835+
1836+ .swing_hbr_rbr = & qmp_dp_v5_voltage_swing_hbr_rbr ,
1837+ .pre_emphasis_hbr_rbr = & qmp_dp_v5_pre_emphasis_hbr_rbr ,
1838+ .swing_hbr3_hbr2 = & qmp_dp_v5_voltage_swing_hbr3_hbr2 ,
1839+ .pre_emphasis_hbr3_hbr2 = & qmp_dp_v5_pre_emphasis_hbr3_hbr2 ,
1840+
1841+ .dp_aux_init = qmp_v4_dp_aux_init ,
1842+ .configure_dp_tx = qmp_v4_configure_dp_tx ,
1843+ .configure_dp_phy = qmp_v4_configure_dp_phy ,
1844+ .calibrate_dp_phy = qmp_v4_calibrate_dp_phy ,
1845+
1846+ .reset_list = msm8996_usb3phy_reset_l ,
1847+ .num_resets = ARRAY_SIZE (msm8996_usb3phy_reset_l ),
1848+ .vreg_list = qmp_phy_vreg_l ,
1849+ .num_vregs = ARRAY_SIZE (qmp_phy_vreg_l ),
1850+ .regs = qmp_v45_usb3phy_regs_layout ,
1851+ };
1852+
16871853static const struct qmp_phy_cfg sm6350_usb3dpphy_cfg = {
16881854 .offsets = & qmp_combo_offsets_v3 ,
16891855
@@ -3562,6 +3728,10 @@ static const struct of_device_id qmp_combo_of_match_table[] = {
35623728 .compatible = "qcom,sm8650-qmp-usb3-dp-phy" ,
35633729 .data = & sm8550_usb3dpphy_cfg ,
35643730 },
3731+ {
3732+ .compatible = "qcom,x1e80100-qmp-usb3-dp-phy" ,
3733+ .data = & x1e80100_usb3dpphy_cfg ,
3734+ },
35653735 { }
35663736};
35673737MODULE_DEVICE_TABLE (of , qmp_combo_of_match_table );
0 commit comments