1cff042eeSSuraj Kandpal /* SPDX-License-Identifier: MIT 2cff042eeSSuraj Kandpal * 3cff042eeSSuraj Kandpal * Copyright © 2025 Intel Corporation 4cff042eeSSuraj Kandpal */ 5cff042eeSSuraj Kandpal 6cff042eeSSuraj Kandpal #ifndef __INTEL_LT_PHY_REGS_H__ 7cff042eeSSuraj Kandpal #define __INTEL_LT_PHY_REGS_H__ 8cff042eeSSuraj Kandpal 941d07bd2SSuraj Kandpal #define XE3PLPD_MSGBUS_TIMEOUT_FAST_US 500 10177deeeaSVille Syrjälä #define XE3PLPD_MACCLK_TURNON_LATENCY_MS 2 1182b46083SSuraj Kandpal #define XE3PLPD_MACCLK_TURNOFF_LATENCY_US 1 12177deeeaSVille Syrjälä #define XE3PLPD_RATE_CALIB_DONE_LATENCY_MS 1 13154ebdb7SSuraj Kandpal #define XE3PLPD_RESET_START_LATENCY_US 10 14fa5fd596SSuraj Kandpal #define XE3PLPD_PWRDN_TO_RDY_LATENCY_US 4 15177deeeaSVille Syrjälä #define XE3PLPD_RESET_END_LATENCY_MS 2 16154ebdb7SSuraj Kandpal 1741d07bd2SSuraj Kandpal /* LT Phy MAC Register */ 1841d07bd2SSuraj Kandpal #define LT_PHY_MAC_VDR _MMIO(0xC00) 1941d07bd2SSuraj Kandpal #define LT_PHY_PCLKIN_GATE REG_BIT8(0) 2041d07bd2SSuraj Kandpal 2113ba213fSSuraj Kandpal /* LT Phy Pipe Spec Registers */ 2213ba213fSSuraj Kandpal #define LT_PHY_TXY_CTL8(idx) (0x408 + (0x200 * (idx))) 2313ba213fSSuraj Kandpal #define LT_PHY_TX_SWING_LEVEL_MASK REG_GENMASK8(7, 4) 2413ba213fSSuraj Kandpal #define LT_PHY_TX_SWING_LEVEL(val) REG_FIELD_PREP8(LT_PHY_TX_SWING_LEVEL_MASK, val) 2513ba213fSSuraj Kandpal #define LT_PHY_TX_SWING_MASK REG_BIT8(3) 2613ba213fSSuraj Kandpal #define LT_PHY_TX_SWING(val) REG_FIELD_PREP8(LT_PHY_TX_SWING_MASK, val) 2713ba213fSSuraj Kandpal 2813ba213fSSuraj Kandpal #define LT_PHY_TXY_CTL2(idx) (0x402 + (0x200 * (idx))) 2913ba213fSSuraj Kandpal #define LT_PHY_TXY_CTL3(idx) (0x403 + (0x200 * (idx))) 3013ba213fSSuraj Kandpal #define LT_PHY_TXY_CTL4(idx) (0x404 + (0x200 * (idx))) 3113ba213fSSuraj Kandpal #define LT_PHY_TX_CURSOR_MASK REG_GENMASK8(5, 0) 3213ba213fSSuraj Kandpal #define LT_PHY_TX_CURSOR(val) REG_FIELD_PREP8(LT_PHY_TX_CURSOR_MASK, val) 3313ba213fSSuraj Kandpal 34a54bdcb7SSuraj Kandpal #define LT_PHY_TXY_CTL10(idx) (0x40A + (0x200 * (idx))) 35a54bdcb7SSuraj Kandpal #define LT_PHY_TXY_CTL10_MAC(idx) _MMIO(LT_PHY_TXY_CTL10(idx)) 36a54bdcb7SSuraj Kandpal #define LT_PHY_TX_LANE_ENABLE REG_BIT8(0) 37a54bdcb7SSuraj Kandpal 38cff042eeSSuraj Kandpal /* LT Phy Vendor Register */ 39cff042eeSSuraj Kandpal #define LT_PHY_VDR_0_CONFIG 0xC02 40cff042eeSSuraj Kandpal #define LT_PHY_VDR_DP_PLL_ENABLE REG_BIT(7) 41cff042eeSSuraj Kandpal #define LT_PHY_VDR_1_CONFIG 0xC03 42cff042eeSSuraj Kandpal #define LT_PHY_VDR_RATE_ENCODING_MASK REG_GENMASK8(6, 3) 43cff042eeSSuraj Kandpal #define LT_PHY_VDR_MODE_ENCODING_MASK REG_GENMASK8(2, 0) 44cff042eeSSuraj Kandpal #define LT_PHY_VDR_2_CONFIG 0xCC3 45cff042eeSSuraj Kandpal 46cff042eeSSuraj Kandpal #define LT_PHY_VDR_X_ADDR_MSB(idx) (0xC04 + 0x6 * (idx)) 47cff042eeSSuraj Kandpal #define LT_PHY_VDR_X_ADDR_LSB(idx) (0xC05 + 0x6 * (idx)) 48cff042eeSSuraj Kandpal 49cff042eeSSuraj Kandpal #define LT_PHY_VDR_X_DATAY(idx, y) ((0xC06 + (3 - (y))) + 0x6 * (idx)) 50cff042eeSSuraj Kandpal 51cff042eeSSuraj Kandpal #define LT_PHY_RATE_UPDATE 0xCC4 5241d07bd2SSuraj Kandpal #define LT_PHY_RATE_CONTROL_VDR_UPDATE REG_BIT8(0) 53cff042eeSSuraj Kandpal 54154ebdb7SSuraj Kandpal #define _XE3PLPD_PORT_BUF_CTL5(idx) _MMIO(_PICK_EVEN_2RANGES(idx, PORT_TC1, \ 55154ebdb7SSuraj Kandpal _XELPDP_PORT_BUF_CTL1_LN0_A, \ 56154ebdb7SSuraj Kandpal _XELPDP_PORT_BUF_CTL1_LN0_B, \ 57154ebdb7SSuraj Kandpal _XELPDP_PORT_BUF_CTL1_LN0_USBC1, \ 58154ebdb7SSuraj Kandpal _XELPDP_PORT_BUF_CTL1_LN0_USBC2) \ 59154ebdb7SSuraj Kandpal + 0x34) 60154ebdb7SSuraj Kandpal #define XE3PLPD_PORT_BUF_CTL5(port) _XE3PLPD_PORT_BUF_CTL5(__xe2lpd_port_idx(port)) 61154ebdb7SSuraj Kandpal #define XE3PLPD_MACCLK_RESET_0 REG_BIT(11) 62154ebdb7SSuraj Kandpal #define XE3PLPD_MACCLK_RATE_MASK REG_GENMASK(4, 0) 63154ebdb7SSuraj Kandpal #define XE3PLPD_MACCLK_RATE_DEF REG_FIELD_PREP(XE3PLPD_MACCLK_RATE_MASK, 0x1F) 64154ebdb7SSuraj Kandpal 6541d07bd2SSuraj Kandpal #define _XE3PLPD_PORT_P2M_MSGBUS_STATUS_P2P(idx, lane) _MMIO(_PICK_EVEN_2RANGES(idx, PORT_TC1, \ 6641d07bd2SSuraj Kandpal _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_A, \ 6741d07bd2SSuraj Kandpal _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_B, \ 6841d07bd2SSuraj Kandpal _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_USBC1, \ 6941d07bd2SSuraj Kandpal _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_USBC2) \ 7041d07bd2SSuraj Kandpal + 0x60 + (lane) * 0x4) 7141d07bd2SSuraj Kandpal #define XE3PLPD_PORT_P2M_MSGBUS_STATUS_P2P(port, lane) _XE3PLPD_PORT_P2M_MSGBUS_STATUS_P2P(__xe2lpd_port_idx(port), \ 7241d07bd2SSuraj Kandpal lane) 7341d07bd2SSuraj Kandpal #define XE3LPD_PORT_P2M_ADDR_MASK REG_GENMASK(11, 0) 74*6fedb7bfSSuraj Kandpal 75*6fedb7bfSSuraj Kandpal #define PLL_REG4_ADDR 0x8510 76*6fedb7bfSSuraj Kandpal #define PLL_REG3_ADDR 0x850C 77*6fedb7bfSSuraj Kandpal #define PLL_REG5_ADDR 0x8514 78*6fedb7bfSSuraj Kandpal #define PLL_REG57_ADDR 0x85E4 79*6fedb7bfSSuraj Kandpal #define PLL_LF_ADDR 0x860C 80*6fedb7bfSSuraj Kandpal #define PLL_TDC_ADDR 0x8610 81*6fedb7bfSSuraj Kandpal #define PLL_SSC_ADDR 0x8614 82*6fedb7bfSSuraj Kandpal #define PLL_BIAS2_ADDR 0x8618 83*6fedb7bfSSuraj Kandpal #define PLL_BIAS_TRIM_ADDR 0x8648 84*6fedb7bfSSuraj Kandpal #define PLL_DCO_MED_ADDR 0x8640 85*6fedb7bfSSuraj Kandpal #define PLL_DCO_FINE_ADDR 0x864C 86*6fedb7bfSSuraj Kandpal #define PLL_SSC_INJ_ADDR 0x8624 87*6fedb7bfSSuraj Kandpal #define PLL_SURV_BONUS_ADDR 0x8644 88*6fedb7bfSSuraj Kandpal #define PLL_TYPE_OFFSET 0x200 89*6fedb7bfSSuraj Kandpal #define PLL_REG_ADDR(base, pll_type) ((pll_type) ? (base) + PLL_TYPE_OFFSET : (base)) 90cff042eeSSuraj Kandpal #endif /* __INTEL_LT_PHY_REGS_H__ */ 91