|
@@ -95,6 +95,10 @@
|
|
|
#define PCIE_CORE_PL_CONF_SPEED_MASK 0x00000018
|
|
|
#define PCIE_CORE_PL_CONF_LANE_MASK 0x00000006
|
|
|
#define PCIE_CORE_PL_CONF_LANE_SHIFT 1
|
|
|
+#define PCIE_CORE_CTRL_PLC1 (PCIE_CORE_CTRL_MGMT_BASE + 0x004)
|
|
|
+#define PCIE_CORE_CTRL_PLC1_FTS_MASK GENMASK(23, 8)
|
|
|
+#define PCIE_CORE_CTRL_PLC1_FTS_SHIFT 8
|
|
|
+#define PCIE_CORE_CTRL_PLC1_FTS_CNT 0xffff
|
|
|
#define PCIE_CORE_TXCREDIT_CFG1 (PCIE_CORE_CTRL_MGMT_BASE + 0x020)
|
|
|
#define PCIE_CORE_TXCREDIT_CFG1_MUI_MASK 0xFFFF0000
|
|
|
#define PCIE_CORE_TXCREDIT_CFG1_MUI_SHIFT 16
|
|
@@ -486,6 +490,12 @@ static int rockchip_pcie_init_port(struct rockchip_pcie *rockchip)
|
|
|
status = rockchip_pcie_read(rockchip, PCIE_RC_CONFIG_L1_SUBSTATE_CTRL2);
|
|
|
rockchip_pcie_write(rockchip, status, PCIE_RC_CONFIG_L1_SUBSTATE_CTRL2);
|
|
|
|
|
|
+ /* Fix the transmitted FTS count desired to exit from L0s. */
|
|
|
+ status = rockchip_pcie_read(rockchip, PCIE_CORE_CTRL_PLC1);
|
|
|
+ status = (status & PCIE_CORE_CTRL_PLC1_FTS_MASK) |
|
|
|
+ (PCIE_CORE_CTRL_PLC1_FTS_CNT << PCIE_CORE_CTRL_PLC1_FTS_SHIFT);
|
|
|
+ rockchip_pcie_write(rockchip, status, PCIE_CORE_CTRL_PLC1);
|
|
|
+
|
|
|
/* Enable Gen1 training */
|
|
|
rockchip_pcie_write(rockchip, PCIE_CLIENT_LINK_TRAIN_ENABLE,
|
|
|
PCIE_CLIENT_CONFIG);
|