|
164 | 164 |
|
165 | 165 | #define PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK 0x2
|
166 | 166 | #define PCIE_MISC_HARD_PCIE_HARD_DEBUG_PERST_ASSERT_MASK 0x8
|
| 167 | +#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_REFCLK_OVRD_ENABLE_MASK 0x10000 |
| 168 | +#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_REFCLK_OVRD_OUT_MASK 0x100000 |
167 | 169 | #define PCIE_MISC_HARD_PCIE_HARD_DEBUG_L1SS_ENABLE_MASK 0x200000
|
168 | 170 | #define PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK 0x08000000
|
169 | 171 | #define PCIE_BMIPS_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK 0x00800000
|
170 | 172 | #define PCIE_CLKREQ_MASK \
|
171 | 173 | (PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK | \
|
| 174 | + PCIE_MISC_HARD_PCIE_HARD_DEBUG_REFCLK_OVRD_ENABLE_MASK | \ |
| 175 | + PCIE_MISC_HARD_PCIE_HARD_DEBUG_REFCLK_OVRD_OUT_MASK | \ |
172 | 176 | PCIE_MISC_HARD_PCIE_HARD_DEBUG_L1SS_ENABLE_MASK)
|
173 | 177 |
|
174 | 178 | #define PCIE_MISC_UBUS_BAR1_CONFIG_REMAP 0x40ac
|
@@ -1599,12 +1603,21 @@ static void brcm_config_clkreq(struct brcm_pcie *pcie)
|
1599 | 1603 |
|
1600 | 1604 | } else {
|
1601 | 1605 | /*
|
1602 |
| - * "safe" -- No power savings; refclk is driven by RC |
| 1606 | + * "safe" -- No power savings; refclk and CLKREQ# are driven by RC |
1603 | 1607 | * unconditionally.
|
1604 | 1608 | */
|
1605 | 1609 | if (strcmp(mode, "safe") != 0)
|
1606 | 1610 | dev_err(pcie->dev, err_msg);
|
1607 | 1611 | mode = "safe";
|
| 1612 | + clkreq_cntl |= PCIE_MISC_HARD_PCIE_HARD_DEBUG_REFCLK_OVRD_OUT_MASK; |
| 1613 | + clkreq_cntl |= PCIE_MISC_HARD_PCIE_HARD_DEBUG_REFCLK_OVRD_ENABLE_MASK; |
| 1614 | + /* |
| 1615 | + * Un-advertise L1ss as configuring an EP to enter L1.x with CLKREQ# |
| 1616 | + * physically unconnected will result in a dead link. |
| 1617 | + */ |
| 1618 | + tmp = readl(pcie->base + PCIE_RC_CFG_PRIV1_ROOT_CAP); |
| 1619 | + u32p_replace_bits(&tmp, 2, PCIE_RC_CFG_PRIV1_ROOT_CAP_L1SS_MODE_MASK); |
| 1620 | + writel(tmp, pcie->base + PCIE_RC_CFG_PRIV1_ROOT_CAP); |
1608 | 1621 | }
|
1609 | 1622 | writel(clkreq_cntl, pcie->base + HARD_DEBUG(pcie));
|
1610 | 1623 |
|
|
0 commit comments