34
34
#include "phy-qcom-qmp-pcs-pcie-v5_20.h"
35
35
#include "phy-qcom-qmp-pcs-pcie-v6.h"
36
36
#include "phy-qcom-qmp-pcs-pcie-v6_20.h"
37
+ #include "phy-qcom-qmp-pcs-pcie-v6_30.h"
38
+ #include "phy-qcom-qmp-pcs-v6_30.h"
37
39
#include "phy-qcom-qmp-pcie-qhp.h"
38
40
39
41
#define PHY_INIT_COMPLETE_TIMEOUT 10000
@@ -1344,6 +1346,154 @@ static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x2_pcie_pcs_misc_tbl[] = {
1344
1346
QMP_PHY_INIT_CFG (QPHY_PCIE_V6_20_PCS_G4_FOM_EQ_CONFIG5 , 0x8a ),
1345
1347
};
1346
1348
1349
+ static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_serdes_tbl [] = {
1350
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_STEP_SIZE1_MODE1 , 0x26 ),
1351
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_STEP_SIZE2_MODE1 , 0x03 ),
1352
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CP_CTRL_MODE1 , 0x06 ),
1353
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_RCTRL_MODE1 , 0x16 ),
1354
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_CCTRL_MODE1 , 0x36 ),
1355
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CORECLK_DIV_MODE1 , 0x08 ),
1356
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP1_MODE1 , 0x04 ),
1357
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP2_MODE1 , 0x0d ),
1358
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DEC_START_MODE1 , 0x68 ),
1359
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START1_MODE1 , 0xab ),
1360
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START2_MODE1 , 0xaa ),
1361
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START3_MODE1 , 0x02 ),
1362
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_HSCLK_SEL_1 , 0x12 ),
1363
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_STEP_SIZE1_MODE0 , 0xf8 ),
1364
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_STEP_SIZE2_MODE0 , 0x01 ),
1365
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CP_CTRL_MODE0 , 0x06 ),
1366
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_RCTRL_MODE0 , 0x16 ),
1367
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_CCTRL_MODE0 , 0x36 ),
1368
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_CORE_CLK_DIV_MODE0 , 0x0a ),
1369
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP1_MODE0 , 0x04 ),
1370
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP2_MODE0 , 0x0d ),
1371
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DEC_START_MODE0 , 0x41 ),
1372
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START1_MODE0 , 0xab ),
1373
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START2_MODE0 , 0xaa ),
1374
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_DIV_FRAC_START3_MODE0 , 0x01 ),
1375
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_HSCLK_HS_SWITCH_SEL_1 , 0x00 ),
1376
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_BG_TIMER , 0x0a ),
1377
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_EN_CENTER , 0x01 ),
1378
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_PER1 , 0x62 ),
1379
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SSC_PER2 , 0x02 ),
1380
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_POST_DIV_MUX , 0x40 ),
1381
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_BIAS_EN_CLK_BUFLR_EN , 0x1c ),
1382
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CLK_ENABLE1 , 0x90 ),
1383
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SYS_CLK_CTRL , 0x82 ),
1384
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_IVCO , 0x0f ),
1385
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_SYSCLK_EN_SEL , 0x08 ),
1386
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP_EN , 0x46 ),
1387
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_LOCK_CMP_CFG , 0x04 ),
1388
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_VCO_TUNE_MAP , 0x14 ),
1389
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CLK_SELECT , 0x34 ),
1390
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CORE_CLK_EN , 0x20 ),
1391
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CMN_CONFIG_1 , 0x06 ),
1392
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CMN_MISC_1 , 0x88 ),
1393
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_CMN_MODE , 0x14 ),
1394
+ QMP_PHY_INIT_CFG (QSERDES_V6_COM_PLL_VCO_DC_LEVEL_CTRL , 0x0f ),
1395
+ };
1396
+
1397
+ static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_ln_shrd_tbl [] = {
1398
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RXCLK_DIV2_CTRL , 0x01 ),
1399
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_SUMMER_CAL_SPD_MODE , 0x5b ),
1400
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_DFE_DAC_ENABLE1 , 0x88 ),
1401
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_TX_ADAPT_POST_THRESH1 , 0x02 ),
1402
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_TX_ADAPT_POST_THRESH2 , 0x0d ),
1403
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B0 , 0x12 ),
1404
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B1 , 0x12 ),
1405
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B2 , 0xdb ),
1406
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B3 , 0x9a ),
1407
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B4 , 0x38 ),
1408
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B5 , 0xb6 ),
1409
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B6 , 0x64 ),
1410
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH1_RATE210 , 0x1f ),
1411
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH1_RATE3 , 0x1f ),
1412
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH2_RATE210 , 0x1f ),
1413
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH2_RATE3 , 0x1f ),
1414
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH3_RATE210 , 0x1f ),
1415
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH3_RATE3 , 0x1f ),
1416
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH4_RATE3 , 0x1f ),
1417
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH5_RATE3 , 0x1f ),
1418
+ QMP_PHY_INIT_CFG (QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH6_RATE3 , 0x1f ),
1419
+ };
1420
+
1421
+ static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_txz_tbl [] = {
1422
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_TX_RES_CODE_LANE_OFFSET_TX , 0x1a ),
1423
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_TX_RES_CODE_LANE_OFFSET_RX , 0x05 ),
1424
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_TX_LANE_MODE_1 , 0x01 ),
1425
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_TX_LANE_MODE_2 , 0x10 ),
1426
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_TX_LANE_MODE_3 , 0x51 ),
1427
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_TX_TRAN_DRVR_EMP_EN , 0x34 ),
1428
+ };
1429
+
1430
+ static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_rxz_tbl [] = {
1431
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_UCDR_FO_GAIN_RATE_2 , 0x0c ),
1432
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_UCDR_SO_GAIN_RATE_2 , 0x04 ),
1433
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_UCDR_FO_GAIN_RATE_3 , 0x0a ),
1434
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_UCDR_PI_CONTROLS , 0x16 ),
1435
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_UCDR_SO_ACC_DEFAULT_VAL_RATE3 , 0x00 ),
1436
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_IVCM_CAL_CTRL2 , 0x80 ),
1437
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_IVCM_POSTCAL_OFFSET , 0x00 ),
1438
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_BKUP_CTRL1 , 0x15 ),
1439
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_DFE_3 , 0x45 ),
1440
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_VGA_CAL_MAN_VAL , 0x0c ),
1441
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_VGA_CAL_CNTRL1 , 0x00 ),
1442
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_GM_CAL , 0x0d ),
1443
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_EQU_ADAPTOR_CNTRL4 , 0x0b ),
1444
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_SIGDET_ENABLES , 0x1c ),
1445
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_PHPRE_CTRL , 0x20 ),
1446
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_DFE_CTLE_POST_CAL_OFFSET , 0x38 ),
1447
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_Q_PI_INTRINSIC_BIAS_RATE32 , 0x39 ),
1448
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE2_B0 , 0xd4 ),
1449
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE2_B1 , 0x23 ),
1450
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE2_B2 , 0x58 ),
1451
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE2_B3 , 0x9a ),
1452
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE2_B4 , 0x38 ),
1453
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE2_B5 , 0xb6 ),
1454
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE2_B6 , 0xee ),
1455
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE3_B0 , 0x1c ),
1456
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE3_B1 , 0xe4 ),
1457
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE3_B2 , 0x60 ),
1458
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE3_B3 , 0xdf ),
1459
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE3_B4 , 0x69 ),
1460
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE3_B5 , 0x76 ),
1461
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_MODE_RATE3_B6 , 0xff ),
1462
+ QMP_PHY_INIT_CFG (QSERDES_V6_20_RX_TX_ADPT_CTRL , 0x10 ),
1463
+ };
1464
+
1465
+ static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_rx_tbl [] = {
1466
+ QMP_PHY_INIT_CFG_LANE (QSERDES_V6_20_RX_DFE_CTLE_POST_CAL_OFFSET , 0x3a , BIT (0 )),
1467
+ };
1468
+
1469
+ static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_pcs_tbl [] = {
1470
+ QMP_PHY_INIT_CFG (QPHY_V6_30_PCS_LOCK_DETECT_CONFIG2 , 0x00 ),
1471
+ QMP_PHY_INIT_CFG (QPHY_V6_30_PCS_G3S2_PRE_GAIN , 0x2e ),
1472
+ QMP_PHY_INIT_CFG (QPHY_V6_30_PCS_RX_SIGDET_LVL , 0x99 ),
1473
+ QMP_PHY_INIT_CFG (QPHY_V6_30_PCS_ALIGN_DETECT_CONFIG7 , 0x00 ),
1474
+ QMP_PHY_INIT_CFG (QPHY_V6_30_PCS_EQ_CONFIG4 , 0x00 ),
1475
+ QMP_PHY_INIT_CFG (QPHY_V6_30_PCS_EQ_CONFIG5 , 0x22 ),
1476
+ QMP_PHY_INIT_CFG (QPHY_V6_30_PCS_TX_RX_CONFIG , 0x04 ),
1477
+ QMP_PHY_INIT_CFG (QPHY_V6_30_PCS_TX_RX_CONFIG2 , 0x02 ),
1478
+ };
1479
+
1480
+ static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_pcs_misc_tbl [] = {
1481
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_ENDPOINT_REFCLK_DRIVE , 0xc1 ),
1482
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_OSC_DTCT_ACTIONS , 0x00 ),
1483
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_EQ_CONFIG1 , 0x16 ),
1484
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_G4_EQ_CONFIG5 , 0x02 ),
1485
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_G4_PRE_GAIN , 0x2e ),
1486
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_RX_MARGINING_CONFIG1 , 0x03 ),
1487
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_RX_MARGINING_CONFIG3 , 0x28 ),
1488
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_RX_MARGINING_CONFIG5 , 0x18 ),
1489
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_G3_FOM_EQ_CONFIG5 , 0x7a ),
1490
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_G4_FOM_EQ_CONFIG5 , 0x8a ),
1491
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_G3_RXEQEVAL_TIME , 0x27 ),
1492
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_G4_RXEQEVAL_TIME , 0x27 ),
1493
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_TX_RX_CONFIG , 0xc0 ),
1494
+ QMP_PHY_INIT_CFG (QPHY_PCIE_V6_30_PCS_POWER_STATE_CONFIG2 , 0x1d ),
1495
+ };
1496
+
1347
1497
static const struct qmp_phy_init_tbl sm8250_qmp_pcie_serdes_tbl [] = {
1348
1498
QMP_PHY_INIT_CFG (QSERDES_V4_COM_SYSCLK_EN_SEL , 0x08 ),
1349
1499
QMP_PHY_INIT_CFG (QSERDES_V4_COM_CLK_SELECT , 0x34 ),
@@ -2582,6 +2732,8 @@ struct qmp_pcie_offsets {
2582
2732
u16 rx ;
2583
2733
u16 tx2 ;
2584
2734
u16 rx2 ;
2735
+ u16 txz ;
2736
+ u16 rxz ;
2585
2737
u16 ln_shrd ;
2586
2738
};
2587
2739
@@ -2592,6 +2744,10 @@ struct qmp_phy_cfg_tbls {
2592
2744
int tx_num ;
2593
2745
const struct qmp_phy_init_tbl * rx ;
2594
2746
int rx_num ;
2747
+ const struct qmp_phy_init_tbl * txz ;
2748
+ int txz_num ;
2749
+ const struct qmp_phy_init_tbl * rxz ;
2750
+ int rxz_num ;
2595
2751
const struct qmp_phy_init_tbl * pcs ;
2596
2752
int pcs_num ;
2597
2753
const struct qmp_phy_init_tbl * pcs_misc ;
@@ -2659,6 +2815,8 @@ struct qmp_pcie {
2659
2815
void __iomem * rx ;
2660
2816
void __iomem * tx2 ;
2661
2817
void __iomem * rx2 ;
2818
+ void __iomem * txz ;
2819
+ void __iomem * rxz ;
2662
2820
void __iomem * ln_shrd ;
2663
2821
2664
2822
void __iomem * port_b ;
@@ -2826,6 +2984,17 @@ static const struct qmp_pcie_offsets qmp_pcie_offsets_v6_20 = {
2826
2984
.ln_shrd = 0x0e00 ,
2827
2985
};
2828
2986
2987
+ static const struct qmp_pcie_offsets qmp_pcie_offsets_v6_30 = {
2988
+ .serdes = 0x8800 ,
2989
+ .pcs = 0x9000 ,
2990
+ .pcs_misc = 0x9800 ,
2991
+ .tx = 0x0000 ,
2992
+ .rx = 0x0200 ,
2993
+ .txz = 0xe000 ,
2994
+ .rxz = 0xe200 ,
2995
+ .ln_shrd = 0x8000 ,
2996
+ };
2997
+
2829
2998
static const struct qmp_phy_cfg ipq8074_pciephy_cfg = {
2830
2999
.lanes = 1 ,
2831
3000
@@ -3704,6 +3873,38 @@ static const struct qmp_phy_cfg x1e80100_qmp_gen4x4_pciephy_cfg = {
3704
3873
.has_nocsr_reset = true,
3705
3874
};
3706
3875
3876
+ static const struct qmp_phy_cfg x1e80100_qmp_gen4x8_pciephy_cfg = {
3877
+ .lanes = 8 ,
3878
+
3879
+ .offsets = & qmp_pcie_offsets_v6_30 ,
3880
+ .tbls = {
3881
+ .serdes = x1e80100_qmp_gen4x8_pcie_serdes_tbl ,
3882
+ .serdes_num = ARRAY_SIZE (x1e80100_qmp_gen4x8_pcie_serdes_tbl ),
3883
+ .rx = x1e80100_qmp_gen4x8_pcie_rx_tbl ,
3884
+ .rx_num = ARRAY_SIZE (x1e80100_qmp_gen4x8_pcie_rx_tbl ),
3885
+ .txz = x1e80100_qmp_gen4x8_pcie_txz_tbl ,
3886
+ .txz_num = ARRAY_SIZE (x1e80100_qmp_gen4x8_pcie_txz_tbl ),
3887
+ .rxz = x1e80100_qmp_gen4x8_pcie_rxz_tbl ,
3888
+ .rxz_num = ARRAY_SIZE (x1e80100_qmp_gen4x8_pcie_rxz_tbl ),
3889
+ .pcs = x1e80100_qmp_gen4x8_pcie_pcs_tbl ,
3890
+ .pcs_num = ARRAY_SIZE (x1e80100_qmp_gen4x8_pcie_pcs_tbl ),
3891
+ .pcs_misc = x1e80100_qmp_gen4x8_pcie_pcs_misc_tbl ,
3892
+ .pcs_misc_num = ARRAY_SIZE (x1e80100_qmp_gen4x8_pcie_pcs_misc_tbl ),
3893
+ .ln_shrd = x1e80100_qmp_gen4x8_pcie_ln_shrd_tbl ,
3894
+ .ln_shrd_num = ARRAY_SIZE (x1e80100_qmp_gen4x8_pcie_ln_shrd_tbl ),
3895
+ },
3896
+
3897
+ .reset_list = sdm845_pciephy_reset_l ,
3898
+ .num_resets = ARRAY_SIZE (sdm845_pciephy_reset_l ),
3899
+ .vreg_list = sm8550_qmp_phy_vreg_l ,
3900
+ .num_vregs = ARRAY_SIZE (sm8550_qmp_phy_vreg_l ),
3901
+ .regs = pciephy_v6_regs_layout ,
3902
+
3903
+ .pwrdn_ctrl = SW_PWRDN | REFCLK_DRV_DSBL ,
3904
+ .phy_status = PHYSTATUS_4_20 ,
3905
+ .has_nocsr_reset = true,
3906
+ };
3907
+
3707
3908
static void qmp_pcie_init_port_b (struct qmp_pcie * qmp , const struct qmp_phy_cfg_tbls * tbls )
3708
3909
{
3709
3910
const struct qmp_phy_cfg * cfg = qmp -> cfg ;
@@ -3751,6 +3952,13 @@ static void qmp_pcie_init_registers(struct qmp_pcie *qmp, const struct qmp_phy_c
3751
3952
3752
3953
qmp_configure (qmp -> dev , serdes , tbls -> serdes , tbls -> serdes_num );
3753
3954
3955
+ /*
3956
+ * Tx/Rx registers that require different settings than
3957
+ * txz/rxz must be programmed after txz/rxz.
3958
+ */
3959
+ qmp_configure (qmp -> dev , qmp -> txz , tbls -> txz , tbls -> txz_num );
3960
+ qmp_configure (qmp -> dev , qmp -> rxz , tbls -> rxz , tbls -> rxz_num );
3961
+
3754
3962
qmp_configure_lane (qmp -> dev , tx , tbls -> tx , tbls -> tx_num , 1 );
3755
3963
qmp_configure_lane (qmp -> dev , rx , tbls -> rx , tbls -> rx_num , 1 );
3756
3964
@@ -4293,6 +4501,9 @@ static int qmp_pcie_parse_dt(struct qmp_pcie *qmp)
4293
4501
return PTR_ERR (qmp -> port_b );
4294
4502
}
4295
4503
4504
+ qmp -> txz = base + offs -> txz ;
4505
+ qmp -> rxz = base + offs -> rxz ;
4506
+
4296
4507
if (cfg -> tbls .ln_shrd )
4297
4508
qmp -> ln_shrd = base + offs -> ln_shrd ;
4298
4509
@@ -4478,6 +4689,9 @@ static const struct of_device_id qmp_pcie_of_match_table[] = {
4478
4689
}, {
4479
4690
.compatible = "qcom,x1e80100-qmp-gen4x4-pcie-phy" ,
4480
4691
.data = & x1e80100_qmp_gen4x4_pciephy_cfg ,
4692
+ }, {
4693
+ .compatible = "qcom,x1e80100-qmp-gen4x8-pcie-phy" ,
4694
+ .data = & x1e80100_qmp_gen4x8_pciephy_cfg ,
4481
4695
},
4482
4696
{ },
4483
4697
};
0 commit comments