@@ -3106,6 +3106,73 @@ static struct cdns_torrent_vals dp_usb_xcvr_diag_ln_vals = {
31063106 .num_regs = ARRAY_SIZE (dp_usb_xcvr_diag_ln_regs ),
31073107};
31083108
3109+ /* USXGMII and SGMII/QSGMII link configuration */
3110+ static struct cdns_reg_pairs usxgmii_sgmii_link_cmn_regs [] = {
3111+ {0x0002 , PHY_PLL_CFG },
3112+ {0x0400 , CMN_PDIAG_PLL0_CLK_SEL_M0 },
3113+ {0x0601 , CMN_PDIAG_PLL1_CLK_SEL_M0 }
3114+ };
3115+
3116+ static struct cdns_reg_pairs usxgmii_sgmii_xcvr_diag_ln_regs [] = {
3117+ {0x0000 , XCVR_DIAG_HSCLK_SEL },
3118+ {0x0001 , XCVR_DIAG_HSCLK_DIV },
3119+ {0x0001 , XCVR_DIAG_PLLDRC_CTRL }
3120+ };
3121+
3122+ static struct cdns_reg_pairs sgmii_usxgmii_xcvr_diag_ln_regs [] = {
3123+ {0x0111 , XCVR_DIAG_HSCLK_SEL },
3124+ {0x0103 , XCVR_DIAG_HSCLK_DIV },
3125+ {0x0A9B , XCVR_DIAG_PLLDRC_CTRL }
3126+ };
3127+
3128+ static struct cdns_torrent_vals usxgmii_sgmii_link_cmn_vals = {
3129+ .reg_pairs = usxgmii_sgmii_link_cmn_regs ,
3130+ .num_regs = ARRAY_SIZE (usxgmii_sgmii_link_cmn_regs ),
3131+ };
3132+
3133+ static struct cdns_torrent_vals usxgmii_sgmii_xcvr_diag_ln_vals = {
3134+ .reg_pairs = usxgmii_sgmii_xcvr_diag_ln_regs ,
3135+ .num_regs = ARRAY_SIZE (usxgmii_sgmii_xcvr_diag_ln_regs ),
3136+ };
3137+
3138+ static struct cdns_torrent_vals sgmii_usxgmii_xcvr_diag_ln_vals = {
3139+ .reg_pairs = sgmii_usxgmii_xcvr_diag_ln_regs ,
3140+ .num_regs = ARRAY_SIZE (sgmii_usxgmii_xcvr_diag_ln_regs ),
3141+ };
3142+
3143+ /* Multilink USXGMII, using PLL0, 156.25 MHz Ref clk, no SSC */
3144+ static struct cdns_reg_pairs ml_usxgmii_pll0_156_25_no_ssc_cmn_regs [] = {
3145+ {0x0014 , CMN_PLL0_DSM_FBH_OVRD_M0 },
3146+ {0x0005 , CMN_PLL0_DSM_FBL_OVRD_M0 },
3147+ {0x061B , CMN_PLL0_VCOCAL_INIT_TMR },
3148+ {0x0019 , CMN_PLL0_VCOCAL_ITER_TMR },
3149+ {0x1354 , CMN_PLL0_VCOCAL_REFTIM_START },
3150+ {0x1354 , CMN_PLL0_VCOCAL_PLLCNT_START },
3151+ {0x0003 , CMN_PLL0_VCOCAL_TCTRL },
3152+ {0x0138 , CMN_PLL0_LOCK_REFCNT_START },
3153+ {0x0138 , CMN_PLL0_LOCK_PLLCNT_START }
3154+ };
3155+
3156+ static struct cdns_torrent_vals ml_usxgmii_pll0_156_25_no_ssc_cmn_vals = {
3157+ .reg_pairs = ml_usxgmii_pll0_156_25_no_ssc_cmn_regs ,
3158+ .num_regs = ARRAY_SIZE (ml_usxgmii_pll0_156_25_no_ssc_cmn_regs ),
3159+ };
3160+
3161+ /* Multilink SGMII/QSGMII, using PLL1, 100 MHz Ref clk, no SSC */
3162+ static struct cdns_reg_pairs ml_sgmii_pll1_100_no_ssc_cmn_regs [] = {
3163+ {0x0028 , CMN_PDIAG_PLL1_CP_PADJ_M0 },
3164+ {0x001E , CMN_PLL1_DSM_FBH_OVRD_M0 },
3165+ {0x000C , CMN_PLL1_DSM_FBL_OVRD_M0 },
3166+ {0x0003 , CMN_PLL1_VCOCAL_TCTRL },
3167+ {0x007F , CMN_TXPUCAL_TUNE },
3168+ {0x007F , CMN_TXPDCAL_TUNE }
3169+ };
3170+
3171+ static struct cdns_torrent_vals ml_sgmii_pll1_100_no_ssc_cmn_vals = {
3172+ .reg_pairs = ml_sgmii_pll1_100_no_ssc_cmn_regs ,
3173+ .num_regs = ARRAY_SIZE (ml_sgmii_pll1_100_no_ssc_cmn_regs ),
3174+ };
3175+
31093176/* PCIe and USXGMII link configuration */
31103177static struct cdns_reg_pairs pcie_usxgmii_link_cmn_regs [] = {
31113178 {0x0003 , PHY_PLL_CFG },
@@ -4337,10 +4404,12 @@ static struct cdns_torrent_vals_entry link_cmn_vals_entries[] = {
43374404 {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_NONE ), & sl_sgmii_link_cmn_vals },
43384405 {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_PCIE ), & pcie_sgmii_link_cmn_vals },
43394406 {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_USB ), & usb_sgmii_link_cmn_vals },
4407+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_USXGMII ), & usxgmii_sgmii_link_cmn_vals },
43404408
43414409 {CDNS_TORRENT_KEY_ANYCLK (TYPE_QSGMII , TYPE_NONE ), & sl_sgmii_link_cmn_vals },
43424410 {CDNS_TORRENT_KEY_ANYCLK (TYPE_QSGMII , TYPE_PCIE ), & pcie_sgmii_link_cmn_vals },
43434411 {CDNS_TORRENT_KEY_ANYCLK (TYPE_QSGMII , TYPE_USB ), & usb_sgmii_link_cmn_vals },
4412+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_QSGMII , TYPE_USXGMII ), & usxgmii_sgmii_link_cmn_vals },
43444413
43454414 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USB , TYPE_NONE ), & sl_usb_link_cmn_vals },
43464415 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USB , TYPE_PCIE ), & pcie_usb_link_cmn_vals },
@@ -4350,6 +4419,8 @@ static struct cdns_torrent_vals_entry link_cmn_vals_entries[] = {
43504419
43514420 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_NONE ), & sl_usxgmii_link_cmn_vals },
43524421 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_PCIE ), & pcie_usxgmii_link_cmn_vals },
4422+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_SGMII ), & usxgmii_sgmii_link_cmn_vals },
4423+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_QSGMII ), & usxgmii_sgmii_link_cmn_vals },
43534424};
43544425
43554426static struct cdns_torrent_vals_entry xcvr_diag_vals_entries [] = {
@@ -4367,10 +4438,12 @@ static struct cdns_torrent_vals_entry xcvr_diag_vals_entries[] = {
43674438 {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_NONE ), & sl_sgmii_xcvr_diag_ln_vals },
43684439 {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_PCIE ), & sgmii_pcie_xcvr_diag_ln_vals },
43694440 {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_USB ), & sgmii_usb_xcvr_diag_ln_vals },
4441+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_USXGMII ), & sgmii_usxgmii_xcvr_diag_ln_vals },
43704442
43714443 {CDNS_TORRENT_KEY_ANYCLK (TYPE_QSGMII , TYPE_NONE ), & sl_sgmii_xcvr_diag_ln_vals },
43724444 {CDNS_TORRENT_KEY_ANYCLK (TYPE_QSGMII , TYPE_PCIE ), & sgmii_pcie_xcvr_diag_ln_vals },
43734445 {CDNS_TORRENT_KEY_ANYCLK (TYPE_QSGMII , TYPE_USB ), & sgmii_usb_xcvr_diag_ln_vals },
4446+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_QSGMII , TYPE_USXGMII ), & sgmii_usxgmii_xcvr_diag_ln_vals },
43744447
43754448 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USB , TYPE_NONE ), & sl_usb_xcvr_diag_ln_vals },
43764449 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USB , TYPE_PCIE ), & usb_pcie_xcvr_diag_ln_vals },
@@ -4380,6 +4453,8 @@ static struct cdns_torrent_vals_entry xcvr_diag_vals_entries[] = {
43804453
43814454 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_NONE ), & sl_usxgmii_xcvr_diag_ln_vals },
43824455 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_PCIE ), & usxgmii_pcie_xcvr_diag_ln_vals },
4456+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_SGMII ), & usxgmii_sgmii_xcvr_diag_ln_vals },
4457+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_QSGMII ), & usxgmii_sgmii_xcvr_diag_ln_vals },
43834458};
43844459
43854460static struct cdns_torrent_vals_entry pcs_cmn_vals_entries [] = {
@@ -4459,7 +4534,13 @@ static struct cdns_torrent_vals_entry cmn_vals_entries[] = {
44594534 /* Dual refclk */
44604535 {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_PCIE , TYPE_USXGMII , NO_SSC ), NULL },
44614536
4537+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_SGMII , TYPE_USXGMII , NO_SSC ), & ml_sgmii_pll1_100_no_ssc_cmn_vals },
4538+
4539+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_QSGMII , TYPE_USXGMII , NO_SSC ), & ml_sgmii_pll1_100_no_ssc_cmn_vals },
4540+
44624541 {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_PCIE , NO_SSC ), & ml_usxgmii_pll1_156_25_no_ssc_cmn_vals },
4542+ {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_SGMII , NO_SSC ), & ml_usxgmii_pll0_156_25_no_ssc_cmn_vals },
4543+ {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_QSGMII , NO_SSC ), & ml_usxgmii_pll0_156_25_no_ssc_cmn_vals },
44634544};
44644545
44654546static struct cdns_torrent_vals_entry cdns_tx_ln_vals_entries [] = {
@@ -4531,7 +4612,13 @@ static struct cdns_torrent_vals_entry cdns_tx_ln_vals_entries[] = {
45314612 /* Dual refclk */
45324613 {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_PCIE , TYPE_USXGMII , NO_SSC ), NULL },
45334614
4615+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_SGMII , TYPE_USXGMII , NO_SSC ), & sgmii_100_no_ssc_tx_ln_vals },
4616+
4617+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_QSGMII , TYPE_USXGMII , NO_SSC ), & qsgmii_100_no_ssc_tx_ln_vals },
4618+
45344619 {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_PCIE , NO_SSC ), & ml_usxgmii_156_25_no_ssc_tx_ln_vals },
4620+ {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_SGMII , NO_SSC ), & ml_usxgmii_156_25_no_ssc_tx_ln_vals },
4621+ {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_QSGMII , NO_SSC ), & ml_usxgmii_156_25_no_ssc_tx_ln_vals },
45354622};
45364623
45374624static struct cdns_torrent_vals_entry cdns_rx_ln_vals_entries [] = {
@@ -4603,7 +4690,13 @@ static struct cdns_torrent_vals_entry cdns_rx_ln_vals_entries[] = {
46034690 /* Dual refclk */
46044691 {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_PCIE , TYPE_USXGMII , NO_SSC ), & pcie_100_no_ssc_rx_ln_vals },
46054692
4693+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_SGMII , TYPE_USXGMII , NO_SSC ), & sgmii_100_no_ssc_rx_ln_vals },
4694+
4695+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_QSGMII , TYPE_USXGMII , NO_SSC ), & qsgmii_100_no_ssc_rx_ln_vals },
4696+
46064697 {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_PCIE , NO_SSC ), & ml_usxgmii_156_25_no_ssc_rx_ln_vals },
4698+ {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_SGMII , NO_SSC ), & ml_usxgmii_156_25_no_ssc_rx_ln_vals },
4699+ {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_QSGMII , NO_SSC ), & ml_usxgmii_156_25_no_ssc_rx_ln_vals },
46074700};
46084701
46094702static const struct cdns_torrent_data cdns_map_torrent = {
@@ -4638,6 +4731,8 @@ static const struct cdns_torrent_data cdns_map_torrent = {
46384731static struct cdns_torrent_vals_entry j721e_phy_pma_cmn_vals_entries [] = {
46394732 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_NONE ), & ti_usxgmii_phy_pma_cmn_vals },
46404733 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_PCIE ), & ti_usxgmii_phy_pma_cmn_vals },
4734+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_SGMII ), & ti_usxgmii_phy_pma_cmn_vals },
4735+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_QSGMII ), & ti_usxgmii_phy_pma_cmn_vals },
46414736};
46424737
46434738static struct cdns_torrent_vals_entry ti_tx_ln_vals_entries [] = {
@@ -4709,7 +4804,13 @@ static struct cdns_torrent_vals_entry ti_tx_ln_vals_entries[] = {
47094804 /* Dual refclk */
47104805 {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_PCIE , TYPE_USXGMII , NO_SSC ), NULL },
47114806
4807+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_SGMII , TYPE_USXGMII , NO_SSC ), & ti_sgmii_100_no_ssc_tx_ln_vals },
4808+
4809+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_QSGMII , TYPE_USXGMII , NO_SSC ), & ti_qsgmii_100_no_ssc_tx_ln_vals },
4810+
47124811 {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_PCIE , NO_SSC ), & ml_usxgmii_156_25_no_ssc_tx_ln_vals },
4812+ {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_SGMII , NO_SSC ), & ml_usxgmii_156_25_no_ssc_tx_ln_vals },
4813+ {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_100_MHZ , TYPE_USXGMII , TYPE_QSGMII , NO_SSC ), & ml_usxgmii_156_25_no_ssc_tx_ln_vals },
47134814};
47144815
47154816static const struct cdns_torrent_data ti_j721e_map_torrent = {
0 commit comments