blob: af5c715182f0d98e82bbe2082dd937e8853f7e68 [file] [log] [blame]
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +03001/*
2 * Copyright (C) 2018 Marvell International Ltd.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 * https://spdx.org/licenses
6 */
7
8/* Marvell CP110 SoC COMPHY unit driver */
9
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +000010#ifndef COMPHY_CP110_H
11#define COMPHY_CP110_H
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +030012
13#define SD_ADDR(base, lane) (base + 0x1000 * lane)
14#define HPIPE_ADDR(base, lane) (SD_ADDR(base, lane) + 0x800)
15#define COMPHY_ADDR(base, lane) (base + 0x28 * lane)
16
17#define MAX_NUM_OF_FFE 8
18#define RX_TRAINING_TIMEOUT 500
19
20/* Comphy registers */
21#define COMMON_PHY_CFG1_REG 0x0
22#define COMMON_PHY_CFG1_PWR_UP_OFFSET 1
23#define COMMON_PHY_CFG1_PWR_UP_MASK \
24 (0x1 << COMMON_PHY_CFG1_PWR_UP_OFFSET)
25#define COMMON_PHY_CFG1_PIPE_SELECT_OFFSET 2
26#define COMMON_PHY_CFG1_PIPE_SELECT_MASK \
27 (0x1 << COMMON_PHY_CFG1_PIPE_SELECT_OFFSET)
28#define COMMON_PHY_CFG1_CORE_RSTN_OFFSET 13
29#define COMMON_PHY_CFG1_CORE_RSTN_MASK \
30 (0x1 << COMMON_PHY_CFG1_CORE_RSTN_OFFSET)
31#define COMMON_PHY_CFG1_PWR_ON_RESET_OFFSET 14
32#define COMMON_PHY_CFG1_PWR_ON_RESET_MASK \
33 (0x1 << COMMON_PHY_CFG1_PWR_ON_RESET_OFFSET)
34#define COMMON_PHY_PHY_MODE_OFFSET 15
35#define COMMON_PHY_PHY_MODE_MASK \
36 (0x1 << COMMON_PHY_PHY_MODE_OFFSET)
37
38#define COMMON_PHY_CFG6_REG 0x14
39#define COMMON_PHY_CFG6_IF_40_SEL_OFFSET 18
40#define COMMON_PHY_CFG6_IF_40_SEL_MASK \
41 (0x1 << COMMON_PHY_CFG6_IF_40_SEL_OFFSET)
42
43#define COMMON_PHY_CFG6_REG 0x14
44#define COMMON_PHY_CFG6_IF_40_SEL_OFFSET 18
45#define COMMON_PHY_CFG6_IF_40_SEL_MASK \
46 (0x1 << COMMON_PHY_CFG6_IF_40_SEL_OFFSET)
47
48#define COMMON_SELECTOR_PHY_REG_OFFSET 0x140
49#define COMMON_SELECTOR_PIPE_REG_OFFSET 0x144
50#define COMMON_SELECTOR_COMPHY_MASK 0xf
51#define COMMON_SELECTOR_COMPHYN_FIELD_WIDTH 4
52#define COMMON_SELECTOR_COMPHYN_SATA 0x4
53#define COMMON_SELECTOR_PIPE_COMPHY_PCIE 0x4
54#define COMMON_SELECTOR_PIPE_COMPHY_USBH 0x1
55#define COMMON_SELECTOR_PIPE_COMPHY_USBD 0x2
56
Pali Rohár51974d22021-08-27 11:16:43 +020057/* SGMII/Base-X/SFI/RXAUI */
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +030058#define COMMON_SELECTOR_COMPHY0_1_2_NETWORK 0x1
59#define COMMON_SELECTOR_COMPHY3_RXAUI 0x1
60#define COMMON_SELECTOR_COMPHY3_SGMII 0x2
61#define COMMON_SELECTOR_COMPHY4_PORT1 0x1
62#define COMMON_SELECTOR_COMPHY4_ALL_OTHERS 0x2
63#define COMMON_SELECTOR_COMPHY5_RXAUI 0x2
64#define COMMON_SELECTOR_COMPHY5_SGMII 0x1
65
66#define COMMON_PHY_SD_CTRL1 0x148
67#define COMMON_PHY_SD_CTRL1_COMPHY_0_PORT_OFFSET 0
68#define COMMON_PHY_SD_CTRL1_COMPHY_1_PORT_OFFSET 4
69#define COMMON_PHY_SD_CTRL1_COMPHY_2_PORT_OFFSET 8
70#define COMMON_PHY_SD_CTRL1_COMPHY_3_PORT_OFFSET 12
71#define COMMON_PHY_SD_CTRL1_COMPHY_0_3_PORT_MASK 0xFFFF
72#define COMMON_PHY_SD_CTRL1_COMPHY_0_1_PORT_MASK 0xFF
73#define COMMON_PHY_SD_CTRL1_PCIE_X4_EN_OFFSET 24
74#define COMMON_PHY_SD_CTRL1_PCIE_X4_EN_MASK \
75 (0x1 << COMMON_PHY_SD_CTRL1_PCIE_X4_EN_OFFSET)
76#define COMMON_PHY_SD_CTRL1_PCIE_X2_EN_OFFSET 25
77#define COMMON_PHY_SD_CTRL1_PCIE_X2_EN_MASK \
78 (0x1 << COMMON_PHY_SD_CTRL1_PCIE_X2_EN_OFFSET)
79#define COMMON_PHY_SD_CTRL1_RXAUI1_OFFSET 26
80#define COMMON_PHY_SD_CTRL1_RXAUI1_MASK \
81 (0x1 << COMMON_PHY_SD_CTRL1_RXAUI1_OFFSET)
82#define COMMON_PHY_SD_CTRL1_RXAUI0_OFFSET 27
83#define COMMON_PHY_SD_CTRL1_RXAUI0_MASK \
84 (0x1 << COMMON_PHY_SD_CTRL1_RXAUI0_OFFSET)
85
86/* DFX register */
87#define DFX_BASE (0x400000)
88#define DFX_DEV_GEN_CTRL12_REG (0x280)
89#define DFX_DEV_GEN_PCIE_CLK_SRC_MUX (0x3)
90#define DFX_DEV_GEN_PCIE_CLK_SRC_OFFSET 7
91#define DFX_DEV_GEN_PCIE_CLK_SRC_MASK \
92 (0x3 << DFX_DEV_GEN_PCIE_CLK_SRC_OFFSET)
93
94/* SerDes IP registers */
95#define SD_EXTERNAL_CONFIG0_REG 0
96#define SD_EXTERNAL_CONFIG0_SD_PU_PLL_OFFSET 1
97#define SD_EXTERNAL_CONFIG0_SD_PU_PLL_MASK \
98 (1 << SD_EXTERNAL_CONFIG0_SD_PU_PLL_OFFSET)
99#define SD_EXTERNAL_CONFIG0_SD_PHY_GEN_RX_OFFSET 3
100#define SD_EXTERNAL_CONFIG0_SD_PHY_GEN_RX_MASK \
101 (0xf << SD_EXTERNAL_CONFIG0_SD_PHY_GEN_RX_OFFSET)
102#define SD_EXTERNAL_CONFIG0_SD_PHY_GEN_TX_OFFSET 7
103#define SD_EXTERNAL_CONFIG0_SD_PHY_GEN_TX_MASK \
104 (0xf << SD_EXTERNAL_CONFIG0_SD_PHY_GEN_TX_OFFSET)
105#define SD_EXTERNAL_CONFIG0_SD_PU_RX_OFFSET 11
106#define SD_EXTERNAL_CONFIG0_SD_PU_RX_MASK \
107 (1 << SD_EXTERNAL_CONFIG0_SD_PU_RX_OFFSET)
108#define SD_EXTERNAL_CONFIG0_SD_PU_TX_OFFSET 12
109#define SD_EXTERNAL_CONFIG0_SD_PU_TX_MASK \
110 (1 << SD_EXTERNAL_CONFIG0_SD_PU_TX_OFFSET)
111#define SD_EXTERNAL_CONFIG0_HALF_BUS_MODE_OFFSET 14
112#define SD_EXTERNAL_CONFIG0_HALF_BUS_MODE_MASK \
113 (1 << SD_EXTERNAL_CONFIG0_HALF_BUS_MODE_OFFSET)
114#define SD_EXTERNAL_CONFIG0_MEDIA_MODE_OFFSET 15
115#define SD_EXTERNAL_CONFIG0_MEDIA_MODE_MASK \
116 (0x1 << SD_EXTERNAL_CONFIG0_MEDIA_MODE_OFFSET)
117
118#define SD_EXTERNAL_CONFIG1_REG 0x4
Marcin Wojtas779fd462019-09-09 03:38:18 +0200119#define SD_EXTERNAL_CONFIG1_TX_IDLE_OFFSET 2
120#define SD_EXTERNAL_CONFIG1_TX_IDLE_MASK \
121 (0x1 << SD_EXTERNAL_CONFIG1_TX_IDLE_OFFSET)
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300122#define SD_EXTERNAL_CONFIG1_RESET_IN_OFFSET 3
123#define SD_EXTERNAL_CONFIG1_RESET_IN_MASK \
124 (0x1 << SD_EXTERNAL_CONFIG1_RESET_IN_OFFSET)
125#define SD_EXTERNAL_CONFIG1_RX_INIT_OFFSET 4
126#define SD_EXTERNAL_CONFIG1_RX_INIT_MASK \
127 (0x1 << SD_EXTERNAL_CONFIG1_RX_INIT_OFFSET)
128#define SD_EXTERNAL_CONFIG1_RESET_CORE_OFFSET 5
129#define SD_EXTERNAL_CONFIG1_RESET_CORE_MASK \
130 (0x1 << SD_EXTERNAL_CONFIG1_RESET_CORE_OFFSET)
131#define SD_EXTERNAL_CONFIG1_RF_RESET_IN_OFFSET 6
132#define SD_EXTERNAL_CONFIG1_RF_RESET_IN_MASK \
133 (0x1 << SD_EXTERNAL_CONFIG1_RF_RESET_IN_OFFSET)
134
135#define SD_EXTERNAL_CONFIG2_REG 0x8
136#define SD_EXTERNAL_CONFIG2_PIN_DFE_EN_OFFSET 4
137#define SD_EXTERNAL_CONFIG2_PIN_DFE_EN_MASK \
138 (0x1 << SD_EXTERNAL_CONFIG2_PIN_DFE_EN_OFFSET)
139#define SD_EXTERNAL_CONFIG2_SSC_ENABLE_OFFSET 7
140#define SD_EXTERNAL_CONFIG2_SSC_ENABLE_MASK \
141 (0x1 << SD_EXTERNAL_CONFIG2_SSC_ENABLE_OFFSET)
142
143#define SD_EXTERNAL_STATUS_REG 0xc
144#define SD_EXTERNAL_STATUS_START_RX_TRAINING_OFFSET 7
145#define SD_EXTERNAL_STATUS_START_RX_TRAINING_MASK \
146 (1 << SD_EXTERNAL_STATUS_START_RX_TRAINING_OFFSET)
147
148#define SD_EXTERNAL_STATUS0_REG 0x18
149#define SD_EXTERNAL_STATUS0_PLL_TX_OFFSET 2
150#define SD_EXTERNAL_STATUS0_PLL_TX_MASK \
151 (0x1 << SD_EXTERNAL_STATUS0_PLL_TX_OFFSET)
152#define SD_EXTERNAL_STATUS0_PLL_RX_OFFSET 3
153#define SD_EXTERNAL_STATUS0_PLL_RX_MASK \
154 (0x1 << SD_EXTERNAL_STATUS0_PLL_RX_OFFSET)
155#define SD_EXTERNAL_STATUS0_RX_INIT_OFFSET 4
156#define SD_EXTERNAL_STATUS0_RX_INIT_MASK \
157 (0x1 << SD_EXTERNAL_STATUS0_RX_INIT_OFFSET)
158
159#define SD_EXTERNAL_STATAUS1_REG 0x1c
160#define SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_COMP_OFFSET 0
161#define SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_COMP_MASK \
162 (1 << SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_COMP_OFFSET)
163#define SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_FAILED_OFFSET 1
164#define SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_FAILED_MASK \
165 (1 << SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_FAILED_OFFSET)
166
167/* HPIPE registers */
168#define HPIPE_PWR_PLL_REG 0x4
169#define HPIPE_PWR_PLL_REF_FREQ_OFFSET 0
170#define HPIPE_PWR_PLL_REF_FREQ_MASK \
171 (0x1f << HPIPE_PWR_PLL_REF_FREQ_OFFSET)
172#define HPIPE_PWR_PLL_PHY_MODE_OFFSET 5
173#define HPIPE_PWR_PLL_PHY_MODE_MASK \
174 (0x7 << HPIPE_PWR_PLL_PHY_MODE_OFFSET)
175
176#define HPIPE_CAL_REG1_REG 0xc
177#define HPIPE_CAL_REG_1_EXT_TXIMP_OFFSET 10
178#define HPIPE_CAL_REG_1_EXT_TXIMP_MASK \
179 (0x1f << HPIPE_CAL_REG_1_EXT_TXIMP_OFFSET)
180#define HPIPE_CAL_REG_1_EXT_TXIMP_EN_OFFSET 15
181#define HPIPE_CAL_REG_1_EXT_TXIMP_EN_MASK \
182 (0x1 << HPIPE_CAL_REG_1_EXT_TXIMP_EN_OFFSET)
183
184#define HPIPE_SQUELCH_FFE_SETTING_REG 0x18
185#define HPIPE_SQUELCH_THRESH_IN_OFFSET 8
186#define HPIPE_SQUELCH_THRESH_IN_MASK \
187 (0xf << HPIPE_SQUELCH_THRESH_IN_OFFSET)
188#define HPIPE_SQUELCH_DETECTED_OFFSET 14
189#define HPIPE_SQUELCH_DETECTED_MASK \
190 (0x1 << HPIPE_SQUELCH_DETECTED_OFFSET)
191
192#define HPIPE_DFE_REG0 0x1c
193#define HPIPE_DFE_RES_FORCE_OFFSET 15
194#define HPIPE_DFE_RES_FORCE_MASK \
195 (0x1 << HPIPE_DFE_RES_FORCE_OFFSET)
196
197#define HPIPE_DFE_F3_F5_REG 0x28
198#define HPIPE_DFE_F3_F5_DFE_EN_OFFSET 14
199#define HPIPE_DFE_F3_F5_DFE_EN_MASK \
200 (0x1 << HPIPE_DFE_F3_F5_DFE_EN_OFFSET)
201#define HPIPE_DFE_F3_F5_DFE_CTRL_OFFSET 15
202#define HPIPE_DFE_F3_F5_DFE_CTRL_MASK \
203 (0x1 << HPIPE_DFE_F3_F5_DFE_CTRL_OFFSET)
204
Grzegorz Jaszczyk2ed16f52018-06-29 18:00:33 +0200205#define HPIPE_ADAPTED_DFE_COEFFICIENT_1_REG 0x30
206#define HPIPE_ADAPTED_DFE_RES_OFFSET 13
207#define HPIPE_ADAPTED_DFE_RES_MASK \
208 (0x3 << HPIPE_ADAPTED_DFE_RES_OFFSET)
209
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300210#define HPIPE_G1_SET_0_REG 0x34
211#define HPIPE_G1_SET_0_G1_TX_AMP_OFFSET 1
212#define HPIPE_G1_SET_0_G1_TX_AMP_MASK \
213 (0x1f << HPIPE_G1_SET_0_G1_TX_AMP_OFFSET)
214#define HPIPE_G1_SET_0_G1_TX_AMP_ADJ_OFFSET 6
215#define HPIPE_G1_SET_0_G1_TX_AMP_ADJ_MASK \
216 (0x1 << HPIPE_G1_SET_0_G1_TX_AMP_ADJ_OFFSET)
217#define HPIPE_G1_SET_0_G1_TX_EMPH1_OFFSET 7
218#define HPIPE_G1_SET_0_G1_TX_EMPH1_MASK \
219 (0xf << HPIPE_G1_SET_0_G1_TX_EMPH1_OFFSET)
220#define HPIPE_G1_SET_0_G1_TX_EMPH1_EN_OFFSET 11
221#define HPIPE_G1_SET_0_G1_TX_EMPH1_EN_MASK \
222 (0x1 << HPIPE_G1_SET_0_G1_TX_EMPH1_EN_OFFSET)
223
224#define HPIPE_G1_SET_1_REG 0x38
225#define HPIPE_G1_SET_1_G1_RX_SELMUPI_OFFSET 0
226#define HPIPE_G1_SET_1_G1_RX_SELMUPI_MASK \
227 (0x7 << HPIPE_G1_SET_1_G1_RX_SELMUPI_OFFSET)
Grzegorz Jaszczyka91ea622018-07-16 12:18:03 +0200228#define HPIPE_G1_SET_1_G1_RX_SELMUPF_OFFSET 3
229#define HPIPE_G1_SET_1_G1_RX_SELMUPF_MASK \
230 (0x7 << HPIPE_G1_SET_1_G1_RX_SELMUPF_OFFSET)
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300231#define HPIPE_G1_SET_1_G1_RX_SELMUFI_OFFSET 6
232#define HPIPE_G1_SET_1_G1_RX_SELMUFI_MASK \
233 (0x3 << HPIPE_G1_SET_1_G1_RX_SELMUFI_OFFSET)
234#define HPIPE_G1_SET_1_G1_RX_SELMUFF_OFFSET 8
235#define HPIPE_G1_SET_1_G1_RX_SELMUFF_MASK \
236 (0x3 << HPIPE_G1_SET_1_G1_RX_SELMUFF_OFFSET)
237#define HPIPE_G1_SET_1_G1_RX_DFE_EN_OFFSET 10
238#define HPIPE_G1_SET_1_G1_RX_DFE_EN_MASK \
239 (0x1 << HPIPE_G1_SET_1_G1_RX_DFE_EN_OFFSET)
240#define HPIPE_G1_SET_1_G1_RX_DIGCK_DIV_OFFSET 11
241#define HPIPE_G1_SET_1_G1_RX_DIGCK_DIV_MASK \
242 (0x3 << HPIPE_G1_SET_1_G1_RX_DIGCK_DIV_OFFSET)
243
244#define HPIPE_G2_SET_0_REG 0x3c
245#define HPIPE_G2_SET_0_G2_TX_AMP_OFFSET 1
246#define HPIPE_G2_SET_0_G2_TX_AMP_MASK \
247 (0x1f << HPIPE_G2_SET_0_G2_TX_AMP_OFFSET)
248#define HPIPE_G2_SET_0_G2_TX_AMP_ADJ_OFFSET 6
249#define HPIPE_G2_SET_0_G2_TX_AMP_ADJ_MASK \
250 (0x1 << HPIPE_G2_SET_0_G2_TX_AMP_ADJ_OFFSET)
251#define HPIPE_G2_SET_0_G2_TX_EMPH1_OFFSET 7
252#define HPIPE_G2_SET_0_G2_TX_EMPH1_MASK \
253 (0xf << HPIPE_G2_SET_0_G2_TX_EMPH1_OFFSET)
254#define HPIPE_G2_SET_0_G2_TX_EMPH1_EN_OFFSET 11
255#define HPIPE_G2_SET_0_G2_TX_EMPH1_EN_MASK \
256 (0x1 << HPIPE_G2_SET_0_G2_TX_EMPH1_EN_OFFSET)
257
258#define HPIPE_G2_SET_1_REG 0x40
259#define HPIPE_G2_SET_1_G2_RX_SELMUPI_OFFSET 0
260#define HPIPE_G2_SET_1_G2_RX_SELMUPI_MASK \
261 (0x7 << HPIPE_G2_SET_1_G2_RX_SELMUPI_OFFSET)
Grzegorz Jaszczyka91ea622018-07-16 12:18:03 +0200262#define HPIPE_G2_SET_1_G2_RX_SELMUPF_OFFSET 3
263#define HPIPE_G2_SET_1_G2_RX_SELMUPF_MASK \
264 (0x7 << HPIPE_G2_SET_1_G2_RX_SELMUPF_OFFSET)
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300265#define HPIPE_G2_SET_1_G2_RX_SELMUFI_OFFSET 6
266#define HPIPE_G2_SET_1_G2_RX_SELMUFI_MASK \
267 (0x3 << HPIPE_G2_SET_1_G2_RX_SELMUFI_OFFSET)
268#define HPIPE_G2_SET_1_G2_RX_SELMUFF_OFFSET 8
269#define HPIPE_G2_SET_1_G2_RX_SELMUFF_MASK \
270 (0x3 << HPIPE_G2_SET_1_G2_RX_SELMUFF_OFFSET)
271#define HPIPE_G2_SET_1_G2_RX_DFE_EN_OFFSET 10
272#define HPIPE_G2_SET_1_G2_RX_DFE_EN_MASK \
273 (0x1 << HPIPE_G2_SET_1_G2_RX_DFE_EN_OFFSET)
274#define HPIPE_G2_SET_1_G2_RX_DIGCK_DIV_OFFSET 11
275#define HPIPE_G2_SET_1_G2_RX_DIGCK_DIV_MASK \
276 (0x3 << HPIPE_G2_SET_1_G2_RX_DIGCK_DIV_OFFSET)
277
278#define HPIPE_G3_SET_0_REG 0x44
279#define HPIPE_G3_SET_0_G3_TX_AMP_OFFSET 1
280#define HPIPE_G3_SET_0_G3_TX_AMP_MASK \
281 (0x1f << HPIPE_G3_SET_0_G3_TX_AMP_OFFSET)
282#define HPIPE_G3_SET_0_G3_TX_AMP_ADJ_OFFSET 6
283#define HPIPE_G3_SET_0_G3_TX_AMP_ADJ_MASK \
284 (0x1 << HPIPE_G3_SET_0_G3_TX_AMP_ADJ_OFFSET)
285#define HPIPE_G3_SET_0_G3_TX_EMPH1_OFFSET 7
286#define HPIPE_G3_SET_0_G3_TX_EMPH1_MASK \
287 (0xf << HPIPE_G3_SET_0_G3_TX_EMPH1_OFFSET)
288#define HPIPE_G3_SET_0_G3_TX_EMPH1_EN_OFFSET 11
289#define HPIPE_G3_SET_0_G3_TX_EMPH1_EN_MASK \
290 (0x1 << HPIPE_G3_SET_0_G3_TX_EMPH1_EN_OFFSET)
291#define HPIPE_G3_SET_0_G3_TX_SLEW_RATE_SEL_OFFSET 12
292#define HPIPE_G3_SET_0_G3_TX_SLEW_RATE_SEL_MASK \
293 (0x7 << HPIPE_G3_SET_0_G3_TX_SLEW_RATE_SEL_OFFSET)
294#define HPIPE_G3_SET_0_G3_TX_SLEW_CTRL_EN_OFFSET 15
295#define HPIPE_G3_SET_0_G3_TX_SLEW_CTRL_EN_MASK \
296 (0x1 << HPIPE_G3_SET_0_G3_TX_SLEW_CTRL_EN_OFFSET)
297
298#define HPIPE_G3_SET_1_REG 0x48
299#define HPIPE_G3_SET_1_G3_RX_SELMUPI_OFFSET 0
300#define HPIPE_G3_SET_1_G3_RX_SELMUPI_MASK \
301 (0x7 << HPIPE_G3_SET_1_G3_RX_SELMUPI_OFFSET)
302#define HPIPE_G3_SET_1_G3_RX_SELMUPF_OFFSET 3
303#define HPIPE_G3_SET_1_G3_RX_SELMUPF_MASK \
304 (0x7 << HPIPE_G3_SET_1_G3_RX_SELMUPF_OFFSET)
305#define HPIPE_G3_SET_1_G3_RX_SELMUFI_OFFSET 6
306#define HPIPE_G3_SET_1_G3_RX_SELMUFI_MASK \
307 (0x3 << HPIPE_G3_SET_1_G3_RX_SELMUFI_OFFSET)
308#define HPIPE_G3_SET_1_G3_RX_SELMUFF_OFFSET 8
309#define HPIPE_G3_SET_1_G3_RX_SELMUFF_MASK \
310 (0x3 << HPIPE_G3_SET_1_G3_RX_SELMUFF_OFFSET)
311#define HPIPE_G3_SET_1_G3_RX_DFE_EN_OFFSET 10
312#define HPIPE_G3_SET_1_G3_RX_DFE_EN_MASK \
313 (0x1 << HPIPE_G3_SET_1_G3_RX_DFE_EN_OFFSET)
314#define HPIPE_G3_SET_1_G3_RX_DIGCK_DIV_OFFSET 11
315#define HPIPE_G3_SET_1_G3_RX_DIGCK_DIV_MASK \
316 (0x3 << HPIPE_G3_SET_1_G3_RX_DIGCK_DIV_OFFSET)
317#define HPIPE_G3_SET_1_G3_SAMPLER_INPAIRX2_EN_OFFSET 13
318#define HPIPE_G3_SET_1_G3_SAMPLER_INPAIRX2_EN_MASK \
319 (0x1 << HPIPE_G3_SET_1_G3_SAMPLER_INPAIRX2_EN_OFFSET)
320
321#define HPIPE_PHY_TEST_CONTROL_REG 0x54
322#define HPIPE_PHY_TEST_PATTERN_SEL_OFFSET 4
323#define HPIPE_PHY_TEST_PATTERN_SEL_MASK \
324 (0xf << HPIPE_PHY_TEST_PATTERN_SEL_OFFSET)
325#define HPIPE_PHY_TEST_RESET_OFFSET 14
326#define HPIPE_PHY_TEST_RESET_MASK \
327 (0x1 << HPIPE_PHY_TEST_RESET_OFFSET)
328#define HPIPE_PHY_TEST_EN_OFFSET 15
329#define HPIPE_PHY_TEST_EN_MASK \
330 (0x1 << HPIPE_PHY_TEST_EN_OFFSET)
331
332#define HPIPE_PHY_TEST_DATA_REG 0x6c
333#define HPIPE_PHY_TEST_DATA_OFFSET 0
334#define HPIPE_PHY_TEST_DATA_MASK \
335 (0xffff << HPIPE_PHY_TEST_DATA_OFFSET)
336
Grzegorz Jaszczyk2ed16f52018-06-29 18:00:33 +0200337#define HPIPE_PHY_TEST_PRBS_ERROR_COUNTER_1_REG 0x80
338
339#define HPIPE_PHY_TEST_OOB_0_REGISTER 0x84
340#define HPIPE_PHY_PT_OOB_EN_OFFSET 14
341#define HPIPE_PHY_PT_OOB_EN_MASK \
342 (0x1 << HPIPE_PHY_PT_OOB_EN_OFFSET)
343#define HPIPE_PHY_TEST_PT_TESTMODE_OFFSET 12
344#define HPIPE_PHY_TEST_PT_TESTMODE_MASK \
345 (0x3 << HPIPE_PHY_TEST_PT_TESTMODE_OFFSET)
346
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300347#define HPIPE_LOOPBACK_REG 0x8c
348#define HPIPE_LOOPBACK_SEL_OFFSET 1
349#define HPIPE_LOOPBACK_SEL_MASK \
350 (0x7 << HPIPE_LOOPBACK_SEL_OFFSET)
351#define HPIPE_CDR_LOCK_OFFSET 7
352#define HPIPE_CDR_LOCK_MASK \
353 (0x1 << HPIPE_CDR_LOCK_OFFSET)
354#define HPIPE_CDR_LOCK_DET_EN_OFFSET 8
355#define HPIPE_CDR_LOCK_DET_EN_MASK \
356 (0x1 << HPIPE_CDR_LOCK_DET_EN_OFFSET)
357
Grzegorz Jaszczykff9311b2020-01-21 17:02:10 +0100358#define HPIPE_SYNC_PATTERN_REG 0x090
359#define HPIPE_SYNC_PATTERN_TXD_INV_OFFSET 10
360#define HPIPE_SYNC_PATTERN_TXD_INV_MASK \
361 (0x1 << HPIPE_SYNC_PATTERN_TXD_INV_OFFSET)
362#define HPIPE_SYNC_PATTERN_RXD_INV_OFFSET 11
363#define HPIPE_SYNC_PATTERN_RXD_INV_MASK \
364 (0x1 << HPIPE_SYNC_PATTERN_RXD_INV_OFFSET)
365
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300366#define HPIPE_INTERFACE_REG 0x94
367#define HPIPE_INTERFACE_GEN_MAX_OFFSET 10
368#define HPIPE_INTERFACE_GEN_MAX_MASK \
369 (0x3 << HPIPE_INTERFACE_GEN_MAX_OFFSET)
370#define HPIPE_INTERFACE_DET_BYPASS_OFFSET 12
371#define HPIPE_INTERFACE_DET_BYPASS_MASK \
372 (0x1 << HPIPE_INTERFACE_DET_BYPASS_OFFSET)
373#define HPIPE_INTERFACE_LINK_TRAIN_OFFSET 14
374#define HPIPE_INTERFACE_LINK_TRAIN_MASK \
375 (0x1 << HPIPE_INTERFACE_LINK_TRAIN_OFFSET)
376
377#define HPIPE_G1_SET_2_REG 0xf4
378#define HPIPE_G1_SET_2_G1_TX_EMPH0_OFFSET 0
379#define HPIPE_G1_SET_2_G1_TX_EMPH0_MASK \
380 (0xf << HPIPE_G1_SET_2_G1_TX_EMPH0_OFFSET)
381#define HPIPE_G1_SET_2_G1_TX_EMPH0_EN_OFFSET 4
382#define HPIPE_G1_SET_2_G1_TX_EMPH0_EN_MASK \
383 (0x1 << HPIPE_G1_SET_2_G1_TX_EMPH0_EN_OFFSET)
384
385#define HPIPE_G2_SET_2_REG 0xf8
Grzegorz Jaszczyk2ed16f52018-06-29 18:00:33 +0200386#define HPIPE_G2_SET_2_G2_TX_EMPH0_OFFSET 0
387#define HPIPE_G2_SET_2_G2_TX_EMPH0_MASK \
388 (0xf << HPIPE_G2_SET_2_G2_TX_EMPH0_OFFSET)
389#define HPIPE_G2_SET_2_G2_TX_EMPH0_EN_OFFSET 4
390#define HPIPE_G2_SET_2_G2_TX_EMPH0_EN_MASK \
391 (0x1 << HPIPE_G2_SET_2_G2_TX_EMPH0_EN_OFFSET)
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300392#define HPIPE_G2_TX_SSC_AMP_OFFSET 9
393#define HPIPE_G2_TX_SSC_AMP_MASK \
394 (0x7f << HPIPE_G2_TX_SSC_AMP_OFFSET)
395
Grzegorz Jaszczyk2ed16f52018-06-29 18:00:33 +0200396#define HPIPE_G3_SET_2_REG 0xfc
397#define HPIPE_G3_SET_2_G3_TX_EMPH0_OFFSET 0
398#define HPIPE_G3_SET_2_G3_TX_EMPH0_MASK \
399 (0xf << HPIPE_G3_SET_2_G3_TX_EMPH0_OFFSET)
400#define HPIPE_G3_SET_2_G3_TX_EMPH0_EN_OFFSET 4
401#define HPIPE_G3_SET_2_G3_TX_EMPH0_EN_MASK \
402 (0x1 << HPIPE_G3_SET_2_G3_TX_EMPH0_EN_OFFSET)
403#define HPIPE_G3_TX_SSC_AMP_OFFSET 9
404#define HPIPE_G3_TX_SSC_AMP_MASK \
405 (0x7f << HPIPE_G3_TX_SSC_AMP_OFFSET)
406
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300407#define HPIPE_VDD_CAL_0_REG 0x108
408#define HPIPE_CAL_VDD_CONT_MODE_OFFSET 15
409#define HPIPE_CAL_VDD_CONT_MODE_MASK \
410 (0x1 << HPIPE_CAL_VDD_CONT_MODE_OFFSET)
411
412#define HPIPE_VDD_CAL_CTRL_REG 0x114
413#define HPIPE_EXT_SELLV_RXSAMPL_OFFSET 5
414#define HPIPE_EXT_SELLV_RXSAMPL_MASK \
415 (0x1f << HPIPE_EXT_SELLV_RXSAMPL_OFFSET)
416
417#define HPIPE_PCIE_REG0 0x120
418#define HPIPE_PCIE_IDLE_SYNC_OFFSET 12
419#define HPIPE_PCIE_IDLE_SYNC_MASK \
420 (0x1 << HPIPE_PCIE_IDLE_SYNC_OFFSET)
421#define HPIPE_PCIE_SEL_BITS_OFFSET 13
422#define HPIPE_PCIE_SEL_BITS_MASK \
423 (0x3 << HPIPE_PCIE_SEL_BITS_OFFSET)
424
425#define HPIPE_LANE_ALIGN_REG 0x124
426#define HPIPE_LANE_ALIGN_OFF_OFFSET 12
427#define HPIPE_LANE_ALIGN_OFF_MASK \
428 (0x1 << HPIPE_LANE_ALIGN_OFF_OFFSET)
429
430#define HPIPE_MISC_REG 0x13C
431#define HPIPE_MISC_CLK100M_125M_OFFSET 4
432#define HPIPE_MISC_CLK100M_125M_MASK \
433 (0x1 << HPIPE_MISC_CLK100M_125M_OFFSET)
434#define HPIPE_MISC_ICP_FORCE_OFFSET 5
435#define HPIPE_MISC_ICP_FORCE_MASK \
436 (0x1 << HPIPE_MISC_ICP_FORCE_OFFSET)
437#define HPIPE_MISC_TXDCLK_2X_OFFSET 6
438#define HPIPE_MISC_TXDCLK_2X_MASK \
439 (0x1 << HPIPE_MISC_TXDCLK_2X_OFFSET)
440#define HPIPE_MISC_CLK500_EN_OFFSET 7
441#define HPIPE_MISC_CLK500_EN_MASK \
442 (0x1 << HPIPE_MISC_CLK500_EN_OFFSET)
443#define HPIPE_MISC_REFCLK_SEL_OFFSET 10
444#define HPIPE_MISC_REFCLK_SEL_MASK \
445 (0x1 << HPIPE_MISC_REFCLK_SEL_OFFSET)
446
447#define HPIPE_RX_CONTROL_1_REG 0x140
448#define HPIPE_RX_CONTROL_1_RXCLK2X_SEL_OFFSET 11
449#define HPIPE_RX_CONTROL_1_RXCLK2X_SEL_MASK \
450 (0x1 << HPIPE_RX_CONTROL_1_RXCLK2X_SEL_OFFSET)
451#define HPIPE_RX_CONTROL_1_CLK8T_EN_OFFSET 12
452#define HPIPE_RX_CONTROL_1_CLK8T_EN_MASK \
453 (0x1 << HPIPE_RX_CONTROL_1_CLK8T_EN_OFFSET)
454
455#define HPIPE_PWR_CTR_REG 0x148
456#define HPIPE_PWR_CTR_RST_DFE_OFFSET 0
457#define HPIPE_PWR_CTR_RST_DFE_MASK \
458 (0x1 << HPIPE_PWR_CTR_RST_DFE_OFFSET)
459#define HPIPE_PWR_CTR_SFT_RST_OFFSET 10
460#define HPIPE_PWR_CTR_SFT_RST_MASK \
461 (0x1 << HPIPE_PWR_CTR_SFT_RST_OFFSET)
462
463#define HPIPE_SPD_DIV_FORCE_REG 0x154
464#define HPIPE_TXDIGCK_DIV_FORCE_OFFSET 7
465#define HPIPE_TXDIGCK_DIV_FORCE_MASK \
466 (0x1 << HPIPE_TXDIGCK_DIV_FORCE_OFFSET)
467#define HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_OFFSET 8
468#define HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_MASK \
469 (0x3 << HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_OFFSET)
470#define HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_FORCE_OFFSET 10
471#define HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_FORCE_MASK \
472 (0x1 << HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_FORCE_OFFSET)
473#define HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_OFFSET 13
474#define HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_MASK \
475 (0x3 << HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_OFFSET)
476#define HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_FORCE_OFFSET 15
477#define HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_FORCE_MASK \
478 (0x1 << HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_FORCE_OFFSET)
479
Grzegorz Jaszczyk2ed16f52018-06-29 18:00:33 +0200480/* HPIPE_RX_CLK_ALIGN90_AND_TX_IDLE_CALIBRATION_CTRL_REG */
481#define HPIPE_RX_CLK_ALIGN90_AND_TX_IDLE_CALIB_CTRL_REG 0x168
482#define HPIPE_CAL_RXCLKALIGN_90_EXT_EN_OFFSET 15
483#define HPIPE_CAL_RXCLKALIGN_90_EXT_EN_MASK \
484 (0x1 << HPIPE_CAL_RXCLKALIGN_90_EXT_EN_OFFSET)
485#define HPIPE_CAL_OS_PH_EXT_OFFSET 8
486#define HPIPE_CAL_OS_PH_EXT_MASK \
487 (0x7f << HPIPE_CAL_OS_PH_EXT_OFFSET)
488
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300489#define HPIPE_SAMPLER_N_PROC_CALIB_CTRL_REG 0x16C
490#define HPIPE_RX_SAMPLER_OS_GAIN_OFFSET 6
491#define HPIPE_RX_SAMPLER_OS_GAIN_MASK \
492 (0x3 << HPIPE_RX_SAMPLER_OS_GAIN_OFFSET)
493#define HPIPE_SMAPLER_OFFSET 12
494#define HPIPE_SMAPLER_MASK \
495 (0x1 << HPIPE_SMAPLER_OFFSET)
496
497#define HPIPE_TX_REG1_REG 0x174
498#define HPIPE_TX_REG1_TX_EMPH_RES_OFFSET 5
499#define HPIPE_TX_REG1_TX_EMPH_RES_MASK \
500 (0x3 << HPIPE_TX_REG1_TX_EMPH_RES_OFFSET)
501#define HPIPE_TX_REG1_SLC_EN_OFFSET 10
502#define HPIPE_TX_REG1_SLC_EN_MASK \
503 (0x3f << HPIPE_TX_REG1_SLC_EN_OFFSET)
504
505#define HPIPE_PWR_CTR_DTL_REG 0x184
506#define HPIPE_PWR_CTR_DTL_SQ_DET_EN_OFFSET 0
507#define HPIPE_PWR_CTR_DTL_SQ_DET_EN_MASK \
508 (0x1 << HPIPE_PWR_CTR_DTL_SQ_DET_EN_OFFSET)
509#define HPIPE_PWR_CTR_DTL_SQ_PLOOP_EN_OFFSET 1
510#define HPIPE_PWR_CTR_DTL_SQ_PLOOP_EN_MASK \
511 (0x1 << HPIPE_PWR_CTR_DTL_SQ_PLOOP_EN_OFFSET)
512#define HPIPE_PWR_CTR_DTL_FLOOP_EN_OFFSET 2
513#define HPIPE_PWR_CTR_DTL_FLOOP_EN_MASK \
514 (0x1 << HPIPE_PWR_CTR_DTL_FLOOP_EN_OFFSET)
515#define HPIPE_PWR_CTR_DTL_CLAMPING_SEL_OFFSET 4
516#define HPIPE_PWR_CTR_DTL_CLAMPING_SEL_MASK \
517 (0x7 << HPIPE_PWR_CTR_DTL_CLAMPING_SEL_OFFSET)
518#define HPIPE_PWR_CTR_DTL_INTPCLK_DIV_FORCE_OFFSET 10
519#define HPIPE_PWR_CTR_DTL_INTPCLK_DIV_FORCE_MASK \
520 (0x1 << HPIPE_PWR_CTR_DTL_INTPCLK_DIV_FORCE_OFFSET)
521#define HPIPE_PWR_CTR_DTL_CLK_MODE_OFFSET 12
522#define HPIPE_PWR_CTR_DTL_CLK_MODE_MASK \
523 (0x3 << HPIPE_PWR_CTR_DTL_CLK_MODE_OFFSET)
524#define HPIPE_PWR_CTR_DTL_CLK_MODE_FORCE_OFFSET 14
525#define HPIPE_PWR_CTR_DTL_CLK_MODE_FORCE_MASK \
526 (1 << HPIPE_PWR_CTR_DTL_CLK_MODE_FORCE_OFFSET)
527
528#define HPIPE_PHASE_CONTROL_REG 0x188
529#define HPIPE_OS_PH_OFFSET_OFFSET 0
530#define HPIPE_OS_PH_OFFSET_MASK \
531 (0x7f << HPIPE_OS_PH_OFFSET_OFFSET)
532#define HPIPE_OS_PH_OFFSET_FORCE_OFFSET 7
533#define HPIPE_OS_PH_OFFSET_FORCE_MASK \
534 (0x1 << HPIPE_OS_PH_OFFSET_FORCE_OFFSET)
535#define HPIPE_OS_PH_VALID_OFFSET 8
536#define HPIPE_OS_PH_VALID_MASK \
537 (0x1 << HPIPE_OS_PH_VALID_OFFSET)
538
Grzegorz Jaszczyk2ed16f52018-06-29 18:00:33 +0200539#define HPIPE_DATA_PHASE_OFF_CTRL_REG 0x1A0
540#define HPIPE_DATA_PHASE_ADAPTED_OS_PH_OFFSET 9
541#define HPIPE_DATA_PHASE_ADAPTED_OS_PH_MASK \
542 (0x7f << HPIPE_DATA_PHASE_ADAPTED_OS_PH_OFFSET)
543
544#define HPIPE_ADAPTED_FFE_CAPACITOR_COUNTER_CTRL_REG 0x1A4
545#define HPIPE_ADAPTED_FFE_ADAPTED_FFE_RES_OFFSET 12
546#define HPIPE_ADAPTED_FFE_ADAPTED_FFE_RES_MASK \
547 (0x3 << HPIPE_ADAPTED_FFE_ADAPTED_FFE_RES_OFFSET)
548#define HPIPE_ADAPTED_FFE_ADAPTED_FFE_CAP_OFFSET 8
549#define HPIPE_ADAPTED_FFE_ADAPTED_FFE_CAP_MASK \
550 (0xf << HPIPE_ADAPTED_FFE_ADAPTED_FFE_CAP_OFFSET)
551
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300552#define HPIPE_SQ_GLITCH_FILTER_CTRL 0x1c8
553#define HPIPE_SQ_DEGLITCH_WIDTH_P_OFFSET 0
554#define HPIPE_SQ_DEGLITCH_WIDTH_P_MASK \
555 (0xf << HPIPE_SQ_DEGLITCH_WIDTH_P_OFFSET)
556#define HPIPE_SQ_DEGLITCH_WIDTH_N_OFFSET 4
557#define HPIPE_SQ_DEGLITCH_WIDTH_N_MASK \
558 (0xf << HPIPE_SQ_DEGLITCH_WIDTH_N_OFFSET)
559#define HPIPE_SQ_DEGLITCH_EN_OFFSET 8
560#define HPIPE_SQ_DEGLITCH_EN_MASK \
561 (0x1 << HPIPE_SQ_DEGLITCH_EN_OFFSET)
562
563#define HPIPE_FRAME_DETECT_CTRL_0_REG 0x214
564#define HPIPE_TRAIN_PAT_NUM_OFFSET 0x7
565#define HPIPE_TRAIN_PAT_NUM_MASK \
566 (0x1FF << HPIPE_TRAIN_PAT_NUM_OFFSET)
567
568#define HPIPE_FRAME_DETECT_CTRL_3_REG 0x220
569#define HPIPE_PATTERN_LOCK_LOST_TIMEOUT_EN_OFFSET 12
570#define HPIPE_PATTERN_LOCK_LOST_TIMEOUT_EN_MASK \
571 (0x1 << HPIPE_PATTERN_LOCK_LOST_TIMEOUT_EN_OFFSET)
572
573#define HPIPE_DME_REG 0x228
574#define HPIPE_DME_ETHERNET_MODE_OFFSET 7
575#define HPIPE_DME_ETHERNET_MODE_MASK \
576 (0x1 << HPIPE_DME_ETHERNET_MODE_OFFSET)
577
Grzegorz Jaszczyk2ed16f52018-06-29 18:00:33 +0200578#define HPIPE_TRX_TRAIN_CTRL_0_REG 0x22c
579#define HPIPE_TRX_TX_F0T_EO_BASED_OFFSET 14
580#define HPIPE_TRX_TX_F0T_EO_BASED_MASK \
581 (1 << HPIPE_TRX_TX_F0T_EO_BASED_OFFSET)
582#define HPIPE_TRX_UPDATE_THEN_HOLD_OFFSET 6
583#define HPIPE_TRX_UPDATE_THEN_HOLD_MASK \
584 (1 << HPIPE_TRX_UPDATE_THEN_HOLD_OFFSET)
585#define HPIPE_TRX_TX_CTRL_CLK_EN_OFFSET 5
586#define HPIPE_TRX_TX_CTRL_CLK_EN_MASK \
587 (1 << HPIPE_TRX_TX_CTRL_CLK_EN_OFFSET)
588#define HPIPE_TRX_RX_ANA_IF_CLK_ENE_OFFSET 4
589#define HPIPE_TRX_RX_ANA_IF_CLK_ENE_MASK \
590 (1 << HPIPE_TRX_RX_ANA_IF_CLK_ENE_OFFSET)
591#define HPIPE_TRX_TX_TRAIN_EN_OFFSET 1
592#define HPIPE_TRX_TX_TRAIN_EN_MASK \
593 (1 << HPIPE_TRX_TX_TRAIN_EN_OFFSET)
594#define HPIPE_TRX_RX_TRAIN_EN_OFFSET 0
595#define HPIPE_TRX_RX_TRAIN_EN_MASK \
596 (1 << HPIPE_TRX_RX_TRAIN_EN_OFFSET)
597
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300598#define HPIPE_TX_TRAIN_CTRL_0_REG 0x268
599#define HPIPE_TX_TRAIN_P2P_HOLD_OFFSET 15
600#define HPIPE_TX_TRAIN_P2P_HOLD_MASK \
601 (0x1 << HPIPE_TX_TRAIN_P2P_HOLD_OFFSET)
602
603#define HPIPE_TX_TRAIN_CTRL_REG 0x26C
604#define HPIPE_TX_TRAIN_CTRL_G1_OFFSET 0
605#define HPIPE_TX_TRAIN_CTRL_G1_MASK \
606 (0x1 << HPIPE_TX_TRAIN_CTRL_G1_OFFSET)
607#define HPIPE_TX_TRAIN_CTRL_GN1_OFFSET 1
608#define HPIPE_TX_TRAIN_CTRL_GN1_MASK \
609 (0x1 << HPIPE_TX_TRAIN_CTRL_GN1_OFFSET)
610#define HPIPE_TX_TRAIN_CTRL_G0_OFFSET 2
611#define HPIPE_TX_TRAIN_CTRL_G0_MASK \
612 (0x1 << HPIPE_TX_TRAIN_CTRL_G0_OFFSET)
613
614#define HPIPE_TX_TRAIN_CTRL_4_REG 0x278
615#define HPIPE_TRX_TRAIN_TIMER_OFFSET 0
616#define HPIPE_TRX_TRAIN_TIMER_MASK \
617 (0x3FF << HPIPE_TRX_TRAIN_TIMER_OFFSET)
618
619#define HPIPE_TX_TRAIN_CTRL_5_REG 0x2A4
620#define HPIPE_RX_TRAIN_TIMER_OFFSET 0
621#define HPIPE_RX_TRAIN_TIMER_MASK \
622 (0x3ff << HPIPE_RX_TRAIN_TIMER_OFFSET)
623#define HPIPE_TX_TRAIN_START_SQ_EN_OFFSET 11
624#define HPIPE_TX_TRAIN_START_SQ_EN_MASK \
625 (0x1 << HPIPE_TX_TRAIN_START_SQ_EN_OFFSET)
626#define HPIPE_TX_TRAIN_START_FRM_DET_EN_OFFSET 12
627#define HPIPE_TX_TRAIN_START_FRM_DET_EN_MASK \
628 (0x1 << HPIPE_TX_TRAIN_START_FRM_DET_EN_OFFSET)
629#define HPIPE_TX_TRAIN_START_FRM_LOCK_EN_OFFSET 13
630#define HPIPE_TX_TRAIN_START_FRM_LOCK_EN_MASK \
631 (0x1 << HPIPE_TX_TRAIN_START_FRM_LOCK_EN_OFFSET)
632#define HPIPE_TX_TRAIN_WAIT_TIME_EN_OFFSET 14
633#define HPIPE_TX_TRAIN_WAIT_TIME_EN_MASK \
634 (0x1 << HPIPE_TX_TRAIN_WAIT_TIME_EN_OFFSET)
635
Grzegorz Jaszczyk2ed16f52018-06-29 18:00:33 +0200636#define HPIPE_INTERRUPT_1_REGISTER 0x2AC
637#define HPIPE_TRX_TRAIN_FAILED_OFFSET 6
638#define HPIPE_TRX_TRAIN_FAILED_MASK \
639 (1 << HPIPE_TRX_TRAIN_FAILED_OFFSET)
640#define HPIPE_TRX_TRAIN_TIME_OUT_INT_OFFSET 5
641#define HPIPE_TRX_TRAIN_TIME_OUT_INT_MASK \
642 (1 << HPIPE_TRX_TRAIN_TIME_OUT_INT_OFFSET)
643#define HPIPE_INTERRUPT_TRX_TRAIN_DONE_OFFSET 4
644#define HPIPE_INTERRUPT_TRX_TRAIN_DONE_MASK \
645 (1 << HPIPE_INTERRUPT_TRX_TRAIN_DONE_OFFSET)
646#define HPIPE_INTERRUPT_DFE_DONE_INT_OFFSET 3
647#define HPIPE_INTERRUPT_DFE_DONE_INT_MASK \
648 (1 << HPIPE_INTERRUPT_DFE_DONE_INT_OFFSET)
649#define HPIPE_INTERRUPT_RX_TRAIN_COMPLETE_INT_OFFSET 1
650#define HPIPE_INTERRUPT_RX_TRAIN_COMPLETE_INT_MASK \
651 (1 << HPIPE_INTERRUPT_RX_TRAIN_COMPLETE_INT_OFFSET)
652
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300653#define HPIPE_TX_TRAIN_REG 0x31C
654#define HPIPE_TX_TRAIN_CHK_INIT_OFFSET 4
655#define HPIPE_TX_TRAIN_CHK_INIT_MASK \
656 (0x1 << HPIPE_TX_TRAIN_CHK_INIT_OFFSET)
657#define HPIPE_TX_TRAIN_COE_FM_PIN_PCIE3_OFFSET 7
658#define HPIPE_TX_TRAIN_COE_FM_PIN_PCIE3_MASK \
659 (0x1 << HPIPE_TX_TRAIN_COE_FM_PIN_PCIE3_OFFSET)
660#define HPIPE_TX_TRAIN_16BIT_AUTO_EN_OFFSET 8
661#define HPIPE_TX_TRAIN_16BIT_AUTO_EN_MASK \
662 (0x1 << HPIPE_TX_TRAIN_16BIT_AUTO_EN_OFFSET)
663#define HPIPE_TX_TRAIN_PAT_SEL_OFFSET 9
664#define HPIPE_TX_TRAIN_PAT_SEL_MASK \
665 (0x1 << HPIPE_TX_TRAIN_PAT_SEL_OFFSET)
666
667#define HPIPE_SAVED_DFE_VALUES_REG 0x328
668#define HPIPE_SAVED_DFE_VALUES_SAV_F0D_OFFSET 10
669#define HPIPE_SAVED_DFE_VALUES_SAV_F0D_MASK \
670 (0x3f << HPIPE_SAVED_DFE_VALUES_SAV_F0D_OFFSET)
671
672#define HPIPE_CDR_CONTROL_REG 0x418
Grzegorz Jaszczyk3eb5e402019-03-08 19:51:21 +0100673#define HPIPE_CRD_MIDPOINT_PHASE_OS_OFFSET 0
674#define HPIPE_CRD_MIDPOINT_PHASE_OS_MASK \
675 (0x3f << HPIPE_CRD_MIDPOINT_PHASE_OS_OFFSET)
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300676#define HPIPE_CDR_MAX_DFE_ADAPT_1_OFFSET 6
677#define HPIPE_CDR_MAX_DFE_ADAPT_1_MASK \
678 (0x7 << HPIPE_CDR_MAX_DFE_ADAPT_1_OFFSET)
Grzegorz Jaszczyk3eb5e402019-03-08 19:51:21 +0100679#define HPIPE_CDR_MAX_DFE_ADAPT_0_OFFSET 9
680#define HPIPE_CDR_MAX_DFE_ADAPT_0_MASK \
681 (0x7 << HPIPE_CDR_MAX_DFE_ADAPT_0_OFFSET)
682#define HPIPE_CDR_RX_MAX_DFE_ADAPT_1_OFFSET 12
683#define HPIPE_CDR_RX_MAX_DFE_ADAPT_1_MASK \
684 (0x3 << HPIPE_CDR_RX_MAX_DFE_ADAPT_1_OFFSET)
685#define HPIPE_CDR_RX_MAX_DFE_ADAPT_0_OFFSET 14
686#define HPIPE_CDR_RX_MAX_DFE_ADAPT_0_MASK \
687 (0x3 << HPIPE_CDR_RX_MAX_DFE_ADAPT_0_OFFSET)
688
689
690#define HPIPE_CDR_CONTROL1_REG 0x41c
691#define HPIPE_CRD2_CRD_MIDPOINT_SMALL_THRES_K_OFF 12
692#define HPIPE_CRD2_CRD_MIDPOINT_SMALL_THRES_K_MASK \
693 (0xf << HPIPE_CRD2_CRD_MIDPOINT_SMALL_THRES_K_OFF)
694
695#define HPIPE_CDR_CONTROL2_REG 0x420
696#define HPIPE_CRD2_CRD_MIDPOINT_LARGE_THRES_K_OFF 12
697#define HPIPE_CRD2_CRD_MIDPOINT_LARGE_THRES_K_MASK \
698 (0xf << HPIPE_CRD2_CRD_MIDPOINT_LARGE_THRES_K_OFF)
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300699
700#define HPIPE_TX_TRAIN_CTRL_11_REG 0x438
701#define HPIPE_TX_STATUS_CHECK_MODE_OFFSET 6
702#define HPIPE_TX_TX_STATUS_CHECK_MODE_MASK \
703 (0x1 << HPIPE_TX_STATUS_CHECK_MODE_OFFSET)
704#define HPIPE_TX_NUM_OF_PRESET_OFFSET 10
705#define HPIPE_TX_NUM_OF_PRESET_MASK \
706 (0x7 << HPIPE_TX_NUM_OF_PRESET_OFFSET)
707#define HPIPE_TX_SWEEP_PRESET_EN_OFFSET 15
708#define HPIPE_TX_SWEEP_PRESET_EN_MASK \
709 (0x1 << HPIPE_TX_SWEEP_PRESET_EN_OFFSET)
710
711#define HPIPE_G1_SETTINGS_3_REG 0x440
712#define HPIPE_G1_SETTINGS_3_G1_FFE_CAP_SEL_OFFSET 0
713#define HPIPE_G1_SETTINGS_3_G1_FFE_CAP_SEL_MASK \
714 (0xf << HPIPE_G1_SETTINGS_3_G1_FFE_CAP_SEL_OFFSET)
715#define HPIPE_G1_SETTINGS_3_G1_FFE_RES_SEL_OFFSET 4
716#define HPIPE_G1_SETTINGS_3_G1_FFE_RES_SEL_MASK \
717 (0x7 << HPIPE_G1_SETTINGS_3_G1_FFE_RES_SEL_OFFSET)
718#define HPIPE_G1_SETTINGS_3_G1_FFE_SETTING_FORCE_OFFSET 7
719#define HPIPE_G1_SETTINGS_3_G1_FFE_SETTING_FORCE_MASK \
720 (0x1 << HPIPE_G1_SETTINGS_3_G1_FFE_SETTING_FORCE_OFFSET)
721#define HPIPE_G1_SETTINGS_3_G1_FBCK_SEL_OFFSET 9
722#define HPIPE_G1_SETTINGS_3_G1_FBCK_SEL_MASK \
723 (0x1 << HPIPE_G1_SETTINGS_3_G1_FBCK_SEL_OFFSET)
724#define HPIPE_G1_SETTINGS_3_G1_FFE_DEG_RES_LEVEL_OFFSET 12
725#define HPIPE_G1_SETTINGS_3_G1_FFE_DEG_RES_LEVEL_MASK \
726 (0x3 << HPIPE_G1_SETTINGS_3_G1_FFE_DEG_RES_LEVEL_OFFSET)
727#define HPIPE_G1_SETTINGS_3_G1_FFE_LOAD_RES_LEVEL_OFFSET 14
728#define HPIPE_G1_SETTINGS_3_G1_FFE_LOAD_RES_LEVEL_MASK \
729 (0x3 << HPIPE_G1_SETTINGS_3_G1_FFE_LOAD_RES_LEVEL_OFFSET)
730
731#define HPIPE_G1_SETTINGS_4_REG 0x444
732#define HPIPE_G1_SETTINGS_4_G1_DFE_RES_OFFSET 8
733#define HPIPE_G1_SETTINGS_4_G1_DFE_RES_MASK \
734 (0x3 << HPIPE_G1_SETTINGS_4_G1_DFE_RES_OFFSET)
735
736#define HPIPE_G2_SETTINGS_4_REG 0x44c
737#define HPIPE_G2_DFE_RES_OFFSET 8
738#define HPIPE_G2_DFE_RES_MASK \
739 (0x3 << HPIPE_G2_DFE_RES_OFFSET)
740
741#define HPIPE_G3_SETTING_3_REG 0x450
742#define HPIPE_G3_FFE_CAP_SEL_OFFSET 0
743#define HPIPE_G3_FFE_CAP_SEL_MASK \
744 (0xf << HPIPE_G3_FFE_CAP_SEL_OFFSET)
745#define HPIPE_G3_FFE_RES_SEL_OFFSET 4
746#define HPIPE_G3_FFE_RES_SEL_MASK \
747 (0x7 << HPIPE_G3_FFE_RES_SEL_OFFSET)
748#define HPIPE_G3_FFE_SETTING_FORCE_OFFSET 7
749#define HPIPE_G3_FFE_SETTING_FORCE_MASK \
750 (0x1 << HPIPE_G3_FFE_SETTING_FORCE_OFFSET)
751#define HPIPE_G3_FFE_DEG_RES_LEVEL_OFFSET 12
752#define HPIPE_G3_FFE_DEG_RES_LEVEL_MASK \
753 (0x3 << HPIPE_G3_FFE_DEG_RES_LEVEL_OFFSET)
754#define HPIPE_G3_FFE_LOAD_RES_LEVEL_OFFSET 14
755#define HPIPE_G3_FFE_LOAD_RES_LEVEL_MASK \
756 (0x3 << HPIPE_G3_FFE_LOAD_RES_LEVEL_OFFSET)
757
758#define HPIPE_G3_SETTING_4_REG 0x454
759#define HPIPE_G3_DFE_RES_OFFSET 8
760#define HPIPE_G3_DFE_RES_MASK (0x3 << HPIPE_G3_DFE_RES_OFFSET)
761
762#define HPIPE_TX_PRESET_INDEX_REG 0x468
763#define HPIPE_TX_PRESET_INDEX_OFFSET 0
764#define HPIPE_TX_PRESET_INDEX_MASK \
765 (0xf << HPIPE_TX_PRESET_INDEX_OFFSET)
766
767#define HPIPE_DFE_CONTROL_REG 0x470
768#define HPIPE_DFE_TX_MAX_DFE_ADAPT_OFFSET 14
769#define HPIPE_DFE_TX_MAX_DFE_ADAPT_MASK \
770 (0x3 << HPIPE_DFE_TX_MAX_DFE_ADAPT_OFFSET)
771
772#define HPIPE_DFE_CTRL_28_REG 0x49C
773#define HPIPE_DFE_CTRL_28_PIPE4_OFFSET 7
774#define HPIPE_DFE_CTRL_28_PIPE4_MASK \
775 (0x1 << HPIPE_DFE_CTRL_28_PIPE4_OFFSET)
776
Grzegorz Jaszczyk3eb5e402019-03-08 19:51:21 +0100777#define HPIPE_TRX0_REG 0x4cc /*in doc 0x133*4*/
778#define HPIPE_TRX0_GAIN_TRAIN_WITH_SAMPLER_OFF 2
779#define HPIPE_TRX0_GAIN_TRAIN_WITH_SAMPLER_MASK \
780 (0x1 << HPIPE_TRX0_GAIN_TRAIN_WITH_SAMPLER_OFF)
781#define HPIPE_TRX0_GAIN_TRAIN_WITH_C_OFF 0
782#define HPIPE_TRX0_GAIN_TRAIN_WITH_C_MASK \
783 (0x1 << HPIPE_TRX0_GAIN_TRAIN_WITH_C_OFF)
784
785#define HPIPE_TRX_REG1 0x4d0 /*in doc 0x134*4*/
786#define HPIPE_TRX_REG1_MIN_BOOST_MODE_OFF 3
787#define HPIPE_TRX_REG1_MIN_BOOST_MODE_MASK \
788 (0x1 << HPIPE_TRX_REG1_MIN_BOOST_MODE_OFF)
789#define HPIPE_TRX_REG1_SUMFTAP_EN_OFF 10
790#define HPIPE_TRX_REG1_SUMFTAP_EN_MASK \
791 (0x3f << HPIPE_TRX_REG1_SUMFTAP_EN_OFF)
792
793#define HPIPE_TRX_REG2 0x4d8 /*in doc 0x136*4*/
794#define HPIPE_TRX_REG2_SUMF_BOOST_TARGET_C_OFF 11
795#define HPIPE_TRX_REG2_SUMF_BOOST_TARGET_C_MASK \
796 (0x1f << HPIPE_TRX_REG2_SUMF_BOOST_TARGET_C_OFF)
797#define HPIPE_TRX_REG2_SUMF_BOOST_TARGET_K_OFF 7
798#define HPIPE_TRX_REG2_SUMF_BOOST_TARGET_K_MASK \
799 (0xf << HPIPE_TRX_REG2_SUMF_BOOST_TARGET_K_OFF)
800
Konstantin Porotchkin5d93d082018-04-24 19:23:09 +0300801#define HPIPE_G1_SETTING_5_REG 0x538
802#define HPIPE_G1_SETTING_5_G1_ICP_OFFSET 0
803#define HPIPE_G1_SETTING_5_G1_ICP_MASK \
804 (0xf << HPIPE_G1_SETTING_5_G1_ICP_OFFSET)
805
806#define HPIPE_G3_SETTING_5_REG 0x548
807#define HPIPE_G3_SETTING_5_G3_ICP_OFFSET 0
808#define HPIPE_G3_SETTING_5_G3_ICP_MASK \
809 (0xf << HPIPE_G3_SETTING_5_G3_ICP_OFFSET)
810
811#define HPIPE_LANE_CONFIG0_REG 0x600
812#define HPIPE_LANE_CONFIG0_TXDEEMPH0_OFFSET 0
813#define HPIPE_LANE_CONFIG0_TXDEEMPH0_MASK \
814 (0x1 << HPIPE_LANE_CONFIG0_TXDEEMPH0_OFFSET)
815
816#define HPIPE_LANE_STATUS1_REG 0x60C
817#define HPIPE_LANE_STATUS1_PCLK_EN_OFFSET 0
818#define HPIPE_LANE_STATUS1_PCLK_EN_MASK \
819 (0x1 << HPIPE_LANE_STATUS1_PCLK_EN_OFFSET)
820
821#define HPIPE_LANE_CFG4_REG 0x620
822#define HPIPE_LANE_CFG4_DFE_CTRL_OFFSET 0
823#define HPIPE_LANE_CFG4_DFE_CTRL_MASK \
824 (0x7 << HPIPE_LANE_CFG4_DFE_CTRL_OFFSET)
825#define HPIPE_LANE_CFG4_DFE_EN_SEL_OFFSET 3
826#define HPIPE_LANE_CFG4_DFE_EN_SEL_MASK \
827 (0x1 << HPIPE_LANE_CFG4_DFE_EN_SEL_OFFSET)
828#define HPIPE_LANE_CFG4_DFE_OVER_OFFSET 6
829#define HPIPE_LANE_CFG4_DFE_OVER_MASK \
830 (0x1 << HPIPE_LANE_CFG4_DFE_OVER_OFFSET)
831#define HPIPE_LANE_CFG4_SSC_CTRL_OFFSET 7
832#define HPIPE_LANE_CFG4_SSC_CTRL_MASK \
833 (0x1 << HPIPE_LANE_CFG4_SSC_CTRL_OFFSET)
834
835#define HPIPE_LANE_EQ_REMOTE_SETTING_REG 0x6f8
836#define HPIPE_LANE_CFG_FOM_DIRN_OVERRIDE_OFFSET 0
837#define HPIPE_LANE_CFG_FOM_DIRN_OVERRIDE_MASK \
838 (0x1 << HPIPE_LANE_CFG_FOM_DIRN_OVERRIDE_OFFSET)
839#define HPIPE_LANE_CFG_FOM_ONLY_MODE_OFFFSET 1
840#define HPIPE_LANE_CFG_FOM_ONLY_MODE_MASK \
841 (0x1 << HPIPE_LANE_CFG_FOM_ONLY_MODE_OFFFSET)
842#define HPIPE_LANE_CFG_FOM_PRESET_VECTOR_OFFSET 2
843#define HPIPE_LANE_CFG_FOM_PRESET_VECTOR_MASK \
844 (0xf << HPIPE_LANE_CFG_FOM_PRESET_VECTOR_OFFSET)
845
846#define HPIPE_LANE_EQU_CONFIG_0_REG 0x69C
847#define HPIPE_CFG_PHY_RC_EP_OFFSET 12
848#define HPIPE_CFG_PHY_RC_EP_MASK \
849 (0x1 << HPIPE_CFG_PHY_RC_EP_OFFSET)
850
851#define HPIPE_LANE_EQ_CFG1_REG 0x6a0
852#define HPIPE_CFG_UPDATE_POLARITY_OFFSET 12
853#define HPIPE_CFG_UPDATE_POLARITY_MASK \
854 (0x1 << HPIPE_CFG_UPDATE_POLARITY_OFFSET)
855
856#define HPIPE_LANE_EQ_CFG2_REG 0x6a4
857#define HPIPE_CFG_EQ_BUNDLE_DIS_OFFSET 14
858#define HPIPE_CFG_EQ_BUNDLE_DIS_MASK \
859 (0x1 << HPIPE_CFG_EQ_BUNDLE_DIS_OFFSET)
860
861#define HPIPE_RST_CLK_CTRL_REG 0x704
862#define HPIPE_RST_CLK_CTRL_PIPE_RST_OFFSET 0
863#define HPIPE_RST_CLK_CTRL_PIPE_RST_MASK \
864 (0x1 << HPIPE_RST_CLK_CTRL_PIPE_RST_OFFSET)
865#define HPIPE_RST_CLK_CTRL_FIXED_PCLK_OFFSET 2
866#define HPIPE_RST_CLK_CTRL_FIXED_PCLK_MASK \
867 (0x1 << HPIPE_RST_CLK_CTRL_FIXED_PCLK_OFFSET)
868#define HPIPE_RST_CLK_CTRL_PIPE_WIDTH_OFFSET 3
869#define HPIPE_RST_CLK_CTRL_PIPE_WIDTH_MASK \
870 (0x1 << HPIPE_RST_CLK_CTRL_PIPE_WIDTH_OFFSET)
871#define HPIPE_RST_CLK_CTRL_CORE_FREQ_SEL_OFFSET 9
872#define HPIPE_RST_CLK_CTRL_CORE_FREQ_SEL_MASK \
873 (0x1 << HPIPE_RST_CLK_CTRL_CORE_FREQ_SEL_OFFSET)
874
875#define HPIPE_TST_MODE_CTRL_REG 0x708
876#define HPIPE_TST_MODE_CTRL_MODE_MARGIN_OFFSET 2
877#define HPIPE_TST_MODE_CTRL_MODE_MARGIN_MASK \
878 (0x1 << HPIPE_TST_MODE_CTRL_MODE_MARGIN_OFFSET)
879
880#define HPIPE_CLK_SRC_LO_REG 0x70c
881#define HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SEL_OFFSET 1
882#define HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SEL_MASK \
883 (0x1 << HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SEL_OFFSET)
884#define HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SCALE_OFFSET 2
885#define HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SCALE_MASK \
886 (0x3 << HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SCALE_OFFSET)
887#define HPIPE_CLK_SRC_LO_PLL_RDY_DL_OFFSET 5
888#define HPIPE_CLK_SRC_LO_PLL_RDY_DL_MASK \
889 (0x7 << HPIPE_CLK_SRC_LO_PLL_RDY_DL_OFFSET)
890
891#define HPIPE_CLK_SRC_HI_REG 0x710
892#define HPIPE_CLK_SRC_HI_LANE_STRT_OFFSET 0
893#define HPIPE_CLK_SRC_HI_LANE_STRT_MASK \
894 (0x1 << HPIPE_CLK_SRC_HI_LANE_STRT_OFFSET)
895#define HPIPE_CLK_SRC_HI_LANE_BREAK_OFFSET 1
896#define HPIPE_CLK_SRC_HI_LANE_BREAK_MASK \
897 (0x1 << HPIPE_CLK_SRC_HI_LANE_BREAK_OFFSET)
898#define HPIPE_CLK_SRC_HI_LANE_MASTER_OFFSET 2
899#define HPIPE_CLK_SRC_HI_LANE_MASTER_MASK \
900 (0x1 << HPIPE_CLK_SRC_HI_LANE_MASTER_OFFSET)
901#define HPIPE_CLK_SRC_HI_MODE_PIPE_OFFSET 7
902#define HPIPE_CLK_SRC_HI_MODE_PIPE_MASK \
903 (0x1 << HPIPE_CLK_SRC_HI_MODE_PIPE_OFFSET)
904
905#define HPIPE_GLOBAL_MISC_CTRL 0x718
906#define HPIPE_GLOBAL_PM_CTRL 0x740
907#define HPIPE_GLOBAL_PM_RXDLOZ_WAIT_OFFSET 0
908#define HPIPE_GLOBAL_PM_RXDLOZ_WAIT_MASK \
909 (0xFF << HPIPE_GLOBAL_PM_RXDLOZ_WAIT_OFFSET)
910
911/* General defines */
912#define PLL_LOCK_TIMEOUT 15000
913
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +0000914#endif /* COMPHY_CP110_H */