Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

phy: cadence: Sierra: Add PCIe + QSGMII PHY multilink configuration

Add register sequences for PCIe + QSGMII PHY multilink configuration.
PHY configuration for multi-link operation is done in two steps.
e.g. Consider a case for a 4 lane PHY with PCIe using 2 lanes and QSGMII
other 2 lanes. Sierra PHY has 2 PLLs, viz. PLLLC and PLLLC1. So in this
case, PLLLC is used for PCIe and PLLLC1 is used for QSGMII.

PHY is configured in two steps as described below.

[1] For first step, the register values are selected as
[TYPE_PCIE][TYPE_QSGMII][ssc].
This will configure PHY registers associated for PCIe involving PLLLC
registers and registers for first 2 lanes of PHY.
[2] In second step, the register values are selected as
[TYPE_QSGMII][TYPE_PCIE][ssc].
This will configure PHY registers associated for QSGMII involving
PLLLC1 registers and registers for other 2 lanes of PHY.

This completes the PHY configuration for multilink operation.

Signed-off-by: Swapnil Jakhade <sjakhade@cadence.com>
Reviewed-by: Aswath Govindraju <a-govindraju@ti.com>
Link: https://lore.kernel.org/r/20211223060137.9252-14-sjakhade@cadence.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by

Swapnil Jakhade and committed by
Vinod Koul
8a1b82d7 6b81f05a

+376 -1
+376 -1
drivers/phy/cadence/phy-cadence-sierra.c
··· 45 45 #define SIERRA_CMN_REFRCV_PREG 0x98 46 46 #define SIERRA_CMN_REFRCV1_PREG 0xB8 47 47 #define SIERRA_CMN_PLLLC1_GEN_PREG 0xC2 48 + #define SIERRA_CMN_PLLLC1_LF_COEFF_MODE0_PREG 0xCA 49 + #define SIERRA_CMN_PLLLC1_BWCAL_MODE0_PREG 0xD0 50 + #define SIERRA_CMN_PLLLC1_SS_TIME_STEPSIZE_MODE_PREG 0xE2 48 51 49 52 #define SIERRA_LANE_CDB_OFFSET(ln, block_offset, reg_offset) \ 50 53 ((0x4000 << (block_offset)) + \ ··· 62 59 #define SIERRA_PSM_A0IN_TMR_PREG 0x009 63 60 #define SIERRA_PSM_A3IN_TMR_PREG 0x00C 64 61 #define SIERRA_PSM_DIAG_PREG 0x015 62 + #define SIERRA_PSC_LN_A3_PREG 0x023 63 + #define SIERRA_PSC_LN_A4_PREG 0x024 64 + #define SIERRA_PSC_LN_IDLE_PREG 0x026 65 65 #define SIERRA_PSC_TX_A0_PREG 0x028 66 66 #define SIERRA_PSC_TX_A1_PREG 0x029 67 67 #define SIERRA_PSC_TX_A2_PREG 0x02A ··· 74 68 #define SIERRA_PSC_RX_A2_PREG 0x032 75 69 #define SIERRA_PSC_RX_A3_PREG 0x033 76 70 #define SIERRA_PLLCTRL_SUBRATE_PREG 0x03A 71 + #define SIERRA_PLLCTRL_GEN_A_PREG 0x03B 77 72 #define SIERRA_PLLCTRL_GEN_D_PREG 0x03E 78 73 #define SIERRA_PLLCTRL_CPGAIN_MODE_PREG 0x03F 79 74 #define SIERRA_PLLCTRL_STATUS_PREG 0x044 ··· 157 150 #define SIERRA_CPICAL_TMRVAL_MODE0_PREG 0x171 158 151 #define SIERRA_CPICAL_PICNT_MODE1_PREG 0x174 159 152 #define SIERRA_CPI_OUTBUF_RATESEL_PREG 0x17C 153 + #define SIERRA_CPI_RESBIAS_BIN_PREG 0x17E 160 154 #define SIERRA_CPI_TRIM_PREG 0x17F 161 155 #define SIERRA_CPICAL_RES_STARTCODE_MODE23_PREG 0x183 162 156 #define SIERRA_EPI_CTRL_PREG 0x187 ··· 280 272 enum cdns_sierra_phy_type { 281 273 TYPE_NONE, 282 274 TYPE_PCIE, 283 - TYPE_USB 275 + TYPE_USB, 276 + TYPE_QSGMII 284 277 }; 285 278 286 279 enum cdns_sierra_ssc_mode { ··· 816 807 case PHY_TYPE_USB3: 817 808 inst->phy_type = TYPE_USB; 818 809 break; 810 + case PHY_TYPE_QSGMII: 811 + inst->phy_type = TYPE_QSGMII; 812 + break; 819 813 default: 820 814 return -EINVAL; 821 815 } ··· 1211 1199 regmap_write(regmap, reg_pairs[j].off, reg_pairs[j].val); 1212 1200 } 1213 1201 } 1202 + 1203 + if (phy_t1 == TYPE_QSGMII) 1204 + reset_control_deassert(sp->phys[node].lnk_rst); 1214 1205 } 1215 1206 1216 1207 /* Take the PHY out of reset */ ··· 1391 1376 return 0; 1392 1377 } 1393 1378 1379 + /* QSGMII PHY PMA lane configuration */ 1380 + static struct cdns_reg_pairs qsgmii_phy_pma_ln_regs[] = { 1381 + {0x9010, SIERRA_PHY_PMA_XCVR_CTRL} 1382 + }; 1383 + 1384 + static struct cdns_sierra_vals qsgmii_phy_pma_ln_vals = { 1385 + .reg_pairs = qsgmii_phy_pma_ln_regs, 1386 + .num_regs = ARRAY_SIZE(qsgmii_phy_pma_ln_regs), 1387 + }; 1388 + 1389 + /* QSGMII refclk 100MHz, 20b, opt1, No BW cal, no ssc, PLL LC1 */ 1390 + static const struct cdns_reg_pairs qsgmii_100_no_ssc_plllc1_cmn_regs[] = { 1391 + {0x2085, SIERRA_CMN_PLLLC1_LF_COEFF_MODE0_PREG}, 1392 + {0x0000, SIERRA_CMN_PLLLC1_BWCAL_MODE0_PREG}, 1393 + {0x0000, SIERRA_CMN_PLLLC1_SS_TIME_STEPSIZE_MODE_PREG} 1394 + }; 1395 + 1396 + static const struct cdns_reg_pairs qsgmii_100_no_ssc_plllc1_ln_regs[] = { 1397 + {0xFC08, SIERRA_DET_STANDEC_A_PREG}, 1398 + {0x0252, SIERRA_DET_STANDEC_E_PREG}, 1399 + {0x0004, SIERRA_PSC_LN_IDLE_PREG}, 1400 + {0x0FFE, SIERRA_PSC_RX_A0_PREG}, 1401 + {0x0011, SIERRA_PLLCTRL_SUBRATE_PREG}, 1402 + {0x0001, SIERRA_PLLCTRL_GEN_A_PREG}, 1403 + {0x5233, SIERRA_PLLCTRL_CPGAIN_MODE_PREG}, 1404 + {0x0000, SIERRA_DRVCTRL_ATTEN_PREG}, 1405 + {0x0089, SIERRA_RX_CREQ_FLTR_A_MODE0_PREG}, 1406 + {0x3C3C, SIERRA_CREQ_CCLKDET_MODE01_PREG}, 1407 + {0x3222, SIERRA_CREQ_FSMCLK_SEL_PREG}, 1408 + {0x0000, SIERRA_CREQ_EQ_CTRL_PREG}, 1409 + {0x8422, SIERRA_CTLELUT_CTRL_PREG}, 1410 + {0x4111, SIERRA_DFE_ECMP_RATESEL_PREG}, 1411 + {0x4111, SIERRA_DFE_SMP_RATESEL_PREG}, 1412 + {0x0002, SIERRA_DEQ_PHALIGN_CTRL}, 1413 + {0x9595, SIERRA_DEQ_VGATUNE_CTRL_PREG}, 1414 + {0x0186, SIERRA_DEQ_GLUT0}, 1415 + {0x0186, SIERRA_DEQ_GLUT1}, 1416 + {0x0186, SIERRA_DEQ_GLUT2}, 1417 + {0x0186, SIERRA_DEQ_GLUT3}, 1418 + {0x0186, SIERRA_DEQ_GLUT4}, 1419 + {0x0861, SIERRA_DEQ_ALUT0}, 1420 + {0x07E0, SIERRA_DEQ_ALUT1}, 1421 + {0x079E, SIERRA_DEQ_ALUT2}, 1422 + {0x071D, SIERRA_DEQ_ALUT3}, 1423 + {0x03F5, SIERRA_DEQ_DFETAP_CTRL_PREG}, 1424 + {0x0C01, SIERRA_DEQ_TAU_CTRL1_FAST_MAINT_PREG}, 1425 + {0x3C40, SIERRA_DEQ_TAU_CTRL1_SLOW_MAINT_PREG}, 1426 + {0x1C04, SIERRA_DEQ_TAU_CTRL2_PREG}, 1427 + {0x0033, SIERRA_DEQ_PICTRL_PREG}, 1428 + {0x0660, SIERRA_CPICAL_TMRVAL_MODE0_PREG}, 1429 + {0x00D5, SIERRA_CPI_OUTBUF_RATESEL_PREG}, 1430 + {0x0B6D, SIERRA_CPI_RESBIAS_BIN_PREG}, 1431 + {0x0102, SIERRA_RXBUFFER_CTLECTRL_PREG}, 1432 + {0x0002, SIERRA_RXBUFFER_RCDFECTRL_PREG} 1433 + }; 1434 + 1435 + static struct cdns_sierra_vals qsgmii_100_no_ssc_plllc1_cmn_vals = { 1436 + .reg_pairs = qsgmii_100_no_ssc_plllc1_cmn_regs, 1437 + .num_regs = ARRAY_SIZE(qsgmii_100_no_ssc_plllc1_cmn_regs), 1438 + }; 1439 + 1440 + static struct cdns_sierra_vals qsgmii_100_no_ssc_plllc1_ln_vals = { 1441 + .reg_pairs = qsgmii_100_no_ssc_plllc1_ln_regs, 1442 + .num_regs = ARRAY_SIZE(qsgmii_100_no_ssc_plllc1_ln_regs), 1443 + }; 1444 + 1394 1445 /* PCIE PHY PCS common configuration */ 1395 1446 static struct cdns_reg_pairs pcie_phy_pcs_cmn_regs[] = { 1396 1447 {0x0430, SIERRA_PHY_PIPE_CMN_CTRL1} ··· 1465 1384 static struct cdns_sierra_vals pcie_phy_pcs_cmn_vals = { 1466 1385 .reg_pairs = pcie_phy_pcs_cmn_regs, 1467 1386 .num_regs = ARRAY_SIZE(pcie_phy_pcs_cmn_regs), 1387 + }; 1388 + 1389 + /* refclk100MHz_32b_PCIe_cmn_pll_no_ssc, pcie_links_using_plllc, pipe_bw_3 */ 1390 + static const struct cdns_reg_pairs pcie_100_no_ssc_plllc_cmn_regs[] = { 1391 + {0x2105, SIERRA_CMN_PLLLC_LF_COEFF_MODE1_PREG}, 1392 + {0x2105, SIERRA_CMN_PLLLC_LF_COEFF_MODE0_PREG}, 1393 + {0x8A06, SIERRA_CMN_PLLLC_BWCAL_MODE1_PREG}, 1394 + {0x8A06, SIERRA_CMN_PLLLC_BWCAL_MODE0_PREG} 1395 + }; 1396 + 1397 + /* 1398 + * refclk100MHz_32b_PCIe_ln_no_ssc, multilink, using_plllc, 1399 + * cmn_pllcy_anaclk0_1Ghz, xcvr_pllclk_fullrt_500mhz 1400 + */ 1401 + static const struct cdns_reg_pairs ml_pcie_100_no_ssc_ln_regs[] = { 1402 + {0xFC08, SIERRA_DET_STANDEC_A_PREG}, 1403 + {0x001D, SIERRA_PSM_A3IN_TMR_PREG}, 1404 + {0x0004, SIERRA_PSC_LN_A3_PREG}, 1405 + {0x0004, SIERRA_PSC_LN_A4_PREG}, 1406 + {0x0004, SIERRA_PSC_LN_IDLE_PREG}, 1407 + {0x1555, SIERRA_DFE_BIASTRIM_PREG}, 1408 + {0x9703, SIERRA_DRVCTRL_BOOST_PREG}, 1409 + {0x8055, SIERRA_RX_CREQ_FLTR_A_MODE3_PREG}, 1410 + {0x80BB, SIERRA_RX_CREQ_FLTR_A_MODE2_PREG}, 1411 + {0x8351, SIERRA_RX_CREQ_FLTR_A_MODE1_PREG}, 1412 + {0x8349, SIERRA_RX_CREQ_FLTR_A_MODE0_PREG}, 1413 + {0x0002, SIERRA_CREQ_DCBIASATTEN_OVR_PREG}, 1414 + {0x9800, SIERRA_RX_CTLE_CAL_PREG}, 1415 + {0x5624, SIERRA_DEQ_CONCUR_CTRL2_PREG}, 1416 + {0x000F, SIERRA_DEQ_EPIPWR_CTRL2_PREG}, 1417 + {0x00FF, SIERRA_DEQ_FAST_MAINT_CYCLES_PREG}, 1418 + {0x4C4C, SIERRA_DEQ_ERRCMP_CTRL_PREG}, 1419 + {0x02FA, SIERRA_DEQ_OFFSET_CTRL_PREG}, 1420 + {0x02FA, SIERRA_DEQ_GAIN_CTRL_PREG}, 1421 + {0x0041, SIERRA_DEQ_GLUT0}, 1422 + {0x0082, SIERRA_DEQ_GLUT1}, 1423 + {0x00C3, SIERRA_DEQ_GLUT2}, 1424 + {0x0145, SIERRA_DEQ_GLUT3}, 1425 + {0x0186, SIERRA_DEQ_GLUT4}, 1426 + {0x09E7, SIERRA_DEQ_ALUT0}, 1427 + {0x09A6, SIERRA_DEQ_ALUT1}, 1428 + {0x0965, SIERRA_DEQ_ALUT2}, 1429 + {0x08E3, SIERRA_DEQ_ALUT3}, 1430 + {0x00FA, SIERRA_DEQ_DFETAP0}, 1431 + {0x00FA, SIERRA_DEQ_DFETAP1}, 1432 + {0x00FA, SIERRA_DEQ_DFETAP2}, 1433 + {0x00FA, SIERRA_DEQ_DFETAP3}, 1434 + {0x00FA, SIERRA_DEQ_DFETAP4}, 1435 + {0x000F, SIERRA_DEQ_PRECUR_PREG}, 1436 + {0x0280, SIERRA_DEQ_POSTCUR_PREG}, 1437 + {0x8F00, SIERRA_DEQ_POSTCUR_DECR_PREG}, 1438 + {0x3C0F, SIERRA_DEQ_TAU_CTRL1_SLOW_MAINT_PREG}, 1439 + {0x1C0C, SIERRA_DEQ_TAU_CTRL2_PREG}, 1440 + {0x0100, SIERRA_DEQ_TAU_CTRL3_PREG}, 1441 + {0x5E82, SIERRA_DEQ_OPENEYE_CTRL_PREG}, 1442 + {0x002B, SIERRA_CPI_TRIM_PREG}, 1443 + {0x0003, SIERRA_EPI_CTRL_PREG}, 1444 + {0x803F, SIERRA_SDFILT_H2L_A_PREG}, 1445 + {0x0004, SIERRA_RXBUFFER_CTLECTRL_PREG}, 1446 + {0x2010, SIERRA_RXBUFFER_RCDFECTRL_PREG}, 1447 + {0x4432, SIERRA_RXBUFFER_DFECTRL_PREG} 1448 + }; 1449 + 1450 + static struct cdns_sierra_vals pcie_100_no_ssc_plllc_cmn_vals = { 1451 + .reg_pairs = pcie_100_no_ssc_plllc_cmn_regs, 1452 + .num_regs = ARRAY_SIZE(pcie_100_no_ssc_plllc_cmn_regs), 1453 + }; 1454 + 1455 + static struct cdns_sierra_vals ml_pcie_100_no_ssc_ln_vals = { 1456 + .reg_pairs = ml_pcie_100_no_ssc_ln_regs, 1457 + .num_regs = ARRAY_SIZE(ml_pcie_100_no_ssc_ln_regs), 1458 + }; 1459 + 1460 + /* refclk100MHz_32b_PCIe_cmn_pll_int_ssc, pcie_links_using_plllc, pipe_bw_3 */ 1461 + static const struct cdns_reg_pairs pcie_100_int_ssc_plllc_cmn_regs[] = { 1462 + {0x000E, SIERRA_CMN_PLLLC_MODE_PREG}, 1463 + {0x4006, SIERRA_CMN_PLLLC_LF_COEFF_MODE1_PREG}, 1464 + {0x4006, SIERRA_CMN_PLLLC_LF_COEFF_MODE0_PREG}, 1465 + {0x0000, SIERRA_CMN_PLLLC_BWCAL_MODE1_PREG}, 1466 + {0x0000, SIERRA_CMN_PLLLC_BWCAL_MODE0_PREG}, 1467 + {0x0581, SIERRA_CMN_PLLLC_DSMCORR_PREG}, 1468 + {0x7F80, SIERRA_CMN_PLLLC_SS_PREG}, 1469 + {0x0041, SIERRA_CMN_PLLLC_SS_AMP_STEP_SIZE_PREG}, 1470 + {0x0464, SIERRA_CMN_PLLLC_SSTWOPT_PREG}, 1471 + {0x0D0D, SIERRA_CMN_PLLLC_SS_TIME_STEPSIZE_MODE_PREG}, 1472 + {0x0060, SIERRA_CMN_PLLLC_LOCK_DELAY_CTRL_PREG} 1473 + }; 1474 + 1475 + /* 1476 + * refclk100MHz_32b_PCIe_ln_int_ssc, multilink, using_plllc, 1477 + * cmn_pllcy_anaclk0_1Ghz, xcvr_pllclk_fullrt_500mhz 1478 + */ 1479 + static const struct cdns_reg_pairs ml_pcie_100_int_ssc_ln_regs[] = { 1480 + {0xFC08, SIERRA_DET_STANDEC_A_PREG}, 1481 + {0x001D, SIERRA_PSM_A3IN_TMR_PREG}, 1482 + {0x0004, SIERRA_PSC_LN_A3_PREG}, 1483 + {0x0004, SIERRA_PSC_LN_A4_PREG}, 1484 + {0x0004, SIERRA_PSC_LN_IDLE_PREG}, 1485 + {0x1555, SIERRA_DFE_BIASTRIM_PREG}, 1486 + {0x9703, SIERRA_DRVCTRL_BOOST_PREG}, 1487 + {0x813E, SIERRA_CLKPATHCTRL_TMR_PREG}, 1488 + {0x8047, SIERRA_RX_CREQ_FLTR_A_MODE3_PREG}, 1489 + {0x808F, SIERRA_RX_CREQ_FLTR_A_MODE2_PREG}, 1490 + {0x808F, SIERRA_RX_CREQ_FLTR_A_MODE1_PREG}, 1491 + {0x808F, SIERRA_RX_CREQ_FLTR_A_MODE0_PREG}, 1492 + {0x0002, SIERRA_CREQ_DCBIASATTEN_OVR_PREG}, 1493 + {0x9800, SIERRA_RX_CTLE_CAL_PREG}, 1494 + {0x033C, SIERRA_RX_CTLE_MAINTENANCE_PREG}, 1495 + {0x44CC, SIERRA_CREQ_EQ_OPEN_EYE_THRESH_PREG}, 1496 + {0x5624, SIERRA_DEQ_CONCUR_CTRL2_PREG}, 1497 + {0x000F, SIERRA_DEQ_EPIPWR_CTRL2_PREG}, 1498 + {0x00FF, SIERRA_DEQ_FAST_MAINT_CYCLES_PREG}, 1499 + {0x4C4C, SIERRA_DEQ_ERRCMP_CTRL_PREG}, 1500 + {0x02FA, SIERRA_DEQ_OFFSET_CTRL_PREG}, 1501 + {0x02FA, SIERRA_DEQ_GAIN_CTRL_PREG}, 1502 + {0x0041, SIERRA_DEQ_GLUT0}, 1503 + {0x0082, SIERRA_DEQ_GLUT1}, 1504 + {0x00C3, SIERRA_DEQ_GLUT2}, 1505 + {0x0145, SIERRA_DEQ_GLUT3}, 1506 + {0x0186, SIERRA_DEQ_GLUT4}, 1507 + {0x09E7, SIERRA_DEQ_ALUT0}, 1508 + {0x09A6, SIERRA_DEQ_ALUT1}, 1509 + {0x0965, SIERRA_DEQ_ALUT2}, 1510 + {0x08E3, SIERRA_DEQ_ALUT3}, 1511 + {0x00FA, SIERRA_DEQ_DFETAP0}, 1512 + {0x00FA, SIERRA_DEQ_DFETAP1}, 1513 + {0x00FA, SIERRA_DEQ_DFETAP2}, 1514 + {0x00FA, SIERRA_DEQ_DFETAP3}, 1515 + {0x00FA, SIERRA_DEQ_DFETAP4}, 1516 + {0x000F, SIERRA_DEQ_PRECUR_PREG}, 1517 + {0x0280, SIERRA_DEQ_POSTCUR_PREG}, 1518 + {0x8F00, SIERRA_DEQ_POSTCUR_DECR_PREG}, 1519 + {0x3C0F, SIERRA_DEQ_TAU_CTRL1_SLOW_MAINT_PREG}, 1520 + {0x1C0C, SIERRA_DEQ_TAU_CTRL2_PREG}, 1521 + {0x0100, SIERRA_DEQ_TAU_CTRL3_PREG}, 1522 + {0x5E82, SIERRA_DEQ_OPENEYE_CTRL_PREG}, 1523 + {0x002B, SIERRA_CPI_TRIM_PREG}, 1524 + {0x0003, SIERRA_EPI_CTRL_PREG}, 1525 + {0x803F, SIERRA_SDFILT_H2L_A_PREG}, 1526 + {0x0004, SIERRA_RXBUFFER_CTLECTRL_PREG}, 1527 + {0x2010, SIERRA_RXBUFFER_RCDFECTRL_PREG}, 1528 + {0x4432, SIERRA_RXBUFFER_DFECTRL_PREG} 1529 + }; 1530 + 1531 + static struct cdns_sierra_vals pcie_100_int_ssc_plllc_cmn_vals = { 1532 + .reg_pairs = pcie_100_int_ssc_plllc_cmn_regs, 1533 + .num_regs = ARRAY_SIZE(pcie_100_int_ssc_plllc_cmn_regs), 1534 + }; 1535 + 1536 + static struct cdns_sierra_vals ml_pcie_100_int_ssc_ln_vals = { 1537 + .reg_pairs = ml_pcie_100_int_ssc_ln_regs, 1538 + .num_regs = ARRAY_SIZE(ml_pcie_100_int_ssc_ln_regs), 1539 + }; 1540 + 1541 + /* refclk100MHz_32b_PCIe_cmn_pll_ext_ssc, pcie_links_using_plllc, pipe_bw_3 */ 1542 + static const struct cdns_reg_pairs pcie_100_ext_ssc_plllc_cmn_regs[] = { 1543 + {0x2106, SIERRA_CMN_PLLLC_LF_COEFF_MODE1_PREG}, 1544 + {0x2106, SIERRA_CMN_PLLLC_LF_COEFF_MODE0_PREG}, 1545 + {0x8A06, SIERRA_CMN_PLLLC_BWCAL_MODE1_PREG}, 1546 + {0x8A06, SIERRA_CMN_PLLLC_BWCAL_MODE0_PREG}, 1547 + {0x1B1B, SIERRA_CMN_PLLLC_SS_TIME_STEPSIZE_MODE_PREG} 1548 + }; 1549 + 1550 + /* 1551 + * refclk100MHz_32b_PCIe_ln_ext_ssc, multilink, using_plllc, 1552 + * cmn_pllcy_anaclk0_1Ghz, xcvr_pllclk_fullrt_500mhz 1553 + */ 1554 + static const struct cdns_reg_pairs ml_pcie_100_ext_ssc_ln_regs[] = { 1555 + {0xFC08, SIERRA_DET_STANDEC_A_PREG}, 1556 + {0x001D, SIERRA_PSM_A3IN_TMR_PREG}, 1557 + {0x0004, SIERRA_PSC_LN_A3_PREG}, 1558 + {0x0004, SIERRA_PSC_LN_A4_PREG}, 1559 + {0x0004, SIERRA_PSC_LN_IDLE_PREG}, 1560 + {0x1555, SIERRA_DFE_BIASTRIM_PREG}, 1561 + {0x9703, SIERRA_DRVCTRL_BOOST_PREG}, 1562 + {0x813E, SIERRA_CLKPATHCTRL_TMR_PREG}, 1563 + {0x8047, SIERRA_RX_CREQ_FLTR_A_MODE3_PREG}, 1564 + {0x808F, SIERRA_RX_CREQ_FLTR_A_MODE2_PREG}, 1565 + {0x808F, SIERRA_RX_CREQ_FLTR_A_MODE1_PREG}, 1566 + {0x808F, SIERRA_RX_CREQ_FLTR_A_MODE0_PREG}, 1567 + {0x0002, SIERRA_CREQ_DCBIASATTEN_OVR_PREG}, 1568 + {0x9800, SIERRA_RX_CTLE_CAL_PREG}, 1569 + {0x033C, SIERRA_RX_CTLE_MAINTENANCE_PREG}, 1570 + {0x44CC, SIERRA_CREQ_EQ_OPEN_EYE_THRESH_PREG}, 1571 + {0x5624, SIERRA_DEQ_CONCUR_CTRL2_PREG}, 1572 + {0x000F, SIERRA_DEQ_EPIPWR_CTRL2_PREG}, 1573 + {0x00FF, SIERRA_DEQ_FAST_MAINT_CYCLES_PREG}, 1574 + {0x4C4C, SIERRA_DEQ_ERRCMP_CTRL_PREG}, 1575 + {0x02FA, SIERRA_DEQ_OFFSET_CTRL_PREG}, 1576 + {0x02FA, SIERRA_DEQ_GAIN_CTRL_PREG}, 1577 + {0x0041, SIERRA_DEQ_GLUT0}, 1578 + {0x0082, SIERRA_DEQ_GLUT1}, 1579 + {0x00C3, SIERRA_DEQ_GLUT2}, 1580 + {0x0145, SIERRA_DEQ_GLUT3}, 1581 + {0x0186, SIERRA_DEQ_GLUT4}, 1582 + {0x09E7, SIERRA_DEQ_ALUT0}, 1583 + {0x09A6, SIERRA_DEQ_ALUT1}, 1584 + {0x0965, SIERRA_DEQ_ALUT2}, 1585 + {0x08E3, SIERRA_DEQ_ALUT3}, 1586 + {0x00FA, SIERRA_DEQ_DFETAP0}, 1587 + {0x00FA, SIERRA_DEQ_DFETAP1}, 1588 + {0x00FA, SIERRA_DEQ_DFETAP2}, 1589 + {0x00FA, SIERRA_DEQ_DFETAP3}, 1590 + {0x00FA, SIERRA_DEQ_DFETAP4}, 1591 + {0x000F, SIERRA_DEQ_PRECUR_PREG}, 1592 + {0x0280, SIERRA_DEQ_POSTCUR_PREG}, 1593 + {0x8F00, SIERRA_DEQ_POSTCUR_DECR_PREG}, 1594 + {0x3C0F, SIERRA_DEQ_TAU_CTRL1_SLOW_MAINT_PREG}, 1595 + {0x1C0C, SIERRA_DEQ_TAU_CTRL2_PREG}, 1596 + {0x0100, SIERRA_DEQ_TAU_CTRL3_PREG}, 1597 + {0x5E82, SIERRA_DEQ_OPENEYE_CTRL_PREG}, 1598 + {0x002B, SIERRA_CPI_TRIM_PREG}, 1599 + {0x0003, SIERRA_EPI_CTRL_PREG}, 1600 + {0x803F, SIERRA_SDFILT_H2L_A_PREG}, 1601 + {0x0004, SIERRA_RXBUFFER_CTLECTRL_PREG}, 1602 + {0x2010, SIERRA_RXBUFFER_RCDFECTRL_PREG}, 1603 + {0x4432, SIERRA_RXBUFFER_DFECTRL_PREG} 1604 + }; 1605 + 1606 + static struct cdns_sierra_vals pcie_100_ext_ssc_plllc_cmn_vals = { 1607 + .reg_pairs = pcie_100_ext_ssc_plllc_cmn_regs, 1608 + .num_regs = ARRAY_SIZE(pcie_100_ext_ssc_plllc_cmn_regs), 1609 + }; 1610 + 1611 + static struct cdns_sierra_vals ml_pcie_100_ext_ssc_ln_vals = { 1612 + .reg_pairs = ml_pcie_100_ext_ssc_ln_regs, 1613 + .num_regs = ARRAY_SIZE(ml_pcie_100_ext_ssc_ln_regs), 1468 1614 }; 1469 1615 1470 1616 /* refclk100MHz_32b_PCIe_cmn_pll_no_ssc */ ··· 2031 1723 [EXTERNAL_SSC] = &pcie_phy_pcs_cmn_vals, 2032 1724 [INTERNAL_SSC] = &pcie_phy_pcs_cmn_vals, 2033 1725 }, 1726 + [TYPE_QSGMII] = { 1727 + [NO_SSC] = &pcie_phy_pcs_cmn_vals, 1728 + [EXTERNAL_SSC] = &pcie_phy_pcs_cmn_vals, 1729 + [INTERNAL_SSC] = &pcie_phy_pcs_cmn_vals, 1730 + }, 2034 1731 }, 2035 1732 }, 2036 1733 .pma_cmn_vals = { ··· 2045 1732 [EXTERNAL_SSC] = &pcie_100_ext_ssc_cmn_vals, 2046 1733 [INTERNAL_SSC] = &pcie_100_int_ssc_cmn_vals, 2047 1734 }, 1735 + [TYPE_QSGMII] = { 1736 + [NO_SSC] = &pcie_100_no_ssc_plllc_cmn_vals, 1737 + [EXTERNAL_SSC] = &pcie_100_ext_ssc_plllc_cmn_vals, 1738 + [INTERNAL_SSC] = &pcie_100_int_ssc_plllc_cmn_vals, 1739 + }, 2048 1740 }, 2049 1741 [TYPE_USB] = { 2050 1742 [TYPE_NONE] = { 2051 1743 [EXTERNAL_SSC] = &usb_100_ext_ssc_cmn_vals, 1744 + }, 1745 + }, 1746 + [TYPE_QSGMII] = { 1747 + [TYPE_PCIE] = { 1748 + [NO_SSC] = &qsgmii_100_no_ssc_plllc1_cmn_vals, 1749 + [EXTERNAL_SSC] = &qsgmii_100_no_ssc_plllc1_cmn_vals, 1750 + [INTERNAL_SSC] = &qsgmii_100_no_ssc_plllc1_cmn_vals, 2052 1751 }, 2053 1752 }, 2054 1753 }, ··· 2071 1746 [EXTERNAL_SSC] = &pcie_100_ext_ssc_ln_vals, 2072 1747 [INTERNAL_SSC] = &pcie_100_int_ssc_ln_vals, 2073 1748 }, 1749 + [TYPE_QSGMII] = { 1750 + [NO_SSC] = &ml_pcie_100_no_ssc_ln_vals, 1751 + [EXTERNAL_SSC] = &ml_pcie_100_ext_ssc_ln_vals, 1752 + [INTERNAL_SSC] = &ml_pcie_100_int_ssc_ln_vals, 1753 + }, 2074 1754 }, 2075 1755 [TYPE_USB] = { 2076 1756 [TYPE_NONE] = { 2077 1757 [EXTERNAL_SSC] = &usb_100_ext_ssc_ln_vals, 1758 + }, 1759 + }, 1760 + [TYPE_QSGMII] = { 1761 + [TYPE_PCIE] = { 1762 + [NO_SSC] = &qsgmii_100_no_ssc_plllc1_ln_vals, 1763 + [EXTERNAL_SSC] = &qsgmii_100_no_ssc_plllc1_ln_vals, 1764 + [INTERNAL_SSC] = &qsgmii_100_no_ssc_plllc1_ln_vals, 2078 1765 }, 2079 1766 }, 2080 1767 }, ··· 2103 1766 [EXTERNAL_SSC] = &pcie_phy_pcs_cmn_vals, 2104 1767 [INTERNAL_SSC] = &pcie_phy_pcs_cmn_vals, 2105 1768 }, 1769 + [TYPE_QSGMII] = { 1770 + [NO_SSC] = &pcie_phy_pcs_cmn_vals, 1771 + [EXTERNAL_SSC] = &pcie_phy_pcs_cmn_vals, 1772 + [INTERNAL_SSC] = &pcie_phy_pcs_cmn_vals, 1773 + }, 1774 + }, 1775 + }, 1776 + .phy_pma_ln_vals = { 1777 + [TYPE_QSGMII] = { 1778 + [TYPE_PCIE] = { 1779 + [NO_SSC] = &qsgmii_phy_pma_ln_vals, 1780 + [EXTERNAL_SSC] = &qsgmii_phy_pma_ln_vals, 1781 + [INTERNAL_SSC] = &qsgmii_phy_pma_ln_vals, 1782 + }, 2106 1783 }, 2107 1784 }, 2108 1785 .pma_cmn_vals = { ··· 2126 1775 [EXTERNAL_SSC] = &pcie_100_ext_ssc_cmn_vals, 2127 1776 [INTERNAL_SSC] = &pcie_100_int_ssc_cmn_vals, 2128 1777 }, 1778 + [TYPE_QSGMII] = { 1779 + [NO_SSC] = &pcie_100_no_ssc_plllc_cmn_vals, 1780 + [EXTERNAL_SSC] = &pcie_100_ext_ssc_plllc_cmn_vals, 1781 + [INTERNAL_SSC] = &pcie_100_int_ssc_plllc_cmn_vals, 1782 + }, 2129 1783 }, 2130 1784 [TYPE_USB] = { 2131 1785 [TYPE_NONE] = { 2132 1786 [EXTERNAL_SSC] = &usb_100_ext_ssc_cmn_vals, 1787 + }, 1788 + }, 1789 + [TYPE_QSGMII] = { 1790 + [TYPE_PCIE] = { 1791 + [NO_SSC] = &qsgmii_100_no_ssc_plllc1_cmn_vals, 1792 + [EXTERNAL_SSC] = &qsgmii_100_no_ssc_plllc1_cmn_vals, 1793 + [INTERNAL_SSC] = &qsgmii_100_no_ssc_plllc1_cmn_vals, 2133 1794 }, 2134 1795 }, 2135 1796 }, ··· 2152 1789 [EXTERNAL_SSC] = &pcie_100_ext_ssc_ln_vals, 2153 1790 [INTERNAL_SSC] = &pcie_100_int_ssc_ln_vals, 2154 1791 }, 1792 + [TYPE_QSGMII] = { 1793 + [NO_SSC] = &ml_pcie_100_no_ssc_ln_vals, 1794 + [EXTERNAL_SSC] = &ml_pcie_100_ext_ssc_ln_vals, 1795 + [INTERNAL_SSC] = &ml_pcie_100_int_ssc_ln_vals, 1796 + }, 2155 1797 }, 2156 1798 [TYPE_USB] = { 2157 1799 [TYPE_NONE] = { 2158 1800 [EXTERNAL_SSC] = &usb_100_ext_ssc_ln_vals, 1801 + }, 1802 + }, 1803 + [TYPE_QSGMII] = { 1804 + [TYPE_PCIE] = { 1805 + [NO_SSC] = &qsgmii_100_no_ssc_plllc1_ln_vals, 1806 + [EXTERNAL_SSC] = &qsgmii_100_no_ssc_plllc1_ln_vals, 1807 + [INTERNAL_SSC] = &qsgmii_100_no_ssc_plllc1_ln_vals, 2159 1808 }, 2160 1809 }, 2161 1810 },