@@ -722,6 +722,38 @@ static const struct qmp_phy_init_tbl sm8350_ufsphy_g4_pcs[] = {
722
722
QMP_PHY_INIT_CFG (QPHY_V5_PCS_UFS_BIST_FIXED_PAT_CTRL , 0x0a ),
723
723
};
724
724
725
+ static const struct qmp_phy_init_tbl sm8475_ufsphy_serdes [] = {
726
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SYSCLK_EN_SEL , 0xd9 ),
727
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CMN_CONFIG_1 , 0x16 ),
728
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_HSCLK_SEL_1 , 0x11 ),
729
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_HSCLK_HS_SWITCH_SEL_1 , 0x00 ),
730
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP_EN , 0x01 ),
731
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE_INITVAL2 , 0x00 ),
732
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DEC_START_MODE0 , 0x82 ),
733
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_RCTRL_MODE0 , 0x18 ),
734
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_CCTRL_MODE0 , 0x18 ),
735
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP1_MODE0 , 0xff ),
736
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP2_MODE0 , 0x0c ),
737
+ };
738
+
739
+ static const struct qmp_phy_init_tbl sm8475_ufsphy_g4_serdes [] = {
740
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE_MAP , 0x04 ),
741
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_IVCO , 0x0f ),
742
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CP_CTRL_MODE0 , 0x14 ),
743
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DEC_START_MODE1 , 0x98 ),
744
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CP_CTRL_MODE1 , 0x14 ),
745
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_RCTRL_MODE1 , 0x18 ),
746
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_CCTRL_MODE1 , 0x18 ),
747
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP1_MODE1 , 0x32 ),
748
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP2_MODE1 , 0x0f ),
749
+ };
750
+
751
+ static const struct qmp_phy_init_tbl sm8475_ufsphy_g4_pcs [] = {
752
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_PLL_CNTL , 0x0b ),
753
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_TX_HSGEAR_CAPABILITY , 0x04 ),
754
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_RX_HSGEAR_CAPABILITY , 0x04 ),
755
+ };
756
+
725
757
static const struct qmp_phy_init_tbl sm8550_ufsphy_serdes [] = {
726
758
QMP_PHY_INIT_CFG (QSERDES_V6_COM_SYSCLK_EN_SEL , 0xd9 ),
727
759
QMP_PHY_INIT_CFG (QSERDES_V6_COM_CMN_CONFIG_1 , 0x16 ),
@@ -1346,6 +1378,42 @@ static const struct qmp_phy_cfg sm8450_ufsphy_cfg = {
1346
1378
.regs = ufsphy_v5_regs_layout ,
1347
1379
};
1348
1380
1381
+ static const struct qmp_phy_cfg sm8475_ufsphy_cfg = {
1382
+ .lanes = 2 ,
1383
+
1384
+ .offsets = & qmp_ufs_offsets_v6 ,
1385
+ .max_supported_gear = UFS_HS_G4 ,
1386
+
1387
+ .tbls = {
1388
+ .serdes = sm8475_ufsphy_serdes ,
1389
+ .serdes_num = ARRAY_SIZE (sm8475_ufsphy_serdes ),
1390
+ .tx = sm8550_ufsphy_tx ,
1391
+ .tx_num = ARRAY_SIZE (sm8550_ufsphy_tx ),
1392
+ .rx = sm8550_ufsphy_rx ,
1393
+ .rx_num = ARRAY_SIZE (sm8550_ufsphy_rx ),
1394
+ .pcs = sm8550_ufsphy_pcs ,
1395
+ .pcs_num = ARRAY_SIZE (sm8550_ufsphy_pcs ),
1396
+ },
1397
+ .tbls_hs_b = {
1398
+ .serdes = sm8550_ufsphy_hs_b_serdes ,
1399
+ .serdes_num = ARRAY_SIZE (sm8550_ufsphy_hs_b_serdes ),
1400
+ },
1401
+ .tbls_hs_overlay [0 ] = {
1402
+ .serdes = sm8475_ufsphy_g4_serdes ,
1403
+ .serdes_num = ARRAY_SIZE (sm8475_ufsphy_g4_serdes ),
1404
+ .tx = sm8550_ufsphy_g4_tx ,
1405
+ .tx_num = ARRAY_SIZE (sm8550_ufsphy_g4_tx ),
1406
+ .rx = sm8550_ufsphy_g4_rx ,
1407
+ .rx_num = ARRAY_SIZE (sm8550_ufsphy_g4_rx ),
1408
+ .pcs = sm8475_ufsphy_g4_pcs ,
1409
+ .pcs_num = ARRAY_SIZE (sm8475_ufsphy_g4_pcs ),
1410
+ .max_gear = UFS_HS_G4 ,
1411
+ },
1412
+ .vreg_list = qmp_phy_vreg_l ,
1413
+ .num_vregs = ARRAY_SIZE (qmp_phy_vreg_l ),
1414
+ .regs = ufsphy_v6_regs_layout ,
1415
+ };
1416
+
1349
1417
static const struct qmp_phy_cfg sm8550_ufsphy_cfg = {
1350
1418
.lanes = 2 ,
1351
1419
@@ -1941,6 +2009,9 @@ static const struct of_device_id qmp_ufs_of_match_table[] = {
1941
2009
}, {
1942
2010
.compatible = "qcom,sm8450-qmp-ufs-phy" ,
1943
2011
.data = & sm8450_ufsphy_cfg ,
2012
+ }, {
2013
+ .compatible = "qcom,sm8475-qmp-ufs-phy" ,
2014
+ .data = & sm8475_ufsphy_cfg ,
1944
2015
}, {
1945
2016
.compatible = "qcom,sm8550-qmp-ufs-phy" ,
1946
2017
.data = & sm8550_ufsphy_cfg ,
0 commit comments