|
45 | 45 | #define PCIE_CAP_CPL_TIMEOUT_DISABLE 0x10
|
46 | 46 |
|
47 | 47 | #define PCIE20_PARF_PHY_CTRL 0x40
|
| 48 | +#define PHY_CTRL_PHY_TX0_TERM_OFFSET_MASK GENMASK(20, 16) |
| 49 | +#define PHY_CTRL_PHY_TX0_TERM_OFFSET(x) ((x) << 16) |
| 50 | + |
48 | 51 | #define PCIE20_PARF_PHY_REFCLK 0x4C
|
| 52 | +#define PHY_REFCLK_SSP_EN BIT(16) |
| 53 | +#define PHY_REFCLK_USE_PAD BIT(12) |
| 54 | + |
49 | 55 | #define PCIE20_PARF_DBI_BASE_ADDR 0x168
|
50 | 56 | #define PCIE20_PARF_SLV_ADDR_SPACE_SIZE 0x16C
|
51 | 57 | #define PCIE20_PARF_MHI_CLOCK_RESET_CTRL 0x174
|
@@ -371,9 +377,18 @@ static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie)
|
371 | 377 | writel(PHY_RX0_EQ(4), pcie->parf + PCIE20_PARF_CONFIG_BITS);
|
372 | 378 | }
|
373 | 379 |
|
| 380 | + if (of_device_is_compatible(node, "qcom,pcie-ipq8064")) { |
| 381 | + /* set TX termination offset */ |
| 382 | + val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); |
| 383 | + val &= ~PHY_CTRL_PHY_TX0_TERM_OFFSET_MASK; |
| 384 | + val |= PHY_CTRL_PHY_TX0_TERM_OFFSET(7); |
| 385 | + writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); |
| 386 | + } |
| 387 | + |
374 | 388 | /* enable external reference clock */
|
375 | 389 | val = readl(pcie->parf + PCIE20_PARF_PHY_REFCLK);
|
376 |
| - val |= BIT(16); |
| 390 | + val &= ~PHY_REFCLK_USE_PAD; |
| 391 | + val |= PHY_REFCLK_SSP_EN; |
377 | 392 | writel(val, pcie->parf + PCIE20_PARF_PHY_REFCLK);
|
378 | 393 |
|
379 | 394 | /* wait for clock acquisition */
|
|
0 commit comments