@@ -355,7 +355,9 @@ struct cdns_torrent_phy {
355355 struct reset_control * apb_rst ;
356356 struct device * dev ;
357357 struct clk * clk ;
358+ struct clk * clk1 ;
358359 enum cdns_torrent_ref_clk ref_clk_rate ;
360+ enum cdns_torrent_ref_clk ref_clk1_rate ;
359361 struct cdns_torrent_inst phys [MAX_NUM_LANES ];
360362 int nsubnodes ;
361363 const struct cdns_torrent_data * init_data ;
@@ -2460,9 +2462,11 @@ int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy)
24602462{
24612463 const struct cdns_torrent_data * init_data = cdns_phy -> init_data ;
24622464 struct cdns_torrent_vals * cmn_vals , * tx_ln_vals , * rx_ln_vals ;
2465+ enum cdns_torrent_ref_clk ref_clk1 = cdns_phy -> ref_clk1_rate ;
24632466 enum cdns_torrent_ref_clk ref_clk = cdns_phy -> ref_clk_rate ;
24642467 struct cdns_torrent_vals * link_cmn_vals , * xcvr_diag_vals ;
24652468 enum cdns_torrent_phy_type phy_t1 , phy_t2 ;
2469+ struct cdns_torrent_vals * phy_pma_cmn_vals ;
24662470 struct cdns_torrent_vals * pcs_cmn_vals ;
24672471 int i , j , node , mlane , num_lanes , ret ;
24682472 struct cdns_reg_pairs * reg_pairs ;
@@ -2489,6 +2493,7 @@ int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy)
24892493 * Get the array values as [phy_t2][phy_t1][ssc].
24902494 */
24912495 swap (phy_t1 , phy_t2 );
2496+ swap (ref_clk , ref_clk1 );
24922497 }
24932498
24942499 mlane = cdns_phy -> phys [node ].mlane ;
@@ -2552,9 +2557,22 @@ int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy)
25522557 reg_pairs [i ].val );
25532558 }
25542559
2560+ /* PHY PMA common registers configurations */
2561+ phy_pma_cmn_vals = cdns_torrent_get_tbl_vals (& init_data -> phy_pma_cmn_vals_tbl ,
2562+ CLK_ANY , CLK_ANY ,
2563+ phy_t1 , phy_t2 , ANY_SSC );
2564+ if (phy_pma_cmn_vals ) {
2565+ reg_pairs = phy_pma_cmn_vals -> reg_pairs ;
2566+ num_regs = phy_pma_cmn_vals -> num_regs ;
2567+ regmap = cdns_phy -> regmap_phy_pma_common_cdb ;
2568+ for (i = 0 ; i < num_regs ; i ++ )
2569+ regmap_write (regmap , reg_pairs [i ].off ,
2570+ reg_pairs [i ].val );
2571+ }
2572+
25552573 /* PMA common registers configurations */
25562574 cmn_vals = cdns_torrent_get_tbl_vals (& init_data -> cmn_vals_tbl ,
2557- ref_clk , ref_clk ,
2575+ ref_clk , ref_clk1 ,
25582576 phy_t1 , phy_t2 , ssc );
25592577 if (cmn_vals ) {
25602578 reg_pairs = cmn_vals -> reg_pairs ;
@@ -2567,7 +2585,7 @@ int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy)
25672585
25682586 /* PMA TX lane registers configurations */
25692587 tx_ln_vals = cdns_torrent_get_tbl_vals (& init_data -> tx_ln_vals_tbl ,
2570- ref_clk , ref_clk ,
2588+ ref_clk , ref_clk1 ,
25712589 phy_t1 , phy_t2 , ssc );
25722590 if (tx_ln_vals ) {
25732591 reg_pairs = tx_ln_vals -> reg_pairs ;
@@ -2582,7 +2600,7 @@ int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy)
25822600
25832601 /* PMA RX lane registers configurations */
25842602 rx_ln_vals = cdns_torrent_get_tbl_vals (& init_data -> rx_ln_vals_tbl ,
2585- ref_clk , ref_clk ,
2603+ ref_clk , ref_clk1 ,
25862604 phy_t1 , phy_t2 , ssc );
25872605 if (rx_ln_vals ) {
25882606 reg_pairs = rx_ln_vals -> reg_pairs ;
@@ -2684,9 +2702,11 @@ static int cdns_torrent_reset(struct cdns_torrent_phy *cdns_phy)
26842702static int cdns_torrent_clk (struct cdns_torrent_phy * cdns_phy )
26852703{
26862704 struct device * dev = cdns_phy -> dev ;
2705+ unsigned long ref_clk1_rate ;
26872706 unsigned long ref_clk_rate ;
26882707 int ret ;
26892708
2709+ /* refclk: Input reference clock for PLL0 */
26902710 cdns_phy -> clk = devm_clk_get (dev , "refclk" );
26912711 if (IS_ERR (cdns_phy -> clk )) {
26922712 dev_err (dev , "phy ref clock not found\n" );
@@ -2695,15 +2715,15 @@ static int cdns_torrent_clk(struct cdns_torrent_phy *cdns_phy)
26952715
26962716 ret = clk_prepare_enable (cdns_phy -> clk );
26972717 if (ret ) {
2698- dev_err (cdns_phy -> dev , "Failed to prepare ref clock\n" );
2718+ dev_err (cdns_phy -> dev , "Failed to prepare ref clock: %d \n" , ret );
26992719 return ret ;
27002720 }
27012721
27022722 ref_clk_rate = clk_get_rate (cdns_phy -> clk );
27032723 if (!ref_clk_rate ) {
27042724 dev_err (cdns_phy -> dev , "Failed to get ref clock rate\n" );
2705- clk_disable_unprepare ( cdns_phy -> clk ) ;
2706- return - EINVAL ;
2725+ ret = - EINVAL ;
2726+ goto disable_clk ;
27072727 }
27082728
27092729 switch (ref_clk_rate ) {
@@ -2720,12 +2740,62 @@ static int cdns_torrent_clk(struct cdns_torrent_phy *cdns_phy)
27202740 cdns_phy -> ref_clk_rate = CLK_156_25_MHZ ;
27212741 break ;
27222742 default :
2723- dev_err (cdns_phy -> dev , "Invalid Ref Clock Rate\n" );
2724- clk_disable_unprepare (cdns_phy -> clk );
2725- return - EINVAL ;
2743+ dev_err (cdns_phy -> dev , "Invalid ref clock rate\n" );
2744+ ret = - EINVAL ;
2745+ goto disable_clk ;
2746+ }
2747+
2748+ /* refclk1: Input reference clock for PLL1 */
2749+ cdns_phy -> clk1 = devm_clk_get_optional (dev , "pll1_refclk" );
2750+ if (IS_ERR (cdns_phy -> clk1 )) {
2751+ dev_err (dev , "phy PLL1 ref clock not found\n" );
2752+ ret = PTR_ERR (cdns_phy -> clk1 );
2753+ goto disable_clk ;
2754+ }
2755+
2756+ if (cdns_phy -> clk1 ) {
2757+ ret = clk_prepare_enable (cdns_phy -> clk1 );
2758+ if (ret ) {
2759+ dev_err (cdns_phy -> dev , "Failed to prepare PLL1 ref clock: %d\n" , ret );
2760+ goto disable_clk ;
2761+ }
2762+
2763+ ref_clk1_rate = clk_get_rate (cdns_phy -> clk1 );
2764+ if (!ref_clk1_rate ) {
2765+ dev_err (cdns_phy -> dev , "Failed to get PLL1 ref clock rate\n" );
2766+ ret = - EINVAL ;
2767+ goto disable_clk1 ;
2768+ }
2769+
2770+ switch (ref_clk1_rate ) {
2771+ case REF_CLK_19_2MHZ :
2772+ cdns_phy -> ref_clk1_rate = CLK_19_2_MHZ ;
2773+ break ;
2774+ case REF_CLK_25MHZ :
2775+ cdns_phy -> ref_clk1_rate = CLK_25_MHZ ;
2776+ break ;
2777+ case REF_CLK_100MHZ :
2778+ cdns_phy -> ref_clk1_rate = CLK_100_MHZ ;
2779+ break ;
2780+ case REF_CLK_156_25MHZ :
2781+ cdns_phy -> ref_clk1_rate = CLK_156_25_MHZ ;
2782+ break ;
2783+ default :
2784+ dev_err (cdns_phy -> dev , "Invalid PLL1 ref clock rate\n" );
2785+ ret = - EINVAL ;
2786+ goto disable_clk1 ;
2787+ }
2788+ } else {
2789+ cdns_phy -> ref_clk1_rate = cdns_phy -> ref_clk_rate ;
27262790 }
27272791
27282792 return 0 ;
2793+
2794+ disable_clk1 :
2795+ clk_disable_unprepare (cdns_phy -> clk1 );
2796+ disable_clk :
2797+ clk_disable_unprepare (cdns_phy -> clk );
2798+ return ret ;
27292799}
27302800
27312801static int cdns_torrent_phy_probe (struct platform_device * pdev )
@@ -2980,6 +3050,7 @@ static int cdns_torrent_phy_probe(struct platform_device *pdev)
29803050 reset_control_put (cdns_phy -> phys [i ].lnk_rst );
29813051 of_node_put (child );
29823052 reset_control_assert (cdns_phy -> apb_rst );
3053+ clk_disable_unprepare (cdns_phy -> clk1 );
29833054 clk_disable_unprepare (cdns_phy -> clk );
29843055clk_cleanup :
29853056 cdns_torrent_clk_cleanup (cdns_phy );
@@ -2998,6 +3069,7 @@ static void cdns_torrent_phy_remove(struct platform_device *pdev)
29983069 reset_control_put (cdns_phy -> phys [i ].lnk_rst );
29993070 }
30003071
3072+ clk_disable_unprepare (cdns_phy -> clk1 );
30013073 clk_disable_unprepare (cdns_phy -> clk );
30023074 cdns_torrent_clk_cleanup (cdns_phy );
30033075}
@@ -3034,6 +3106,100 @@ static struct cdns_torrent_vals dp_usb_xcvr_diag_ln_vals = {
30343106 .num_regs = ARRAY_SIZE (dp_usb_xcvr_diag_ln_regs ),
30353107};
30363108
3109+ /* PCIe and USXGMII link configuration */
3110+ static struct cdns_reg_pairs pcie_usxgmii_link_cmn_regs [] = {
3111+ {0x0003 , PHY_PLL_CFG },
3112+ {0x0601 , CMN_PDIAG_PLL0_CLK_SEL_M0 },
3113+ {0x0400 , CMN_PDIAG_PLL0_CLK_SEL_M1 },
3114+ {0x0400 , CMN_PDIAG_PLL1_CLK_SEL_M0 }
3115+ };
3116+
3117+ static struct cdns_reg_pairs pcie_usxgmii_xcvr_diag_ln_regs [] = {
3118+ {0x0000 , XCVR_DIAG_HSCLK_SEL },
3119+ {0x0001 , XCVR_DIAG_HSCLK_DIV },
3120+ {0x0012 , XCVR_DIAG_PLLDRC_CTRL }
3121+ };
3122+
3123+ static struct cdns_reg_pairs usxgmii_pcie_xcvr_diag_ln_regs [] = {
3124+ {0x0011 , XCVR_DIAG_HSCLK_SEL },
3125+ {0x0001 , XCVR_DIAG_HSCLK_DIV },
3126+ {0x0089 , XCVR_DIAG_PLLDRC_CTRL }
3127+ };
3128+
3129+ static struct cdns_torrent_vals pcie_usxgmii_link_cmn_vals = {
3130+ .reg_pairs = pcie_usxgmii_link_cmn_regs ,
3131+ .num_regs = ARRAY_SIZE (pcie_usxgmii_link_cmn_regs ),
3132+ };
3133+
3134+ static struct cdns_torrent_vals pcie_usxgmii_xcvr_diag_ln_vals = {
3135+ .reg_pairs = pcie_usxgmii_xcvr_diag_ln_regs ,
3136+ .num_regs = ARRAY_SIZE (pcie_usxgmii_xcvr_diag_ln_regs ),
3137+ };
3138+
3139+ static struct cdns_torrent_vals usxgmii_pcie_xcvr_diag_ln_vals = {
3140+ .reg_pairs = usxgmii_pcie_xcvr_diag_ln_regs ,
3141+ .num_regs = ARRAY_SIZE (usxgmii_pcie_xcvr_diag_ln_regs ),
3142+ };
3143+
3144+ /*
3145+ * Multilink USXGMII, using PLL1, 156.25 MHz Ref clk, no SSC
3146+ */
3147+ static struct cdns_reg_pairs ml_usxgmii_pll1_156_25_no_ssc_cmn_regs [] = {
3148+ {0x0028 , CMN_PDIAG_PLL1_CP_PADJ_M0 },
3149+ {0x0014 , CMN_PLL1_DSM_FBH_OVRD_M0 },
3150+ {0x0005 , CMN_PLL1_DSM_FBL_OVRD_M0 },
3151+ {0x061B , CMN_PLL1_VCOCAL_INIT_TMR },
3152+ {0x0019 , CMN_PLL1_VCOCAL_ITER_TMR },
3153+ {0x1354 , CMN_PLL1_VCOCAL_REFTIM_START },
3154+ {0x1354 , CMN_PLL1_VCOCAL_PLLCNT_START },
3155+ {0x0003 , CMN_PLL1_VCOCAL_TCTRL },
3156+ {0x0138 , CMN_PLL1_LOCK_REFCNT_START },
3157+ {0x0138 , CMN_PLL1_LOCK_PLLCNT_START },
3158+ {0x007F , CMN_TXPUCAL_TUNE },
3159+ {0x007F , CMN_TXPDCAL_TUNE }
3160+ };
3161+
3162+ static struct cdns_reg_pairs ml_usxgmii_156_25_no_ssc_tx_ln_regs [] = {
3163+ {0x00F3 , TX_PSC_A0 },
3164+ {0x04A2 , TX_PSC_A2 },
3165+ {0x04A2 , TX_PSC_A3 },
3166+ {0x0000 , TX_TXCC_CPOST_MULT_00 },
3167+ {0x0000 , XCVR_DIAG_PSC_OVRD }
3168+ };
3169+
3170+ static struct cdns_reg_pairs ml_usxgmii_156_25_no_ssc_rx_ln_regs [] = {
3171+ {0x091D , RX_PSC_A0 },
3172+ {0x0900 , RX_PSC_A2 },
3173+ {0x0100 , RX_PSC_A3 },
3174+ {0x0030 , RX_REE_SMGM_CTRL1 },
3175+ {0x03C7 , RX_REE_GCSM1_EQENM_PH1 },
3176+ {0x01C7 , RX_REE_GCSM1_EQENM_PH2 },
3177+ {0x0000 , RX_DIAG_DFE_CTRL },
3178+ {0x0019 , RX_REE_TAP1_CLIP },
3179+ {0x0019 , RX_REE_TAP2TON_CLIP },
3180+ {0x00B9 , RX_DIAG_NQST_CTRL },
3181+ {0x0C21 , RX_DIAG_DFE_AMP_TUNE_2 },
3182+ {0x0002 , RX_DIAG_DFE_AMP_TUNE_3 },
3183+ {0x0033 , RX_DIAG_PI_RATE },
3184+ {0x0001 , RX_DIAG_ACYA },
3185+ {0x018C , RX_CDRLF_CNFG }
3186+ };
3187+
3188+ static struct cdns_torrent_vals ml_usxgmii_pll1_156_25_no_ssc_cmn_vals = {
3189+ .reg_pairs = ml_usxgmii_pll1_156_25_no_ssc_cmn_regs ,
3190+ .num_regs = ARRAY_SIZE (ml_usxgmii_pll1_156_25_no_ssc_cmn_regs ),
3191+ };
3192+
3193+ static struct cdns_torrent_vals ml_usxgmii_156_25_no_ssc_tx_ln_vals = {
3194+ .reg_pairs = ml_usxgmii_156_25_no_ssc_tx_ln_regs ,
3195+ .num_regs = ARRAY_SIZE (ml_usxgmii_156_25_no_ssc_tx_ln_regs ),
3196+ };
3197+
3198+ static struct cdns_torrent_vals ml_usxgmii_156_25_no_ssc_rx_ln_vals = {
3199+ .reg_pairs = ml_usxgmii_156_25_no_ssc_rx_ln_regs ,
3200+ .num_regs = ARRAY_SIZE (ml_usxgmii_156_25_no_ssc_rx_ln_regs ),
3201+ };
3202+
30373203/* TI USXGMII configuration: Enable cmn_refclk_rcv_out_en */
30383204static struct cdns_reg_pairs ti_usxgmii_phy_pma_cmn_regs [] = {
30393205 {0x0040 , PHY_PMA_CMN_CTRL1 },
@@ -4166,6 +4332,7 @@ static struct cdns_torrent_vals_entry link_cmn_vals_entries[] = {
41664332 {CDNS_TORRENT_KEY_ANYCLK (TYPE_PCIE , TYPE_QSGMII ), & pcie_sgmii_link_cmn_vals },
41674333 {CDNS_TORRENT_KEY_ANYCLK (TYPE_PCIE , TYPE_USB ), & pcie_usb_link_cmn_vals },
41684334 {CDNS_TORRENT_KEY_ANYCLK (TYPE_PCIE , TYPE_DP ), & pcie_dp_link_cmn_vals },
4335+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_PCIE , TYPE_USXGMII ), & pcie_usxgmii_link_cmn_vals },
41694336
41704337 {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_NONE ), & sl_sgmii_link_cmn_vals },
41714338 {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_PCIE ), & pcie_sgmii_link_cmn_vals },
@@ -4182,6 +4349,7 @@ static struct cdns_torrent_vals_entry link_cmn_vals_entries[] = {
41824349 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USB , TYPE_DP ), & usb_dp_link_cmn_vals },
41834350
41844351 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_NONE ), & sl_usxgmii_link_cmn_vals },
4352+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_PCIE ), & pcie_usxgmii_link_cmn_vals },
41854353};
41864354
41874355static struct cdns_torrent_vals_entry xcvr_diag_vals_entries [] = {
@@ -4194,6 +4362,7 @@ static struct cdns_torrent_vals_entry xcvr_diag_vals_entries[] = {
41944362 {CDNS_TORRENT_KEY_ANYCLK (TYPE_PCIE , TYPE_QSGMII ), & pcie_sgmii_xcvr_diag_ln_vals },
41954363 {CDNS_TORRENT_KEY_ANYCLK (TYPE_PCIE , TYPE_USB ), & pcie_usb_xcvr_diag_ln_vals },
41964364 {CDNS_TORRENT_KEY_ANYCLK (TYPE_PCIE , TYPE_DP ), & pcie_dp_xcvr_diag_ln_vals },
4365+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_PCIE , TYPE_USXGMII ), & pcie_usxgmii_xcvr_diag_ln_vals },
41974366
41984367 {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_NONE ), & sl_sgmii_xcvr_diag_ln_vals },
41994368 {CDNS_TORRENT_KEY_ANYCLK (TYPE_SGMII , TYPE_PCIE ), & sgmii_pcie_xcvr_diag_ln_vals },
@@ -4210,6 +4379,7 @@ static struct cdns_torrent_vals_entry xcvr_diag_vals_entries[] = {
42104379 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USB , TYPE_DP ), & usb_dp_xcvr_diag_ln_vals },
42114380
42124381 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_NONE ), & sl_usxgmii_xcvr_diag_ln_vals },
4382+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_PCIE ), & usxgmii_pcie_xcvr_diag_ln_vals },
42134383};
42144384
42154385static struct cdns_torrent_vals_entry pcs_cmn_vals_entries [] = {
@@ -4285,6 +4455,11 @@ static struct cdns_torrent_vals_entry cmn_vals_entries[] = {
42854455 {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_100_MHZ , TYPE_USB , TYPE_DP , NO_SSC ), & usb_100_no_ssc_cmn_vals },
42864456
42874457 {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_156_25_MHZ , TYPE_USXGMII , TYPE_NONE , NO_SSC ), & sl_usxgmii_156_25_no_ssc_cmn_vals },
4458+
4459+ /* Dual refclk */
4460+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_PCIE , TYPE_USXGMII , NO_SSC ), NULL },
4461+
4462+ {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 },
42884463};
42894464
42904465static struct cdns_torrent_vals_entry cdns_tx_ln_vals_entries [] = {
@@ -4352,6 +4527,11 @@ static struct cdns_torrent_vals_entry cdns_tx_ln_vals_entries[] = {
43524527 {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_100_MHZ , TYPE_USB , TYPE_DP , NO_SSC ), & usb_100_no_ssc_tx_ln_vals },
43534528
43544529 {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_156_25_MHZ , TYPE_USXGMII , TYPE_NONE , NO_SSC ), & usxgmii_156_25_no_ssc_tx_ln_vals },
4530+
4531+ /* Dual refclk */
4532+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_PCIE , TYPE_USXGMII , NO_SSC ), NULL },
4533+
4534+ {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 },
43554535};
43564536
43574537static struct cdns_torrent_vals_entry cdns_rx_ln_vals_entries [] = {
@@ -4419,6 +4599,11 @@ static struct cdns_torrent_vals_entry cdns_rx_ln_vals_entries[] = {
44194599 {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_100_MHZ , TYPE_USB , TYPE_DP , NO_SSC ), & usb_100_no_ssc_rx_ln_vals },
44204600
44214601 {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_156_25_MHZ , TYPE_USXGMII , TYPE_NONE , NO_SSC ), & usxgmii_156_25_no_ssc_rx_ln_vals },
4602+
4603+ /* Dual refclk */
4604+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_PCIE , TYPE_USXGMII , NO_SSC ), & pcie_100_no_ssc_rx_ln_vals },
4605+
4606+ {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 },
44224607};
44234608
44244609static const struct cdns_torrent_data cdns_map_torrent = {
@@ -4452,6 +4637,7 @@ static const struct cdns_torrent_data cdns_map_torrent = {
44524637
44534638static struct cdns_torrent_vals_entry j721e_phy_pma_cmn_vals_entries [] = {
44544639 {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_NONE ), & ti_usxgmii_phy_pma_cmn_vals },
4640+ {CDNS_TORRENT_KEY_ANYCLK (TYPE_USXGMII , TYPE_PCIE ), & ti_usxgmii_phy_pma_cmn_vals },
44554641};
44564642
44574643static struct cdns_torrent_vals_entry ti_tx_ln_vals_entries [] = {
@@ -4519,6 +4705,11 @@ static struct cdns_torrent_vals_entry ti_tx_ln_vals_entries[] = {
45194705 {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_100_MHZ , TYPE_USB , TYPE_DP , NO_SSC ), & usb_100_no_ssc_tx_ln_vals },
45204706
45214707 {CDNS_TORRENT_KEY (CLK_156_25_MHZ , CLK_156_25_MHZ , TYPE_USXGMII , TYPE_NONE , NO_SSC ), & usxgmii_156_25_no_ssc_tx_ln_vals },
4708+
4709+ /* Dual refclk */
4710+ {CDNS_TORRENT_KEY (CLK_100_MHZ , CLK_156_25_MHZ , TYPE_PCIE , TYPE_USXGMII , NO_SSC ), NULL },
4711+
4712+ {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 },
45224713};
45234714
45244715static const struct cdns_torrent_data ti_j721e_map_torrent = {
0 commit comments