xref: /openbmc/linux/drivers/gpu/drm/i915/display/intel_mg_phy_regs.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1  /* SPDX-License-Identifier: MIT */
2  /*
3   * Copyright © 2022 Intel Corporation
4   */
5  
6  #ifndef __INTEL_MG_PHY_REGS__
7  #define __INTEL_MG_PHY_REGS__
8  
9  #include "intel_display_reg_defs.h"
10  
11  #define MG_PHY_PORT_LN(ln, tc_port, ln0p1, ln0p2, ln1p1) \
12  	_MMIO(_PORT(tc_port, ln0p1, ln0p2) + (ln) * ((ln1p1) - (ln0p1)))
13  
14  #define MG_TX_LINK_PARAMS_TX1LN0_PORT1		0x16812C
15  #define MG_TX_LINK_PARAMS_TX1LN1_PORT1		0x16852C
16  #define MG_TX_LINK_PARAMS_TX1LN0_PORT2		0x16912C
17  #define MG_TX_LINK_PARAMS_TX1LN1_PORT2		0x16952C
18  #define MG_TX1_LINK_PARAMS(ln, tc_port) \
19  	MG_PHY_PORT_LN(ln, tc_port, MG_TX_LINK_PARAMS_TX1LN0_PORT1, \
20  		       MG_TX_LINK_PARAMS_TX1LN0_PORT2, \
21  		       MG_TX_LINK_PARAMS_TX1LN1_PORT1)
22  
23  #define MG_TX_LINK_PARAMS_TX2LN0_PORT1		0x1680AC
24  #define MG_TX_LINK_PARAMS_TX2LN1_PORT1		0x1684AC
25  #define MG_TX_LINK_PARAMS_TX2LN0_PORT2		0x1690AC
26  #define MG_TX_LINK_PARAMS_TX2LN1_PORT2		0x1694AC
27  #define MG_TX2_LINK_PARAMS(ln, tc_port) \
28  	MG_PHY_PORT_LN(ln, tc_port, MG_TX_LINK_PARAMS_TX2LN0_PORT1, \
29  		       MG_TX_LINK_PARAMS_TX2LN0_PORT2, \
30  		       MG_TX_LINK_PARAMS_TX2LN1_PORT1)
31  #define   CRI_USE_FS32			(1 << 5)
32  
33  #define MG_TX_PISO_READLOAD_TX1LN0_PORT1		0x16814C
34  #define MG_TX_PISO_READLOAD_TX1LN1_PORT1		0x16854C
35  #define MG_TX_PISO_READLOAD_TX1LN0_PORT2		0x16914C
36  #define MG_TX_PISO_READLOAD_TX1LN1_PORT2		0x16954C
37  #define MG_TX1_PISO_READLOAD(ln, tc_port) \
38  	MG_PHY_PORT_LN(ln, tc_port, MG_TX_PISO_READLOAD_TX1LN0_PORT1, \
39  		       MG_TX_PISO_READLOAD_TX1LN0_PORT2, \
40  		       MG_TX_PISO_READLOAD_TX1LN1_PORT1)
41  
42  #define MG_TX_PISO_READLOAD_TX2LN0_PORT1		0x1680CC
43  #define MG_TX_PISO_READLOAD_TX2LN1_PORT1		0x1684CC
44  #define MG_TX_PISO_READLOAD_TX2LN0_PORT2		0x1690CC
45  #define MG_TX_PISO_READLOAD_TX2LN1_PORT2		0x1694CC
46  #define MG_TX2_PISO_READLOAD(ln, tc_port) \
47  	MG_PHY_PORT_LN(ln, tc_port, MG_TX_PISO_READLOAD_TX2LN0_PORT1, \
48  		       MG_TX_PISO_READLOAD_TX2LN0_PORT2, \
49  		       MG_TX_PISO_READLOAD_TX2LN1_PORT1)
50  #define   CRI_CALCINIT					(1 << 1)
51  
52  #define MG_TX_SWINGCTRL_TX1LN0_PORT1		0x168148
53  #define MG_TX_SWINGCTRL_TX1LN1_PORT1		0x168548
54  #define MG_TX_SWINGCTRL_TX1LN0_PORT2		0x169148
55  #define MG_TX_SWINGCTRL_TX1LN1_PORT2		0x169548
56  #define MG_TX1_SWINGCTRL(ln, tc_port) \
57  	MG_PHY_PORT_LN(ln, tc_port, MG_TX_SWINGCTRL_TX1LN0_PORT1, \
58  		       MG_TX_SWINGCTRL_TX1LN0_PORT2, \
59  		       MG_TX_SWINGCTRL_TX1LN1_PORT1)
60  
61  #define MG_TX_SWINGCTRL_TX2LN0_PORT1		0x1680C8
62  #define MG_TX_SWINGCTRL_TX2LN1_PORT1		0x1684C8
63  #define MG_TX_SWINGCTRL_TX2LN0_PORT2		0x1690C8
64  #define MG_TX_SWINGCTRL_TX2LN1_PORT2		0x1694C8
65  #define MG_TX2_SWINGCTRL(ln, tc_port) \
66  	MG_PHY_PORT_LN(ln, tc_port, MG_TX_SWINGCTRL_TX2LN0_PORT1, \
67  		       MG_TX_SWINGCTRL_TX2LN0_PORT2, \
68  		       MG_TX_SWINGCTRL_TX2LN1_PORT1)
69  #define   CRI_TXDEEMPH_OVERRIDE_17_12(x)		((x) << 0)
70  #define   CRI_TXDEEMPH_OVERRIDE_17_12_MASK		(0x3F << 0)
71  
72  #define MG_TX_DRVCTRL_TX1LN0_TXPORT1			0x168144
73  #define MG_TX_DRVCTRL_TX1LN1_TXPORT1			0x168544
74  #define MG_TX_DRVCTRL_TX1LN0_TXPORT2			0x169144
75  #define MG_TX_DRVCTRL_TX1LN1_TXPORT2			0x169544
76  #define MG_TX_DRVCTRL_TX1LN0_TXPORT3			0x16A144
77  #define MG_TX_DRVCTRL_TX1LN1_TXPORT3			0x16A544
78  #define MG_TX_DRVCTRL_TX1LN0_TXPORT4			0x16B144
79  #define MG_TX_DRVCTRL_TX1LN1_TXPORT4			0x16B544
80  #define MG_TX1_DRVCTRL(ln, tc_port) \
81  	MG_PHY_PORT_LN(ln, tc_port, MG_TX_DRVCTRL_TX1LN0_TXPORT1, \
82  		       MG_TX_DRVCTRL_TX1LN0_TXPORT2, \
83  		       MG_TX_DRVCTRL_TX1LN1_TXPORT1)
84  
85  #define MG_TX_DRVCTRL_TX2LN0_PORT1			0x1680C4
86  #define MG_TX_DRVCTRL_TX2LN1_PORT1			0x1684C4
87  #define MG_TX_DRVCTRL_TX2LN0_PORT2			0x1690C4
88  #define MG_TX_DRVCTRL_TX2LN1_PORT2			0x1694C4
89  #define MG_TX2_DRVCTRL(ln, tc_port) \
90  	MG_PHY_PORT_LN(ln, tc_port, MG_TX_DRVCTRL_TX2LN0_PORT1, \
91  		       MG_TX_DRVCTRL_TX2LN0_PORT2, \
92  		       MG_TX_DRVCTRL_TX2LN1_PORT1)
93  #define   CRI_TXDEEMPH_OVERRIDE_11_6(x)			((x) << 24)
94  #define   CRI_TXDEEMPH_OVERRIDE_11_6_MASK		(0x3F << 24)
95  #define   CRI_TXDEEMPH_OVERRIDE_EN			(1 << 22)
96  #define   CRI_TXDEEMPH_OVERRIDE_5_0(x)			((x) << 16)
97  #define   CRI_TXDEEMPH_OVERRIDE_5_0_MASK		(0x3F << 16)
98  #define   CRI_LOADGEN_SEL(x)				((x) << 12)
99  #define   CRI_LOADGEN_SEL_MASK				(0x3 << 12)
100  
101  #define MG_CLKHUB_LN0_PORT1			0x16839C
102  #define MG_CLKHUB_LN1_PORT1			0x16879C
103  #define MG_CLKHUB_LN0_PORT2			0x16939C
104  #define MG_CLKHUB_LN1_PORT2			0x16979C
105  #define MG_CLKHUB(ln, tc_port) \
106  	MG_PHY_PORT_LN(ln, tc_port, MG_CLKHUB_LN0_PORT1, \
107  		       MG_CLKHUB_LN0_PORT2, \
108  		       MG_CLKHUB_LN1_PORT1)
109  #define   CFG_LOW_RATE_LKREN_EN				(1 << 11)
110  
111  #define MG_TX_DCC_TX1LN0_PORT1			0x168110
112  #define MG_TX_DCC_TX1LN1_PORT1			0x168510
113  #define MG_TX_DCC_TX1LN0_PORT2			0x169110
114  #define MG_TX_DCC_TX1LN1_PORT2			0x169510
115  #define MG_TX1_DCC(ln, tc_port) \
116  	MG_PHY_PORT_LN(ln, tc_port, MG_TX_DCC_TX1LN0_PORT1, \
117  		       MG_TX_DCC_TX1LN0_PORT2, \
118  		       MG_TX_DCC_TX1LN1_PORT1)
119  #define MG_TX_DCC_TX2LN0_PORT1			0x168090
120  #define MG_TX_DCC_TX2LN1_PORT1			0x168490
121  #define MG_TX_DCC_TX2LN0_PORT2			0x169090
122  #define MG_TX_DCC_TX2LN1_PORT2			0x169490
123  #define MG_TX2_DCC(ln, tc_port) \
124  	MG_PHY_PORT_LN(ln, tc_port, MG_TX_DCC_TX2LN0_PORT1, \
125  		       MG_TX_DCC_TX2LN0_PORT2, \
126  		       MG_TX_DCC_TX2LN1_PORT1)
127  #define   CFG_AMI_CK_DIV_OVERRIDE_VAL(x)	((x) << 25)
128  #define   CFG_AMI_CK_DIV_OVERRIDE_VAL_MASK	(0x3 << 25)
129  #define   CFG_AMI_CK_DIV_OVERRIDE_EN		(1 << 24)
130  
131  #define MG_DP_MODE_LN0_ACU_PORT1			0x1683A0
132  #define MG_DP_MODE_LN1_ACU_PORT1			0x1687A0
133  #define MG_DP_MODE_LN0_ACU_PORT2			0x1693A0
134  #define MG_DP_MODE_LN1_ACU_PORT2			0x1697A0
135  #define MG_DP_MODE(ln, tc_port)	\
136  	MG_PHY_PORT_LN(ln, tc_port, MG_DP_MODE_LN0_ACU_PORT1, \
137  		       MG_DP_MODE_LN0_ACU_PORT2, \
138  		       MG_DP_MODE_LN1_ACU_PORT1)
139  #define   MG_DP_MODE_CFG_DP_X2_MODE			(1 << 7)
140  #define   MG_DP_MODE_CFG_DP_X1_MODE			(1 << 6)
141  
142  #define FIA1_BASE			0x163000
143  #define FIA2_BASE			0x16E000
144  #define FIA3_BASE			0x16F000
145  #define _FIA(fia)			_PICK_EVEN_2RANGES((fia), 1,		\
146  							   FIA1_BASE, FIA1_BASE,\
147  							   FIA2_BASE, FIA3_BASE)
148  #define _MMIO_FIA(fia, off)		_MMIO(_FIA(fia) + (off))
149  
150  /* ICL PHY DFLEX registers */
151  #define PORT_TX_DFLEXDPMLE1(fia)		_MMIO_FIA((fia),  0x008C0)
152  #define   DFLEXDPMLE1_DPMLETC_MASK(idx)		(0xf << (4 * (idx)))
153  #define   DFLEXDPMLE1_DPMLETC_ML0(idx)		(1 << (4 * (idx)))
154  #define   DFLEXDPMLE1_DPMLETC_ML1_0(idx)	(3 << (4 * (idx)))
155  #define   DFLEXDPMLE1_DPMLETC_ML3(idx)		(8 << (4 * (idx)))
156  #define   DFLEXDPMLE1_DPMLETC_ML3_2(idx)	(12 << (4 * (idx)))
157  #define   DFLEXDPMLE1_DPMLETC_ML3_0(idx)	(15 << (4 * (idx)))
158  
159  #define _MG_REFCLKIN_CTL_PORT1				0x16892C
160  #define _MG_REFCLKIN_CTL_PORT2				0x16992C
161  #define   MG_REFCLKIN_CTL_OD_2_MUX(x)			((x) << 8)
162  #define   MG_REFCLKIN_CTL_OD_2_MUX_MASK			(0x7 << 8)
163  #define MG_REFCLKIN_CTL(tc_port) _MMIO_PORT((tc_port), \
164  					    _MG_REFCLKIN_CTL_PORT1, \
165  					    _MG_REFCLKIN_CTL_PORT2)
166  
167  #define _MG_CLKTOP2_CORECLKCTL1_PORT1			0x1688D8
168  #define _MG_CLKTOP2_CORECLKCTL1_PORT2			0x1698D8
169  #define   MG_CLKTOP2_CORECLKCTL1_B_DIVRATIO(x)		((x) << 16)
170  #define   MG_CLKTOP2_CORECLKCTL1_B_DIVRATIO_MASK	(0xff << 16)
171  #define   MG_CLKTOP2_CORECLKCTL1_A_DIVRATIO(x)		((x) << 8)
172  #define   MG_CLKTOP2_CORECLKCTL1_A_DIVRATIO_MASK	(0xff << 8)
173  #define MG_CLKTOP2_CORECLKCTL1(tc_port) _MMIO_PORT((tc_port), \
174  						   _MG_CLKTOP2_CORECLKCTL1_PORT1, \
175  						   _MG_CLKTOP2_CORECLKCTL1_PORT2)
176  
177  #define _MG_CLKTOP2_HSCLKCTL_PORT1			0x1688D4
178  #define _MG_CLKTOP2_HSCLKCTL_PORT2			0x1698D4
179  #define   MG_CLKTOP2_HSCLKCTL_CORE_INPUTSEL(x)		((x) << 16)
180  #define   MG_CLKTOP2_HSCLKCTL_CORE_INPUTSEL_MASK	(0x1 << 16)
181  #define   MG_CLKTOP2_HSCLKCTL_TLINEDRV_CLKSEL(x)	((x) << 14)
182  #define   MG_CLKTOP2_HSCLKCTL_TLINEDRV_CLKSEL_MASK	(0x3 << 14)
183  #define   MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO_MASK		(0x3 << 12)
184  #define   MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO_2		(0 << 12)
185  #define   MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO_3		(1 << 12)
186  #define   MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO_5		(2 << 12)
187  #define   MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO_7		(3 << 12)
188  #define   MG_CLKTOP2_HSCLKCTL_DSDIV_RATIO(x)		((x) << 8)
189  #define   MG_CLKTOP2_HSCLKCTL_DSDIV_RATIO_SHIFT		8
190  #define   MG_CLKTOP2_HSCLKCTL_DSDIV_RATIO_MASK		(0xf << 8)
191  #define MG_CLKTOP2_HSCLKCTL(tc_port) _MMIO_PORT((tc_port), \
192  						_MG_CLKTOP2_HSCLKCTL_PORT1, \
193  						_MG_CLKTOP2_HSCLKCTL_PORT2)
194  
195  #define _MG_PLL_DIV0_PORT1				0x168A00
196  #define _MG_PLL_DIV0_PORT2				0x169A00
197  #define   MG_PLL_DIV0_FRACNEN_H				(1 << 30)
198  #define   MG_PLL_DIV0_FBDIV_FRAC_MASK			(0x3fffff << 8)
199  #define   MG_PLL_DIV0_FBDIV_FRAC_SHIFT			8
200  #define   MG_PLL_DIV0_FBDIV_FRAC(x)			((x) << 8)
201  #define   MG_PLL_DIV0_FBDIV_INT_MASK			(0xff << 0)
202  #define   MG_PLL_DIV0_FBDIV_INT(x)			((x) << 0)
203  #define MG_PLL_DIV0(tc_port) _MMIO_PORT((tc_port), _MG_PLL_DIV0_PORT1, \
204  					_MG_PLL_DIV0_PORT2)
205  
206  #define _MG_PLL_DIV1_PORT1				0x168A04
207  #define _MG_PLL_DIV1_PORT2				0x169A04
208  #define   MG_PLL_DIV1_IREF_NDIVRATIO(x)			((x) << 16)
209  #define   MG_PLL_DIV1_DITHER_DIV_1			(0 << 12)
210  #define   MG_PLL_DIV1_DITHER_DIV_2			(1 << 12)
211  #define   MG_PLL_DIV1_DITHER_DIV_4			(2 << 12)
212  #define   MG_PLL_DIV1_DITHER_DIV_8			(3 << 12)
213  #define   MG_PLL_DIV1_NDIVRATIO(x)			((x) << 4)
214  #define   MG_PLL_DIV1_FBPREDIV_MASK			(0xf << 0)
215  #define   MG_PLL_DIV1_FBPREDIV(x)			((x) << 0)
216  #define MG_PLL_DIV1(tc_port) _MMIO_PORT((tc_port), _MG_PLL_DIV1_PORT1, \
217  					_MG_PLL_DIV1_PORT2)
218  
219  #define _MG_PLL_LF_PORT1				0x168A08
220  #define _MG_PLL_LF_PORT2				0x169A08
221  #define   MG_PLL_LF_TDCTARGETCNT(x)			((x) << 24)
222  #define   MG_PLL_LF_AFCCNTSEL_256			(0 << 20)
223  #define   MG_PLL_LF_AFCCNTSEL_512			(1 << 20)
224  #define   MG_PLL_LF_GAINCTRL(x)				((x) << 16)
225  #define   MG_PLL_LF_INT_COEFF(x)			((x) << 8)
226  #define   MG_PLL_LF_PROP_COEFF(x)			((x) << 0)
227  #define MG_PLL_LF(tc_port) _MMIO_PORT((tc_port), _MG_PLL_LF_PORT1, \
228  				      _MG_PLL_LF_PORT2)
229  
230  #define _MG_PLL_FRAC_LOCK_PORT1				0x168A0C
231  #define _MG_PLL_FRAC_LOCK_PORT2				0x169A0C
232  #define   MG_PLL_FRAC_LOCK_TRUELOCK_CRIT_32		(1 << 18)
233  #define   MG_PLL_FRAC_LOCK_EARLYLOCK_CRIT_32		(1 << 16)
234  #define   MG_PLL_FRAC_LOCK_LOCKTHRESH(x)		((x) << 11)
235  #define   MG_PLL_FRAC_LOCK_DCODITHEREN			(1 << 10)
236  #define   MG_PLL_FRAC_LOCK_FEEDFWRDCAL_EN		(1 << 8)
237  #define   MG_PLL_FRAC_LOCK_FEEDFWRDGAIN(x)		((x) << 0)
238  #define MG_PLL_FRAC_LOCK(tc_port) _MMIO_PORT((tc_port), \
239  					     _MG_PLL_FRAC_LOCK_PORT1, \
240  					     _MG_PLL_FRAC_LOCK_PORT2)
241  
242  #define _MG_PLL_SSC_PORT1				0x168A10
243  #define _MG_PLL_SSC_PORT2				0x169A10
244  #define   MG_PLL_SSC_EN					(1 << 28)
245  #define   MG_PLL_SSC_TYPE(x)				((x) << 26)
246  #define   MG_PLL_SSC_STEPLENGTH(x)			((x) << 16)
247  #define   MG_PLL_SSC_STEPNUM(x)				((x) << 10)
248  #define   MG_PLL_SSC_FLLEN				(1 << 9)
249  #define   MG_PLL_SSC_STEPSIZE(x)			((x) << 0)
250  #define MG_PLL_SSC(tc_port) _MMIO_PORT((tc_port), _MG_PLL_SSC_PORT1, \
251  				       _MG_PLL_SSC_PORT2)
252  
253  #define _MG_PLL_BIAS_PORT1				0x168A14
254  #define _MG_PLL_BIAS_PORT2				0x169A14
255  #define   MG_PLL_BIAS_BIAS_GB_SEL(x)			((x) << 30)
256  #define   MG_PLL_BIAS_BIAS_GB_SEL_MASK			(0x3 << 30)
257  #define   MG_PLL_BIAS_INIT_DCOAMP(x)			((x) << 24)
258  #define   MG_PLL_BIAS_INIT_DCOAMP_MASK			(0x3f << 24)
259  #define   MG_PLL_BIAS_BIAS_BONUS(x)			((x) << 16)
260  #define   MG_PLL_BIAS_BIAS_BONUS_MASK			(0xff << 16)
261  #define   MG_PLL_BIAS_BIASCAL_EN			(1 << 15)
262  #define   MG_PLL_BIAS_CTRIM(x)				((x) << 8)
263  #define   MG_PLL_BIAS_CTRIM_MASK			(0x1f << 8)
264  #define   MG_PLL_BIAS_VREF_RDAC(x)			((x) << 5)
265  #define   MG_PLL_BIAS_VREF_RDAC_MASK			(0x7 << 5)
266  #define   MG_PLL_BIAS_IREFTRIM(x)			((x) << 0)
267  #define   MG_PLL_BIAS_IREFTRIM_MASK			(0x1f << 0)
268  #define MG_PLL_BIAS(tc_port) _MMIO_PORT((tc_port), _MG_PLL_BIAS_PORT1, \
269  					_MG_PLL_BIAS_PORT2)
270  
271  #define _MG_PLL_TDC_COLDST_BIAS_PORT1			0x168A18
272  #define _MG_PLL_TDC_COLDST_BIAS_PORT2			0x169A18
273  #define   MG_PLL_TDC_COLDST_IREFINT_EN			(1 << 27)
274  #define   MG_PLL_TDC_COLDST_REFBIAS_START_PULSE_W(x)	((x) << 17)
275  #define   MG_PLL_TDC_COLDST_COLDSTART			(1 << 16)
276  #define   MG_PLL_TDC_TDCOVCCORR_EN			(1 << 2)
277  #define   MG_PLL_TDC_TDCSEL(x)				((x) << 0)
278  #define MG_PLL_TDC_COLDST_BIAS(tc_port) _MMIO_PORT((tc_port), \
279  						   _MG_PLL_TDC_COLDST_BIAS_PORT1, \
280  						   _MG_PLL_TDC_COLDST_BIAS_PORT2)
281  
282  #endif /* __INTEL_MG_PHY_REGS__ */
283