Skip to content

Commit b426146

Browse files
sjakhadecdnsvinodkoul
authored andcommitted
phy: cadence-torrent: Add PCIe(100MHz) + USXGMII(156.25MHz) multilink configuration
Torrent PHY can have separate input reference clocks for PLL0 and PLL1. Add support for dual reference clock multilink configurations. Add register sequences for PCIe(100MHz) + USXGMII(156.25MHz) multilink configuration. PCIe uses PLL0 and USXGMII uses PLL1. Signed-off-by: Swapnil Jakhade <sjakhade@cadence.com> Reviewed-by: Roger Quadros <rogerq@kernel.org> Link: https://lore.kernel.org/r/20240104133013.2911035-3-sjakhade@cadence.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
1 parent 088de12 commit b426146

File tree

1 file changed

+200
-9
lines changed

1 file changed

+200
-9
lines changed

drivers/phy/cadence/phy-cadence-torrent.c

Lines changed: 200 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
26842702
static 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

27312801
static 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);
29843055
clk_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 */
30383204
static 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

41874355
static 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

42154385
static 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

42904465
static 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

43574537
static 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

44244609
static const struct cdns_torrent_data cdns_map_torrent = {
@@ -4452,6 +4637,7 @@ static const struct cdns_torrent_data cdns_map_torrent = {
44524637

44534638
static 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

44574643
static 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

45244715
static const struct cdns_torrent_data ti_j721e_map_torrent = {

0 commit comments

Comments
 (0)