@@ -177,6 +177,111 @@ static const struct qmp_phy_init_tbl msm8996_ufsphy_rx[] = {
177177 QMP_PHY_INIT_CFG (QSERDES_RX_RX_EQU_ADAPTOR_CNTRL2 , 0x0E ),
178178};
179179
180+ static const struct qmp_phy_init_tbl sc7280_ufsphy_tx [] = {
181+ QMP_PHY_INIT_CFG (QSERDES_V4_TX_PWM_GEAR_1_DIVIDER_BAND0_1 , 0x06 ),
182+ QMP_PHY_INIT_CFG (QSERDES_V4_TX_PWM_GEAR_2_DIVIDER_BAND0_1 , 0x03 ),
183+ QMP_PHY_INIT_CFG (QSERDES_V4_TX_PWM_GEAR_3_DIVIDER_BAND0_1 , 0x01 ),
184+ QMP_PHY_INIT_CFG (QSERDES_V4_TX_PWM_GEAR_4_DIVIDER_BAND0_1 , 0x00 ),
185+ QMP_PHY_INIT_CFG (QSERDES_V4_TX_LANE_MODE_1 , 0x35 ),
186+ QMP_PHY_INIT_CFG (QSERDES_V4_TX_TRAN_DRVR_EMP_EN , 0x0c ),
187+ };
188+
189+ static const struct qmp_phy_init_tbl sc7280_ufsphy_rx [] = {
190+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_SIGDET_LVL , 0x24 ),
191+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_SIGDET_CNTRL , 0x0f ),
192+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_SIGDET_DEGLITCH_CNTRL , 0x1e ),
193+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_BAND , 0x18 ),
194+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_FASTLOCK_FO_GAIN , 0x0a ),
195+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_SO_SATURATION_AND_ENABLE , 0x5a ),
196+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_PI_CONTROLS , 0xf1 ),
197+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_FASTLOCK_COUNT_LOW , 0x80 ),
198+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_PI_CTRL2 , 0x80 ),
199+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_FO_GAIN , 0x0e ),
200+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_SO_GAIN , 0x04 ),
201+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_TERM_BW , 0x1b ),
202+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL2 , 0x06 ),
203+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL3 , 0x04 ),
204+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL4 , 0x1d ),
205+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_OFFSET_ADAPTOR_CNTRL2 , 0x00 ),
206+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_IDAC_MEASURE_TIME , 0x10 ),
207+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_IDAC_TSETTLE_LOW , 0xc0 ),
208+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_IDAC_TSETTLE_HIGH , 0x00 ),
209+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_00_LOW , 0x6d ),
210+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_00_HIGH , 0x6d ),
211+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_00_HIGH2 , 0xed ),
212+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_00_HIGH3 , 0x3b ),
213+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_00_HIGH4 , 0x3c ),
214+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_01_LOW , 0xe0 ),
215+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_01_HIGH , 0xc8 ),
216+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_01_HIGH2 , 0xc8 ),
217+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_01_HIGH3 , 0x3b ),
218+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_01_HIGH4 , 0xb1 ),
219+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_10_LOW , 0xe0 ),
220+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_10_HIGH , 0xc8 ),
221+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_10_HIGH2 , 0xc8 ),
222+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_10_HIGH3 , 0x3b ),
223+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_10_HIGH4 , 0xb1 ),
224+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_DCC_CTRL1 , 0x0c ),
225+ };
226+
227+ static const struct qmp_phy_init_tbl sc7280_ufsphy_pcs [] = {
228+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_RX_SIGDET_CTRL2 , 0x6d ),
229+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_TX_LARGE_AMP_DRV_LVL , 0x0a ),
230+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_TX_SMALL_AMP_DRV_LVL , 0x02 ),
231+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_TX_MID_TERM_CTRL1 , 0x43 ),
232+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_DEBUG_BUS_CLKSEL , 0x1f ),
233+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_RX_MIN_HIBERN8_TIME , 0xff ),
234+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_MULTI_LANE_CTRL1 , 0x02 ),
235+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_PLL_CNTL , 0x03 ),
236+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_TIMER_20US_CORECLK_STEPS_MSB , 0x16 ),
237+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_TIMER_20US_CORECLK_STEPS_LSB , 0xd8 ),
238+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_TX_PWM_GEAR_BAND , 0xaa ),
239+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_TX_HS_GEAR_BAND , 0x06 ),
240+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_TX_HSGEAR_CAPABILITY , 0x03 ),
241+ QMP_PHY_INIT_CFG (QPHY_V4_PCS_UFS_RX_HSGEAR_CAPABILITY , 0x03 ),
242+ };
243+
244+ static const struct qmp_phy_init_tbl sc7280_ufsphy_hs_g4_rx [] = {
245+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_SIGDET_LVL , 0x24 ),
246+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_SIGDET_CNTRL , 0x0f ),
247+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_SIGDET_DEGLITCH_CNTRL , 0x1e ),
248+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_BAND , 0x18 ),
249+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_FASTLOCK_FO_GAIN , 0x0a ),
250+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_SO_SATURATION_AND_ENABLE , 0x5a ),
251+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_PI_CONTROLS , 0xf1 ),
252+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_FASTLOCK_COUNT_LOW , 0x80 ),
253+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_PI_CTRL2 , 0x81 ),
254+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_FO_GAIN , 0x0e ),
255+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_UCDR_SO_GAIN , 0x04 ),
256+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_TERM_BW , 0x6f ),
257+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL1 , 0x04 ),
258+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL2 , 0x00 ),
259+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL3 , 0x09 ),
260+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL4 , 0x07 ),
261+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_EQ_OFFSET_ADAPTOR_CNTRL1 , 0x17 ),
262+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_OFFSET_ADAPTOR_CNTRL2 , 0x00 ),
263+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_IDAC_MEASURE_TIME , 0x20 ),
264+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_IDAC_TSETTLE_LOW , 0x80 ),
265+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_IDAC_TSETTLE_HIGH , 0x01 ),
266+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_00_LOW , 0x3f ),
267+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_00_HIGH , 0xff ),
268+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_00_HIGH2 , 0xff ),
269+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_00_HIGH3 , 0x7f ),
270+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_00_HIGH4 , 0x2c ),
271+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_01_LOW , 0x6d ),
272+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_01_HIGH , 0x6d ),
273+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_01_HIGH2 , 0xed ),
274+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_01_HIGH3 , 0x3b ),
275+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_01_HIGH4 , 0x3c ),
276+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_10_LOW , 0xe0 ),
277+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_10_HIGH , 0xc8 ),
278+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_10_HIGH2 , 0xc8 ),
279+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_10_HIGH3 , 0x3b ),
280+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_RX_MODE_10_HIGH4 , 0xb1 ),
281+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_DCC_CTRL1 , 0x0c ),
282+ QMP_PHY_INIT_CFG (QSERDES_V4_RX_GM_CAL , 0x0f ),
283+ };
284+
180285static const struct qmp_phy_init_tbl sm6115_ufsphy_serdes [] = {
181286 QMP_PHY_INIT_CFG (QSERDES_COM_CMN_CONFIG , 0x0e ),
182287 QMP_PHY_INIT_CFG (QSERDES_COM_SYSCLK_EN_SEL , 0x14 ),
@@ -888,6 +993,40 @@ static const struct qmp_phy_cfg sa8775p_ufsphy_cfg = {
888993 .regs = ufsphy_v5_regs_layout ,
889994};
890995
996+ static const struct qmp_phy_cfg sc7280_ufsphy_cfg = {
997+ .lanes = 2 ,
998+
999+ .offsets = & qmp_ufs_offsets ,
1000+
1001+ .tbls = {
1002+ .serdes = sm8150_ufsphy_serdes ,
1003+ .serdes_num = ARRAY_SIZE (sm8150_ufsphy_serdes ),
1004+ .tx = sc7280_ufsphy_tx ,
1005+ .tx_num = ARRAY_SIZE (sc7280_ufsphy_tx ),
1006+ .rx = sc7280_ufsphy_rx ,
1007+ .rx_num = ARRAY_SIZE (sc7280_ufsphy_rx ),
1008+ .pcs = sc7280_ufsphy_pcs ,
1009+ .pcs_num = ARRAY_SIZE (sc7280_ufsphy_pcs ),
1010+ },
1011+ .tbls_hs_b = {
1012+ .serdes = sm8150_ufsphy_hs_b_serdes ,
1013+ .serdes_num = ARRAY_SIZE (sm8150_ufsphy_hs_b_serdes ),
1014+ },
1015+ .tbls_hs_g4 = {
1016+ .tx = sm8250_ufsphy_hs_g4_tx ,
1017+ .tx_num = ARRAY_SIZE (sm8250_ufsphy_hs_g4_tx ),
1018+ .rx = sc7280_ufsphy_hs_g4_rx ,
1019+ .rx_num = ARRAY_SIZE (sc7280_ufsphy_hs_g4_rx ),
1020+ .pcs = sm8150_ufsphy_hs_g4_pcs ,
1021+ .pcs_num = ARRAY_SIZE (sm8150_ufsphy_hs_g4_pcs ),
1022+ },
1023+ .clk_list = sm8450_ufs_phy_clk_l ,
1024+ .num_clks = ARRAY_SIZE (sm8450_ufs_phy_clk_l ),
1025+ .vreg_list = qmp_phy_vreg_l ,
1026+ .num_vregs = ARRAY_SIZE (qmp_phy_vreg_l ),
1027+ .regs = ufsphy_v4_regs_layout ,
1028+ };
1029+
8911030static const struct qmp_phy_cfg sc8280xp_ufsphy_cfg = {
8921031 .lanes = 2 ,
8931032
@@ -1648,6 +1787,9 @@ static const struct of_device_id qmp_ufs_of_match_table[] = {
16481787 }, {
16491788 .compatible = "qcom,sa8775p-qmp-ufs-phy" ,
16501789 .data = & sa8775p_ufsphy_cfg ,
1790+ }, {
1791+ .compatible = "qcom,sc7280-qmp-ufs-phy" ,
1792+ .data = & sc7280_ufsphy_cfg ,
16511793 }, {
16521794 .compatible = "qcom,sc8180x-qmp-ufs-phy" ,
16531795 .data = & sm8150_ufsphy_cfg ,
0 commit comments