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