xref: /linux/drivers/gpu/drm/i915/display/intel_lt_phy_regs.h (revision 24f171c7e145f43b9f187578e89b0982ce87e54c)
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