@@ -862,59 +862,91 @@ static const struct qmp_phy_init_tbl sm8650_ufsphy_serdes[] = {
862
862
QMP_PHY_INIT_CFG (QSERDES_V6_COM_HSCLK_SEL_1 , 0x11 ),
863
863
QMP_PHY_INIT_CFG (QSERDES_V6_COM_HSCLK_HS_SWITCH_SEL_1 , 0x00 ),
864
864
QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP_EN , 0x01 ),
865
- QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_IVCO , 0x0f ),
866
- QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE_MAP , 0x44 ),
865
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_IVCO , 0x1f ),
866
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_IVCO_MODE1 , 0x1f ),
867
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CMN_IETRIM , 0x0a ),
868
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CMN_IPTRIM , 0x17 ),
869
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE_MAP , 0x04 ),
867
870
QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE_INITVAL2 , 0x00 ),
868
871
QMP_PHY_INIT_CFG (QSERDES_V6_COM_DEC_START_MODE0 , 0x41 ),
869
- QMP_PHY_INIT_CFG (QSERDES_V6_COM_CP_CTRL_MODE0 , 0x0a ),
872
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CP_CTRL_MODE0 , 0x06 ),
870
873
QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_RCTRL_MODE0 , 0x18 ),
871
874
QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_CCTRL_MODE0 , 0x14 ),
872
875
QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP1_MODE0 , 0x7f ),
873
876
QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP2_MODE0 , 0x06 ),
874
877
QMP_PHY_INIT_CFG (QSERDES_V6_COM_DEC_START_MODE1 , 0x4c ),
875
- QMP_PHY_INIT_CFG (QSERDES_V6_COM_CP_CTRL_MODE1 , 0x0a ),
878
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CP_CTRL_MODE1 , 0x06 ),
876
879
QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_RCTRL_MODE1 , 0x18 ),
877
880
QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_CCTRL_MODE1 , 0x14 ),
878
881
QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP1_MODE1 , 0x99 ),
879
882
QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP2_MODE1 , 0x07 ),
880
883
};
881
884
882
885
static const struct qmp_phy_init_tbl sm8650_ufsphy_tx [] = {
883
- QMP_PHY_INIT_CFG (QSERDES_UFS_V6_TX_LANE_MODE_1 , 0x05 ),
886
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_TX_LANE_MODE_1 , 0x01 ),
884
887
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_TX_RES_CODE_LANE_OFFSET_TX , 0x07 ),
888
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_TX_RES_CODE_LANE_OFFSET_RX , 0x0e ),
885
889
};
886
890
887
891
static const struct qmp_phy_init_tbl sm8650_ufsphy_rx [] = {
888
892
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_UCDR_FO_GAIN_RATE2 , 0x0c ),
889
- QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_UCDR_FO_GAIN_RATE4 , 0x0f ),
890
- QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_VGA_CAL_MAN_VAL , 0x0e ),
891
- QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE_0_1_B0 , 0xc2 ),
892
- QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE_0_1_B1 , 0xc2 ),
893
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_UCDR_FO_GAIN_RATE4 , 0x0c ),
894
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_UCDR_SO_GAIN_RATE4 , 0x04 ),
895
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_EQ_OFFSET_ADAPTOR_CNTRL1 , 0x14 ),
896
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_UCDR_PI_CONTROLS , 0x07 ),
897
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_OFFSET_ADAPTOR_CNTRL3 , 0x0e ),
898
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_UCDR_FASTLOCK_COUNT_HIGH_RATE4 , 0x02 ),
899
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_UCDR_FASTLOCK_FO_GAIN_RATE4 , 0x1c ),
900
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_UCDR_FASTLOCK_SO_GAIN_RATE4 , 0x06 ),
901
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_VGA_CAL_MAN_VAL , 0x3e ),
902
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_RX_EQU_ADAPTOR_CNTRL4 , 0x0f ),
903
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE_0_1_B0 , 0xce ),
904
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE_0_1_B1 , 0xce ),
905
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE_0_1_B2 , 0x18 ),
893
906
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE_0_1_B3 , 0x1a ),
907
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE_0_1_B4 , 0x0f ),
894
908
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE_0_1_B6 , 0x60 ),
895
909
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE2_B3 , 0x9e ),
896
910
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE2_B6 , 0x60 ),
897
911
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE3_B3 , 0x9e ),
898
912
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE3_B4 , 0x0e ),
899
913
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE3_B5 , 0x36 ),
900
914
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE3_B8 , 0x02 ),
915
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE4_B0 , 0x24 ),
916
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE4_B1 , 0x24 ),
917
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE4_B2 , 0x20 ),
901
918
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE4_B3 , 0xb9 ),
902
- QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE4_B6 , 0xff ),
919
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_MODE_RATE4_B4 , 0x4f ),
903
920
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_UCDR_SO_SATURATION , 0x1f ),
904
921
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_UCDR_PI_CTRL1 , 0x94 ),
905
922
QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_RX_TERM_BW_CTRL0 , 0xfa ),
923
+ QMP_PHY_INIT_CFG (QSERDES_UFS_V6_RX_DLL0_FTUNE_CTRL , 0x30 ),
906
924
};
907
925
908
926
static const struct qmp_phy_init_tbl sm8650_ufsphy_pcs [] = {
909
- QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_MULTI_LANE_CTRL1 , 0x00 ),
927
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_MULTI_LANE_CTRL1 , 0x02 ),
910
928
QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_TX_MID_TERM_CTRL1 , 0x43 ),
911
929
QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_PCS_CTRL1 , 0xc1 ),
912
- QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_PLL_CNTL , 0x33 ),
930
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_TX_LARGE_AMP_DRV_LVL , 0x0f ),
931
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_RX_SIGDET_CTRL2 , 0x68 ),
932
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_TX_POST_EMP_LVL_S4 , 0x0e ),
933
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_TX_POST_EMP_LVL_S5 , 0x12 ),
934
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_TX_POST_EMP_LVL_S6 , 0x15 ),
935
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_TX_POST_EMP_LVL_S7 , 0x19 ),
936
+ };
937
+
938
+ static const struct qmp_phy_init_tbl sm8650_ufsphy_g4_pcs [] = {
939
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_PLL_CNTL , 0x13 ),
913
940
QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_TX_HSGEAR_CAPABILITY , 0x04 ),
914
941
QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_RX_HSGEAR_CAPABILITY , 0x04 ),
915
- QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_TX_LARGE_AMP_DRV_LVL , 0x0f ),
916
- QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_RX_SIGDET_CTRL2 , 0x69 ),
917
- QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_MULTI_LANE_CTRL1 , 0x02 ),
942
+ };
943
+
944
+ static const struct qmp_phy_init_tbl sm8650_ufsphy_g5_pcs [] = {
945
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_PLL_CNTL , 0x33 ),
946
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_TX_HSGEAR_CAPABILITY , 0x05 ),
947
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_RX_HSGEAR_CAPABILITY , 0x05 ),
948
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_RX_HS_G5_SYNC_LENGTH_CAPABILITY , 0x4d ),
949
+ QMP_PHY_INIT_CFG (QPHY_V6_PCS_UFS_RX_HSG5_SYNC_WAIT_TIME , 0x9e ),
918
950
};
919
951
920
952
struct qmp_ufs_offsets {
@@ -1475,6 +1507,17 @@ static const struct qmp_phy_cfg sm8650_ufsphy_cfg = {
1475
1507
.pcs = sm8650_ufsphy_pcs ,
1476
1508
.pcs_num = ARRAY_SIZE (sm8650_ufsphy_pcs ),
1477
1509
},
1510
+ .tbls_hs_overlay [0 ] = {
1511
+ .pcs = sm8650_ufsphy_g4_pcs ,
1512
+ .pcs_num = ARRAY_SIZE (sm8650_ufsphy_g4_pcs ),
1513
+ .max_gear = UFS_HS_G4 ,
1514
+ },
1515
+ .tbls_hs_overlay [1 ] = {
1516
+ .pcs = sm8650_ufsphy_g5_pcs ,
1517
+ .pcs_num = ARRAY_SIZE (sm8650_ufsphy_g5_pcs ),
1518
+ .max_gear = UFS_HS_G5 ,
1519
+ },
1520
+
1478
1521
.vreg_list = qmp_phy_vreg_l ,
1479
1522
.num_vregs = ARRAY_SIZE (qmp_phy_vreg_l ),
1480
1523
.regs = ufsphy_v6_regs_layout ,
0 commit comments