|
95 | 95 | #define PCIE_CORE_PL_CONF_SPEED_MASK 0x00000018 |
96 | 96 | #define PCIE_CORE_PL_CONF_LANE_MASK 0x00000006 |
97 | 97 | #define PCIE_CORE_PL_CONF_LANE_SHIFT 1 |
| 98 | +#define PCIE_CORE_CTRL_PLC1 (PCIE_CORE_CTRL_MGMT_BASE + 0x004) |
| 99 | +#define PCIE_CORE_CTRL_PLC1_FTS_MASK GENMASK(23, 8) |
| 100 | +#define PCIE_CORE_CTRL_PLC1_FTS_SHIFT 8 |
| 101 | +#define PCIE_CORE_CTRL_PLC1_FTS_CNT 0xffff |
98 | 102 | #define PCIE_CORE_TXCREDIT_CFG1 (PCIE_CORE_CTRL_MGMT_BASE + 0x020) |
99 | 103 | #define PCIE_CORE_TXCREDIT_CFG1_MUI_MASK 0xFFFF0000 |
100 | 104 | #define PCIE_CORE_TXCREDIT_CFG1_MUI_SHIFT 16 |
@@ -486,6 +490,12 @@ static int rockchip_pcie_init_port(struct rockchip_pcie *rockchip) |
486 | 490 | status = rockchip_pcie_read(rockchip, PCIE_RC_CONFIG_L1_SUBSTATE_CTRL2); |
487 | 491 | rockchip_pcie_write(rockchip, status, PCIE_RC_CONFIG_L1_SUBSTATE_CTRL2); |
488 | 492 |
|
| 493 | + /* Fix the transmitted FTS count desired to exit from L0s. */ |
| 494 | + status = rockchip_pcie_read(rockchip, PCIE_CORE_CTRL_PLC1); |
| 495 | + status = (status & PCIE_CORE_CTRL_PLC1_FTS_MASK) | |
| 496 | + (PCIE_CORE_CTRL_PLC1_FTS_CNT << PCIE_CORE_CTRL_PLC1_FTS_SHIFT); |
| 497 | + rockchip_pcie_write(rockchip, status, PCIE_CORE_CTRL_PLC1); |
| 498 | + |
489 | 499 | /* Enable Gen1 training */ |
490 | 500 | rockchip_pcie_write(rockchip, PCIE_CLIENT_LINK_TRAIN_ENABLE, |
491 | 501 | PCIE_CLIENT_CONFIG); |
|
0 commit comments