@@ -1203,6 +1203,127 @@ static const struct qmp_phy_init_tbl sc8280xp_usb43dp_pcs_tbl[] = {
1203
1203
QMP_PHY_INIT_CFG (QPHY_V5_PCS_USB3_RXEQTRAINING_DFE_TIME_S2 , 0x07 ),
1204
1204
};
1205
1205
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
+
1206
1327
/* list of regulators */
1207
1328
struct qmp_regulator_data {
1208
1329
const char * name ;
@@ -1684,6 +1805,51 @@ static const struct qmp_phy_cfg sc8280xp_usb43dpphy_cfg = {
1684
1805
.regs = qmp_v5_5nm_usb3phy_regs_layout ,
1685
1806
};
1686
1807
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
+
1687
1853
static const struct qmp_phy_cfg sm6350_usb3dpphy_cfg = {
1688
1854
.offsets = & qmp_combo_offsets_v3 ,
1689
1855
@@ -3562,6 +3728,10 @@ static const struct of_device_id qmp_combo_of_match_table[] = {
3562
3728
.compatible = "qcom,sm8650-qmp-usb3-dp-phy" ,
3563
3729
.data = & sm8550_usb3dpphy_cfg ,
3564
3730
},
3731
+ {
3732
+ .compatible = "qcom,x1e80100-qmp-usb3-dp-phy" ,
3733
+ .data = & x1e80100_usb3dpphy_cfg ,
3734
+ },
3565
3735
{ }
3566
3736
};
3567
3737
MODULE_DEVICE_TABLE (of , qmp_combo_of_match_table );
0 commit comments