@@ -93,6 +93,13 @@ static const unsigned int pciephy_v6_regs_layout[QPHY_LAYOUT_SIZE] = {
9393 [QPHY_PCS_POWER_DOWN_CONTROL ] = QPHY_V6_PCS_POWER_DOWN_CONTROL ,
9494};
9595
96+ static const unsigned int pciephy_v7_regs_layout [QPHY_LAYOUT_SIZE ] = {
97+ [QPHY_SW_RESET ] = QPHY_V7_PCS_SW_RESET ,
98+ [QPHY_START_CTRL ] = QPHY_V7_PCS_START_CONTROL ,
99+ [QPHY_PCS_STATUS ] = QPHY_V7_PCS_PCS_STATUS1 ,
100+ [QPHY_PCS_POWER_DOWN_CONTROL ] = QPHY_V7_PCS_POWER_DOWN_CONTROL ,
101+ };
102+
96103static const struct qmp_phy_init_tbl msm8998_pcie_serdes_tbl [] = {
97104 QMP_PHY_INIT_CFG (QSERDES_V3_COM_BIAS_EN_CLKBUFLR_EN , 0x14 ),
98105 QMP_PHY_INIT_CFG (QSERDES_V3_COM_CLK_SELECT , 0x30 ),
@@ -2590,6 +2597,108 @@ static const struct qmp_phy_init_tbl sm8650_qmp_gen4x2_pcie_rx_tbl[] = {
25902597 QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE3_B6 , 0xff ),
25912598};
25922599
2600+ static const struct qmp_phy_init_tbl sm8750_qmp_gen3x2_pcie_serdes_tbl [] = {
2601+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_SSC_EN_CENTER , 0x1 ),
2602+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_SSC_PER1 , 0x62 ),
2603+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_SSC_PER2 , 0x02 ),
2604+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_SSC_STEP_SIZE1_MODE0 , 0xf8 ),
2605+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_SSC_STEP_SIZE2_MODE0 , 0x01 ),
2606+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_SSC_STEP_SIZE1_MODE1 , 0x93 ),
2607+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_SSC_STEP_SIZE2_MODE1 , 0x01 ),
2608+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_CLK_ENABLE1 , 0x90 ),
2609+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_SYS_CLK_CTRL , 0x82 ),
2610+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_PLL_IVCO , 0x07 ),
2611+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_CP_CTRL_MODE0 , 0x02 ),
2612+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_CP_CTRL_MODE1 , 0x02 ),
2613+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_PLL_RCTRL_MODE0 , 0x16 ),
2614+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_PLL_RCTRL_MODE1 , 0x16 ),
2615+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_PLL_CCTRL_MODE0 , 0x36 ),
2616+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_PLL_CCTRL_MODE1 , 0x36 ),
2617+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_SYSCLK_EN_SEL , 0x08 ),
2618+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_BG_TIMER , 0x0a ),
2619+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_LOCK_CMP_EN , 0x42 ),
2620+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_LOCK_CMP1_MODE0 , 0x04 ),
2621+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_LOCK_CMP2_MODE0 , 0x0d ),
2622+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_LOCK_CMP1_MODE1 , 0x0a ),
2623+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_LOCK_CMP2_MODE1 , 0x1a ),
2624+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_DEC_START_MODE0 , 0x41 ),
2625+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_DEC_START_MODE1 , 0x34 ),
2626+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_DIV_FRAC_START1_MODE0 , 0xab ),
2627+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_DIV_FRAC_START2_MODE0 , 0xaa ),
2628+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_DIV_FRAC_START3_MODE0 , 0x01 ),
2629+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_DIV_FRAC_START1_MODE1 , 0x55 ),
2630+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_DIV_FRAC_START2_MODE1 , 0x55 ),
2631+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_DIV_FRAC_START3_MODE1 , 0x01 ),
2632+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_VCO_TUNE_MAP , 0x14 ),
2633+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_CLK_SELECT , 0x34 ),
2634+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_HSCLK_SEL_1 , 0x01 ),
2635+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_CORECLK_DIV_MODE1 , 0x04 ),
2636+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_CMN_CONFIG_1 , 0x16 ),
2637+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_ADDITIONAL_MISC_3 , 0x0F ),
2638+ QMP_PHY_INIT_CFG (QSERDES_V7_COM_CORE_CLK_EN , 0xA0 ),
2639+ };
2640+
2641+ static const struct qmp_phy_init_tbl sm8750_qmp_gen3x2_pcie_rx_tbl [] = {
2642+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_DFE_CTLE_POST_CAL_OFFSET , 0x38 ),
2643+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_GM_CAL , 0x11 ),
2644+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_00_HIGH , 0xBF ),
2645+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_00_HIGH2 , 0xBF ),
2646+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_00_HIGH3 , 0xB7 ),
2647+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_00_HIGH4 , 0xEA ),
2648+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_00_LOW , 0x3F ),
2649+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_01_HIGH , 0x09 ),
2650+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_01_HIGH2 , 0x49 ),
2651+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_01_HIGH3 , 0x1B ),
2652+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_01_HIGH4 , 0x9C ),
2653+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_01_LOW , 0xD1 ),
2654+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_10_HIGH , 0x09 ),
2655+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_10_HIGH2 , 0x49 ),
2656+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_10_HIGH3 , 0x1B ),
2657+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_10_HIGH4 , 0x9C ),
2658+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_MODE_10_LOW , 0xD1 ),
2659+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_TX_ADAPT_PRE_THRESH1 , 0x3E ),
2660+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_TX_ADAPT_PRE_THRESH2 , 0x1E ),
2661+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_TX_ADAPT_POST_THRESH , 0xD2 ),
2662+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_UCDR_FO_GAIN , 0x09 ),
2663+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_UCDR_SO_GAIN , 0x05 ),
2664+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_UCDR_SB2_THRESH1 , 0x08 ),
2665+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_UCDR_SB2_THRESH2 , 0x08 ),
2666+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_VGA_CAL_CNTRL2 , 0x09 ),
2667+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_SIGDET_ENABLES , 0x1C ),
2668+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_SIGDET_CNTRL , 0x60 ),
2669+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_RX_IDAC_TSETTLE_LOW , 0x07 ),
2670+ QMP_PHY_INIT_CFG (QSERDES_V7_RX_SIGDET_CAL_TRIM , 0x08 ),
2671+ };
2672+
2673+ static const struct qmp_phy_init_tbl sm8750_qmp_gen3x2_pcie_tx_tbl [] = {
2674+ QMP_PHY_INIT_CFG (QSERDES_V7_TX_LANE_MODE_1 , 0x35 ),
2675+ QMP_PHY_INIT_CFG (QSERDES_V7_TX_LANE_MODE_3 , 0x10 ),
2676+ QMP_PHY_INIT_CFG (QSERDES_V7_TX_LANE_MODE_4 , 0x31 ),
2677+ QMP_PHY_INIT_CFG (QSERDES_V7_TX_LANE_MODE_5 , 0x7F ),
2678+ QMP_PHY_INIT_CFG (QSERDES_V7_TX_PI_QEC_CTRL , 0x02 ),
2679+ QMP_PHY_INIT_CFG (QSERDES_V7_TX_RES_CODE_LANE_OFFSET_RX , 0x08 ),
2680+ QMP_PHY_INIT_CFG (QSERDES_V7_TX_RES_CODE_LANE_OFFSET_TX , 0x14 ),
2681+ };
2682+
2683+ static const struct qmp_phy_init_tbl sm8750_qmp_gen3x2_pcie_pcs_tbl [] = {
2684+ QMP_PHY_INIT_CFG (QPHY_V7_PCS_REFGEN_REQ_CONFIG1 , 0x05 ),
2685+ QMP_PHY_INIT_CFG (QPHY_V7_PCS_RX_SIGDET_LVL , 0x77 ),
2686+ QMP_PHY_INIT_CFG (QPHY_V7_PCS_RATE_SLEW_CNTRL1 , 0x0B ),
2687+ QMP_PHY_INIT_CFG (QPHY_V7_PCS_EQ_CONFIG2 , 0x0F ),
2688+ QMP_PHY_INIT_CFG (QPHY_V7_PCS_PCS_TX_RX_CONFIG , 0x8C ),
2689+ QMP_PHY_INIT_CFG (QPHY_V7_PCS_G12S1_TXDEEMPH_M6DB , 0x17 ),
2690+ QMP_PHY_INIT_CFG (QPHY_V7_PCS_G3S2_PRE_GAIN , 0x2E ),
2691+ };
2692+
2693+ static const struct qmp_phy_init_tbl sm8750_qmp_gen3x2_pcie_pcs_misc_tbl [] = {
2694+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_PCS_PCIE_EQ_CONFIG1 , 0x1E ),
2695+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_PCS_PCIE_RXEQEVAL_TIME , 0x27 ),
2696+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_PCS_PCIE_POWER_STATE_CONFIG2 , 0x1D ),
2697+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_PCS_PCIE_POWER_STATE_CONFIG4 , 0x07 ),
2698+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_PCS_PCIE_ENDPOINT_REFCLK_DRIVE , 0xC1 ),
2699+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_PCS_PCIE_OSC_DTCT_ACTIONS , 0x00 ),
2700+ };
2701+
25932702static const struct qmp_phy_init_tbl sa8775p_qmp_gen4x2_pcie_serdes_alt_tbl [] = {
25942703 QMP_PHY_INIT_CFG (QSERDES_V5_COM_BIAS_EN_CLKBUFLR_EN , 0x14 ),
25952704 QMP_PHY_INIT_CFG (QSERDES_V5_COM_PLL_IVCO , 0x0f ),
@@ -3207,6 +3316,16 @@ static const struct qmp_pcie_offsets qmp_pcie_offsets_v5_30 = {
32073316 .rx2 = 0x3a00 ,
32083317};
32093318
3319+ static const struct qmp_pcie_offsets qmp_pcie_offsets_v7 = {
3320+ .serdes = 0x0 ,
3321+ .pcs = 0x400 ,
3322+ .pcs_misc = 0x800 ,
3323+ .tx = 0x1000 ,
3324+ .rx = 0x1200 ,
3325+ .tx2 = 0x1800 ,
3326+ .rx2 = 0x1a00 ,
3327+ };
3328+
32103329static const struct qmp_pcie_offsets qmp_pcie_offsets_v6_20 = {
32113330 .serdes = 0x1000 ,
32123331 .pcs = 0x1200 ,
@@ -3996,6 +4115,33 @@ static const struct qmp_phy_cfg sm8550_qmp_gen3x2_pciephy_cfg = {
39964115 .phy_status = PHYSTATUS ,
39974116};
39984117
4118+ static const struct qmp_phy_cfg sm8750_qmp_gen3x2_pciephy_cfg = {
4119+ .lanes = 2 ,
4120+
4121+ .offsets = & qmp_pcie_offsets_v7 ,
4122+
4123+ .tbls = {
4124+ .serdes = sm8750_qmp_gen3x2_pcie_serdes_tbl ,
4125+ .serdes_num = ARRAY_SIZE (sm8750_qmp_gen3x2_pcie_serdes_tbl ),
4126+ .tx = sm8750_qmp_gen3x2_pcie_tx_tbl ,
4127+ .tx_num = ARRAY_SIZE (sm8750_qmp_gen3x2_pcie_tx_tbl ),
4128+ .rx = sm8750_qmp_gen3x2_pcie_rx_tbl ,
4129+ .rx_num = ARRAY_SIZE (sm8750_qmp_gen3x2_pcie_rx_tbl ),
4130+ .pcs = sm8750_qmp_gen3x2_pcie_pcs_tbl ,
4131+ .pcs_num = ARRAY_SIZE (sm8750_qmp_gen3x2_pcie_pcs_tbl ),
4132+ .pcs_misc = sm8750_qmp_gen3x2_pcie_pcs_misc_tbl ,
4133+ .pcs_misc_num = ARRAY_SIZE (sm8750_qmp_gen3x2_pcie_pcs_misc_tbl ),
4134+ },
4135+ .reset_list = sdm845_pciephy_reset_l ,
4136+ .num_resets = ARRAY_SIZE (sdm845_pciephy_reset_l ),
4137+ .vreg_list = qmp_phy_vreg_l ,
4138+ .num_vregs = ARRAY_SIZE (qmp_phy_vreg_l ),
4139+ .regs = pciephy_v7_regs_layout ,
4140+
4141+ .pwrdn_ctrl = SW_PWRDN | REFCLK_DRV_DSBL ,
4142+ .phy_status = PHYSTATUS ,
4143+ };
4144+
39994145static const struct qmp_phy_cfg sm8550_qmp_gen4x2_pciephy_cfg = {
40004146 .lanes = 2 ,
40014147
@@ -5099,6 +5245,9 @@ static const struct of_device_id qmp_pcie_of_match_table[] = {
50995245 }, {
51005246 .compatible = "qcom,sm8650-qmp-gen4x2-pcie-phy" ,
51015247 .data = & sm8650_qmp_gen4x2_pciephy_cfg ,
5248+ }, {
5249+ .compatible = "qcom,sm8750-qmp-gen3x2-pcie-phy" ,
5250+ .data = & sm8750_qmp_gen3x2_pciephy_cfg ,
51025251 }, {
51035252 .compatible = "qcom,x1e80100-qmp-gen3x2-pcie-phy" ,
51045253 .data = & sm8550_qmp_gen3x2_pciephy_cfg ,
0 commit comments