1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (C) 2020 Marvell International Ltd.
4  *
5  * Configuration and status register (CSR) type definitions for
6  * Octeon asxx.
7  */
8 
9 #ifndef __CVMX_ASXX_DEFS_H__
10 #define __CVMX_ASXX_DEFS_H__
11 
12 #define CVMX_ASXX_GMII_RX_CLK_SET(offset)    (0x00011800B0000180ull)
13 #define CVMX_ASXX_GMII_RX_DAT_SET(offset)    (0x00011800B0000188ull)
14 #define CVMX_ASXX_INT_EN(offset)	     (0x00011800B0000018ull + ((offset) & 1) * 0x8000000ull)
15 #define CVMX_ASXX_INT_REG(offset)	     (0x00011800B0000010ull + ((offset) & 1) * 0x8000000ull)
16 #define CVMX_ASXX_MII_RX_DAT_SET(offset)     (0x00011800B0000190ull)
17 #define CVMX_ASXX_PRT_LOOP(offset)	     (0x00011800B0000040ull + ((offset) & 1) * 0x8000000ull)
18 #define CVMX_ASXX_RLD_BYPASS(offset)	     (0x00011800B0000248ull + ((offset) & 1) * 0x8000000ull)
19 #define CVMX_ASXX_RLD_BYPASS_SETTING(offset) (0x00011800B0000250ull + ((offset) & 1) * 0x8000000ull)
20 #define CVMX_ASXX_RLD_COMP(offset)	     (0x00011800B0000220ull + ((offset) & 1) * 0x8000000ull)
21 #define CVMX_ASXX_RLD_DATA_DRV(offset)	     (0x00011800B0000218ull + ((offset) & 1) * 0x8000000ull)
22 #define CVMX_ASXX_RLD_FCRAM_MODE(offset)     (0x00011800B0000210ull + ((offset) & 1) * 0x8000000ull)
23 #define CVMX_ASXX_RLD_NCTL_STRONG(offset)    (0x00011800B0000230ull + ((offset) & 1) * 0x8000000ull)
24 #define CVMX_ASXX_RLD_NCTL_WEAK(offset)	     (0x00011800B0000240ull + ((offset) & 1) * 0x8000000ull)
25 #define CVMX_ASXX_RLD_PCTL_STRONG(offset)    (0x00011800B0000228ull + ((offset) & 1) * 0x8000000ull)
26 #define CVMX_ASXX_RLD_PCTL_WEAK(offset)	     (0x00011800B0000238ull + ((offset) & 1) * 0x8000000ull)
27 #define CVMX_ASXX_RLD_SETTING(offset)	     (0x00011800B0000258ull + ((offset) & 1) * 0x8000000ull)
28 #define CVMX_ASXX_RX_CLK_SETX(offset, block_id)                                                    \
29 	(0x00011800B0000020ull + (((offset) & 3) + ((block_id) & 1) * 0x1000000ull) * 8)
30 #define CVMX_ASXX_RX_PRT_EN(offset)    (0x00011800B0000000ull + ((offset) & 1) * 0x8000000ull)
31 #define CVMX_ASXX_RX_WOL(offset)       (0x00011800B0000100ull + ((offset) & 1) * 0x8000000ull)
32 #define CVMX_ASXX_RX_WOL_MSK(offset)   (0x00011800B0000108ull + ((offset) & 1) * 0x8000000ull)
33 #define CVMX_ASXX_RX_WOL_POWOK(offset) (0x00011800B0000118ull + ((offset) & 1) * 0x8000000ull)
34 #define CVMX_ASXX_RX_WOL_SIG(offset)   (0x00011800B0000110ull + ((offset) & 1) * 0x8000000ull)
35 #define CVMX_ASXX_TX_CLK_SETX(offset, block_id)                                                    \
36 	(0x00011800B0000048ull + (((offset) & 3) + ((block_id) & 1) * 0x1000000ull) * 8)
37 #define CVMX_ASXX_TX_COMP_BYP(offset) (0x00011800B0000068ull + ((offset) & 1) * 0x8000000ull)
38 #define CVMX_ASXX_TX_HI_WATERX(offset, block_id)                                                   \
39 	(0x00011800B0000080ull + (((offset) & 3) + ((block_id) & 1) * 0x1000000ull) * 8)
40 #define CVMX_ASXX_TX_PRT_EN(offset) (0x00011800B0000008ull + ((offset) & 1) * 0x8000000ull)
41 
42 /**
43  * cvmx_asx#_gmii_rx_clk_set
44  *
45  * ASX_GMII_RX_CLK_SET = GMII Clock delay setting
46  *
47  */
48 union cvmx_asxx_gmii_rx_clk_set {
49 	u64 u64;
50 	struct cvmx_asxx_gmii_rx_clk_set_s {
51 		u64 reserved_5_63 : 59;
52 		u64 setting : 5;
53 	} s;
54 	struct cvmx_asxx_gmii_rx_clk_set_s cn30xx;
55 	struct cvmx_asxx_gmii_rx_clk_set_s cn31xx;
56 	struct cvmx_asxx_gmii_rx_clk_set_s cn50xx;
57 };
58 
59 typedef union cvmx_asxx_gmii_rx_clk_set cvmx_asxx_gmii_rx_clk_set_t;
60 
61 /**
62  * cvmx_asx#_gmii_rx_dat_set
63  *
64  * ASX_GMII_RX_DAT_SET = GMII Clock delay setting
65  *
66  */
67 union cvmx_asxx_gmii_rx_dat_set {
68 	u64 u64;
69 	struct cvmx_asxx_gmii_rx_dat_set_s {
70 		u64 reserved_5_63 : 59;
71 		u64 setting : 5;
72 	} s;
73 	struct cvmx_asxx_gmii_rx_dat_set_s cn30xx;
74 	struct cvmx_asxx_gmii_rx_dat_set_s cn31xx;
75 	struct cvmx_asxx_gmii_rx_dat_set_s cn50xx;
76 };
77 
78 typedef union cvmx_asxx_gmii_rx_dat_set cvmx_asxx_gmii_rx_dat_set_t;
79 
80 /**
81  * cvmx_asx#_int_en
82  *
83  * ASX_INT_EN = Interrupt Enable
84  *
85  */
86 union cvmx_asxx_int_en {
87 	u64 u64;
88 	struct cvmx_asxx_int_en_s {
89 		u64 reserved_12_63 : 52;
90 		u64 txpsh : 4;
91 		u64 txpop : 4;
92 		u64 ovrflw : 4;
93 	} s;
94 	struct cvmx_asxx_int_en_cn30xx {
95 		u64 reserved_11_63 : 53;
96 		u64 txpsh : 3;
97 		u64 reserved_7_7 : 1;
98 		u64 txpop : 3;
99 		u64 reserved_3_3 : 1;
100 		u64 ovrflw : 3;
101 	} cn30xx;
102 	struct cvmx_asxx_int_en_cn30xx cn31xx;
103 	struct cvmx_asxx_int_en_s cn38xx;
104 	struct cvmx_asxx_int_en_s cn38xxp2;
105 	struct cvmx_asxx_int_en_cn30xx cn50xx;
106 	struct cvmx_asxx_int_en_s cn58xx;
107 	struct cvmx_asxx_int_en_s cn58xxp1;
108 };
109 
110 typedef union cvmx_asxx_int_en cvmx_asxx_int_en_t;
111 
112 /**
113  * cvmx_asx#_int_reg
114  *
115  * ASX_INT_REG = Interrupt Register
116  *
117  */
118 union cvmx_asxx_int_reg {
119 	u64 u64;
120 	struct cvmx_asxx_int_reg_s {
121 		u64 reserved_12_63 : 52;
122 		u64 txpsh : 4;
123 		u64 txpop : 4;
124 		u64 ovrflw : 4;
125 	} s;
126 	struct cvmx_asxx_int_reg_cn30xx {
127 		u64 reserved_11_63 : 53;
128 		u64 txpsh : 3;
129 		u64 reserved_7_7 : 1;
130 		u64 txpop : 3;
131 		u64 reserved_3_3 : 1;
132 		u64 ovrflw : 3;
133 	} cn30xx;
134 	struct cvmx_asxx_int_reg_cn30xx cn31xx;
135 	struct cvmx_asxx_int_reg_s cn38xx;
136 	struct cvmx_asxx_int_reg_s cn38xxp2;
137 	struct cvmx_asxx_int_reg_cn30xx cn50xx;
138 	struct cvmx_asxx_int_reg_s cn58xx;
139 	struct cvmx_asxx_int_reg_s cn58xxp1;
140 };
141 
142 typedef union cvmx_asxx_int_reg cvmx_asxx_int_reg_t;
143 
144 /**
145  * cvmx_asx#_mii_rx_dat_set
146  *
147  * ASX_MII_RX_DAT_SET = GMII Clock delay setting
148  *
149  */
150 union cvmx_asxx_mii_rx_dat_set {
151 	u64 u64;
152 	struct cvmx_asxx_mii_rx_dat_set_s {
153 		u64 reserved_5_63 : 59;
154 		u64 setting : 5;
155 	} s;
156 	struct cvmx_asxx_mii_rx_dat_set_s cn30xx;
157 	struct cvmx_asxx_mii_rx_dat_set_s cn50xx;
158 };
159 
160 typedef union cvmx_asxx_mii_rx_dat_set cvmx_asxx_mii_rx_dat_set_t;
161 
162 /**
163  * cvmx_asx#_prt_loop
164  *
165  * ASX_PRT_LOOP = Internal Loopback mode - TX FIFO output goes into RX FIFO (and maybe pins)
166  *
167  */
168 union cvmx_asxx_prt_loop {
169 	u64 u64;
170 	struct cvmx_asxx_prt_loop_s {
171 		u64 reserved_8_63 : 56;
172 		u64 ext_loop : 4;
173 		u64 int_loop : 4;
174 	} s;
175 	struct cvmx_asxx_prt_loop_cn30xx {
176 		u64 reserved_7_63 : 57;
177 		u64 ext_loop : 3;
178 		u64 reserved_3_3 : 1;
179 		u64 int_loop : 3;
180 	} cn30xx;
181 	struct cvmx_asxx_prt_loop_cn30xx cn31xx;
182 	struct cvmx_asxx_prt_loop_s cn38xx;
183 	struct cvmx_asxx_prt_loop_s cn38xxp2;
184 	struct cvmx_asxx_prt_loop_cn30xx cn50xx;
185 	struct cvmx_asxx_prt_loop_s cn58xx;
186 	struct cvmx_asxx_prt_loop_s cn58xxp1;
187 };
188 
189 typedef union cvmx_asxx_prt_loop cvmx_asxx_prt_loop_t;
190 
191 /**
192  * cvmx_asx#_rld_bypass
193  *
194  * ASX_RLD_BYPASS
195  *
196  */
197 union cvmx_asxx_rld_bypass {
198 	u64 u64;
199 	struct cvmx_asxx_rld_bypass_s {
200 		u64 reserved_1_63 : 63;
201 		u64 bypass : 1;
202 	} s;
203 	struct cvmx_asxx_rld_bypass_s cn38xx;
204 	struct cvmx_asxx_rld_bypass_s cn38xxp2;
205 	struct cvmx_asxx_rld_bypass_s cn58xx;
206 	struct cvmx_asxx_rld_bypass_s cn58xxp1;
207 };
208 
209 typedef union cvmx_asxx_rld_bypass cvmx_asxx_rld_bypass_t;
210 
211 /**
212  * cvmx_asx#_rld_bypass_setting
213  *
214  * ASX_RLD_BYPASS_SETTING
215  *
216  */
217 union cvmx_asxx_rld_bypass_setting {
218 	u64 u64;
219 	struct cvmx_asxx_rld_bypass_setting_s {
220 		u64 reserved_5_63 : 59;
221 		u64 setting : 5;
222 	} s;
223 	struct cvmx_asxx_rld_bypass_setting_s cn38xx;
224 	struct cvmx_asxx_rld_bypass_setting_s cn38xxp2;
225 	struct cvmx_asxx_rld_bypass_setting_s cn58xx;
226 	struct cvmx_asxx_rld_bypass_setting_s cn58xxp1;
227 };
228 
229 typedef union cvmx_asxx_rld_bypass_setting cvmx_asxx_rld_bypass_setting_t;
230 
231 /**
232  * cvmx_asx#_rld_comp
233  *
234  * ASX_RLD_COMP
235  *
236  */
237 union cvmx_asxx_rld_comp {
238 	u64 u64;
239 	struct cvmx_asxx_rld_comp_s {
240 		u64 reserved_9_63 : 55;
241 		u64 pctl : 5;
242 		u64 nctl : 4;
243 	} s;
244 	struct cvmx_asxx_rld_comp_cn38xx {
245 		u64 reserved_8_63 : 56;
246 		u64 pctl : 4;
247 		u64 nctl : 4;
248 	} cn38xx;
249 	struct cvmx_asxx_rld_comp_cn38xx cn38xxp2;
250 	struct cvmx_asxx_rld_comp_s cn58xx;
251 	struct cvmx_asxx_rld_comp_s cn58xxp1;
252 };
253 
254 typedef union cvmx_asxx_rld_comp cvmx_asxx_rld_comp_t;
255 
256 /**
257  * cvmx_asx#_rld_data_drv
258  *
259  * ASX_RLD_DATA_DRV
260  *
261  */
262 union cvmx_asxx_rld_data_drv {
263 	u64 u64;
264 	struct cvmx_asxx_rld_data_drv_s {
265 		u64 reserved_8_63 : 56;
266 		u64 pctl : 4;
267 		u64 nctl : 4;
268 	} s;
269 	struct cvmx_asxx_rld_data_drv_s cn38xx;
270 	struct cvmx_asxx_rld_data_drv_s cn38xxp2;
271 	struct cvmx_asxx_rld_data_drv_s cn58xx;
272 	struct cvmx_asxx_rld_data_drv_s cn58xxp1;
273 };
274 
275 typedef union cvmx_asxx_rld_data_drv cvmx_asxx_rld_data_drv_t;
276 
277 /**
278  * cvmx_asx#_rld_fcram_mode
279  *
280  * ASX_RLD_FCRAM_MODE
281  *
282  */
283 union cvmx_asxx_rld_fcram_mode {
284 	u64 u64;
285 	struct cvmx_asxx_rld_fcram_mode_s {
286 		u64 reserved_1_63 : 63;
287 		u64 mode : 1;
288 	} s;
289 	struct cvmx_asxx_rld_fcram_mode_s cn38xx;
290 	struct cvmx_asxx_rld_fcram_mode_s cn38xxp2;
291 };
292 
293 typedef union cvmx_asxx_rld_fcram_mode cvmx_asxx_rld_fcram_mode_t;
294 
295 /**
296  * cvmx_asx#_rld_nctl_strong
297  *
298  * ASX_RLD_NCTL_STRONG
299  *
300  */
301 union cvmx_asxx_rld_nctl_strong {
302 	u64 u64;
303 	struct cvmx_asxx_rld_nctl_strong_s {
304 		u64 reserved_5_63 : 59;
305 		u64 nctl : 5;
306 	} s;
307 	struct cvmx_asxx_rld_nctl_strong_s cn38xx;
308 	struct cvmx_asxx_rld_nctl_strong_s cn38xxp2;
309 	struct cvmx_asxx_rld_nctl_strong_s cn58xx;
310 	struct cvmx_asxx_rld_nctl_strong_s cn58xxp1;
311 };
312 
313 typedef union cvmx_asxx_rld_nctl_strong cvmx_asxx_rld_nctl_strong_t;
314 
315 /**
316  * cvmx_asx#_rld_nctl_weak
317  *
318  * ASX_RLD_NCTL_WEAK
319  *
320  */
321 union cvmx_asxx_rld_nctl_weak {
322 	u64 u64;
323 	struct cvmx_asxx_rld_nctl_weak_s {
324 		u64 reserved_5_63 : 59;
325 		u64 nctl : 5;
326 	} s;
327 	struct cvmx_asxx_rld_nctl_weak_s cn38xx;
328 	struct cvmx_asxx_rld_nctl_weak_s cn38xxp2;
329 	struct cvmx_asxx_rld_nctl_weak_s cn58xx;
330 	struct cvmx_asxx_rld_nctl_weak_s cn58xxp1;
331 };
332 
333 typedef union cvmx_asxx_rld_nctl_weak cvmx_asxx_rld_nctl_weak_t;
334 
335 /**
336  * cvmx_asx#_rld_pctl_strong
337  *
338  * ASX_RLD_PCTL_STRONG
339  *
340  */
341 union cvmx_asxx_rld_pctl_strong {
342 	u64 u64;
343 	struct cvmx_asxx_rld_pctl_strong_s {
344 		u64 reserved_5_63 : 59;
345 		u64 pctl : 5;
346 	} s;
347 	struct cvmx_asxx_rld_pctl_strong_s cn38xx;
348 	struct cvmx_asxx_rld_pctl_strong_s cn38xxp2;
349 	struct cvmx_asxx_rld_pctl_strong_s cn58xx;
350 	struct cvmx_asxx_rld_pctl_strong_s cn58xxp1;
351 };
352 
353 typedef union cvmx_asxx_rld_pctl_strong cvmx_asxx_rld_pctl_strong_t;
354 
355 /**
356  * cvmx_asx#_rld_pctl_weak
357  *
358  * ASX_RLD_PCTL_WEAK
359  *
360  */
361 union cvmx_asxx_rld_pctl_weak {
362 	u64 u64;
363 	struct cvmx_asxx_rld_pctl_weak_s {
364 		u64 reserved_5_63 : 59;
365 		u64 pctl : 5;
366 	} s;
367 	struct cvmx_asxx_rld_pctl_weak_s cn38xx;
368 	struct cvmx_asxx_rld_pctl_weak_s cn38xxp2;
369 	struct cvmx_asxx_rld_pctl_weak_s cn58xx;
370 	struct cvmx_asxx_rld_pctl_weak_s cn58xxp1;
371 };
372 
373 typedef union cvmx_asxx_rld_pctl_weak cvmx_asxx_rld_pctl_weak_t;
374 
375 /**
376  * cvmx_asx#_rld_setting
377  *
378  * ASX_RLD_SETTING
379  *
380  */
381 union cvmx_asxx_rld_setting {
382 	u64 u64;
383 	struct cvmx_asxx_rld_setting_s {
384 		u64 reserved_13_63 : 51;
385 		u64 dfaset : 5;
386 		u64 dfalag : 1;
387 		u64 dfalead : 1;
388 		u64 dfalock : 1;
389 		u64 setting : 5;
390 	} s;
391 	struct cvmx_asxx_rld_setting_cn38xx {
392 		u64 reserved_5_63 : 59;
393 		u64 setting : 5;
394 	} cn38xx;
395 	struct cvmx_asxx_rld_setting_cn38xx cn38xxp2;
396 	struct cvmx_asxx_rld_setting_s cn58xx;
397 	struct cvmx_asxx_rld_setting_s cn58xxp1;
398 };
399 
400 typedef union cvmx_asxx_rld_setting cvmx_asxx_rld_setting_t;
401 
402 /**
403  * cvmx_asx#_rx_clk_set#
404  *
405  * ASX_RX_CLK_SET = RGMII Clock delay setting
406  *
407  *
408  * Notes:
409  * Setting to place on the open-loop RXC (RGMII receive clk)
410  * delay line, which can delay the received clock. This
411  * can be used if the board and/or transmitting device
412  * has not otherwise delayed the clock.
413  *
414  * A value of SETTING=0 disables the delay line. The delay
415  * line should be disabled unless the transmitter or board
416  * does not delay the clock.
417  *
418  * Note that this delay line provides only a coarse control
419  * over the delay. Generally, it can only reliably provide
420  * a delay in the range 1.25-2.5ns, which may not be adequate
421  * for some system applications.
422  *
423  * The open loop delay line selects
424  * from among a series of tap positions. Each incremental
425  * tap position adds a delay of 50ps to 135ps per tap, depending
426  * on the chip, its temperature, and the voltage.
427  * To achieve from 1.25-2.5ns of delay on the received
428  * clock, a fixed value of SETTING=24 may work.
429  * For more precision, we recommend the following settings
430  * based on the chip voltage:
431  *
432  *    VDD           SETTING
433  *  -----------------------------
434  *    1.0             18
435  *    1.05            19
436  *    1.1             21
437  *    1.15            22
438  *    1.2             23
439  *    1.25            24
440  *    1.3             25
441  */
442 union cvmx_asxx_rx_clk_setx {
443 	u64 u64;
444 	struct cvmx_asxx_rx_clk_setx_s {
445 		u64 reserved_5_63 : 59;
446 		u64 setting : 5;
447 	} s;
448 	struct cvmx_asxx_rx_clk_setx_s cn30xx;
449 	struct cvmx_asxx_rx_clk_setx_s cn31xx;
450 	struct cvmx_asxx_rx_clk_setx_s cn38xx;
451 	struct cvmx_asxx_rx_clk_setx_s cn38xxp2;
452 	struct cvmx_asxx_rx_clk_setx_s cn50xx;
453 	struct cvmx_asxx_rx_clk_setx_s cn58xx;
454 	struct cvmx_asxx_rx_clk_setx_s cn58xxp1;
455 };
456 
457 typedef union cvmx_asxx_rx_clk_setx cvmx_asxx_rx_clk_setx_t;
458 
459 /**
460  * cvmx_asx#_rx_prt_en
461  *
462  * ASX_RX_PRT_EN = RGMII Port Enable
463  *
464  */
465 union cvmx_asxx_rx_prt_en {
466 	u64 u64;
467 	struct cvmx_asxx_rx_prt_en_s {
468 		u64 reserved_4_63 : 60;
469 		u64 prt_en : 4;
470 	} s;
471 	struct cvmx_asxx_rx_prt_en_cn30xx {
472 		u64 reserved_3_63 : 61;
473 		u64 prt_en : 3;
474 	} cn30xx;
475 	struct cvmx_asxx_rx_prt_en_cn30xx cn31xx;
476 	struct cvmx_asxx_rx_prt_en_s cn38xx;
477 	struct cvmx_asxx_rx_prt_en_s cn38xxp2;
478 	struct cvmx_asxx_rx_prt_en_cn30xx cn50xx;
479 	struct cvmx_asxx_rx_prt_en_s cn58xx;
480 	struct cvmx_asxx_rx_prt_en_s cn58xxp1;
481 };
482 
483 typedef union cvmx_asxx_rx_prt_en cvmx_asxx_rx_prt_en_t;
484 
485 /**
486  * cvmx_asx#_rx_wol
487  *
488  * ASX_RX_WOL = RGMII RX Wake on LAN status register
489  *
490  */
491 union cvmx_asxx_rx_wol {
492 	u64 u64;
493 	struct cvmx_asxx_rx_wol_s {
494 		u64 reserved_2_63 : 62;
495 		u64 status : 1;
496 		u64 enable : 1;
497 	} s;
498 	struct cvmx_asxx_rx_wol_s cn38xx;
499 	struct cvmx_asxx_rx_wol_s cn38xxp2;
500 };
501 
502 typedef union cvmx_asxx_rx_wol cvmx_asxx_rx_wol_t;
503 
504 /**
505  * cvmx_asx#_rx_wol_msk
506  *
507  * ASX_RX_WOL_MSK = RGMII RX Wake on LAN byte mask
508  *
509  */
510 union cvmx_asxx_rx_wol_msk {
511 	u64 u64;
512 	struct cvmx_asxx_rx_wol_msk_s {
513 		u64 msk : 64;
514 	} s;
515 	struct cvmx_asxx_rx_wol_msk_s cn38xx;
516 	struct cvmx_asxx_rx_wol_msk_s cn38xxp2;
517 };
518 
519 typedef union cvmx_asxx_rx_wol_msk cvmx_asxx_rx_wol_msk_t;
520 
521 /**
522  * cvmx_asx#_rx_wol_powok
523  *
524  * ASX_RX_WOL_POWOK = RGMII RX Wake on LAN Power OK
525  *
526  */
527 union cvmx_asxx_rx_wol_powok {
528 	u64 u64;
529 	struct cvmx_asxx_rx_wol_powok_s {
530 		u64 reserved_1_63 : 63;
531 		u64 powerok : 1;
532 	} s;
533 	struct cvmx_asxx_rx_wol_powok_s cn38xx;
534 	struct cvmx_asxx_rx_wol_powok_s cn38xxp2;
535 };
536 
537 typedef union cvmx_asxx_rx_wol_powok cvmx_asxx_rx_wol_powok_t;
538 
539 /**
540  * cvmx_asx#_rx_wol_sig
541  *
542  * ASX_RX_WOL_SIG = RGMII RX Wake on LAN CRC signature
543  *
544  */
545 union cvmx_asxx_rx_wol_sig {
546 	u64 u64;
547 	struct cvmx_asxx_rx_wol_sig_s {
548 		u64 reserved_32_63 : 32;
549 		u64 sig : 32;
550 	} s;
551 	struct cvmx_asxx_rx_wol_sig_s cn38xx;
552 	struct cvmx_asxx_rx_wol_sig_s cn38xxp2;
553 };
554 
555 typedef union cvmx_asxx_rx_wol_sig cvmx_asxx_rx_wol_sig_t;
556 
557 /**
558  * cvmx_asx#_tx_clk_set#
559  *
560  * ASX_TX_CLK_SET = RGMII Clock delay setting
561  *
562  *
563  * Notes:
564  * Setting to place on the open-loop TXC (RGMII transmit clk)
565  * delay line, which can delay the transmited clock. This
566  * can be used if the board and/or transmitting device
567  * has not otherwise delayed the clock.
568  *
569  * A value of SETTING=0 disables the delay line. The delay
570  * line should be disabled unless the transmitter or board
571  * does not delay the clock.
572  *
573  * Note that this delay line provides only a coarse control
574  * over the delay. Generally, it can only reliably provide
575  * a delay in the range 1.25-2.5ns, which may not be adequate
576  * for some system applications.
577  *
578  * The open loop delay line selects
579  * from among a series of tap positions. Each incremental
580  * tap position adds a delay of 50ps to 135ps per tap, depending
581  * on the chip, its temperature, and the voltage.
582  * To achieve from 1.25-2.5ns of delay on the received
583  * clock, a fixed value of SETTING=24 may work.
584  * For more precision, we recommend the following settings
585  * based on the chip voltage:
586  *
587  *    VDD           SETTING
588  *  -----------------------------
589  *    1.0             18
590  *    1.05            19
591  *    1.1             21
592  *    1.15            22
593  *    1.2             23
594  *    1.25            24
595  *    1.3             25
596  */
597 union cvmx_asxx_tx_clk_setx {
598 	u64 u64;
599 	struct cvmx_asxx_tx_clk_setx_s {
600 		u64 reserved_5_63 : 59;
601 		u64 setting : 5;
602 	} s;
603 	struct cvmx_asxx_tx_clk_setx_s cn30xx;
604 	struct cvmx_asxx_tx_clk_setx_s cn31xx;
605 	struct cvmx_asxx_tx_clk_setx_s cn38xx;
606 	struct cvmx_asxx_tx_clk_setx_s cn38xxp2;
607 	struct cvmx_asxx_tx_clk_setx_s cn50xx;
608 	struct cvmx_asxx_tx_clk_setx_s cn58xx;
609 	struct cvmx_asxx_tx_clk_setx_s cn58xxp1;
610 };
611 
612 typedef union cvmx_asxx_tx_clk_setx cvmx_asxx_tx_clk_setx_t;
613 
614 /**
615  * cvmx_asx#_tx_comp_byp
616  *
617  * ASX_TX_COMP_BYP = RGMII Clock delay setting
618  *
619  */
620 union cvmx_asxx_tx_comp_byp {
621 	u64 u64;
622 	struct cvmx_asxx_tx_comp_byp_s {
623 		u64 reserved_0_63 : 64;
624 	} s;
625 	struct cvmx_asxx_tx_comp_byp_cn30xx {
626 		u64 reserved_9_63 : 55;
627 		u64 bypass : 1;
628 		u64 pctl : 4;
629 		u64 nctl : 4;
630 	} cn30xx;
631 	struct cvmx_asxx_tx_comp_byp_cn30xx cn31xx;
632 	struct cvmx_asxx_tx_comp_byp_cn38xx {
633 		u64 reserved_8_63 : 56;
634 		u64 pctl : 4;
635 		u64 nctl : 4;
636 	} cn38xx;
637 	struct cvmx_asxx_tx_comp_byp_cn38xx cn38xxp2;
638 	struct cvmx_asxx_tx_comp_byp_cn50xx {
639 		u64 reserved_17_63 : 47;
640 		u64 bypass : 1;
641 		u64 reserved_13_15 : 3;
642 		u64 pctl : 5;
643 		u64 reserved_5_7 : 3;
644 		u64 nctl : 5;
645 	} cn50xx;
646 	struct cvmx_asxx_tx_comp_byp_cn58xx {
647 		u64 reserved_13_63 : 51;
648 		u64 pctl : 5;
649 		u64 reserved_5_7 : 3;
650 		u64 nctl : 5;
651 	} cn58xx;
652 	struct cvmx_asxx_tx_comp_byp_cn58xx cn58xxp1;
653 };
654 
655 typedef union cvmx_asxx_tx_comp_byp cvmx_asxx_tx_comp_byp_t;
656 
657 /**
658  * cvmx_asx#_tx_hi_water#
659  *
660  * ASX_TX_HI_WATER = RGMII TX FIFO Hi WaterMark
661  *
662  */
663 union cvmx_asxx_tx_hi_waterx {
664 	u64 u64;
665 	struct cvmx_asxx_tx_hi_waterx_s {
666 		u64 reserved_4_63 : 60;
667 		u64 mark : 4;
668 	} s;
669 	struct cvmx_asxx_tx_hi_waterx_cn30xx {
670 		u64 reserved_3_63 : 61;
671 		u64 mark : 3;
672 	} cn30xx;
673 	struct cvmx_asxx_tx_hi_waterx_cn30xx cn31xx;
674 	struct cvmx_asxx_tx_hi_waterx_s cn38xx;
675 	struct cvmx_asxx_tx_hi_waterx_s cn38xxp2;
676 	struct cvmx_asxx_tx_hi_waterx_cn30xx cn50xx;
677 	struct cvmx_asxx_tx_hi_waterx_s cn58xx;
678 	struct cvmx_asxx_tx_hi_waterx_s cn58xxp1;
679 };
680 
681 typedef union cvmx_asxx_tx_hi_waterx cvmx_asxx_tx_hi_waterx_t;
682 
683 /**
684  * cvmx_asx#_tx_prt_en
685  *
686  * ASX_TX_PRT_EN = RGMII Port Enable
687  *
688  */
689 union cvmx_asxx_tx_prt_en {
690 	u64 u64;
691 	struct cvmx_asxx_tx_prt_en_s {
692 		u64 reserved_4_63 : 60;
693 		u64 prt_en : 4;
694 	} s;
695 	struct cvmx_asxx_tx_prt_en_cn30xx {
696 		u64 reserved_3_63 : 61;
697 		u64 prt_en : 3;
698 	} cn30xx;
699 	struct cvmx_asxx_tx_prt_en_cn30xx cn31xx;
700 	struct cvmx_asxx_tx_prt_en_s cn38xx;
701 	struct cvmx_asxx_tx_prt_en_s cn38xxp2;
702 	struct cvmx_asxx_tx_prt_en_cn30xx cn50xx;
703 	struct cvmx_asxx_tx_prt_en_s cn58xx;
704 	struct cvmx_asxx_tx_prt_en_s cn58xxp1;
705 };
706 
707 typedef union cvmx_asxx_tx_prt_en cvmx_asxx_tx_prt_en_t;
708 
709 #endif
710