For PCIe + QSGMII configuration where QSGMII was using PLL1 and was
expecting 10GHz clock, configuration was giving 8GHz clock. Update
register sequences to get correct PLL1 configuration.

Also, update single link PCIe and single link SGMII/QSGMII configurations
with related changes.

Signed-off-by: Swapnil Jakhade <sjakh...@cadence.com>
Signed-off-by: Kishon Vijay Abraham I <kis...@ti.com>
---
 drivers/phy/cadence/phy-cadence-torrent.c | 77 ++++++++++++++---------
 1 file changed, 49 insertions(+), 28 deletions(-)

diff --git a/drivers/phy/cadence/phy-cadence-torrent.c 
b/drivers/phy/cadence/phy-cadence-torrent.c
index 9a882bcfd7be..ae1cea2271be 100644
--- a/drivers/phy/cadence/phy-cadence-torrent.c
+++ b/drivers/phy/cadence/phy-cadence-torrent.c
@@ -126,6 +126,8 @@
 #define CMN_PLL1_FRACDIVH_M0           0x00D2U
 #define CMN_PLL1_HIGH_THR_M0           0x00D3U
 #define CMN_PLL1_DSM_DIAG_M0           0x00D4U
+#define CMN_PLL1_DSM_FBH_OVRD_M0       0x00D5U
+#define CMN_PLL1_DSM_FBL_OVRD_M0       0x00D6U
 #define CMN_PLL1_SS_CTRL1_M0           0x00D8U
 #define CMN_PLL1_SS_CTRL2_M0            0x00D9U
 #define CMN_PLL1_SS_CTRL3_M0            0x00DAU
@@ -167,6 +169,7 @@
 #define TX_TXCC_CPOST_MULT_00          0x004CU
 #define TX_TXCC_CPOST_MULT_01          0x004DU
 #define TX_TXCC_MGNFS_MULT_000         0x0050U
+#define TX_TXCC_MGNFS_MULT_100         0x0054U
 #define DRV_DIAG_TX_DRV                        0x00C6U
 #define XCVR_DIAG_PLLDRC_CTRL          0x00E5U
 #define XCVR_DIAG_HSCLK_SEL            0x00E6U
@@ -2841,12 +2844,22 @@ static struct cdns_torrent_vals 
sgmii_pcie_xcvr_diag_ln_vals = {
 };
 
 /* SGMII 100 MHz Ref clk, no SSC */
-static struct cdns_reg_pairs sgmii_100_no_ssc_cmn_regs[] = {
+static struct cdns_reg_pairs sl_sgmii_100_no_ssc_cmn_regs[] = {
+       {0x0028, CMN_PDIAG_PLL1_CP_PADJ_M0},
+       {0x001E, CMN_PLL1_DSM_FBH_OVRD_M0},
+       {0x000C, CMN_PLL1_DSM_FBL_OVRD_M0},
        {0x0003, CMN_PLL0_VCOCAL_TCTRL},
-       {0x0003, CMN_PLL1_VCOCAL_TCTRL},
-       {0x3700, CMN_DIAG_BIAS_OVRD1},
-       {0x0008, CMN_TXPUCAL_TUNE},
-       {0x0008, CMN_TXPDCAL_TUNE}
+       {0x0003, CMN_PLL1_VCOCAL_TCTRL}
+};
+
+static struct cdns_torrent_vals sl_sgmii_100_no_ssc_cmn_vals = {
+       .reg_pairs = sl_sgmii_100_no_ssc_cmn_regs,
+       .num_regs = ARRAY_SIZE(sl_sgmii_100_no_ssc_cmn_regs),
+};
+
+static struct cdns_reg_pairs sgmii_100_no_ssc_cmn_regs[] = {
+       {0x007F, CMN_TXPUCAL_TUNE},
+       {0x007F, CMN_TXPDCAL_TUNE}
 };
 
 static struct cdns_reg_pairs sgmii_100_no_ssc_tx_ln_regs[] = {
@@ -2932,17 +2945,14 @@ static struct cdns_reg_pairs 
sgmii_100_int_ssc_cmn_regs[] = {
        {0x0C5E, CMN_PLL1_VCOCAL_REFTIM_START},
        {0x0C56, CMN_PLL0_VCOCAL_PLLCNT_START},
        {0x0C56, CMN_PLL1_VCOCAL_PLLCNT_START},
-       {0x0003, CMN_PLL0_VCOCAL_TCTRL},
-       {0x0003, CMN_PLL1_VCOCAL_TCTRL},
        {0x00C7, CMN_PLL0_LOCK_REFCNT_START},
        {0x00C7, CMN_PLL1_LOCK_REFCNT_START},
        {0x00C7, CMN_PLL0_LOCK_PLLCNT_START},
        {0x00C7, CMN_PLL1_LOCK_PLLCNT_START},
        {0x0005, CMN_PLL0_LOCK_PLLCNT_THR},
        {0x0005, CMN_PLL1_LOCK_PLLCNT_THR},
-       {0x3700, CMN_DIAG_BIAS_OVRD1},
-       {0x0008, CMN_TXPUCAL_TUNE},
-       {0x0008, CMN_TXPDCAL_TUNE}
+       {0x007F, CMN_TXPUCAL_TUNE},
+       {0x007F, CMN_TXPDCAL_TUNE}
 };
 
 static struct cdns_torrent_vals sgmii_100_int_ssc_cmn_vals = {
@@ -2951,16 +2961,30 @@ static struct cdns_torrent_vals 
sgmii_100_int_ssc_cmn_vals = {
 };
 
 /* QSGMII 100 MHz Ref clk, no SSC */
-static struct cdns_reg_pairs qsgmii_100_no_ssc_cmn_regs[] = {
+static struct cdns_reg_pairs sl_qsgmii_100_no_ssc_cmn_regs[] = {
+       {0x0028, CMN_PDIAG_PLL1_CP_PADJ_M0},
+       {0x001E, CMN_PLL1_DSM_FBH_OVRD_M0},
+       {0x000C, CMN_PLL1_DSM_FBL_OVRD_M0},
        {0x0003, CMN_PLL0_VCOCAL_TCTRL},
        {0x0003, CMN_PLL1_VCOCAL_TCTRL}
 };
 
+static struct cdns_torrent_vals sl_qsgmii_100_no_ssc_cmn_vals = {
+       .reg_pairs = sl_qsgmii_100_no_ssc_cmn_regs,
+       .num_regs = ARRAY_SIZE(sl_qsgmii_100_no_ssc_cmn_regs),
+};
+
+static struct cdns_reg_pairs qsgmii_100_no_ssc_cmn_regs[] = {
+       {0x007F, CMN_TXPUCAL_TUNE},
+       {0x007F, CMN_TXPDCAL_TUNE}
+};
+
 static struct cdns_reg_pairs qsgmii_100_no_ssc_tx_ln_regs[] = {
        {0x00F3, TX_PSC_A0},
        {0x04A2, TX_PSC_A2},
        {0x04A2, TX_PSC_A3},
        {0x0000, TX_TXCC_CPOST_MULT_00},
+       {0x0011, TX_TXCC_MGNFS_MULT_100},
        {0x0003, DRV_DIAG_TX_DRV}
 };
 
@@ -3039,14 +3063,14 @@ static struct cdns_reg_pairs 
qsgmii_100_int_ssc_cmn_regs[] = {
        {0x0C5E, CMN_PLL1_VCOCAL_REFTIM_START},
        {0x0C56, CMN_PLL0_VCOCAL_PLLCNT_START},
        {0x0C56, CMN_PLL1_VCOCAL_PLLCNT_START},
-       {0x0003, CMN_PLL0_VCOCAL_TCTRL},
-       {0x0003, CMN_PLL1_VCOCAL_TCTRL},
        {0x00C7, CMN_PLL0_LOCK_REFCNT_START},
        {0x00C7, CMN_PLL1_LOCK_REFCNT_START},
        {0x00C7, CMN_PLL0_LOCK_PLLCNT_START},
        {0x00C7, CMN_PLL1_LOCK_PLLCNT_START},
        {0x0005, CMN_PLL0_LOCK_PLLCNT_THR},
-       {0x0005, CMN_PLL1_LOCK_PLLCNT_THR}
+       {0x0005, CMN_PLL1_LOCK_PLLCNT_THR},
+       {0x007F, CMN_TXPUCAL_TUNE},
+       {0x007F, CMN_TXPDCAL_TUNE}
 };
 
 static struct cdns_torrent_vals qsgmii_100_int_ssc_cmn_vals = {
@@ -3118,8 +3142,6 @@ static struct cdns_reg_pairs pcie_100_int_ssc_cmn_regs[] 
= {
        {0x0C5E, CMN_PLL1_VCOCAL_REFTIM_START},
        {0x0C56, CMN_PLL0_VCOCAL_PLLCNT_START},
        {0x0C56, CMN_PLL1_VCOCAL_PLLCNT_START},
-       {0x0003, CMN_PLL0_VCOCAL_TCTRL},
-       {0x0003, CMN_PLL1_VCOCAL_TCTRL},
        {0x00C7, CMN_PLL0_LOCK_REFCNT_START},
        {0x00C7, CMN_PLL1_LOCK_REFCNT_START},
        {0x00C7, CMN_PLL0_LOCK_PLLCNT_START},
@@ -3175,8 +3197,6 @@ static struct cdns_reg_pairs 
sl_pcie_100_int_ssc_cmn_regs[] = {
        {0x0C5E, CMN_PLL1_VCOCAL_REFTIM_START},
        {0x0C56, CMN_PLL0_VCOCAL_PLLCNT_START},
        {0x0C56, CMN_PLL1_VCOCAL_PLLCNT_START},
-       {0x0003, CMN_PLL0_VCOCAL_TCTRL},
-       {0x0003, CMN_PLL1_VCOCAL_TCTRL},
        {0x00C7, CMN_PLL0_LOCK_REFCNT_START},
        {0x00C7, CMN_PLL1_LOCK_REFCNT_START},
        {0x00C7, CMN_PLL0_LOCK_PLLCNT_START},
@@ -3192,8 +3212,9 @@ static struct cdns_torrent_vals 
sl_pcie_100_int_ssc_cmn_vals = {
 
 /* PCIe, 100 MHz Ref clk, no SSC & external SSC */
 static struct cdns_reg_pairs pcie_100_ext_no_ssc_cmn_regs[] = {
-       {0x0003, CMN_PLL0_VCOCAL_TCTRL},
-       {0x0003, CMN_PLL1_VCOCAL_TCTRL}
+       {0x0028, CMN_PDIAG_PLL1_CP_PADJ_M0},
+       {0x001E, CMN_PLL1_DSM_FBH_OVRD_M0},
+       {0x000C, CMN_PLL1_DSM_FBL_OVRD_M0}
 };
 
 static struct cdns_reg_pairs pcie_100_ext_no_ssc_rx_ln_regs[] = {
@@ -3394,8 +3415,8 @@ static const struct cdns_torrent_data cdns_map_torrent = {
        .cmn_vals = {
                [TYPE_PCIE] = {
                        [TYPE_NONE] = {
-                               [NO_SSC] = &pcie_100_no_ssc_cmn_vals,
-                               [EXTERNAL_SSC] = &pcie_100_no_ssc_cmn_vals,
+                               [NO_SSC] = NULL,
+                               [EXTERNAL_SSC] = NULL,
                                [INTERNAL_SSC] = &sl_pcie_100_int_ssc_cmn_vals,
                        },
                        [TYPE_SGMII] = {
@@ -3416,7 +3437,7 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                },
                [TYPE_SGMII] = {
                        [TYPE_NONE] = {
-                               [NO_SSC] = &sgmii_100_no_ssc_cmn_vals,
+                               [NO_SSC] = &sl_sgmii_100_no_ssc_cmn_vals,
                        },
                        [TYPE_PCIE] = {
                                [NO_SSC] = &sgmii_100_no_ssc_cmn_vals,
@@ -3431,7 +3452,7 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                },
                [TYPE_QSGMII] = {
                        [TYPE_NONE] = {
-                               [NO_SSC] = &qsgmii_100_no_ssc_cmn_vals,
+                               [NO_SSC] = &sl_qsgmii_100_no_ssc_cmn_vals,
                        },
                        [TYPE_PCIE] = {
                                [NO_SSC] = &qsgmii_100_no_ssc_cmn_vals,
@@ -3803,8 +3824,8 @@ static const struct cdns_torrent_data 
ti_j721e_map_torrent = {
        .cmn_vals = {
                [TYPE_PCIE] = {
                        [TYPE_NONE] = {
-                               [NO_SSC] = &pcie_100_no_ssc_cmn_vals,
-                               [EXTERNAL_SSC] = &pcie_100_no_ssc_cmn_vals,
+                               [NO_SSC] = NULL,
+                               [EXTERNAL_SSC] = NULL,
                                [INTERNAL_SSC] = &sl_pcie_100_int_ssc_cmn_vals,
                        },
                        [TYPE_SGMII] = {
@@ -3825,7 +3846,7 @@ static const struct cdns_torrent_data 
ti_j721e_map_torrent = {
                },
                [TYPE_SGMII] = {
                        [TYPE_NONE] = {
-                               [NO_SSC] = &sgmii_100_no_ssc_cmn_vals,
+                               [NO_SSC] = &sl_sgmii_100_no_ssc_cmn_vals,
                        },
                        [TYPE_PCIE] = {
                                [NO_SSC] = &sgmii_100_no_ssc_cmn_vals,
@@ -3840,7 +3861,7 @@ static const struct cdns_torrent_data 
ti_j721e_map_torrent = {
                },
                [TYPE_QSGMII] = {
                        [TYPE_NONE] = {
-                               [NO_SSC] = &qsgmii_100_no_ssc_cmn_vals,
+                               [NO_SSC] = &sl_qsgmii_100_no_ssc_cmn_vals,
                        },
                        [TYPE_PCIE] = {
                                [NO_SSC] = &qsgmii_100_no_ssc_cmn_vals,
-- 
2.26.1

Reply via email to