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 gmxx.
7  */
8 
9 #ifndef __CVMX_GMXX_DEFS_H__
10 #define __CVMX_GMXX_DEFS_H__
11 
CVMX_GMXX_BAD_REG(unsigned long offset)12 static inline u64 CVMX_GMXX_BAD_REG(unsigned long offset)
13 {
14 	switch (cvmx_get_octeon_family()) {
15 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
16 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
17 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
18 		return 0x0001180008000518ull + (offset) * 0x8000000ull;
19 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
20 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
21 		return 0x0001180008000518ull + (offset) * 0x8000000ull;
22 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
23 		return 0x0001180008000518ull + (offset) * 0x1000000ull;
24 	}
25 	return 0x0001180008000518ull + (offset) * 0x8000000ull;
26 }
27 
CVMX_GMXX_BIST(unsigned long offset)28 static inline u64 CVMX_GMXX_BIST(unsigned long offset)
29 {
30 	switch (cvmx_get_octeon_family()) {
31 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
32 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
33 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
34 		return 0x0001180008000400ull + (offset) * 0x8000000ull;
35 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
36 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
37 		return 0x0001180008000400ull + (offset) * 0x8000000ull;
38 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
39 		return 0x0001180008000400ull + (offset) * 0x1000000ull;
40 	}
41 	return 0x0001180008000400ull + (offset) * 0x8000000ull;
42 }
43 
44 #define CVMX_GMXX_BPID_MAPX(offset, block_id)                                                      \
45 	(0x0001180008000680ull + (((offset) & 15) + ((block_id) & 7) * 0x200000ull) * 8)
46 #define CVMX_GMXX_BPID_MSK(offset) (0x0001180008000700ull + ((offset) & 7) * 0x1000000ull)
CVMX_GMXX_CLK_EN(unsigned long offset)47 static inline u64 CVMX_GMXX_CLK_EN(unsigned long offset)
48 {
49 	switch (cvmx_get_octeon_family()) {
50 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
51 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
52 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
53 		return 0x00011800080007F0ull + (offset) * 0x8000000ull;
54 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
55 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
56 		return 0x00011800080007F0ull + (offset) * 0x8000000ull;
57 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
58 		return 0x00011800080007F0ull + (offset) * 0x1000000ull;
59 	}
60 	return 0x00011800080007F0ull + (offset) * 0x8000000ull;
61 }
62 
63 #define CVMX_GMXX_EBP_DIS(offset) (0x0001180008000608ull + ((offset) & 7) * 0x1000000ull)
64 #define CVMX_GMXX_EBP_MSK(offset) (0x0001180008000600ull + ((offset) & 7) * 0x1000000ull)
CVMX_GMXX_HG2_CONTROL(unsigned long offset)65 static inline u64 CVMX_GMXX_HG2_CONTROL(unsigned long offset)
66 {
67 	switch (cvmx_get_octeon_family()) {
68 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
69 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
70 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
71 		return 0x0001180008000550ull + (offset) * 0x8000000ull;
72 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
73 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
74 		return 0x0001180008000550ull + (offset) * 0x8000000ull;
75 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
76 		return 0x0001180008000550ull + (offset) * 0x1000000ull;
77 	}
78 	return 0x0001180008000550ull + (offset) * 0x8000000ull;
79 }
80 
CVMX_GMXX_INF_MODE(unsigned long offset)81 static inline u64 CVMX_GMXX_INF_MODE(unsigned long offset)
82 {
83 	switch (cvmx_get_octeon_family()) {
84 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
85 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
86 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
87 		return 0x00011800080007F8ull + (offset) * 0x8000000ull;
88 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
89 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
90 		return 0x00011800080007F8ull + (offset) * 0x8000000ull;
91 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
92 		return 0x00011800080007F8ull + (offset) * 0x1000000ull;
93 	}
94 	return 0x00011800080007F8ull + (offset) * 0x8000000ull;
95 }
96 
CVMX_GMXX_NXA_ADR(unsigned long offset)97 static inline u64 CVMX_GMXX_NXA_ADR(unsigned long offset)
98 {
99 	switch (cvmx_get_octeon_family()) {
100 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
101 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
102 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
103 		return 0x0001180008000510ull + (offset) * 0x8000000ull;
104 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
105 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
106 		return 0x0001180008000510ull + (offset) * 0x8000000ull;
107 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
108 		return 0x0001180008000510ull + (offset) * 0x1000000ull;
109 	}
110 	return 0x0001180008000510ull + (offset) * 0x8000000ull;
111 }
112 
113 #define CVMX_GMXX_PIPE_STATUS(offset) (0x0001180008000760ull + ((offset) & 7) * 0x1000000ull)
CVMX_GMXX_PRTX_CBFC_CTL(unsigned long offset,unsigned long block_id)114 static inline u64 CVMX_GMXX_PRTX_CBFC_CTL(unsigned long __attribute__((unused)) offset,
115 					  unsigned long block_id)
116 {
117 	switch (cvmx_get_octeon_family()) {
118 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
119 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
120 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
121 		return 0x0001180008000580ull + (block_id) * 0x8000000ull;
122 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
123 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
124 		return 0x0001180008000580ull + (block_id) * 0x8000000ull;
125 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
126 		return 0x0001180008000580ull + (block_id) * 0x1000000ull;
127 	}
128 	return 0x0001180008000580ull + (block_id) * 0x8000000ull;
129 }
130 
CVMX_GMXX_PRTX_CFG(unsigned long offset,unsigned long block_id)131 static inline u64 CVMX_GMXX_PRTX_CFG(unsigned long offset, unsigned long block_id)
132 {
133 	switch (cvmx_get_octeon_family()) {
134 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
135 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
136 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
137 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
138 		return 0x0001180008000010ull + ((offset) + (block_id) * 0x10000ull) * 2048;
139 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
140 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
141 		return 0x0001180008000010ull + ((offset) + (block_id) * 0x2000ull) * 2048;
142 	}
143 	return 0x0001180008000010ull + ((offset) + (block_id) * 0x10000ull) * 2048;
144 }
145 
146 #define CVMX_GMXX_QSGMII_CTL(offset) (0x0001180008000760ull + ((offset) & 1) * 0x8000000ull)
CVMX_GMXX_RXAUI_CTL(unsigned long offset)147 static inline u64 CVMX_GMXX_RXAUI_CTL(unsigned long offset)
148 {
149 	switch (cvmx_get_octeon_family()) {
150 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
151 		return 0x0001180008000740ull + (offset) * 0x8000000ull;
152 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
153 		return 0x0001180008000740ull + (offset) * 0x1000000ull;
154 	}
155 	return 0x0001180008000740ull + (offset) * 0x8000000ull;
156 }
157 
CVMX_GMXX_RXX_ADR_CAM0(unsigned long offset,unsigned long block_id)158 static inline u64 CVMX_GMXX_RXX_ADR_CAM0(unsigned long offset, unsigned long block_id)
159 {
160 	switch (cvmx_get_octeon_family()) {
161 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
162 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
163 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
164 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
165 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
166 		return 0x0001180008000180ull + ((offset) + (block_id) * 0x10000ull) * 2048;
167 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
168 		return 0x0001180008000180ull + ((offset) + (block_id) * 0x2000ull) * 2048;
169 	}
170 	return 0x0001180008000180ull + ((offset) + (block_id) * 0x10000ull) * 2048;
171 }
172 
CVMX_GMXX_RXX_ADR_CAM1(unsigned long offset,unsigned long block_id)173 static inline u64 CVMX_GMXX_RXX_ADR_CAM1(unsigned long offset, unsigned long block_id)
174 {
175 	switch (cvmx_get_octeon_family()) {
176 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
177 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
178 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
179 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
180 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
181 		return 0x0001180008000188ull + ((offset) + (block_id) * 0x10000ull) * 2048;
182 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
183 		return 0x0001180008000188ull + ((offset) + (block_id) * 0x2000ull) * 2048;
184 	}
185 	return 0x0001180008000188ull + ((offset) + (block_id) * 0x10000ull) * 2048;
186 }
187 
CVMX_GMXX_RXX_ADR_CAM2(unsigned long offset,unsigned long block_id)188 static inline u64 CVMX_GMXX_RXX_ADR_CAM2(unsigned long offset, unsigned long block_id)
189 {
190 	switch (cvmx_get_octeon_family()) {
191 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
192 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
193 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
194 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
195 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
196 		return 0x0001180008000190ull + ((offset) + (block_id) * 0x10000ull) * 2048;
197 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
198 		return 0x0001180008000190ull + ((offset) + (block_id) * 0x2000ull) * 2048;
199 	}
200 	return 0x0001180008000190ull + ((offset) + (block_id) * 0x10000ull) * 2048;
201 }
202 
CVMX_GMXX_RXX_ADR_CAM3(unsigned long offset,unsigned long block_id)203 static inline u64 CVMX_GMXX_RXX_ADR_CAM3(unsigned long offset, unsigned long block_id)
204 {
205 	switch (cvmx_get_octeon_family()) {
206 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
207 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
208 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
209 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
210 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
211 		return 0x0001180008000198ull + ((offset) + (block_id) * 0x10000ull) * 2048;
212 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
213 		return 0x0001180008000198ull + ((offset) + (block_id) * 0x2000ull) * 2048;
214 	}
215 	return 0x0001180008000198ull + ((offset) + (block_id) * 0x10000ull) * 2048;
216 }
217 
CVMX_GMXX_RXX_ADR_CAM4(unsigned long offset,unsigned long block_id)218 static inline u64 CVMX_GMXX_RXX_ADR_CAM4(unsigned long offset, unsigned long block_id)
219 {
220 	switch (cvmx_get_octeon_family()) {
221 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
222 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
223 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
224 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
225 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
226 		return 0x00011800080001A0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
227 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
228 		return 0x00011800080001A0ull + ((offset) + (block_id) * 0x2000ull) * 2048;
229 	}
230 	return 0x00011800080001A0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
231 }
232 
CVMX_GMXX_RXX_ADR_CAM5(unsigned long offset,unsigned long block_id)233 static inline u64 CVMX_GMXX_RXX_ADR_CAM5(unsigned long offset, unsigned long block_id)
234 {
235 	switch (cvmx_get_octeon_family()) {
236 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
237 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
238 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
239 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
240 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
241 		return 0x00011800080001A8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
242 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
243 		return 0x00011800080001A8ull + ((offset) + (block_id) * 0x2000ull) * 2048;
244 	}
245 	return 0x00011800080001A8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
246 }
247 
CVMX_GMXX_RXX_ADR_CAM_ALL_EN(unsigned long offset,unsigned long block_id)248 static inline u64 CVMX_GMXX_RXX_ADR_CAM_ALL_EN(unsigned long offset, unsigned long block_id)
249 {
250 	switch (cvmx_get_octeon_family()) {
251 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
252 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
253 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
254 		return 0x0001180008000110ull + ((offset) + (block_id) * 0x10000ull) * 2048;
255 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
256 		return 0x0001180008000110ull + ((offset) + (block_id) * 0x10000ull) * 2048;
257 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
258 		return 0x0001180008000110ull + ((offset) + (block_id) * 0x2000ull) * 2048;
259 	}
260 	return 0x0001180008000110ull + ((offset) + (block_id) * 0x10000ull) * 2048;
261 }
262 
CVMX_GMXX_RXX_ADR_CAM_EN(unsigned long offset,unsigned long block_id)263 static inline u64 CVMX_GMXX_RXX_ADR_CAM_EN(unsigned long offset, unsigned long block_id)
264 {
265 	switch (cvmx_get_octeon_family()) {
266 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
267 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
268 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
269 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
270 		return 0x0001180008000108ull + ((offset) + (block_id) * 0x10000ull) * 2048;
271 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
272 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
273 		return 0x0001180008000108ull + ((offset) + (block_id) * 0x2000ull) * 2048;
274 	}
275 	return 0x0001180008000108ull + ((offset) + (block_id) * 0x10000ull) * 2048;
276 }
277 
CVMX_GMXX_RXX_ADR_CTL(unsigned long offset,unsigned long block_id)278 static inline u64 CVMX_GMXX_RXX_ADR_CTL(unsigned long offset, unsigned long block_id)
279 {
280 	switch (cvmx_get_octeon_family()) {
281 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
282 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
283 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
284 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
285 		return 0x0001180008000100ull + ((offset) + (block_id) * 0x10000ull) * 2048;
286 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
287 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
288 		return 0x0001180008000100ull + ((offset) + (block_id) * 0x2000ull) * 2048;
289 	}
290 	return 0x0001180008000100ull + ((offset) + (block_id) * 0x10000ull) * 2048;
291 }
292 
CVMX_GMXX_RXX_DECISION(unsigned long offset,unsigned long block_id)293 static inline u64 CVMX_GMXX_RXX_DECISION(unsigned long offset, unsigned long block_id)
294 {
295 	switch (cvmx_get_octeon_family()) {
296 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
297 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
298 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
299 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
300 		return 0x0001180008000040ull + ((offset) + (block_id) * 0x10000ull) * 2048;
301 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
302 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
303 		return 0x0001180008000040ull + ((offset) + (block_id) * 0x2000ull) * 2048;
304 	}
305 	return 0x0001180008000040ull + ((offset) + (block_id) * 0x10000ull) * 2048;
306 }
307 
CVMX_GMXX_RXX_FRM_CHK(unsigned long offset,unsigned long block_id)308 static inline u64 CVMX_GMXX_RXX_FRM_CHK(unsigned long offset, unsigned long block_id)
309 {
310 	switch (cvmx_get_octeon_family()) {
311 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
312 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
313 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
314 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
315 		return 0x0001180008000020ull + ((offset) + (block_id) * 0x10000ull) * 2048;
316 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
317 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
318 		return 0x0001180008000020ull + ((offset) + (block_id) * 0x2000ull) * 2048;
319 	}
320 	return 0x0001180008000020ull + ((offset) + (block_id) * 0x10000ull) * 2048;
321 }
322 
CVMX_GMXX_RXX_FRM_CTL(unsigned long offset,unsigned long block_id)323 static inline u64 CVMX_GMXX_RXX_FRM_CTL(unsigned long offset, unsigned long block_id)
324 {
325 	switch (cvmx_get_octeon_family()) {
326 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
327 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
328 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
329 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
330 		return 0x0001180008000018ull + ((offset) + (block_id) * 0x10000ull) * 2048;
331 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
332 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
333 		return 0x0001180008000018ull + ((offset) + (block_id) * 0x2000ull) * 2048;
334 	}
335 	return 0x0001180008000018ull + ((offset) + (block_id) * 0x10000ull) * 2048;
336 }
337 
338 #define CVMX_GMXX_RXX_FRM_MAX(offset, block_id)                                                    \
339 	(0x0001180008000030ull + (((offset) & 3) + ((block_id) & 1) * 0x10000ull) * 2048)
340 #define CVMX_GMXX_RXX_FRM_MIN(offset, block_id)                                                    \
341 	(0x0001180008000028ull + (((offset) & 3) + ((block_id) & 1) * 0x10000ull) * 2048)
CVMX_GMXX_RXX_IFG(unsigned long offset,unsigned long block_id)342 static inline u64 CVMX_GMXX_RXX_IFG(unsigned long offset, unsigned long block_id)
343 {
344 	switch (cvmx_get_octeon_family()) {
345 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
346 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
347 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
348 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
349 		return 0x0001180008000058ull + ((offset) + (block_id) * 0x10000ull) * 2048;
350 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
351 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
352 		return 0x0001180008000058ull + ((offset) + (block_id) * 0x2000ull) * 2048;
353 	}
354 	return 0x0001180008000058ull + ((offset) + (block_id) * 0x10000ull) * 2048;
355 }
356 
CVMX_GMXX_RXX_INT_EN(unsigned long offset,unsigned long block_id)357 static inline u64 CVMX_GMXX_RXX_INT_EN(unsigned long offset, unsigned long block_id)
358 {
359 	switch (cvmx_get_octeon_family()) {
360 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
361 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
362 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
363 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
364 		return 0x0001180008000008ull + ((offset) + (block_id) * 0x10000ull) * 2048;
365 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
366 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
367 		return 0x0001180008000008ull + ((offset) + (block_id) * 0x2000ull) * 2048;
368 	}
369 	return 0x0001180008000008ull + ((offset) + (block_id) * 0x10000ull) * 2048;
370 }
371 
CVMX_GMXX_RXX_INT_REG(unsigned long offset,unsigned long block_id)372 static inline u64 CVMX_GMXX_RXX_INT_REG(unsigned long offset, unsigned long block_id)
373 {
374 	switch (cvmx_get_octeon_family()) {
375 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
376 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
377 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
378 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
379 		return 0x0001180008000000ull + ((offset) + (block_id) * 0x10000ull) * 2048;
380 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
381 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
382 		return 0x0001180008000000ull + ((offset) + (block_id) * 0x2000ull) * 2048;
383 	}
384 	return 0x0001180008000000ull + ((offset) + (block_id) * 0x10000ull) * 2048;
385 }
386 
CVMX_GMXX_RXX_JABBER(unsigned long offset,unsigned long block_id)387 static inline u64 CVMX_GMXX_RXX_JABBER(unsigned long offset, unsigned long block_id)
388 {
389 	switch (cvmx_get_octeon_family()) {
390 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
391 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
392 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
393 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
394 		return 0x0001180008000038ull + ((offset) + (block_id) * 0x10000ull) * 2048;
395 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
396 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
397 		return 0x0001180008000038ull + ((offset) + (block_id) * 0x2000ull) * 2048;
398 	}
399 	return 0x0001180008000038ull + ((offset) + (block_id) * 0x10000ull) * 2048;
400 }
401 
CVMX_GMXX_RXX_PAUSE_DROP_TIME(unsigned long offset,unsigned long block_id)402 static inline u64 CVMX_GMXX_RXX_PAUSE_DROP_TIME(unsigned long offset, unsigned long block_id)
403 {
404 	switch (cvmx_get_octeon_family()) {
405 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
406 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
407 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
408 		return 0x0001180008000068ull + ((offset) + (block_id) * 0x10000ull) * 2048;
409 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
410 		return 0x0001180008000068ull + ((offset) + (block_id) * 0x10000ull) * 2048;
411 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
412 		return 0x0001180008000068ull + ((offset) + (block_id) * 0x10000ull) * 2048;
413 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
414 		return 0x0001180008000068ull + ((offset) + (block_id) * 0x2000ull) * 2048;
415 	}
416 	return 0x0001180008000068ull + ((offset) + (block_id) * 0x10000ull) * 2048;
417 }
418 
419 #define CVMX_GMXX_RXX_RX_INBND(offset, block_id)                                                   \
420 	(0x0001180008000060ull + (((offset) & 3) + ((block_id) & 1) * 0x10000ull) * 2048)
CVMX_GMXX_RXX_STATS_CTL(unsigned long offset,unsigned long block_id)421 static inline u64 CVMX_GMXX_RXX_STATS_CTL(unsigned long offset, unsigned long block_id)
422 {
423 	switch (cvmx_get_octeon_family()) {
424 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
425 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
426 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
427 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
428 		return 0x0001180008000050ull + ((offset) + (block_id) * 0x10000ull) * 2048;
429 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
430 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
431 		return 0x0001180008000050ull + ((offset) + (block_id) * 0x2000ull) * 2048;
432 	}
433 	return 0x0001180008000050ull + ((offset) + (block_id) * 0x10000ull) * 2048;
434 }
435 
CVMX_GMXX_RXX_STATS_OCTS(unsigned long offset,unsigned long block_id)436 static inline u64 CVMX_GMXX_RXX_STATS_OCTS(unsigned long offset, unsigned long block_id)
437 {
438 	switch (cvmx_get_octeon_family()) {
439 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
440 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
441 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
442 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
443 		return 0x0001180008000088ull + ((offset) + (block_id) * 0x10000ull) * 2048;
444 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
445 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
446 		return 0x0001180008000088ull + ((offset) + (block_id) * 0x2000ull) * 2048;
447 	}
448 	return 0x0001180008000088ull + ((offset) + (block_id) * 0x10000ull) * 2048;
449 }
450 
CVMX_GMXX_RXX_STATS_OCTS_CTL(unsigned long offset,unsigned long block_id)451 static inline u64 CVMX_GMXX_RXX_STATS_OCTS_CTL(unsigned long offset, unsigned long block_id)
452 {
453 	switch (cvmx_get_octeon_family()) {
454 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
455 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
456 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
457 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
458 		return 0x0001180008000098ull + ((offset) + (block_id) * 0x10000ull) * 2048;
459 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
460 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
461 		return 0x0001180008000098ull + ((offset) + (block_id) * 0x2000ull) * 2048;
462 	}
463 	return 0x0001180008000098ull + ((offset) + (block_id) * 0x10000ull) * 2048;
464 }
465 
CVMX_GMXX_RXX_STATS_OCTS_DMAC(unsigned long offset,unsigned long block_id)466 static inline u64 CVMX_GMXX_RXX_STATS_OCTS_DMAC(unsigned long offset, unsigned long block_id)
467 {
468 	switch (cvmx_get_octeon_family()) {
469 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
470 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
471 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
472 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
473 		return 0x00011800080000A8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
474 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
475 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
476 		return 0x00011800080000A8ull + ((offset) + (block_id) * 0x2000ull) * 2048;
477 	}
478 	return 0x00011800080000A8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
479 }
480 
CVMX_GMXX_RXX_STATS_OCTS_DRP(unsigned long offset,unsigned long block_id)481 static inline u64 CVMX_GMXX_RXX_STATS_OCTS_DRP(unsigned long offset, unsigned long block_id)
482 {
483 	switch (cvmx_get_octeon_family()) {
484 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
485 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
486 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
487 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
488 		return 0x00011800080000B8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
489 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
490 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
491 		return 0x00011800080000B8ull + ((offset) + (block_id) * 0x2000ull) * 2048;
492 	}
493 	return 0x00011800080000B8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
494 }
495 
CVMX_GMXX_RXX_STATS_PKTS(unsigned long offset,unsigned long block_id)496 static inline u64 CVMX_GMXX_RXX_STATS_PKTS(unsigned long offset, unsigned long block_id)
497 {
498 	switch (cvmx_get_octeon_family()) {
499 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
500 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
501 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
502 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
503 		return 0x0001180008000080ull + ((offset) + (block_id) * 0x10000ull) * 2048;
504 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
505 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
506 		return 0x0001180008000080ull + ((offset) + (block_id) * 0x2000ull) * 2048;
507 	}
508 	return 0x0001180008000080ull + ((offset) + (block_id) * 0x10000ull) * 2048;
509 }
510 
CVMX_GMXX_RXX_STATS_PKTS_BAD(unsigned long offset,unsigned long block_id)511 static inline u64 CVMX_GMXX_RXX_STATS_PKTS_BAD(unsigned long offset, unsigned long block_id)
512 {
513 	switch (cvmx_get_octeon_family()) {
514 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
515 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
516 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
517 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
518 		return 0x00011800080000C0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
519 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
520 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
521 		return 0x00011800080000C0ull + ((offset) + (block_id) * 0x2000ull) * 2048;
522 	}
523 	return 0x00011800080000C0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
524 }
525 
CVMX_GMXX_RXX_STATS_PKTS_CTL(unsigned long offset,unsigned long block_id)526 static inline u64 CVMX_GMXX_RXX_STATS_PKTS_CTL(unsigned long offset, unsigned long block_id)
527 {
528 	switch (cvmx_get_octeon_family()) {
529 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
530 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
531 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
532 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
533 		return 0x0001180008000090ull + ((offset) + (block_id) * 0x10000ull) * 2048;
534 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
535 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
536 		return 0x0001180008000090ull + ((offset) + (block_id) * 0x2000ull) * 2048;
537 	}
538 	return 0x0001180008000090ull + ((offset) + (block_id) * 0x10000ull) * 2048;
539 }
540 
CVMX_GMXX_RXX_STATS_PKTS_DMAC(unsigned long offset,unsigned long block_id)541 static inline u64 CVMX_GMXX_RXX_STATS_PKTS_DMAC(unsigned long offset, unsigned long block_id)
542 {
543 	switch (cvmx_get_octeon_family()) {
544 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
545 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
546 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
547 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
548 		return 0x00011800080000A0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
549 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
550 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
551 		return 0x00011800080000A0ull + ((offset) + (block_id) * 0x2000ull) * 2048;
552 	}
553 	return 0x00011800080000A0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
554 }
555 
CVMX_GMXX_RXX_STATS_PKTS_DRP(unsigned long offset,unsigned long block_id)556 static inline u64 CVMX_GMXX_RXX_STATS_PKTS_DRP(unsigned long offset, unsigned long block_id)
557 {
558 	switch (cvmx_get_octeon_family()) {
559 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
560 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
561 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
562 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
563 		return 0x00011800080000B0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
564 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
565 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
566 		return 0x00011800080000B0ull + ((offset) + (block_id) * 0x2000ull) * 2048;
567 	}
568 	return 0x00011800080000B0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
569 }
570 
CVMX_GMXX_RXX_UDD_SKP(unsigned long offset,unsigned long block_id)571 static inline u64 CVMX_GMXX_RXX_UDD_SKP(unsigned long offset, unsigned long block_id)
572 {
573 	switch (cvmx_get_octeon_family()) {
574 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
575 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
576 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
577 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
578 		return 0x0001180008000048ull + ((offset) + (block_id) * 0x10000ull) * 2048;
579 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
580 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
581 		return 0x0001180008000048ull + ((offset) + (block_id) * 0x2000ull) * 2048;
582 	}
583 	return 0x0001180008000048ull + ((offset) + (block_id) * 0x10000ull) * 2048;
584 }
585 
CVMX_GMXX_RX_BP_DROPX(unsigned long offset,unsigned long block_id)586 static inline u64 CVMX_GMXX_RX_BP_DROPX(unsigned long offset, unsigned long block_id)
587 {
588 	switch (cvmx_get_octeon_family()) {
589 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
590 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
591 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
592 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
593 		return 0x0001180008000420ull + ((offset) + (block_id) * 0x1000000ull) * 8;
594 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
595 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
596 		return 0x0001180008000420ull + ((offset) + (block_id) * 0x200000ull) * 8;
597 	}
598 	return 0x0001180008000420ull + ((offset) + (block_id) * 0x1000000ull) * 8;
599 }
600 
CVMX_GMXX_RX_BP_OFFX(unsigned long offset,unsigned long block_id)601 static inline u64 CVMX_GMXX_RX_BP_OFFX(unsigned long offset, unsigned long block_id)
602 {
603 	switch (cvmx_get_octeon_family()) {
604 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
605 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
606 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
607 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
608 		return 0x0001180008000460ull + ((offset) + (block_id) * 0x1000000ull) * 8;
609 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
610 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
611 		return 0x0001180008000460ull + ((offset) + (block_id) * 0x200000ull) * 8;
612 	}
613 	return 0x0001180008000460ull + ((offset) + (block_id) * 0x1000000ull) * 8;
614 }
615 
CVMX_GMXX_RX_BP_ONX(unsigned long offset,unsigned long block_id)616 static inline u64 CVMX_GMXX_RX_BP_ONX(unsigned long offset, unsigned long block_id)
617 {
618 	switch (cvmx_get_octeon_family()) {
619 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
620 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
621 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
622 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
623 		return 0x0001180008000440ull + ((offset) + (block_id) * 0x1000000ull) * 8;
624 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
625 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
626 		return 0x0001180008000440ull + ((offset) + (block_id) * 0x200000ull) * 8;
627 	}
628 	return 0x0001180008000440ull + ((offset) + (block_id) * 0x1000000ull) * 8;
629 }
630 
CVMX_GMXX_RX_HG2_STATUS(unsigned long offset)631 static inline u64 CVMX_GMXX_RX_HG2_STATUS(unsigned long offset)
632 {
633 	switch (cvmx_get_octeon_family()) {
634 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
635 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
636 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
637 		return 0x0001180008000548ull + (offset) * 0x8000000ull;
638 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
639 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
640 		return 0x0001180008000548ull + (offset) * 0x8000000ull;
641 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
642 		return 0x0001180008000548ull + (offset) * 0x1000000ull;
643 	}
644 	return 0x0001180008000548ull + (offset) * 0x8000000ull;
645 }
646 
647 #define CVMX_GMXX_RX_PASS_EN(offset) (0x00011800080005F8ull + ((offset) & 1) * 0x8000000ull)
648 #define CVMX_GMXX_RX_PASS_MAPX(offset, block_id)                                                   \
649 	(0x0001180008000600ull + (((offset) & 15) + ((block_id) & 1) * 0x1000000ull) * 8)
CVMX_GMXX_RX_PRTS(unsigned long offset)650 static inline u64 CVMX_GMXX_RX_PRTS(unsigned long offset)
651 {
652 	switch (cvmx_get_octeon_family()) {
653 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
654 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
655 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
656 		return 0x0001180008000410ull + (offset) * 0x8000000ull;
657 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
658 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
659 		return 0x0001180008000410ull + (offset) * 0x8000000ull;
660 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
661 		return 0x0001180008000410ull + (offset) * 0x1000000ull;
662 	}
663 	return 0x0001180008000410ull + (offset) * 0x8000000ull;
664 }
665 
CVMX_GMXX_RX_PRT_INFO(unsigned long offset)666 static inline u64 CVMX_GMXX_RX_PRT_INFO(unsigned long offset)
667 {
668 	switch (cvmx_get_octeon_family()) {
669 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
670 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
671 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
672 		return 0x00011800080004E8ull + (offset) * 0x8000000ull;
673 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
674 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
675 		return 0x00011800080004E8ull + (offset) * 0x8000000ull;
676 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
677 		return 0x00011800080004E8ull + (offset) * 0x1000000ull;
678 	}
679 	return 0x00011800080004E8ull + (offset) * 0x8000000ull;
680 }
681 
682 #define CVMX_GMXX_RX_TX_STATUS(offset) (0x00011800080007E8ull)
CVMX_GMXX_RX_XAUI_BAD_COL(unsigned long offset)683 static inline u64 CVMX_GMXX_RX_XAUI_BAD_COL(unsigned long offset)
684 {
685 	switch (cvmx_get_octeon_family()) {
686 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
687 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
688 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
689 		return 0x0001180008000538ull + (offset) * 0x8000000ull;
690 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
691 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
692 		return 0x0001180008000538ull + (offset) * 0x8000000ull;
693 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
694 		return 0x0001180008000538ull + (offset) * 0x1000000ull;
695 	}
696 	return 0x0001180008000538ull + (offset) * 0x8000000ull;
697 }
698 
CVMX_GMXX_RX_XAUI_CTL(unsigned long offset)699 static inline u64 CVMX_GMXX_RX_XAUI_CTL(unsigned long offset)
700 {
701 	switch (cvmx_get_octeon_family()) {
702 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
703 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
704 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
705 		return 0x0001180008000530ull + (offset) * 0x8000000ull;
706 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
707 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
708 		return 0x0001180008000530ull + (offset) * 0x8000000ull;
709 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
710 		return 0x0001180008000530ull + (offset) * 0x1000000ull;
711 	}
712 	return 0x0001180008000530ull + (offset) * 0x8000000ull;
713 }
714 
CVMX_GMXX_SMACX(unsigned long offset,unsigned long block_id)715 static inline u64 CVMX_GMXX_SMACX(unsigned long offset, unsigned long block_id)
716 {
717 	switch (cvmx_get_octeon_family()) {
718 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
719 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
720 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
721 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
722 		return 0x0001180008000230ull + ((offset) + (block_id) * 0x10000ull) * 2048;
723 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
724 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
725 		return 0x0001180008000230ull + ((offset) + (block_id) * 0x2000ull) * 2048;
726 	}
727 	return 0x0001180008000230ull + ((offset) + (block_id) * 0x10000ull) * 2048;
728 }
729 
CVMX_GMXX_SOFT_BIST(unsigned long offset)730 static inline u64 CVMX_GMXX_SOFT_BIST(unsigned long offset)
731 {
732 	switch (cvmx_get_octeon_family()) {
733 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
734 		return 0x00011800080007E8ull + (offset) * 0x8000000ull;
735 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
736 		return 0x00011800080007E8ull + (offset) * 0x8000000ull;
737 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
738 		return 0x00011800080007E8ull + (offset) * 0x1000000ull;
739 	}
740 	return 0x00011800080007E8ull + (offset) * 0x1000000ull;
741 }
742 
CVMX_GMXX_STAT_BP(unsigned long offset)743 static inline u64 CVMX_GMXX_STAT_BP(unsigned long offset)
744 {
745 	switch (cvmx_get_octeon_family()) {
746 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
747 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
748 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
749 		return 0x0001180008000520ull + (offset) * 0x8000000ull;
750 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
751 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
752 		return 0x0001180008000520ull + (offset) * 0x8000000ull;
753 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
754 		return 0x0001180008000520ull + (offset) * 0x1000000ull;
755 	}
756 	return 0x0001180008000520ull + (offset) * 0x8000000ull;
757 }
758 
CVMX_GMXX_TB_REG(unsigned long offset)759 static inline u64 CVMX_GMXX_TB_REG(unsigned long offset)
760 {
761 	switch (cvmx_get_octeon_family()) {
762 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
763 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
764 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
765 		return 0x00011800080007E0ull + (offset) * 0x8000000ull;
766 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
767 		return 0x00011800080007E0ull + (offset) * 0x8000000ull;
768 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
769 		return 0x00011800080007E0ull + (offset) * 0x1000000ull;
770 	}
771 	return 0x00011800080007E0ull + (offset) * 0x8000000ull;
772 }
773 
CVMX_GMXX_TXX_APPEND(unsigned long offset,unsigned long block_id)774 static inline u64 CVMX_GMXX_TXX_APPEND(unsigned long offset, unsigned long block_id)
775 {
776 	switch (cvmx_get_octeon_family()) {
777 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
778 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
779 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
780 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
781 		return 0x0001180008000218ull + ((offset) + (block_id) * 0x10000ull) * 2048;
782 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
783 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
784 		return 0x0001180008000218ull + ((offset) + (block_id) * 0x2000ull) * 2048;
785 	}
786 	return 0x0001180008000218ull + ((offset) + (block_id) * 0x10000ull) * 2048;
787 }
788 
789 #define CVMX_GMXX_TXX_BCK_CRDT(offset, block_id)                                                   \
790 	(0x0001180008000388ull + (((offset) & 3) + ((block_id) & 1) * 0x10000ull) * 2048)
CVMX_GMXX_TXX_BURST(unsigned long offset,unsigned long block_id)791 static inline u64 CVMX_GMXX_TXX_BURST(unsigned long offset, unsigned long block_id)
792 {
793 	switch (cvmx_get_octeon_family()) {
794 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
795 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
796 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
797 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
798 		return 0x0001180008000228ull + ((offset) + (block_id) * 0x10000ull) * 2048;
799 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
800 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
801 		return 0x0001180008000228ull + ((offset) + (block_id) * 0x2000ull) * 2048;
802 	}
803 	return 0x0001180008000228ull + ((offset) + (block_id) * 0x10000ull) * 2048;
804 }
805 
CVMX_GMXX_TXX_CBFC_XOFF(unsigned long offset,unsigned long block_id)806 static inline u64 CVMX_GMXX_TXX_CBFC_XOFF(unsigned long __attribute__((unused)) offset,
807 					  unsigned long block_id)
808 {
809 	switch (cvmx_get_octeon_family()) {
810 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
811 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
812 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
813 		return 0x00011800080005A0ull + (block_id) * 0x8000000ull;
814 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
815 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
816 		return 0x00011800080005A0ull + (block_id) * 0x8000000ull;
817 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
818 		return 0x00011800080005A0ull + (block_id) * 0x1000000ull;
819 	}
820 	return 0x00011800080005A0ull + (block_id) * 0x8000000ull;
821 }
822 
CVMX_GMXX_TXX_CBFC_XON(unsigned long offset,unsigned long block_id)823 static inline u64 CVMX_GMXX_TXX_CBFC_XON(unsigned long __attribute__((unused)) offset,
824 					 unsigned long block_id)
825 {
826 	switch (cvmx_get_octeon_family()) {
827 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
828 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
829 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
830 		return 0x00011800080005C0ull + (block_id) * 0x8000000ull;
831 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
832 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
833 		return 0x00011800080005C0ull + (block_id) * 0x8000000ull;
834 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
835 		return 0x00011800080005C0ull + (block_id) * 0x1000000ull;
836 	}
837 	return 0x00011800080005C0ull + (block_id) * 0x8000000ull;
838 }
839 
840 #define CVMX_GMXX_TXX_CLK(offset, block_id)                                                        \
841 	(0x0001180008000208ull + (((offset) & 3) + ((block_id) & 1) * 0x10000ull) * 2048)
CVMX_GMXX_TXX_CTL(unsigned long offset,unsigned long block_id)842 static inline u64 CVMX_GMXX_TXX_CTL(unsigned long offset, unsigned long block_id)
843 {
844 	switch (cvmx_get_octeon_family()) {
845 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
846 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
847 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
848 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
849 		return 0x0001180008000270ull + ((offset) + (block_id) * 0x10000ull) * 2048;
850 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
851 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
852 		return 0x0001180008000270ull + ((offset) + (block_id) * 0x2000ull) * 2048;
853 	}
854 	return 0x0001180008000270ull + ((offset) + (block_id) * 0x10000ull) * 2048;
855 }
856 
857 #define CVMX_GMXX_TXX_JAM_MODE(offset, block_id)                                                   \
858 	(0x0001180008000380ull + (((offset) & 3) + ((block_id) & 1) * 0x10000ull) * 2048)
CVMX_GMXX_TXX_MIN_PKT(unsigned long offset,unsigned long block_id)859 static inline u64 CVMX_GMXX_TXX_MIN_PKT(unsigned long offset, unsigned long block_id)
860 {
861 	switch (cvmx_get_octeon_family()) {
862 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
863 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
864 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
865 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
866 		return 0x0001180008000240ull + ((offset) + (block_id) * 0x10000ull) * 2048;
867 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
868 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
869 		return 0x0001180008000240ull + ((offset) + (block_id) * 0x2000ull) * 2048;
870 	}
871 	return 0x0001180008000240ull + ((offset) + (block_id) * 0x10000ull) * 2048;
872 }
873 
CVMX_GMXX_TXX_PAUSE_PKT_INTERVAL(unsigned long offset,unsigned long block_id)874 static inline u64 CVMX_GMXX_TXX_PAUSE_PKT_INTERVAL(unsigned long offset, unsigned long block_id)
875 {
876 	switch (cvmx_get_octeon_family()) {
877 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
878 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
879 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
880 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
881 		return 0x0001180008000248ull + ((offset) + (block_id) * 0x10000ull) * 2048;
882 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
883 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
884 		return 0x0001180008000248ull + ((offset) + (block_id) * 0x2000ull) * 2048;
885 	}
886 	return 0x0001180008000248ull + ((offset) + (block_id) * 0x10000ull) * 2048;
887 }
888 
CVMX_GMXX_TXX_PAUSE_PKT_TIME(unsigned long offset,unsigned long block_id)889 static inline u64 CVMX_GMXX_TXX_PAUSE_PKT_TIME(unsigned long offset, unsigned long block_id)
890 {
891 	switch (cvmx_get_octeon_family()) {
892 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
893 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
894 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
895 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
896 		return 0x0001180008000238ull + ((offset) + (block_id) * 0x10000ull) * 2048;
897 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
898 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
899 		return 0x0001180008000238ull + ((offset) + (block_id) * 0x2000ull) * 2048;
900 	}
901 	return 0x0001180008000238ull + ((offset) + (block_id) * 0x10000ull) * 2048;
902 }
903 
CVMX_GMXX_TXX_PAUSE_TOGO(unsigned long offset,unsigned long block_id)904 static inline u64 CVMX_GMXX_TXX_PAUSE_TOGO(unsigned long offset, unsigned long block_id)
905 {
906 	switch (cvmx_get_octeon_family()) {
907 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
908 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
909 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
910 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
911 		return 0x0001180008000258ull + ((offset) + (block_id) * 0x10000ull) * 2048;
912 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
913 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
914 		return 0x0001180008000258ull + ((offset) + (block_id) * 0x2000ull) * 2048;
915 	}
916 	return 0x0001180008000258ull + ((offset) + (block_id) * 0x10000ull) * 2048;
917 }
918 
CVMX_GMXX_TXX_PAUSE_ZERO(unsigned long offset,unsigned long block_id)919 static inline u64 CVMX_GMXX_TXX_PAUSE_ZERO(unsigned long offset, unsigned long block_id)
920 {
921 	switch (cvmx_get_octeon_family()) {
922 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
923 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
924 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
925 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
926 		return 0x0001180008000260ull + ((offset) + (block_id) * 0x10000ull) * 2048;
927 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
928 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
929 		return 0x0001180008000260ull + ((offset) + (block_id) * 0x2000ull) * 2048;
930 	}
931 	return 0x0001180008000260ull + ((offset) + (block_id) * 0x10000ull) * 2048;
932 }
933 
934 #define CVMX_GMXX_TXX_PIPE(offset, block_id)                                                       \
935 	(0x0001180008000310ull + (((offset) & 3) + ((block_id) & 7) * 0x2000ull) * 2048)
CVMX_GMXX_TXX_SGMII_CTL(unsigned long offset,unsigned long block_id)936 static inline u64 CVMX_GMXX_TXX_SGMII_CTL(unsigned long offset, unsigned long block_id)
937 {
938 	switch (cvmx_get_octeon_family()) {
939 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
940 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
941 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
942 		return 0x0001180008000300ull + ((offset) + (block_id) * 0x10000ull) * 2048;
943 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
944 		return 0x0001180008000300ull + ((offset) + (block_id) * 0x10000ull) * 2048;
945 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
946 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
947 		return 0x0001180008000300ull + ((offset) + (block_id) * 0x2000ull) * 2048;
948 	}
949 	return 0x0001180008000300ull + ((offset) + (block_id) * 0x10000ull) * 2048;
950 }
951 
CVMX_GMXX_TXX_SLOT(unsigned long offset,unsigned long block_id)952 static inline u64 CVMX_GMXX_TXX_SLOT(unsigned long offset, unsigned long block_id)
953 {
954 	switch (cvmx_get_octeon_family()) {
955 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
956 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
957 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
958 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
959 		return 0x0001180008000220ull + ((offset) + (block_id) * 0x10000ull) * 2048;
960 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
961 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
962 		return 0x0001180008000220ull + ((offset) + (block_id) * 0x2000ull) * 2048;
963 	}
964 	return 0x0001180008000220ull + ((offset) + (block_id) * 0x10000ull) * 2048;
965 }
966 
CVMX_GMXX_TXX_SOFT_PAUSE(unsigned long offset,unsigned long block_id)967 static inline u64 CVMX_GMXX_TXX_SOFT_PAUSE(unsigned long offset, unsigned long block_id)
968 {
969 	switch (cvmx_get_octeon_family()) {
970 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
971 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
972 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
973 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
974 		return 0x0001180008000250ull + ((offset) + (block_id) * 0x10000ull) * 2048;
975 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
976 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
977 		return 0x0001180008000250ull + ((offset) + (block_id) * 0x2000ull) * 2048;
978 	}
979 	return 0x0001180008000250ull + ((offset) + (block_id) * 0x10000ull) * 2048;
980 }
981 
CVMX_GMXX_TXX_STAT0(unsigned long offset,unsigned long block_id)982 static inline u64 CVMX_GMXX_TXX_STAT0(unsigned long offset, unsigned long block_id)
983 {
984 	switch (cvmx_get_octeon_family()) {
985 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
986 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
987 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
988 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
989 		return 0x0001180008000280ull + ((offset) + (block_id) * 0x10000ull) * 2048;
990 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
991 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
992 		return 0x0001180008000280ull + ((offset) + (block_id) * 0x2000ull) * 2048;
993 	}
994 	return 0x0001180008000280ull + ((offset) + (block_id) * 0x10000ull) * 2048;
995 }
996 
CVMX_GMXX_TXX_STAT1(unsigned long offset,unsigned long block_id)997 static inline u64 CVMX_GMXX_TXX_STAT1(unsigned long offset, unsigned long block_id)
998 {
999 	switch (cvmx_get_octeon_family()) {
1000 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1001 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1002 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1003 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1004 		return 0x0001180008000288ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1005 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1006 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1007 		return 0x0001180008000288ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1008 	}
1009 	return 0x0001180008000288ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1010 }
1011 
CVMX_GMXX_TXX_STAT2(unsigned long offset,unsigned long block_id)1012 static inline u64 CVMX_GMXX_TXX_STAT2(unsigned long offset, unsigned long block_id)
1013 {
1014 	switch (cvmx_get_octeon_family()) {
1015 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1016 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1017 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1018 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1019 		return 0x0001180008000290ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1020 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1021 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1022 		return 0x0001180008000290ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1023 	}
1024 	return 0x0001180008000290ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1025 }
1026 
CVMX_GMXX_TXX_STAT3(unsigned long offset,unsigned long block_id)1027 static inline u64 CVMX_GMXX_TXX_STAT3(unsigned long offset, unsigned long block_id)
1028 {
1029 	switch (cvmx_get_octeon_family()) {
1030 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1031 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1032 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1033 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1034 		return 0x0001180008000298ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1035 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1036 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1037 		return 0x0001180008000298ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1038 	}
1039 	return 0x0001180008000298ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1040 }
1041 
CVMX_GMXX_TXX_STAT4(unsigned long offset,unsigned long block_id)1042 static inline u64 CVMX_GMXX_TXX_STAT4(unsigned long offset, unsigned long block_id)
1043 {
1044 	switch (cvmx_get_octeon_family()) {
1045 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1046 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1047 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1048 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1049 		return 0x00011800080002A0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1050 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1051 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1052 		return 0x00011800080002A0ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1053 	}
1054 	return 0x00011800080002A0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1055 }
1056 
CVMX_GMXX_TXX_STAT5(unsigned long offset,unsigned long block_id)1057 static inline u64 CVMX_GMXX_TXX_STAT5(unsigned long offset, unsigned long block_id)
1058 {
1059 	switch (cvmx_get_octeon_family()) {
1060 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1061 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1062 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1063 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1064 		return 0x00011800080002A8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1065 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1066 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1067 		return 0x00011800080002A8ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1068 	}
1069 	return 0x00011800080002A8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1070 }
1071 
CVMX_GMXX_TXX_STAT6(unsigned long offset,unsigned long block_id)1072 static inline u64 CVMX_GMXX_TXX_STAT6(unsigned long offset, unsigned long block_id)
1073 {
1074 	switch (cvmx_get_octeon_family()) {
1075 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1076 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1077 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1078 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1079 		return 0x00011800080002B0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1080 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1081 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1082 		return 0x00011800080002B0ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1083 	}
1084 	return 0x00011800080002B0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1085 }
1086 
CVMX_GMXX_TXX_STAT7(unsigned long offset,unsigned long block_id)1087 static inline u64 CVMX_GMXX_TXX_STAT7(unsigned long offset, unsigned long block_id)
1088 {
1089 	switch (cvmx_get_octeon_family()) {
1090 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1091 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1092 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1093 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1094 		return 0x00011800080002B8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1095 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1096 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1097 		return 0x00011800080002B8ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1098 	}
1099 	return 0x00011800080002B8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1100 }
1101 
CVMX_GMXX_TXX_STAT8(unsigned long offset,unsigned long block_id)1102 static inline u64 CVMX_GMXX_TXX_STAT8(unsigned long offset, unsigned long block_id)
1103 {
1104 	switch (cvmx_get_octeon_family()) {
1105 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1106 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1107 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1108 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1109 		return 0x00011800080002C0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1110 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1111 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1112 		return 0x00011800080002C0ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1113 	}
1114 	return 0x00011800080002C0ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1115 }
1116 
CVMX_GMXX_TXX_STAT9(unsigned long offset,unsigned long block_id)1117 static inline u64 CVMX_GMXX_TXX_STAT9(unsigned long offset, unsigned long block_id)
1118 {
1119 	switch (cvmx_get_octeon_family()) {
1120 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1121 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1122 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1123 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1124 		return 0x00011800080002C8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1125 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1126 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1127 		return 0x00011800080002C8ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1128 	}
1129 	return 0x00011800080002C8ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1130 }
1131 
CVMX_GMXX_TXX_STATS_CTL(unsigned long offset,unsigned long block_id)1132 static inline u64 CVMX_GMXX_TXX_STATS_CTL(unsigned long offset, unsigned long block_id)
1133 {
1134 	switch (cvmx_get_octeon_family()) {
1135 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1136 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1137 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1138 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1139 		return 0x0001180008000268ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1140 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1141 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1142 		return 0x0001180008000268ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1143 	}
1144 	return 0x0001180008000268ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1145 }
1146 
CVMX_GMXX_TXX_THRESH(unsigned long offset,unsigned long block_id)1147 static inline u64 CVMX_GMXX_TXX_THRESH(unsigned long offset, unsigned long block_id)
1148 {
1149 	switch (cvmx_get_octeon_family()) {
1150 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1151 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1152 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1153 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1154 		return 0x0001180008000210ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1155 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1156 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1157 		return 0x0001180008000210ull + ((offset) + (block_id) * 0x2000ull) * 2048;
1158 	}
1159 	return 0x0001180008000210ull + ((offset) + (block_id) * 0x10000ull) * 2048;
1160 }
1161 
CVMX_GMXX_TX_BP(unsigned long offset)1162 static inline u64 CVMX_GMXX_TX_BP(unsigned long offset)
1163 {
1164 	switch (cvmx_get_octeon_family()) {
1165 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1166 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1167 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1168 		return 0x00011800080004D0ull + (offset) * 0x8000000ull;
1169 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1170 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1171 		return 0x00011800080004D0ull + (offset) * 0x8000000ull;
1172 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1173 		return 0x00011800080004D0ull + (offset) * 0x1000000ull;
1174 	}
1175 	return 0x00011800080004D0ull + (offset) * 0x8000000ull;
1176 }
1177 
1178 #define CVMX_GMXX_TX_CLK_MSKX(offset, block_id)                                                    \
1179 	(0x0001180008000780ull + (((offset) & 1) + ((block_id) & 0) * 0x0ull) * 8)
CVMX_GMXX_TX_COL_ATTEMPT(unsigned long offset)1180 static inline u64 CVMX_GMXX_TX_COL_ATTEMPT(unsigned long offset)
1181 {
1182 	switch (cvmx_get_octeon_family()) {
1183 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1184 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1185 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1186 		return 0x0001180008000498ull + (offset) * 0x8000000ull;
1187 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1188 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1189 		return 0x0001180008000498ull + (offset) * 0x8000000ull;
1190 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1191 		return 0x0001180008000498ull + (offset) * 0x1000000ull;
1192 	}
1193 	return 0x0001180008000498ull + (offset) * 0x8000000ull;
1194 }
1195 
CVMX_GMXX_TX_CORRUPT(unsigned long offset)1196 static inline u64 CVMX_GMXX_TX_CORRUPT(unsigned long offset)
1197 {
1198 	switch (cvmx_get_octeon_family()) {
1199 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1200 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1201 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1202 		return 0x00011800080004D8ull + (offset) * 0x8000000ull;
1203 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1204 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1205 		return 0x00011800080004D8ull + (offset) * 0x8000000ull;
1206 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1207 		return 0x00011800080004D8ull + (offset) * 0x1000000ull;
1208 	}
1209 	return 0x00011800080004D8ull + (offset) * 0x8000000ull;
1210 }
1211 
CVMX_GMXX_TX_HG2_REG1(unsigned long offset)1212 static inline u64 CVMX_GMXX_TX_HG2_REG1(unsigned long offset)
1213 {
1214 	switch (cvmx_get_octeon_family()) {
1215 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1216 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1217 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1218 		return 0x0001180008000558ull + (offset) * 0x8000000ull;
1219 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1220 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1221 		return 0x0001180008000558ull + (offset) * 0x8000000ull;
1222 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1223 		return 0x0001180008000558ull + (offset) * 0x1000000ull;
1224 	}
1225 	return 0x0001180008000558ull + (offset) * 0x8000000ull;
1226 }
1227 
CVMX_GMXX_TX_HG2_REG2(unsigned long offset)1228 static inline u64 CVMX_GMXX_TX_HG2_REG2(unsigned long offset)
1229 {
1230 	switch (cvmx_get_octeon_family()) {
1231 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1232 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1233 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1234 		return 0x0001180008000560ull + (offset) * 0x8000000ull;
1235 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1236 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1237 		return 0x0001180008000560ull + (offset) * 0x8000000ull;
1238 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1239 		return 0x0001180008000560ull + (offset) * 0x1000000ull;
1240 	}
1241 	return 0x0001180008000560ull + (offset) * 0x8000000ull;
1242 }
1243 
CVMX_GMXX_TX_IFG(unsigned long offset)1244 static inline u64 CVMX_GMXX_TX_IFG(unsigned long offset)
1245 {
1246 	switch (cvmx_get_octeon_family()) {
1247 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1248 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1249 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1250 		return 0x0001180008000488ull + (offset) * 0x8000000ull;
1251 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1252 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1253 		return 0x0001180008000488ull + (offset) * 0x8000000ull;
1254 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1255 		return 0x0001180008000488ull + (offset) * 0x1000000ull;
1256 	}
1257 	return 0x0001180008000488ull + (offset) * 0x8000000ull;
1258 }
1259 
CVMX_GMXX_TX_INT_EN(unsigned long offset)1260 static inline u64 CVMX_GMXX_TX_INT_EN(unsigned long offset)
1261 {
1262 	switch (cvmx_get_octeon_family()) {
1263 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1264 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1265 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1266 		return 0x0001180008000508ull + (offset) * 0x8000000ull;
1267 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1268 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1269 		return 0x0001180008000508ull + (offset) * 0x8000000ull;
1270 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1271 		return 0x0001180008000508ull + (offset) * 0x1000000ull;
1272 	}
1273 	return 0x0001180008000508ull + (offset) * 0x8000000ull;
1274 }
1275 
CVMX_GMXX_TX_INT_REG(unsigned long offset)1276 static inline u64 CVMX_GMXX_TX_INT_REG(unsigned long offset)
1277 {
1278 	switch (cvmx_get_octeon_family()) {
1279 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1280 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1281 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1282 		return 0x0001180008000500ull + (offset) * 0x8000000ull;
1283 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1284 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1285 		return 0x0001180008000500ull + (offset) * 0x8000000ull;
1286 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1287 		return 0x0001180008000500ull + (offset) * 0x1000000ull;
1288 	}
1289 	return 0x0001180008000500ull + (offset) * 0x8000000ull;
1290 }
1291 
CVMX_GMXX_TX_JAM(unsigned long offset)1292 static inline u64 CVMX_GMXX_TX_JAM(unsigned long offset)
1293 {
1294 	switch (cvmx_get_octeon_family()) {
1295 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1296 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1297 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1298 		return 0x0001180008000490ull + (offset) * 0x8000000ull;
1299 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1300 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1301 		return 0x0001180008000490ull + (offset) * 0x8000000ull;
1302 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1303 		return 0x0001180008000490ull + (offset) * 0x1000000ull;
1304 	}
1305 	return 0x0001180008000490ull + (offset) * 0x8000000ull;
1306 }
1307 
CVMX_GMXX_TX_LFSR(unsigned long offset)1308 static inline u64 CVMX_GMXX_TX_LFSR(unsigned long offset)
1309 {
1310 	switch (cvmx_get_octeon_family()) {
1311 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1312 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1313 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1314 		return 0x00011800080004F8ull + (offset) * 0x8000000ull;
1315 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1316 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1317 		return 0x00011800080004F8ull + (offset) * 0x8000000ull;
1318 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1319 		return 0x00011800080004F8ull + (offset) * 0x1000000ull;
1320 	}
1321 	return 0x00011800080004F8ull + (offset) * 0x8000000ull;
1322 }
1323 
CVMX_GMXX_TX_OVR_BP(unsigned long offset)1324 static inline u64 CVMX_GMXX_TX_OVR_BP(unsigned long offset)
1325 {
1326 	switch (cvmx_get_octeon_family()) {
1327 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1328 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1329 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1330 		return 0x00011800080004C8ull + (offset) * 0x8000000ull;
1331 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1332 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1333 		return 0x00011800080004C8ull + (offset) * 0x8000000ull;
1334 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1335 		return 0x00011800080004C8ull + (offset) * 0x1000000ull;
1336 	}
1337 	return 0x00011800080004C8ull + (offset) * 0x8000000ull;
1338 }
1339 
CVMX_GMXX_TX_PAUSE_PKT_DMAC(unsigned long offset)1340 static inline u64 CVMX_GMXX_TX_PAUSE_PKT_DMAC(unsigned long offset)
1341 {
1342 	switch (cvmx_get_octeon_family()) {
1343 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1344 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1345 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1346 		return 0x00011800080004A0ull + (offset) * 0x8000000ull;
1347 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1348 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1349 		return 0x00011800080004A0ull + (offset) * 0x8000000ull;
1350 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1351 		return 0x00011800080004A0ull + (offset) * 0x1000000ull;
1352 	}
1353 	return 0x00011800080004A0ull + (offset) * 0x8000000ull;
1354 }
1355 
CVMX_GMXX_TX_PAUSE_PKT_TYPE(unsigned long offset)1356 static inline u64 CVMX_GMXX_TX_PAUSE_PKT_TYPE(unsigned long offset)
1357 {
1358 	switch (cvmx_get_octeon_family()) {
1359 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1360 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1361 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1362 		return 0x00011800080004A8ull + (offset) * 0x8000000ull;
1363 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1364 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1365 		return 0x00011800080004A8ull + (offset) * 0x8000000ull;
1366 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1367 		return 0x00011800080004A8ull + (offset) * 0x1000000ull;
1368 	}
1369 	return 0x00011800080004A8ull + (offset) * 0x8000000ull;
1370 }
1371 
CVMX_GMXX_TX_PRTS(unsigned long offset)1372 static inline u64 CVMX_GMXX_TX_PRTS(unsigned long offset)
1373 {
1374 	switch (cvmx_get_octeon_family()) {
1375 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1376 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1377 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1378 		return 0x0001180008000480ull + (offset) * 0x8000000ull;
1379 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1380 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1381 		return 0x0001180008000480ull + (offset) * 0x8000000ull;
1382 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1383 		return 0x0001180008000480ull + (offset) * 0x1000000ull;
1384 	}
1385 	return 0x0001180008000480ull + (offset) * 0x8000000ull;
1386 }
1387 
1388 #define CVMX_GMXX_TX_SPI_CTL(offset)   (0x00011800080004C0ull + ((offset) & 1) * 0x8000000ull)
1389 #define CVMX_GMXX_TX_SPI_DRAIN(offset) (0x00011800080004E0ull + ((offset) & 1) * 0x8000000ull)
1390 #define CVMX_GMXX_TX_SPI_MAX(offset)   (0x00011800080004B0ull + ((offset) & 1) * 0x8000000ull)
1391 #define CVMX_GMXX_TX_SPI_ROUNDX(offset, block_id)                                                  \
1392 	(0x0001180008000680ull + (((offset) & 31) + ((block_id) & 1) * 0x1000000ull) * 8)
1393 #define CVMX_GMXX_TX_SPI_THRESH(offset) (0x00011800080004B8ull + ((offset) & 1) * 0x8000000ull)
CVMX_GMXX_TX_XAUI_CTL(unsigned long offset)1394 static inline u64 CVMX_GMXX_TX_XAUI_CTL(unsigned long offset)
1395 {
1396 	switch (cvmx_get_octeon_family()) {
1397 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1398 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1399 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1400 		return 0x0001180008000528ull + (offset) * 0x8000000ull;
1401 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1402 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1403 		return 0x0001180008000528ull + (offset) * 0x8000000ull;
1404 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1405 		return 0x0001180008000528ull + (offset) * 0x1000000ull;
1406 	}
1407 	return 0x0001180008000528ull + (offset) * 0x8000000ull;
1408 }
1409 
1410 #define CVMX_GMXX_WOL_CTL(offset) (0x0001180008000780ull + ((offset) & 1) * 0x8000000ull)
CVMX_GMXX_XAUI_EXT_LOOPBACK(unsigned long offset)1411 static inline u64 CVMX_GMXX_XAUI_EXT_LOOPBACK(unsigned long offset)
1412 {
1413 	switch (cvmx_get_octeon_family()) {
1414 	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
1415 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
1416 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
1417 		return 0x0001180008000540ull + (offset) * 0x8000000ull;
1418 	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
1419 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
1420 		return 0x0001180008000540ull + (offset) * 0x8000000ull;
1421 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
1422 		return 0x0001180008000540ull + (offset) * 0x1000000ull;
1423 	}
1424 	return 0x0001180008000540ull + (offset) * 0x8000000ull;
1425 }
1426 
1427 /**
1428  * cvmx_gmx#_bad_reg
1429  *
1430  * GMX_BAD_REG = A collection of things that have gone very, very wrong
1431  *
1432  *
1433  * Notes:
1434  * In XAUI mode, only the lsb (corresponding to port0) of INB_NXA, LOSTSTAT, OUT_OVR, are used.
1435  *
1436  */
1437 union cvmx_gmxx_bad_reg {
1438 	u64 u64;
1439 	struct cvmx_gmxx_bad_reg_s {
1440 		u64 reserved_31_63 : 33;
1441 		u64 inb_nxa : 4;
1442 		u64 statovr : 1;
1443 		u64 loststat : 4;
1444 		u64 reserved_18_21 : 4;
1445 		u64 out_ovr : 16;
1446 		u64 ncb_ovr : 1;
1447 		u64 out_col : 1;
1448 	} s;
1449 	struct cvmx_gmxx_bad_reg_cn30xx {
1450 		u64 reserved_31_63 : 33;
1451 		u64 inb_nxa : 4;
1452 		u64 statovr : 1;
1453 		u64 reserved_25_25 : 1;
1454 		u64 loststat : 3;
1455 		u64 reserved_5_21 : 17;
1456 		u64 out_ovr : 3;
1457 		u64 reserved_0_1 : 2;
1458 	} cn30xx;
1459 	struct cvmx_gmxx_bad_reg_cn30xx cn31xx;
1460 	struct cvmx_gmxx_bad_reg_s cn38xx;
1461 	struct cvmx_gmxx_bad_reg_s cn38xxp2;
1462 	struct cvmx_gmxx_bad_reg_cn30xx cn50xx;
1463 	struct cvmx_gmxx_bad_reg_cn52xx {
1464 		u64 reserved_31_63 : 33;
1465 		u64 inb_nxa : 4;
1466 		u64 statovr : 1;
1467 		u64 loststat : 4;
1468 		u64 reserved_6_21 : 16;
1469 		u64 out_ovr : 4;
1470 		u64 reserved_0_1 : 2;
1471 	} cn52xx;
1472 	struct cvmx_gmxx_bad_reg_cn52xx cn52xxp1;
1473 	struct cvmx_gmxx_bad_reg_cn52xx cn56xx;
1474 	struct cvmx_gmxx_bad_reg_cn52xx cn56xxp1;
1475 	struct cvmx_gmxx_bad_reg_s cn58xx;
1476 	struct cvmx_gmxx_bad_reg_s cn58xxp1;
1477 	struct cvmx_gmxx_bad_reg_cn52xx cn61xx;
1478 	struct cvmx_gmxx_bad_reg_cn52xx cn63xx;
1479 	struct cvmx_gmxx_bad_reg_cn52xx cn63xxp1;
1480 	struct cvmx_gmxx_bad_reg_cn52xx cn66xx;
1481 	struct cvmx_gmxx_bad_reg_cn52xx cn68xx;
1482 	struct cvmx_gmxx_bad_reg_cn52xx cn68xxp1;
1483 	struct cvmx_gmxx_bad_reg_cn52xx cn70xx;
1484 	struct cvmx_gmxx_bad_reg_cn52xx cn70xxp1;
1485 	struct cvmx_gmxx_bad_reg_cn52xx cnf71xx;
1486 };
1487 
1488 typedef union cvmx_gmxx_bad_reg cvmx_gmxx_bad_reg_t;
1489 
1490 /**
1491  * cvmx_gmx#_bist
1492  *
1493  * GMX_BIST = GMX BIST Results
1494  *
1495  */
1496 union cvmx_gmxx_bist {
1497 	u64 u64;
1498 	struct cvmx_gmxx_bist_s {
1499 		u64 reserved_25_63 : 39;
1500 		u64 status : 25;
1501 	} s;
1502 	struct cvmx_gmxx_bist_cn30xx {
1503 		u64 reserved_10_63 : 54;
1504 		u64 status : 10;
1505 	} cn30xx;
1506 	struct cvmx_gmxx_bist_cn30xx cn31xx;
1507 	struct cvmx_gmxx_bist_cn30xx cn38xx;
1508 	struct cvmx_gmxx_bist_cn30xx cn38xxp2;
1509 	struct cvmx_gmxx_bist_cn50xx {
1510 		u64 reserved_12_63 : 52;
1511 		u64 status : 12;
1512 	} cn50xx;
1513 	struct cvmx_gmxx_bist_cn52xx {
1514 		u64 reserved_16_63 : 48;
1515 		u64 status : 16;
1516 	} cn52xx;
1517 	struct cvmx_gmxx_bist_cn52xx cn52xxp1;
1518 	struct cvmx_gmxx_bist_cn52xx cn56xx;
1519 	struct cvmx_gmxx_bist_cn52xx cn56xxp1;
1520 	struct cvmx_gmxx_bist_cn58xx {
1521 		u64 reserved_17_63 : 47;
1522 		u64 status : 17;
1523 	} cn58xx;
1524 	struct cvmx_gmxx_bist_cn58xx cn58xxp1;
1525 	struct cvmx_gmxx_bist_s cn61xx;
1526 	struct cvmx_gmxx_bist_s cn63xx;
1527 	struct cvmx_gmxx_bist_s cn63xxp1;
1528 	struct cvmx_gmxx_bist_s cn66xx;
1529 	struct cvmx_gmxx_bist_s cn68xx;
1530 	struct cvmx_gmxx_bist_s cn68xxp1;
1531 	struct cvmx_gmxx_bist_s cn70xx;
1532 	struct cvmx_gmxx_bist_s cn70xxp1;
1533 	struct cvmx_gmxx_bist_s cnf71xx;
1534 };
1535 
1536 typedef union cvmx_gmxx_bist cvmx_gmxx_bist_t;
1537 
1538 /**
1539  * cvmx_gmx#_bpid_map#
1540  *
1541  * Notes:
1542  * GMX will build BPID_VECTOR<15:0> using the 16 GMX_BPID_MAP entries and the BPID
1543  * state from IPD.  In XAUI/RXAUI mode when PFC/CBFC/HiGig2 is used, the
1544  * BPID_VECTOR becomes the logical backpressure.  In XAUI/RXAUI mode when
1545  * PFC/CBFC/HiGig2 is not used or when in 4xSGMII mode, the BPID_VECTOR can be used
1546  * with the GMX_BPID_MSK register to determine the physical backpressure.
1547  *
1548  * In XAUI/RXAUI mode, the entire BPID_VECTOR<15:0> is available determining physical
1549  * backpressure for the single XAUI/RXAUI interface.
1550  *
1551  * In SGMII mode, BPID_VECTOR is broken up as follows:
1552  *    SGMII interface0 uses BPID_VECTOR<3:0>
1553  *    SGMII interface1 uses BPID_VECTOR<7:4>
1554  *    SGMII interface2 uses BPID_VECTOR<11:8>
1555  *    SGMII interface3 uses BPID_VECTOR<15:12>
1556  *
1557  * In all SGMII configurations, and in some XAUI/RXAUI configurations, the
1558  * interface protocols only support physical backpressure. In these cases, a single
1559  * BPID will commonly drive the physical backpressure for the physical
1560  * interface. We provide example programmings for these simple cases.
1561  *
1562  * In XAUI/RXAUI mode where PFC/CBFC/HiGig2 is not used, an example programming
1563  * would be as follows:
1564  *
1565  *    @verbatim
1566  *    GMX_BPID_MAP0[VAL]    = 1;
1567  *    GMX_BPID_MAP0[BPID]   = xaui_bpid;
1568  *    GMX_BPID_MSK[MSK_OR]  = 1;
1569  *    GMX_BPID_MSK[MSK_AND] = 0;
1570  *    @endverbatim
1571  *
1572  * In SGMII mode, an example programming would be as follows:
1573  *
1574  *    @verbatim
1575  *    for (i=0; i<4; i++) [
1576  *       if (GMX_PRTi_CFG[EN]) [
1577  *          GMX_BPID_MAP(i*4)[VAL]    = 1;
1578  *          GMX_BPID_MAP(i*4)[BPID]   = sgmii_bpid(i);
1579  *          GMX_BPID_MSK[MSK_OR]      = (1 << (i*4)) | GMX_BPID_MSK[MSK_OR];
1580  *       ]
1581  *    ]
1582  *    GMX_BPID_MSK[MSK_AND] = 0;
1583  *    @endverbatim
1584  */
1585 union cvmx_gmxx_bpid_mapx {
1586 	u64 u64;
1587 	struct cvmx_gmxx_bpid_mapx_s {
1588 		u64 reserved_17_63 : 47;
1589 		u64 status : 1;
1590 		u64 reserved_9_15 : 7;
1591 		u64 val : 1;
1592 		u64 reserved_6_7 : 2;
1593 		u64 bpid : 6;
1594 	} s;
1595 	struct cvmx_gmxx_bpid_mapx_s cn68xx;
1596 	struct cvmx_gmxx_bpid_mapx_s cn68xxp1;
1597 };
1598 
1599 typedef union cvmx_gmxx_bpid_mapx cvmx_gmxx_bpid_mapx_t;
1600 
1601 /**
1602  * cvmx_gmx#_bpid_msk
1603  */
1604 union cvmx_gmxx_bpid_msk {
1605 	u64 u64;
1606 	struct cvmx_gmxx_bpid_msk_s {
1607 		u64 reserved_48_63 : 16;
1608 		u64 msk_or : 16;
1609 		u64 reserved_16_31 : 16;
1610 		u64 msk_and : 16;
1611 	} s;
1612 	struct cvmx_gmxx_bpid_msk_s cn68xx;
1613 	struct cvmx_gmxx_bpid_msk_s cn68xxp1;
1614 };
1615 
1616 typedef union cvmx_gmxx_bpid_msk cvmx_gmxx_bpid_msk_t;
1617 
1618 /**
1619  * cvmx_gmx#_clk_en
1620  *
1621  * DON'T PUT IN HRM*
1622  *
1623  */
1624 union cvmx_gmxx_clk_en {
1625 	u64 u64;
1626 	struct cvmx_gmxx_clk_en_s {
1627 		u64 reserved_1_63 : 63;
1628 		u64 clk_en : 1;
1629 	} s;
1630 	struct cvmx_gmxx_clk_en_s cn52xx;
1631 	struct cvmx_gmxx_clk_en_s cn52xxp1;
1632 	struct cvmx_gmxx_clk_en_s cn56xx;
1633 	struct cvmx_gmxx_clk_en_s cn56xxp1;
1634 	struct cvmx_gmxx_clk_en_s cn61xx;
1635 	struct cvmx_gmxx_clk_en_s cn63xx;
1636 	struct cvmx_gmxx_clk_en_s cn63xxp1;
1637 	struct cvmx_gmxx_clk_en_s cn66xx;
1638 	struct cvmx_gmxx_clk_en_s cn68xx;
1639 	struct cvmx_gmxx_clk_en_s cn68xxp1;
1640 	struct cvmx_gmxx_clk_en_s cn70xx;
1641 	struct cvmx_gmxx_clk_en_s cn70xxp1;
1642 	struct cvmx_gmxx_clk_en_s cnf71xx;
1643 };
1644 
1645 typedef union cvmx_gmxx_clk_en cvmx_gmxx_clk_en_t;
1646 
1647 /**
1648  * cvmx_gmx#_ebp_dis
1649  */
1650 union cvmx_gmxx_ebp_dis {
1651 	u64 u64;
1652 	struct cvmx_gmxx_ebp_dis_s {
1653 		u64 reserved_16_63 : 48;
1654 		u64 dis : 16;
1655 	} s;
1656 	struct cvmx_gmxx_ebp_dis_s cn68xx;
1657 	struct cvmx_gmxx_ebp_dis_s cn68xxp1;
1658 };
1659 
1660 typedef union cvmx_gmxx_ebp_dis cvmx_gmxx_ebp_dis_t;
1661 
1662 /**
1663  * cvmx_gmx#_ebp_msk
1664  */
1665 union cvmx_gmxx_ebp_msk {
1666 	u64 u64;
1667 	struct cvmx_gmxx_ebp_msk_s {
1668 		u64 reserved_16_63 : 48;
1669 		u64 msk : 16;
1670 	} s;
1671 	struct cvmx_gmxx_ebp_msk_s cn68xx;
1672 	struct cvmx_gmxx_ebp_msk_s cn68xxp1;
1673 };
1674 
1675 typedef union cvmx_gmxx_ebp_msk cvmx_gmxx_ebp_msk_t;
1676 
1677 /**
1678  * cvmx_gmx#_hg2_control
1679  *
1680  * Notes:
1681  * The HiGig2 TX and RX enable would normally be both set together for HiGig2 messaging. However
1682  * setting just the TX or RX bit will result in only the HG2 message transmit or the receive
1683  * capability.
1684  * PHYS_EN and LOGL_EN bits when 1, allow link pause or back pressure to PKO as per received
1685  * HiGig2 message. When 0, link pause and back pressure to PKO in response to received messages
1686  * are disabled.
1687  *
1688  * GMX*_TX_XAUI_CTL[HG_EN] must be set to one(to enable HiGig) whenever either HG2TX_EN or HG2RX_EN
1689  * are set.
1690  *
1691  * GMX*_RX0_UDD_SKP[LEN] must be set to 16 (to select HiGig2) whenever either HG2TX_EN or HG2RX_EN
1692  * are set.
1693  *
1694  * GMX*_TX_OVR_BP[EN<0>] must be set to one and GMX*_TX_OVR_BP[BP<0>] must be cleared to zero
1695  * (to forcibly disable HW-automatic 802.3 pause packet generation) with the HiGig2 Protocol when
1696  * GMX*_HG2_CONTROL[HG2TX_EN]=0. (The HiGig2 protocol is indicated by GMX*_TX_XAUI_CTL[HG_EN]=1
1697  * and GMX*_RX0_UDD_SKP[LEN]=16.) The HW can only auto-generate backpressure via HiGig2 messages
1698  * (optionally, when HG2TX_EN=1) with the HiGig2 protocol.
1699  */
1700 union cvmx_gmxx_hg2_control {
1701 	u64 u64;
1702 	struct cvmx_gmxx_hg2_control_s {
1703 		u64 reserved_19_63 : 45;
1704 		u64 hg2tx_en : 1;
1705 		u64 hg2rx_en : 1;
1706 		u64 phys_en : 1;
1707 		u64 logl_en : 16;
1708 	} s;
1709 	struct cvmx_gmxx_hg2_control_s cn52xx;
1710 	struct cvmx_gmxx_hg2_control_s cn52xxp1;
1711 	struct cvmx_gmxx_hg2_control_s cn56xx;
1712 	struct cvmx_gmxx_hg2_control_s cn61xx;
1713 	struct cvmx_gmxx_hg2_control_s cn63xx;
1714 	struct cvmx_gmxx_hg2_control_s cn63xxp1;
1715 	struct cvmx_gmxx_hg2_control_s cn66xx;
1716 	struct cvmx_gmxx_hg2_control_s cn68xx;
1717 	struct cvmx_gmxx_hg2_control_s cn68xxp1;
1718 	struct cvmx_gmxx_hg2_control_s cn70xx;
1719 	struct cvmx_gmxx_hg2_control_s cn70xxp1;
1720 	struct cvmx_gmxx_hg2_control_s cnf71xx;
1721 };
1722 
1723 typedef union cvmx_gmxx_hg2_control cvmx_gmxx_hg2_control_t;
1724 
1725 /**
1726  * cvmx_gmx#_inf_mode
1727  *
1728  * GMX_INF_MODE = Interface Mode
1729  *
1730  */
1731 union cvmx_gmxx_inf_mode {
1732 	u64 u64;
1733 	struct cvmx_gmxx_inf_mode_s {
1734 		u64 reserved_20_63 : 44;
1735 		u64 rate : 4;
1736 		u64 reserved_12_15 : 4;
1737 		u64 speed : 4;
1738 		u64 reserved_7_7 : 1;
1739 		u64 mode : 3;
1740 		u64 reserved_3_3 : 1;
1741 		u64 p0mii : 1;
1742 		u64 en : 1;
1743 		u64 type : 1;
1744 	} s;
1745 	struct cvmx_gmxx_inf_mode_cn30xx {
1746 		u64 reserved_3_63 : 61;
1747 		u64 p0mii : 1;
1748 		u64 en : 1;
1749 		u64 type : 1;
1750 	} cn30xx;
1751 	struct cvmx_gmxx_inf_mode_cn31xx {
1752 		u64 reserved_2_63 : 62;
1753 		u64 en : 1;
1754 		u64 type : 1;
1755 	} cn31xx;
1756 	struct cvmx_gmxx_inf_mode_cn31xx cn38xx;
1757 	struct cvmx_gmxx_inf_mode_cn31xx cn38xxp2;
1758 	struct cvmx_gmxx_inf_mode_cn30xx cn50xx;
1759 	struct cvmx_gmxx_inf_mode_cn52xx {
1760 		u64 reserved_10_63 : 54;
1761 		u64 speed : 2;
1762 		u64 reserved_6_7 : 2;
1763 		u64 mode : 2;
1764 		u64 reserved_2_3 : 2;
1765 		u64 en : 1;
1766 		u64 type : 1;
1767 	} cn52xx;
1768 	struct cvmx_gmxx_inf_mode_cn52xx cn52xxp1;
1769 	struct cvmx_gmxx_inf_mode_cn52xx cn56xx;
1770 	struct cvmx_gmxx_inf_mode_cn52xx cn56xxp1;
1771 	struct cvmx_gmxx_inf_mode_cn31xx cn58xx;
1772 	struct cvmx_gmxx_inf_mode_cn31xx cn58xxp1;
1773 	struct cvmx_gmxx_inf_mode_cn61xx {
1774 		u64 reserved_12_63 : 52;
1775 		u64 speed : 4;
1776 		u64 reserved_5_7 : 3;
1777 		u64 mode : 1;
1778 		u64 reserved_2_3 : 2;
1779 		u64 en : 1;
1780 		u64 type : 1;
1781 	} cn61xx;
1782 	struct cvmx_gmxx_inf_mode_cn61xx cn63xx;
1783 	struct cvmx_gmxx_inf_mode_cn61xx cn63xxp1;
1784 	struct cvmx_gmxx_inf_mode_cn66xx {
1785 		u64 reserved_20_63 : 44;
1786 		u64 rate : 4;
1787 		u64 reserved_12_15 : 4;
1788 		u64 speed : 4;
1789 		u64 reserved_5_7 : 3;
1790 		u64 mode : 1;
1791 		u64 reserved_2_3 : 2;
1792 		u64 en : 1;
1793 		u64 type : 1;
1794 	} cn66xx;
1795 	struct cvmx_gmxx_inf_mode_cn68xx {
1796 		u64 reserved_12_63 : 52;
1797 		u64 speed : 4;
1798 		u64 reserved_7_7 : 1;
1799 		u64 mode : 3;
1800 		u64 reserved_2_3 : 2;
1801 		u64 en : 1;
1802 		u64 type : 1;
1803 	} cn68xx;
1804 	struct cvmx_gmxx_inf_mode_cn68xx cn68xxp1;
1805 	struct cvmx_gmxx_inf_mode_cn70xx {
1806 		u64 reserved_6_63 : 58;
1807 		u64 mode : 2;
1808 		u64 reserved_2_3 : 2;
1809 		u64 en : 1;
1810 		u64 reserved_0_0 : 1;
1811 	} cn70xx;
1812 	struct cvmx_gmxx_inf_mode_cn70xx cn70xxp1;
1813 	struct cvmx_gmxx_inf_mode_cn61xx cnf71xx;
1814 };
1815 
1816 typedef union cvmx_gmxx_inf_mode cvmx_gmxx_inf_mode_t;
1817 
1818 /**
1819  * cvmx_gmx#_nxa_adr
1820  *
1821  * GMX_NXA_ADR = NXA Port Address
1822  *
1823  */
1824 union cvmx_gmxx_nxa_adr {
1825 	u64 u64;
1826 	struct cvmx_gmxx_nxa_adr_s {
1827 		u64 reserved_23_63 : 41;
1828 		u64 pipe : 7;
1829 		u64 reserved_6_15 : 10;
1830 		u64 prt : 6;
1831 	} s;
1832 	struct cvmx_gmxx_nxa_adr_cn30xx {
1833 		u64 reserved_6_63 : 58;
1834 		u64 prt : 6;
1835 	} cn30xx;
1836 	struct cvmx_gmxx_nxa_adr_cn30xx cn31xx;
1837 	struct cvmx_gmxx_nxa_adr_cn30xx cn38xx;
1838 	struct cvmx_gmxx_nxa_adr_cn30xx cn38xxp2;
1839 	struct cvmx_gmxx_nxa_adr_cn30xx cn50xx;
1840 	struct cvmx_gmxx_nxa_adr_cn30xx cn52xx;
1841 	struct cvmx_gmxx_nxa_adr_cn30xx cn52xxp1;
1842 	struct cvmx_gmxx_nxa_adr_cn30xx cn56xx;
1843 	struct cvmx_gmxx_nxa_adr_cn30xx cn56xxp1;
1844 	struct cvmx_gmxx_nxa_adr_cn30xx cn58xx;
1845 	struct cvmx_gmxx_nxa_adr_cn30xx cn58xxp1;
1846 	struct cvmx_gmxx_nxa_adr_cn30xx cn61xx;
1847 	struct cvmx_gmxx_nxa_adr_cn30xx cn63xx;
1848 	struct cvmx_gmxx_nxa_adr_cn30xx cn63xxp1;
1849 	struct cvmx_gmxx_nxa_adr_cn30xx cn66xx;
1850 	struct cvmx_gmxx_nxa_adr_s cn68xx;
1851 	struct cvmx_gmxx_nxa_adr_s cn68xxp1;
1852 	struct cvmx_gmxx_nxa_adr_cn30xx cn70xx;
1853 	struct cvmx_gmxx_nxa_adr_cn30xx cn70xxp1;
1854 	struct cvmx_gmxx_nxa_adr_cn30xx cnf71xx;
1855 };
1856 
1857 typedef union cvmx_gmxx_nxa_adr cvmx_gmxx_nxa_adr_t;
1858 
1859 /**
1860  * cvmx_gmx#_pipe_status
1861  *
1862  * DON'T PUT IN HRM*
1863  *
1864  */
1865 union cvmx_gmxx_pipe_status {
1866 	u64 u64;
1867 	struct cvmx_gmxx_pipe_status_s {
1868 		u64 reserved_20_63 : 44;
1869 		u64 ovr : 4;
1870 		u64 reserved_12_15 : 4;
1871 		u64 bp : 4;
1872 		u64 reserved_4_7 : 4;
1873 		u64 stop : 4;
1874 	} s;
1875 	struct cvmx_gmxx_pipe_status_s cn68xx;
1876 	struct cvmx_gmxx_pipe_status_s cn68xxp1;
1877 };
1878 
1879 typedef union cvmx_gmxx_pipe_status cvmx_gmxx_pipe_status_t;
1880 
1881 /**
1882  * cvmx_gmx#_prt#_cbfc_ctl
1883  *
1884  * ** HG2 message CSRs end
1885  *
1886  */
1887 union cvmx_gmxx_prtx_cbfc_ctl {
1888 	u64 u64;
1889 	struct cvmx_gmxx_prtx_cbfc_ctl_s {
1890 		u64 phys_en : 16;
1891 		u64 logl_en : 16;
1892 		u64 phys_bp : 16;
1893 		u64 reserved_4_15 : 12;
1894 		u64 bck_en : 1;
1895 		u64 drp_en : 1;
1896 		u64 tx_en : 1;
1897 		u64 rx_en : 1;
1898 	} s;
1899 	struct cvmx_gmxx_prtx_cbfc_ctl_s cn52xx;
1900 	struct cvmx_gmxx_prtx_cbfc_ctl_s cn56xx;
1901 	struct cvmx_gmxx_prtx_cbfc_ctl_s cn61xx;
1902 	struct cvmx_gmxx_prtx_cbfc_ctl_s cn63xx;
1903 	struct cvmx_gmxx_prtx_cbfc_ctl_s cn63xxp1;
1904 	struct cvmx_gmxx_prtx_cbfc_ctl_s cn66xx;
1905 	struct cvmx_gmxx_prtx_cbfc_ctl_s cn68xx;
1906 	struct cvmx_gmxx_prtx_cbfc_ctl_s cn68xxp1;
1907 	struct cvmx_gmxx_prtx_cbfc_ctl_s cn70xx;
1908 	struct cvmx_gmxx_prtx_cbfc_ctl_s cn70xxp1;
1909 	struct cvmx_gmxx_prtx_cbfc_ctl_s cnf71xx;
1910 };
1911 
1912 typedef union cvmx_gmxx_prtx_cbfc_ctl cvmx_gmxx_prtx_cbfc_ctl_t;
1913 
1914 /**
1915  * cvmx_gmx#_prt#_cfg
1916  *
1917  * GMX_PRT_CFG = Port description
1918  *
1919  */
1920 union cvmx_gmxx_prtx_cfg {
1921 	u64 u64;
1922 	struct cvmx_gmxx_prtx_cfg_s {
1923 		u64 reserved_22_63 : 42;
1924 		u64 pknd : 6;
1925 		u64 reserved_14_15 : 2;
1926 		u64 tx_idle : 1;
1927 		u64 rx_idle : 1;
1928 		u64 reserved_9_11 : 3;
1929 		u64 speed_msb : 1;
1930 		u64 reserved_4_7 : 4;
1931 		u64 slottime : 1;
1932 		u64 duplex : 1;
1933 		u64 speed : 1;
1934 		u64 en : 1;
1935 	} s;
1936 	struct cvmx_gmxx_prtx_cfg_cn30xx {
1937 		u64 reserved_4_63 : 60;
1938 		u64 slottime : 1;
1939 		u64 duplex : 1;
1940 		u64 speed : 1;
1941 		u64 en : 1;
1942 	} cn30xx;
1943 	struct cvmx_gmxx_prtx_cfg_cn30xx cn31xx;
1944 	struct cvmx_gmxx_prtx_cfg_cn30xx cn38xx;
1945 	struct cvmx_gmxx_prtx_cfg_cn30xx cn38xxp2;
1946 	struct cvmx_gmxx_prtx_cfg_cn30xx cn50xx;
1947 	struct cvmx_gmxx_prtx_cfg_cn52xx {
1948 		u64 reserved_14_63 : 50;
1949 		u64 tx_idle : 1;
1950 		u64 rx_idle : 1;
1951 		u64 reserved_9_11 : 3;
1952 		u64 speed_msb : 1;
1953 		u64 reserved_4_7 : 4;
1954 		u64 slottime : 1;
1955 		u64 duplex : 1;
1956 		u64 speed : 1;
1957 		u64 en : 1;
1958 	} cn52xx;
1959 	struct cvmx_gmxx_prtx_cfg_cn52xx cn52xxp1;
1960 	struct cvmx_gmxx_prtx_cfg_cn52xx cn56xx;
1961 	struct cvmx_gmxx_prtx_cfg_cn52xx cn56xxp1;
1962 	struct cvmx_gmxx_prtx_cfg_cn30xx cn58xx;
1963 	struct cvmx_gmxx_prtx_cfg_cn30xx cn58xxp1;
1964 	struct cvmx_gmxx_prtx_cfg_cn52xx cn61xx;
1965 	struct cvmx_gmxx_prtx_cfg_cn52xx cn63xx;
1966 	struct cvmx_gmxx_prtx_cfg_cn52xx cn63xxp1;
1967 	struct cvmx_gmxx_prtx_cfg_cn52xx cn66xx;
1968 	struct cvmx_gmxx_prtx_cfg_s cn68xx;
1969 	struct cvmx_gmxx_prtx_cfg_s cn68xxp1;
1970 	struct cvmx_gmxx_prtx_cfg_cn52xx cn70xx;
1971 	struct cvmx_gmxx_prtx_cfg_cn52xx cn70xxp1;
1972 	struct cvmx_gmxx_prtx_cfg_cn52xx cnf71xx;
1973 };
1974 
1975 typedef union cvmx_gmxx_prtx_cfg cvmx_gmxx_prtx_cfg_t;
1976 
1977 /**
1978  * cvmx_gmx#_qsgmii_ctl
1979  */
1980 union cvmx_gmxx_qsgmii_ctl {
1981 	u64 u64;
1982 	struct cvmx_gmxx_qsgmii_ctl_s {
1983 		u64 reserved_1_63 : 63;
1984 		u64 disparity : 1;
1985 	} s;
1986 	struct cvmx_gmxx_qsgmii_ctl_s cn70xx;
1987 	struct cvmx_gmxx_qsgmii_ctl_s cn70xxp1;
1988 };
1989 
1990 typedef union cvmx_gmxx_qsgmii_ctl cvmx_gmxx_qsgmii_ctl_t;
1991 
1992 /**
1993  * cvmx_gmx#_rx#_adr_cam0
1994  *
1995  * GMX_RX_ADR_CAM = Address Filtering Control
1996  *
1997  */
1998 union cvmx_gmxx_rxx_adr_cam0 {
1999 	u64 u64;
2000 	struct cvmx_gmxx_rxx_adr_cam0_s {
2001 		u64 adr : 64;
2002 	} s;
2003 	struct cvmx_gmxx_rxx_adr_cam0_s cn30xx;
2004 	struct cvmx_gmxx_rxx_adr_cam0_s cn31xx;
2005 	struct cvmx_gmxx_rxx_adr_cam0_s cn38xx;
2006 	struct cvmx_gmxx_rxx_adr_cam0_s cn38xxp2;
2007 	struct cvmx_gmxx_rxx_adr_cam0_s cn50xx;
2008 	struct cvmx_gmxx_rxx_adr_cam0_s cn52xx;
2009 	struct cvmx_gmxx_rxx_adr_cam0_s cn52xxp1;
2010 	struct cvmx_gmxx_rxx_adr_cam0_s cn56xx;
2011 	struct cvmx_gmxx_rxx_adr_cam0_s cn56xxp1;
2012 	struct cvmx_gmxx_rxx_adr_cam0_s cn58xx;
2013 	struct cvmx_gmxx_rxx_adr_cam0_s cn58xxp1;
2014 	struct cvmx_gmxx_rxx_adr_cam0_s cn61xx;
2015 	struct cvmx_gmxx_rxx_adr_cam0_s cn63xx;
2016 	struct cvmx_gmxx_rxx_adr_cam0_s cn63xxp1;
2017 	struct cvmx_gmxx_rxx_adr_cam0_s cn66xx;
2018 	struct cvmx_gmxx_rxx_adr_cam0_s cn68xx;
2019 	struct cvmx_gmxx_rxx_adr_cam0_s cn68xxp1;
2020 	struct cvmx_gmxx_rxx_adr_cam0_s cn70xx;
2021 	struct cvmx_gmxx_rxx_adr_cam0_s cn70xxp1;
2022 	struct cvmx_gmxx_rxx_adr_cam0_s cnf71xx;
2023 };
2024 
2025 typedef union cvmx_gmxx_rxx_adr_cam0 cvmx_gmxx_rxx_adr_cam0_t;
2026 
2027 /**
2028  * cvmx_gmx#_rx#_adr_cam1
2029  *
2030  * GMX_RX_ADR_CAM = Address Filtering Control
2031  *
2032  */
2033 union cvmx_gmxx_rxx_adr_cam1 {
2034 	u64 u64;
2035 	struct cvmx_gmxx_rxx_adr_cam1_s {
2036 		u64 adr : 64;
2037 	} s;
2038 	struct cvmx_gmxx_rxx_adr_cam1_s cn30xx;
2039 	struct cvmx_gmxx_rxx_adr_cam1_s cn31xx;
2040 	struct cvmx_gmxx_rxx_adr_cam1_s cn38xx;
2041 	struct cvmx_gmxx_rxx_adr_cam1_s cn38xxp2;
2042 	struct cvmx_gmxx_rxx_adr_cam1_s cn50xx;
2043 	struct cvmx_gmxx_rxx_adr_cam1_s cn52xx;
2044 	struct cvmx_gmxx_rxx_adr_cam1_s cn52xxp1;
2045 	struct cvmx_gmxx_rxx_adr_cam1_s cn56xx;
2046 	struct cvmx_gmxx_rxx_adr_cam1_s cn56xxp1;
2047 	struct cvmx_gmxx_rxx_adr_cam1_s cn58xx;
2048 	struct cvmx_gmxx_rxx_adr_cam1_s cn58xxp1;
2049 	struct cvmx_gmxx_rxx_adr_cam1_s cn61xx;
2050 	struct cvmx_gmxx_rxx_adr_cam1_s cn63xx;
2051 	struct cvmx_gmxx_rxx_adr_cam1_s cn63xxp1;
2052 	struct cvmx_gmxx_rxx_adr_cam1_s cn66xx;
2053 	struct cvmx_gmxx_rxx_adr_cam1_s cn68xx;
2054 	struct cvmx_gmxx_rxx_adr_cam1_s cn68xxp1;
2055 	struct cvmx_gmxx_rxx_adr_cam1_s cn70xx;
2056 	struct cvmx_gmxx_rxx_adr_cam1_s cn70xxp1;
2057 	struct cvmx_gmxx_rxx_adr_cam1_s cnf71xx;
2058 };
2059 
2060 typedef union cvmx_gmxx_rxx_adr_cam1 cvmx_gmxx_rxx_adr_cam1_t;
2061 
2062 /**
2063  * cvmx_gmx#_rx#_adr_cam2
2064  *
2065  * GMX_RX_ADR_CAM = Address Filtering Control
2066  *
2067  */
2068 union cvmx_gmxx_rxx_adr_cam2 {
2069 	u64 u64;
2070 	struct cvmx_gmxx_rxx_adr_cam2_s {
2071 		u64 adr : 64;
2072 	} s;
2073 	struct cvmx_gmxx_rxx_adr_cam2_s cn30xx;
2074 	struct cvmx_gmxx_rxx_adr_cam2_s cn31xx;
2075 	struct cvmx_gmxx_rxx_adr_cam2_s cn38xx;
2076 	struct cvmx_gmxx_rxx_adr_cam2_s cn38xxp2;
2077 	struct cvmx_gmxx_rxx_adr_cam2_s cn50xx;
2078 	struct cvmx_gmxx_rxx_adr_cam2_s cn52xx;
2079 	struct cvmx_gmxx_rxx_adr_cam2_s cn52xxp1;
2080 	struct cvmx_gmxx_rxx_adr_cam2_s cn56xx;
2081 	struct cvmx_gmxx_rxx_adr_cam2_s cn56xxp1;
2082 	struct cvmx_gmxx_rxx_adr_cam2_s cn58xx;
2083 	struct cvmx_gmxx_rxx_adr_cam2_s cn58xxp1;
2084 	struct cvmx_gmxx_rxx_adr_cam2_s cn61xx;
2085 	struct cvmx_gmxx_rxx_adr_cam2_s cn63xx;
2086 	struct cvmx_gmxx_rxx_adr_cam2_s cn63xxp1;
2087 	struct cvmx_gmxx_rxx_adr_cam2_s cn66xx;
2088 	struct cvmx_gmxx_rxx_adr_cam2_s cn68xx;
2089 	struct cvmx_gmxx_rxx_adr_cam2_s cn68xxp1;
2090 	struct cvmx_gmxx_rxx_adr_cam2_s cn70xx;
2091 	struct cvmx_gmxx_rxx_adr_cam2_s cn70xxp1;
2092 	struct cvmx_gmxx_rxx_adr_cam2_s cnf71xx;
2093 };
2094 
2095 typedef union cvmx_gmxx_rxx_adr_cam2 cvmx_gmxx_rxx_adr_cam2_t;
2096 
2097 /**
2098  * cvmx_gmx#_rx#_adr_cam3
2099  *
2100  * GMX_RX_ADR_CAM = Address Filtering Control
2101  *
2102  */
2103 union cvmx_gmxx_rxx_adr_cam3 {
2104 	u64 u64;
2105 	struct cvmx_gmxx_rxx_adr_cam3_s {
2106 		u64 adr : 64;
2107 	} s;
2108 	struct cvmx_gmxx_rxx_adr_cam3_s cn30xx;
2109 	struct cvmx_gmxx_rxx_adr_cam3_s cn31xx;
2110 	struct cvmx_gmxx_rxx_adr_cam3_s cn38xx;
2111 	struct cvmx_gmxx_rxx_adr_cam3_s cn38xxp2;
2112 	struct cvmx_gmxx_rxx_adr_cam3_s cn50xx;
2113 	struct cvmx_gmxx_rxx_adr_cam3_s cn52xx;
2114 	struct cvmx_gmxx_rxx_adr_cam3_s cn52xxp1;
2115 	struct cvmx_gmxx_rxx_adr_cam3_s cn56xx;
2116 	struct cvmx_gmxx_rxx_adr_cam3_s cn56xxp1;
2117 	struct cvmx_gmxx_rxx_adr_cam3_s cn58xx;
2118 	struct cvmx_gmxx_rxx_adr_cam3_s cn58xxp1;
2119 	struct cvmx_gmxx_rxx_adr_cam3_s cn61xx;
2120 	struct cvmx_gmxx_rxx_adr_cam3_s cn63xx;
2121 	struct cvmx_gmxx_rxx_adr_cam3_s cn63xxp1;
2122 	struct cvmx_gmxx_rxx_adr_cam3_s cn66xx;
2123 	struct cvmx_gmxx_rxx_adr_cam3_s cn68xx;
2124 	struct cvmx_gmxx_rxx_adr_cam3_s cn68xxp1;
2125 	struct cvmx_gmxx_rxx_adr_cam3_s cn70xx;
2126 	struct cvmx_gmxx_rxx_adr_cam3_s cn70xxp1;
2127 	struct cvmx_gmxx_rxx_adr_cam3_s cnf71xx;
2128 };
2129 
2130 typedef union cvmx_gmxx_rxx_adr_cam3 cvmx_gmxx_rxx_adr_cam3_t;
2131 
2132 /**
2133  * cvmx_gmx#_rx#_adr_cam4
2134  *
2135  * GMX_RX_ADR_CAM = Address Filtering Control
2136  *
2137  */
2138 union cvmx_gmxx_rxx_adr_cam4 {
2139 	u64 u64;
2140 	struct cvmx_gmxx_rxx_adr_cam4_s {
2141 		u64 adr : 64;
2142 	} s;
2143 	struct cvmx_gmxx_rxx_adr_cam4_s cn30xx;
2144 	struct cvmx_gmxx_rxx_adr_cam4_s cn31xx;
2145 	struct cvmx_gmxx_rxx_adr_cam4_s cn38xx;
2146 	struct cvmx_gmxx_rxx_adr_cam4_s cn38xxp2;
2147 	struct cvmx_gmxx_rxx_adr_cam4_s cn50xx;
2148 	struct cvmx_gmxx_rxx_adr_cam4_s cn52xx;
2149 	struct cvmx_gmxx_rxx_adr_cam4_s cn52xxp1;
2150 	struct cvmx_gmxx_rxx_adr_cam4_s cn56xx;
2151 	struct cvmx_gmxx_rxx_adr_cam4_s cn56xxp1;
2152 	struct cvmx_gmxx_rxx_adr_cam4_s cn58xx;
2153 	struct cvmx_gmxx_rxx_adr_cam4_s cn58xxp1;
2154 	struct cvmx_gmxx_rxx_adr_cam4_s cn61xx;
2155 	struct cvmx_gmxx_rxx_adr_cam4_s cn63xx;
2156 	struct cvmx_gmxx_rxx_adr_cam4_s cn63xxp1;
2157 	struct cvmx_gmxx_rxx_adr_cam4_s cn66xx;
2158 	struct cvmx_gmxx_rxx_adr_cam4_s cn68xx;
2159 	struct cvmx_gmxx_rxx_adr_cam4_s cn68xxp1;
2160 	struct cvmx_gmxx_rxx_adr_cam4_s cn70xx;
2161 	struct cvmx_gmxx_rxx_adr_cam4_s cn70xxp1;
2162 	struct cvmx_gmxx_rxx_adr_cam4_s cnf71xx;
2163 };
2164 
2165 typedef union cvmx_gmxx_rxx_adr_cam4 cvmx_gmxx_rxx_adr_cam4_t;
2166 
2167 /**
2168  * cvmx_gmx#_rx#_adr_cam5
2169  *
2170  * GMX_RX_ADR_CAM = Address Filtering Control
2171  *
2172  */
2173 union cvmx_gmxx_rxx_adr_cam5 {
2174 	u64 u64;
2175 	struct cvmx_gmxx_rxx_adr_cam5_s {
2176 		u64 adr : 64;
2177 	} s;
2178 	struct cvmx_gmxx_rxx_adr_cam5_s cn30xx;
2179 	struct cvmx_gmxx_rxx_adr_cam5_s cn31xx;
2180 	struct cvmx_gmxx_rxx_adr_cam5_s cn38xx;
2181 	struct cvmx_gmxx_rxx_adr_cam5_s cn38xxp2;
2182 	struct cvmx_gmxx_rxx_adr_cam5_s cn50xx;
2183 	struct cvmx_gmxx_rxx_adr_cam5_s cn52xx;
2184 	struct cvmx_gmxx_rxx_adr_cam5_s cn52xxp1;
2185 	struct cvmx_gmxx_rxx_adr_cam5_s cn56xx;
2186 	struct cvmx_gmxx_rxx_adr_cam5_s cn56xxp1;
2187 	struct cvmx_gmxx_rxx_adr_cam5_s cn58xx;
2188 	struct cvmx_gmxx_rxx_adr_cam5_s cn58xxp1;
2189 	struct cvmx_gmxx_rxx_adr_cam5_s cn61xx;
2190 	struct cvmx_gmxx_rxx_adr_cam5_s cn63xx;
2191 	struct cvmx_gmxx_rxx_adr_cam5_s cn63xxp1;
2192 	struct cvmx_gmxx_rxx_adr_cam5_s cn66xx;
2193 	struct cvmx_gmxx_rxx_adr_cam5_s cn68xx;
2194 	struct cvmx_gmxx_rxx_adr_cam5_s cn68xxp1;
2195 	struct cvmx_gmxx_rxx_adr_cam5_s cn70xx;
2196 	struct cvmx_gmxx_rxx_adr_cam5_s cn70xxp1;
2197 	struct cvmx_gmxx_rxx_adr_cam5_s cnf71xx;
2198 };
2199 
2200 typedef union cvmx_gmxx_rxx_adr_cam5 cvmx_gmxx_rxx_adr_cam5_t;
2201 
2202 /**
2203  * cvmx_gmx#_rx#_adr_cam_all_en
2204  *
2205  * GMX_RX_ADR_CAM_ALL_EN = Address Filtering Control Enable
2206  *
2207  */
2208 union cvmx_gmxx_rxx_adr_cam_all_en {
2209 	u64 u64;
2210 	struct cvmx_gmxx_rxx_adr_cam_all_en_s {
2211 		u64 reserved_32_63 : 32;
2212 		u64 en : 32;
2213 	} s;
2214 	struct cvmx_gmxx_rxx_adr_cam_all_en_s cn61xx;
2215 	struct cvmx_gmxx_rxx_adr_cam_all_en_s cn66xx;
2216 	struct cvmx_gmxx_rxx_adr_cam_all_en_s cn68xx;
2217 	struct cvmx_gmxx_rxx_adr_cam_all_en_s cn70xx;
2218 	struct cvmx_gmxx_rxx_adr_cam_all_en_s cn70xxp1;
2219 	struct cvmx_gmxx_rxx_adr_cam_all_en_s cnf71xx;
2220 };
2221 
2222 typedef union cvmx_gmxx_rxx_adr_cam_all_en cvmx_gmxx_rxx_adr_cam_all_en_t;
2223 
2224 /**
2225  * cvmx_gmx#_rx#_adr_cam_en
2226  *
2227  * GMX_RX_ADR_CAM_EN = Address Filtering Control Enable
2228  *
2229  */
2230 union cvmx_gmxx_rxx_adr_cam_en {
2231 	u64 u64;
2232 	struct cvmx_gmxx_rxx_adr_cam_en_s {
2233 		u64 reserved_8_63 : 56;
2234 		u64 en : 8;
2235 	} s;
2236 	struct cvmx_gmxx_rxx_adr_cam_en_s cn30xx;
2237 	struct cvmx_gmxx_rxx_adr_cam_en_s cn31xx;
2238 	struct cvmx_gmxx_rxx_adr_cam_en_s cn38xx;
2239 	struct cvmx_gmxx_rxx_adr_cam_en_s cn38xxp2;
2240 	struct cvmx_gmxx_rxx_adr_cam_en_s cn50xx;
2241 	struct cvmx_gmxx_rxx_adr_cam_en_s cn52xx;
2242 	struct cvmx_gmxx_rxx_adr_cam_en_s cn52xxp1;
2243 	struct cvmx_gmxx_rxx_adr_cam_en_s cn56xx;
2244 	struct cvmx_gmxx_rxx_adr_cam_en_s cn56xxp1;
2245 	struct cvmx_gmxx_rxx_adr_cam_en_s cn58xx;
2246 	struct cvmx_gmxx_rxx_adr_cam_en_s cn58xxp1;
2247 	struct cvmx_gmxx_rxx_adr_cam_en_s cn61xx;
2248 	struct cvmx_gmxx_rxx_adr_cam_en_s cn63xx;
2249 	struct cvmx_gmxx_rxx_adr_cam_en_s cn63xxp1;
2250 	struct cvmx_gmxx_rxx_adr_cam_en_s cn66xx;
2251 	struct cvmx_gmxx_rxx_adr_cam_en_s cn68xx;
2252 	struct cvmx_gmxx_rxx_adr_cam_en_s cn68xxp1;
2253 	struct cvmx_gmxx_rxx_adr_cam_en_s cn70xx;
2254 	struct cvmx_gmxx_rxx_adr_cam_en_s cn70xxp1;
2255 	struct cvmx_gmxx_rxx_adr_cam_en_s cnf71xx;
2256 };
2257 
2258 typedef union cvmx_gmxx_rxx_adr_cam_en cvmx_gmxx_rxx_adr_cam_en_t;
2259 
2260 /**
2261  * cvmx_gmx#_rx#_adr_ctl
2262  *
2263  * GMX_RX_ADR_CTL = Address Filtering Control
2264  *
2265  *
2266  * Notes:
2267  * * ALGORITHM
2268  *   Here is some pseudo code that represents the address filter behavior.
2269  *
2270  *      @verbatim
2271  *      bool dmac_addr_filter(uint8 prt, uint48 dmac) [
2272  *        ASSERT(prt >= 0 && prt <= 3);
2273  *        if (is_bcst(dmac))                               // broadcast accept
2274  *          return (GMX_RX[prt]_ADR_CTL[BCST] ? ACCEPT : REJECT);
2275  *        if (is_mcst(dmac) & GMX_RX[prt]_ADR_CTL[MCST] == 1)   // multicast reject
2276  *          return REJECT;
2277  *        if (is_mcst(dmac) & GMX_RX[prt]_ADR_CTL[MCST] == 2)   // multicast accept
2278  *          return ACCEPT;
2279  *
2280  *        cam_hit = 0;
2281  *
2282  *        for (i=0; i<32; i++) [
2283  *          if (GMX_RX[prt]_ADR_CAM_ALL_EN[EN<i>] == 0)
2284  *            continue;
2285  *          uint48 unswizzled_mac_adr = 0x0;
2286  *          for (j=5; j>=0; j--) [
2287  *             unswizzled_mac_adr = (unswizzled_mac_adr << 8) | GMX_RX[i>>3]_ADR_CAM[j][ADR<(i&7)*8+7:(i&7)*8>];
2288  *          ]
2289  *          if (unswizzled_mac_adr == dmac) [
2290  *            cam_hit = 1;
2291  *            break;
2292  *          ]
2293  *        ]
2294  *
2295  *        if (cam_hit)
2296  *          return (GMX_RX[prt]_ADR_CTL[CAM_MODE] ? ACCEPT : REJECT);
2297  *        else
2298  *          return (GMX_RX[prt]_ADR_CTL[CAM_MODE] ? REJECT : ACCEPT);
2299  *      ]
2300  *      @endverbatim
2301  *
2302  * * XAUI Mode
2303  *
2304  *   In XAUI mode, only GMX_RX0_ADR_CTL is used.  GMX_RX[1,2,3]_ADR_CTL should not be used.
2305  */
2306 union cvmx_gmxx_rxx_adr_ctl {
2307 	u64 u64;
2308 	struct cvmx_gmxx_rxx_adr_ctl_s {
2309 		u64 reserved_4_63 : 60;
2310 		u64 cam_mode : 1;
2311 		u64 mcst : 2;
2312 		u64 bcst : 1;
2313 	} s;
2314 	struct cvmx_gmxx_rxx_adr_ctl_s cn30xx;
2315 	struct cvmx_gmxx_rxx_adr_ctl_s cn31xx;
2316 	struct cvmx_gmxx_rxx_adr_ctl_s cn38xx;
2317 	struct cvmx_gmxx_rxx_adr_ctl_s cn38xxp2;
2318 	struct cvmx_gmxx_rxx_adr_ctl_s cn50xx;
2319 	struct cvmx_gmxx_rxx_adr_ctl_s cn52xx;
2320 	struct cvmx_gmxx_rxx_adr_ctl_s cn52xxp1;
2321 	struct cvmx_gmxx_rxx_adr_ctl_s cn56xx;
2322 	struct cvmx_gmxx_rxx_adr_ctl_s cn56xxp1;
2323 	struct cvmx_gmxx_rxx_adr_ctl_s cn58xx;
2324 	struct cvmx_gmxx_rxx_adr_ctl_s cn58xxp1;
2325 	struct cvmx_gmxx_rxx_adr_ctl_s cn61xx;
2326 	struct cvmx_gmxx_rxx_adr_ctl_s cn63xx;
2327 	struct cvmx_gmxx_rxx_adr_ctl_s cn63xxp1;
2328 	struct cvmx_gmxx_rxx_adr_ctl_s cn66xx;
2329 	struct cvmx_gmxx_rxx_adr_ctl_s cn68xx;
2330 	struct cvmx_gmxx_rxx_adr_ctl_s cn68xxp1;
2331 	struct cvmx_gmxx_rxx_adr_ctl_s cn70xx;
2332 	struct cvmx_gmxx_rxx_adr_ctl_s cn70xxp1;
2333 	struct cvmx_gmxx_rxx_adr_ctl_s cnf71xx;
2334 };
2335 
2336 typedef union cvmx_gmxx_rxx_adr_ctl cvmx_gmxx_rxx_adr_ctl_t;
2337 
2338 /**
2339  * cvmx_gmx#_rx#_decision
2340  *
2341  * GMX_RX_DECISION = The byte count to decide when to accept or filter a packet
2342  *
2343  *
2344  * Notes:
2345  * As each byte in a packet is received by GMX, the L2 byte count is compared
2346  * against the GMX_RX_DECISION[CNT].  The L2 byte count is the number of bytes
2347  * from the beginning of the L2 header (DMAC).  In normal operation, the L2
2348  * header begins after the PREAMBLE+SFD (GMX_RX_FRM_CTL[PRE_CHK]=1) and any
2349  * optional UDD skip data (GMX_RX_UDD_SKP[LEN]).
2350  *
2351  * When GMX_RX_FRM_CTL[PRE_CHK] is clear, PREAMBLE+SFD are prepended to the
2352  * packet and would require UDD skip length to account for them.
2353  *
2354  *                                                 L2 Size
2355  * Port Mode             <GMX_RX_DECISION bytes (default=24)       >=GMX_RX_DECISION bytes (default=24)
2356  *
2357  * Full Duplex           accept packet                             apply filters
2358  *                       no filtering is applied                   accept packet based on DMAC and PAUSE packet filters
2359  *
2360  * Half Duplex           drop packet                               apply filters
2361  *                       packet is unconditionally dropped         accept packet based on DMAC
2362  *
2363  * where l2_size = MAX(0, total_packet_size - GMX_RX_UDD_SKP[LEN] - ((GMX_RX_FRM_CTL[PRE_CHK]==1)*8)
2364  */
2365 union cvmx_gmxx_rxx_decision {
2366 	u64 u64;
2367 	struct cvmx_gmxx_rxx_decision_s {
2368 		u64 reserved_5_63 : 59;
2369 		u64 cnt : 5;
2370 	} s;
2371 	struct cvmx_gmxx_rxx_decision_s cn30xx;
2372 	struct cvmx_gmxx_rxx_decision_s cn31xx;
2373 	struct cvmx_gmxx_rxx_decision_s cn38xx;
2374 	struct cvmx_gmxx_rxx_decision_s cn38xxp2;
2375 	struct cvmx_gmxx_rxx_decision_s cn50xx;
2376 	struct cvmx_gmxx_rxx_decision_s cn52xx;
2377 	struct cvmx_gmxx_rxx_decision_s cn52xxp1;
2378 	struct cvmx_gmxx_rxx_decision_s cn56xx;
2379 	struct cvmx_gmxx_rxx_decision_s cn56xxp1;
2380 	struct cvmx_gmxx_rxx_decision_s cn58xx;
2381 	struct cvmx_gmxx_rxx_decision_s cn58xxp1;
2382 	struct cvmx_gmxx_rxx_decision_s cn61xx;
2383 	struct cvmx_gmxx_rxx_decision_s cn63xx;
2384 	struct cvmx_gmxx_rxx_decision_s cn63xxp1;
2385 	struct cvmx_gmxx_rxx_decision_s cn66xx;
2386 	struct cvmx_gmxx_rxx_decision_s cn68xx;
2387 	struct cvmx_gmxx_rxx_decision_s cn68xxp1;
2388 	struct cvmx_gmxx_rxx_decision_s cn70xx;
2389 	struct cvmx_gmxx_rxx_decision_s cn70xxp1;
2390 	struct cvmx_gmxx_rxx_decision_s cnf71xx;
2391 };
2392 
2393 typedef union cvmx_gmxx_rxx_decision cvmx_gmxx_rxx_decision_t;
2394 
2395 /**
2396  * cvmx_gmx#_rx#_frm_chk
2397  *
2398  * GMX_RX_FRM_CHK = Which frame errors will set the ERR bit of the frame
2399  *
2400  *
2401  * Notes:
2402  * If GMX_RX_UDD_SKP[LEN] != 0, then LENERR will be forced to zero in HW.
2403  *
2404  * In XAUI mode prt0 is used for checking.
2405  */
2406 union cvmx_gmxx_rxx_frm_chk {
2407 	u64 u64;
2408 	struct cvmx_gmxx_rxx_frm_chk_s {
2409 		u64 reserved_10_63 : 54;
2410 		u64 niberr : 1;
2411 		u64 skperr : 1;
2412 		u64 rcverr : 1;
2413 		u64 lenerr : 1;
2414 		u64 alnerr : 1;
2415 		u64 fcserr : 1;
2416 		u64 jabber : 1;
2417 		u64 maxerr : 1;
2418 		u64 carext : 1;
2419 		u64 minerr : 1;
2420 	} s;
2421 	struct cvmx_gmxx_rxx_frm_chk_s cn30xx;
2422 	struct cvmx_gmxx_rxx_frm_chk_s cn31xx;
2423 	struct cvmx_gmxx_rxx_frm_chk_s cn38xx;
2424 	struct cvmx_gmxx_rxx_frm_chk_s cn38xxp2;
2425 	struct cvmx_gmxx_rxx_frm_chk_cn50xx {
2426 		u64 reserved_10_63 : 54;
2427 		u64 niberr : 1;
2428 		u64 skperr : 1;
2429 		u64 rcverr : 1;
2430 		u64 reserved_6_6 : 1;
2431 		u64 alnerr : 1;
2432 		u64 fcserr : 1;
2433 		u64 jabber : 1;
2434 		u64 reserved_2_2 : 1;
2435 		u64 carext : 1;
2436 		u64 reserved_0_0 : 1;
2437 	} cn50xx;
2438 	struct cvmx_gmxx_rxx_frm_chk_cn52xx {
2439 		u64 reserved_9_63 : 55;
2440 		u64 skperr : 1;
2441 		u64 rcverr : 1;
2442 		u64 reserved_5_6 : 2;
2443 		u64 fcserr : 1;
2444 		u64 jabber : 1;
2445 		u64 reserved_2_2 : 1;
2446 		u64 carext : 1;
2447 		u64 reserved_0_0 : 1;
2448 	} cn52xx;
2449 	struct cvmx_gmxx_rxx_frm_chk_cn52xx cn52xxp1;
2450 	struct cvmx_gmxx_rxx_frm_chk_cn52xx cn56xx;
2451 	struct cvmx_gmxx_rxx_frm_chk_cn52xx cn56xxp1;
2452 	struct cvmx_gmxx_rxx_frm_chk_s cn58xx;
2453 	struct cvmx_gmxx_rxx_frm_chk_s cn58xxp1;
2454 	struct cvmx_gmxx_rxx_frm_chk_cn61xx {
2455 		u64 reserved_9_63 : 55;
2456 		u64 skperr : 1;
2457 		u64 rcverr : 1;
2458 		u64 reserved_5_6 : 2;
2459 		u64 fcserr : 1;
2460 		u64 jabber : 1;
2461 		u64 reserved_2_2 : 1;
2462 		u64 carext : 1;
2463 		u64 minerr : 1;
2464 	} cn61xx;
2465 	struct cvmx_gmxx_rxx_frm_chk_cn61xx cn63xx;
2466 	struct cvmx_gmxx_rxx_frm_chk_cn61xx cn63xxp1;
2467 	struct cvmx_gmxx_rxx_frm_chk_cn61xx cn66xx;
2468 	struct cvmx_gmxx_rxx_frm_chk_cn61xx cn68xx;
2469 	struct cvmx_gmxx_rxx_frm_chk_cn61xx cn68xxp1;
2470 	struct cvmx_gmxx_rxx_frm_chk_cn61xx cn70xx;
2471 	struct cvmx_gmxx_rxx_frm_chk_cn61xx cn70xxp1;
2472 	struct cvmx_gmxx_rxx_frm_chk_cn61xx cnf71xx;
2473 };
2474 
2475 typedef union cvmx_gmxx_rxx_frm_chk cvmx_gmxx_rxx_frm_chk_t;
2476 
2477 /**
2478  * cvmx_gmx#_rx#_frm_ctl
2479  *
2480  * GMX_RX_FRM_CTL = Frame Control
2481  *
2482  *
2483  * Notes:
2484  * * PRE_STRP
2485  *   When PRE_CHK is set (indicating that the PREAMBLE will be sent), PRE_STRP
2486  *   determines if the PREAMBLE+SFD bytes are thrown away or sent to the Octane
2487  *   core as part of the packet.
2488  *
2489  *   In either mode, the PREAMBLE+SFD bytes are not counted toward the packet
2490  *   size when checking against the MIN and MAX bounds.  Furthermore, the bytes
2491  *   are skipped when locating the start of the L2 header for DMAC and Control
2492  *   frame recognition.
2493  *
2494  * * CTL_BCK/CTL_DRP
2495  *   These bits control how the HW handles incoming PAUSE packets.  Here are
2496  *   the most common modes of operation:
2497  *     CTL_BCK=1,CTL_DRP=1   - HW does it all
2498  *     CTL_BCK=0,CTL_DRP=0   - SW sees all pause frames
2499  *     CTL_BCK=0,CTL_DRP=1   - all pause frames are completely ignored
2500  *
2501  *   These control bits should be set to CTL_BCK=0,CTL_DRP=0 in halfdup mode.
2502  *   Since PAUSE packets only apply to fulldup operation, any PAUSE packet
2503  *   would constitute an exception which should be handled by the processing
2504  *   cores.  PAUSE packets should not be forwarded.
2505  */
2506 union cvmx_gmxx_rxx_frm_ctl {
2507 	u64 u64;
2508 	struct cvmx_gmxx_rxx_frm_ctl_s {
2509 		u64 reserved_13_63 : 51;
2510 		u64 ptp_mode : 1;
2511 		u64 reserved_11_11 : 1;
2512 		u64 null_dis : 1;
2513 		u64 pre_align : 1;
2514 		u64 pad_len : 1;
2515 		u64 vlan_len : 1;
2516 		u64 pre_free : 1;
2517 		u64 ctl_smac : 1;
2518 		u64 ctl_mcst : 1;
2519 		u64 ctl_bck : 1;
2520 		u64 ctl_drp : 1;
2521 		u64 pre_strp : 1;
2522 		u64 pre_chk : 1;
2523 	} s;
2524 	struct cvmx_gmxx_rxx_frm_ctl_cn30xx {
2525 		u64 reserved_9_63 : 55;
2526 		u64 pad_len : 1;
2527 		u64 vlan_len : 1;
2528 		u64 pre_free : 1;
2529 		u64 ctl_smac : 1;
2530 		u64 ctl_mcst : 1;
2531 		u64 ctl_bck : 1;
2532 		u64 ctl_drp : 1;
2533 		u64 pre_strp : 1;
2534 		u64 pre_chk : 1;
2535 	} cn30xx;
2536 	struct cvmx_gmxx_rxx_frm_ctl_cn31xx {
2537 		u64 reserved_8_63 : 56;
2538 		u64 vlan_len : 1;
2539 		u64 pre_free : 1;
2540 		u64 ctl_smac : 1;
2541 		u64 ctl_mcst : 1;
2542 		u64 ctl_bck : 1;
2543 		u64 ctl_drp : 1;
2544 		u64 pre_strp : 1;
2545 		u64 pre_chk : 1;
2546 	} cn31xx;
2547 	struct cvmx_gmxx_rxx_frm_ctl_cn30xx cn38xx;
2548 	struct cvmx_gmxx_rxx_frm_ctl_cn31xx cn38xxp2;
2549 	struct cvmx_gmxx_rxx_frm_ctl_cn50xx {
2550 		u64 reserved_11_63 : 53;
2551 		u64 null_dis : 1;
2552 		u64 pre_align : 1;
2553 		u64 reserved_7_8 : 2;
2554 		u64 pre_free : 1;
2555 		u64 ctl_smac : 1;
2556 		u64 ctl_mcst : 1;
2557 		u64 ctl_bck : 1;
2558 		u64 ctl_drp : 1;
2559 		u64 pre_strp : 1;
2560 		u64 pre_chk : 1;
2561 	} cn50xx;
2562 	struct cvmx_gmxx_rxx_frm_ctl_cn50xx cn52xx;
2563 	struct cvmx_gmxx_rxx_frm_ctl_cn50xx cn52xxp1;
2564 	struct cvmx_gmxx_rxx_frm_ctl_cn50xx cn56xx;
2565 	struct cvmx_gmxx_rxx_frm_ctl_cn56xxp1 {
2566 		u64 reserved_10_63 : 54;
2567 		u64 pre_align : 1;
2568 		u64 reserved_7_8 : 2;
2569 		u64 pre_free : 1;
2570 		u64 ctl_smac : 1;
2571 		u64 ctl_mcst : 1;
2572 		u64 ctl_bck : 1;
2573 		u64 ctl_drp : 1;
2574 		u64 pre_strp : 1;
2575 		u64 pre_chk : 1;
2576 	} cn56xxp1;
2577 	struct cvmx_gmxx_rxx_frm_ctl_cn58xx {
2578 		u64 reserved_11_63 : 53;
2579 		u64 null_dis : 1;
2580 		u64 pre_align : 1;
2581 		u64 pad_len : 1;
2582 		u64 vlan_len : 1;
2583 		u64 pre_free : 1;
2584 		u64 ctl_smac : 1;
2585 		u64 ctl_mcst : 1;
2586 		u64 ctl_bck : 1;
2587 		u64 ctl_drp : 1;
2588 		u64 pre_strp : 1;
2589 		u64 pre_chk : 1;
2590 	} cn58xx;
2591 	struct cvmx_gmxx_rxx_frm_ctl_cn30xx cn58xxp1;
2592 	struct cvmx_gmxx_rxx_frm_ctl_cn61xx {
2593 		u64 reserved_13_63 : 51;
2594 		u64 ptp_mode : 1;
2595 		u64 reserved_11_11 : 1;
2596 		u64 null_dis : 1;
2597 		u64 pre_align : 1;
2598 		u64 reserved_7_8 : 2;
2599 		u64 pre_free : 1;
2600 		u64 ctl_smac : 1;
2601 		u64 ctl_mcst : 1;
2602 		u64 ctl_bck : 1;
2603 		u64 ctl_drp : 1;
2604 		u64 pre_strp : 1;
2605 		u64 pre_chk : 1;
2606 	} cn61xx;
2607 	struct cvmx_gmxx_rxx_frm_ctl_cn61xx cn63xx;
2608 	struct cvmx_gmxx_rxx_frm_ctl_cn61xx cn63xxp1;
2609 	struct cvmx_gmxx_rxx_frm_ctl_cn61xx cn66xx;
2610 	struct cvmx_gmxx_rxx_frm_ctl_cn61xx cn68xx;
2611 	struct cvmx_gmxx_rxx_frm_ctl_cn61xx cn68xxp1;
2612 	struct cvmx_gmxx_rxx_frm_ctl_cn61xx cn70xx;
2613 	struct cvmx_gmxx_rxx_frm_ctl_cn61xx cn70xxp1;
2614 	struct cvmx_gmxx_rxx_frm_ctl_cn61xx cnf71xx;
2615 };
2616 
2617 typedef union cvmx_gmxx_rxx_frm_ctl cvmx_gmxx_rxx_frm_ctl_t;
2618 
2619 /**
2620  * cvmx_gmx#_rx#_frm_max
2621  *
2622  * GMX_RX_FRM_MAX = Frame Max length
2623  *
2624  *
2625  * Notes:
2626  * In spi4 mode, all spi4 ports use prt0 for checking.
2627  *
2628  * When changing the LEN field, be sure that LEN does not exceed
2629  * GMX_RX_JABBER[CNT]. Failure to meet this constraint will cause packets that
2630  * are within the maximum length parameter to be rejected because they exceed
2631  * the GMX_RX_JABBER[CNT] limit.
2632  */
2633 union cvmx_gmxx_rxx_frm_max {
2634 	u64 u64;
2635 	struct cvmx_gmxx_rxx_frm_max_s {
2636 		u64 reserved_16_63 : 48;
2637 		u64 len : 16;
2638 	} s;
2639 	struct cvmx_gmxx_rxx_frm_max_s cn30xx;
2640 	struct cvmx_gmxx_rxx_frm_max_s cn31xx;
2641 	struct cvmx_gmxx_rxx_frm_max_s cn38xx;
2642 	struct cvmx_gmxx_rxx_frm_max_s cn38xxp2;
2643 	struct cvmx_gmxx_rxx_frm_max_s cn58xx;
2644 	struct cvmx_gmxx_rxx_frm_max_s cn58xxp1;
2645 };
2646 
2647 typedef union cvmx_gmxx_rxx_frm_max cvmx_gmxx_rxx_frm_max_t;
2648 
2649 /**
2650  * cvmx_gmx#_rx#_frm_min
2651  *
2652  * GMX_RX_FRM_MIN = Frame Min length
2653  *
2654  *
2655  * Notes:
2656  * In spi4 mode, all spi4 ports use prt0 for checking.
2657  *
2658  */
2659 union cvmx_gmxx_rxx_frm_min {
2660 	u64 u64;
2661 	struct cvmx_gmxx_rxx_frm_min_s {
2662 		u64 reserved_16_63 : 48;
2663 		u64 len : 16;
2664 	} s;
2665 	struct cvmx_gmxx_rxx_frm_min_s cn30xx;
2666 	struct cvmx_gmxx_rxx_frm_min_s cn31xx;
2667 	struct cvmx_gmxx_rxx_frm_min_s cn38xx;
2668 	struct cvmx_gmxx_rxx_frm_min_s cn38xxp2;
2669 	struct cvmx_gmxx_rxx_frm_min_s cn58xx;
2670 	struct cvmx_gmxx_rxx_frm_min_s cn58xxp1;
2671 };
2672 
2673 typedef union cvmx_gmxx_rxx_frm_min cvmx_gmxx_rxx_frm_min_t;
2674 
2675 /**
2676  * cvmx_gmx#_rx#_ifg
2677  *
2678  * GMX_RX_IFG = RX Min IFG
2679  *
2680  */
2681 union cvmx_gmxx_rxx_ifg {
2682 	u64 u64;
2683 	struct cvmx_gmxx_rxx_ifg_s {
2684 		u64 reserved_4_63 : 60;
2685 		u64 ifg : 4;
2686 	} s;
2687 	struct cvmx_gmxx_rxx_ifg_s cn30xx;
2688 	struct cvmx_gmxx_rxx_ifg_s cn31xx;
2689 	struct cvmx_gmxx_rxx_ifg_s cn38xx;
2690 	struct cvmx_gmxx_rxx_ifg_s cn38xxp2;
2691 	struct cvmx_gmxx_rxx_ifg_s cn50xx;
2692 	struct cvmx_gmxx_rxx_ifg_s cn52xx;
2693 	struct cvmx_gmxx_rxx_ifg_s cn52xxp1;
2694 	struct cvmx_gmxx_rxx_ifg_s cn56xx;
2695 	struct cvmx_gmxx_rxx_ifg_s cn56xxp1;
2696 	struct cvmx_gmxx_rxx_ifg_s cn58xx;
2697 	struct cvmx_gmxx_rxx_ifg_s cn58xxp1;
2698 	struct cvmx_gmxx_rxx_ifg_s cn61xx;
2699 	struct cvmx_gmxx_rxx_ifg_s cn63xx;
2700 	struct cvmx_gmxx_rxx_ifg_s cn63xxp1;
2701 	struct cvmx_gmxx_rxx_ifg_s cn66xx;
2702 	struct cvmx_gmxx_rxx_ifg_s cn68xx;
2703 	struct cvmx_gmxx_rxx_ifg_s cn68xxp1;
2704 	struct cvmx_gmxx_rxx_ifg_s cn70xx;
2705 	struct cvmx_gmxx_rxx_ifg_s cn70xxp1;
2706 	struct cvmx_gmxx_rxx_ifg_s cnf71xx;
2707 };
2708 
2709 typedef union cvmx_gmxx_rxx_ifg cvmx_gmxx_rxx_ifg_t;
2710 
2711 /**
2712  * cvmx_gmx#_rx#_int_en
2713  *
2714  * GMX_RX_INT_EN = Interrupt Enable
2715  *
2716  *
2717  * Notes:
2718  * In XAUI mode prt0 is used for checking.
2719  *
2720  */
2721 union cvmx_gmxx_rxx_int_en {
2722 	u64 u64;
2723 	struct cvmx_gmxx_rxx_int_en_s {
2724 		u64 reserved_30_63 : 34;
2725 		u64 wol : 1;
2726 		u64 hg2cc : 1;
2727 		u64 hg2fld : 1;
2728 		u64 undat : 1;
2729 		u64 uneop : 1;
2730 		u64 unsop : 1;
2731 		u64 bad_term : 1;
2732 		u64 bad_seq : 1;
2733 		u64 rem_fault : 1;
2734 		u64 loc_fault : 1;
2735 		u64 pause_drp : 1;
2736 		u64 phy_dupx : 1;
2737 		u64 phy_spd : 1;
2738 		u64 phy_link : 1;
2739 		u64 ifgerr : 1;
2740 		u64 coldet : 1;
2741 		u64 falerr : 1;
2742 		u64 rsverr : 1;
2743 		u64 pcterr : 1;
2744 		u64 ovrerr : 1;
2745 		u64 niberr : 1;
2746 		u64 skperr : 1;
2747 		u64 rcverr : 1;
2748 		u64 lenerr : 1;
2749 		u64 alnerr : 1;
2750 		u64 fcserr : 1;
2751 		u64 jabber : 1;
2752 		u64 maxerr : 1;
2753 		u64 carext : 1;
2754 		u64 minerr : 1;
2755 	} s;
2756 	struct cvmx_gmxx_rxx_int_en_cn30xx {
2757 		u64 reserved_19_63 : 45;
2758 		u64 phy_dupx : 1;
2759 		u64 phy_spd : 1;
2760 		u64 phy_link : 1;
2761 		u64 ifgerr : 1;
2762 		u64 coldet : 1;
2763 		u64 falerr : 1;
2764 		u64 rsverr : 1;
2765 		u64 pcterr : 1;
2766 		u64 ovrerr : 1;
2767 		u64 niberr : 1;
2768 		u64 skperr : 1;
2769 		u64 rcverr : 1;
2770 		u64 lenerr : 1;
2771 		u64 alnerr : 1;
2772 		u64 fcserr : 1;
2773 		u64 jabber : 1;
2774 		u64 maxerr : 1;
2775 		u64 carext : 1;
2776 		u64 minerr : 1;
2777 	} cn30xx;
2778 	struct cvmx_gmxx_rxx_int_en_cn30xx cn31xx;
2779 	struct cvmx_gmxx_rxx_int_en_cn30xx cn38xx;
2780 	struct cvmx_gmxx_rxx_int_en_cn30xx cn38xxp2;
2781 	struct cvmx_gmxx_rxx_int_en_cn50xx {
2782 		u64 reserved_20_63 : 44;
2783 		u64 pause_drp : 1;
2784 		u64 phy_dupx : 1;
2785 		u64 phy_spd : 1;
2786 		u64 phy_link : 1;
2787 		u64 ifgerr : 1;
2788 		u64 coldet : 1;
2789 		u64 falerr : 1;
2790 		u64 rsverr : 1;
2791 		u64 pcterr : 1;
2792 		u64 ovrerr : 1;
2793 		u64 niberr : 1;
2794 		u64 skperr : 1;
2795 		u64 rcverr : 1;
2796 		u64 reserved_6_6 : 1;
2797 		u64 alnerr : 1;
2798 		u64 fcserr : 1;
2799 		u64 jabber : 1;
2800 		u64 reserved_2_2 : 1;
2801 		u64 carext : 1;
2802 		u64 reserved_0_0 : 1;
2803 	} cn50xx;
2804 	struct cvmx_gmxx_rxx_int_en_cn52xx {
2805 		u64 reserved_29_63 : 35;
2806 		u64 hg2cc : 1;
2807 		u64 hg2fld : 1;
2808 		u64 undat : 1;
2809 		u64 uneop : 1;
2810 		u64 unsop : 1;
2811 		u64 bad_term : 1;
2812 		u64 bad_seq : 1;
2813 		u64 rem_fault : 1;
2814 		u64 loc_fault : 1;
2815 		u64 pause_drp : 1;
2816 		u64 reserved_16_18 : 3;
2817 		u64 ifgerr : 1;
2818 		u64 coldet : 1;
2819 		u64 falerr : 1;
2820 		u64 rsverr : 1;
2821 		u64 pcterr : 1;
2822 		u64 ovrerr : 1;
2823 		u64 reserved_9_9 : 1;
2824 		u64 skperr : 1;
2825 		u64 rcverr : 1;
2826 		u64 reserved_5_6 : 2;
2827 		u64 fcserr : 1;
2828 		u64 jabber : 1;
2829 		u64 reserved_2_2 : 1;
2830 		u64 carext : 1;
2831 		u64 reserved_0_0 : 1;
2832 	} cn52xx;
2833 	struct cvmx_gmxx_rxx_int_en_cn52xx cn52xxp1;
2834 	struct cvmx_gmxx_rxx_int_en_cn52xx cn56xx;
2835 	struct cvmx_gmxx_rxx_int_en_cn56xxp1 {
2836 		u64 reserved_27_63 : 37;
2837 		u64 undat : 1;
2838 		u64 uneop : 1;
2839 		u64 unsop : 1;
2840 		u64 bad_term : 1;
2841 		u64 bad_seq : 1;
2842 		u64 rem_fault : 1;
2843 		u64 loc_fault : 1;
2844 		u64 pause_drp : 1;
2845 		u64 reserved_16_18 : 3;
2846 		u64 ifgerr : 1;
2847 		u64 coldet : 1;
2848 		u64 falerr : 1;
2849 		u64 rsverr : 1;
2850 		u64 pcterr : 1;
2851 		u64 ovrerr : 1;
2852 		u64 reserved_9_9 : 1;
2853 		u64 skperr : 1;
2854 		u64 rcverr : 1;
2855 		u64 reserved_5_6 : 2;
2856 		u64 fcserr : 1;
2857 		u64 jabber : 1;
2858 		u64 reserved_2_2 : 1;
2859 		u64 carext : 1;
2860 		u64 reserved_0_0 : 1;
2861 	} cn56xxp1;
2862 	struct cvmx_gmxx_rxx_int_en_cn58xx {
2863 		u64 reserved_20_63 : 44;
2864 		u64 pause_drp : 1;
2865 		u64 phy_dupx : 1;
2866 		u64 phy_spd : 1;
2867 		u64 phy_link : 1;
2868 		u64 ifgerr : 1;
2869 		u64 coldet : 1;
2870 		u64 falerr : 1;
2871 		u64 rsverr : 1;
2872 		u64 pcterr : 1;
2873 		u64 ovrerr : 1;
2874 		u64 niberr : 1;
2875 		u64 skperr : 1;
2876 		u64 rcverr : 1;
2877 		u64 lenerr : 1;
2878 		u64 alnerr : 1;
2879 		u64 fcserr : 1;
2880 		u64 jabber : 1;
2881 		u64 maxerr : 1;
2882 		u64 carext : 1;
2883 		u64 minerr : 1;
2884 	} cn58xx;
2885 	struct cvmx_gmxx_rxx_int_en_cn58xx cn58xxp1;
2886 	struct cvmx_gmxx_rxx_int_en_cn61xx {
2887 		u64 reserved_29_63 : 35;
2888 		u64 hg2cc : 1;
2889 		u64 hg2fld : 1;
2890 		u64 undat : 1;
2891 		u64 uneop : 1;
2892 		u64 unsop : 1;
2893 		u64 bad_term : 1;
2894 		u64 bad_seq : 1;
2895 		u64 rem_fault : 1;
2896 		u64 loc_fault : 1;
2897 		u64 pause_drp : 1;
2898 		u64 reserved_16_18 : 3;
2899 		u64 ifgerr : 1;
2900 		u64 coldet : 1;
2901 		u64 falerr : 1;
2902 		u64 rsverr : 1;
2903 		u64 pcterr : 1;
2904 		u64 ovrerr : 1;
2905 		u64 reserved_9_9 : 1;
2906 		u64 skperr : 1;
2907 		u64 rcverr : 1;
2908 		u64 reserved_5_6 : 2;
2909 		u64 fcserr : 1;
2910 		u64 jabber : 1;
2911 		u64 reserved_2_2 : 1;
2912 		u64 carext : 1;
2913 		u64 minerr : 1;
2914 	} cn61xx;
2915 	struct cvmx_gmxx_rxx_int_en_cn61xx cn63xx;
2916 	struct cvmx_gmxx_rxx_int_en_cn61xx cn63xxp1;
2917 	struct cvmx_gmxx_rxx_int_en_cn61xx cn66xx;
2918 	struct cvmx_gmxx_rxx_int_en_cn61xx cn68xx;
2919 	struct cvmx_gmxx_rxx_int_en_cn61xx cn68xxp1;
2920 	struct cvmx_gmxx_rxx_int_en_cn70xx {
2921 		u64 reserved_30_63 : 34;
2922 		u64 wol : 1;
2923 		u64 hg2cc : 1;
2924 		u64 hg2fld : 1;
2925 		u64 undat : 1;
2926 		u64 uneop : 1;
2927 		u64 unsop : 1;
2928 		u64 bad_term : 1;
2929 		u64 bad_seq : 1;
2930 		u64 rem_fault : 1;
2931 		u64 loc_fault : 1;
2932 		u64 pause_drp : 1;
2933 		u64 reserved_16_18 : 3;
2934 		u64 ifgerr : 1;
2935 		u64 coldet : 1;
2936 		u64 falerr : 1;
2937 		u64 rsverr : 1;
2938 		u64 pcterr : 1;
2939 		u64 ovrerr : 1;
2940 		u64 reserved_9_9 : 1;
2941 		u64 skperr : 1;
2942 		u64 rcverr : 1;
2943 		u64 reserved_5_6 : 2;
2944 		u64 fcserr : 1;
2945 		u64 jabber : 1;
2946 		u64 reserved_2_2 : 1;
2947 		u64 carext : 1;
2948 		u64 minerr : 1;
2949 	} cn70xx;
2950 	struct cvmx_gmxx_rxx_int_en_cn70xx cn70xxp1;
2951 	struct cvmx_gmxx_rxx_int_en_cn61xx cnf71xx;
2952 };
2953 
2954 typedef union cvmx_gmxx_rxx_int_en cvmx_gmxx_rxx_int_en_t;
2955 
2956 /**
2957  * cvmx_gmx#_rx#_int_reg
2958  *
2959  * GMX_RX_INT_REG = Interrupt Register
2960  *
2961  *
2962  * Notes:
2963  * (1) exceptions will only be raised to the control processor if the
2964  *     corresponding bit in the GMX_RX_INT_EN register is set.
2965  *
2966  * (2) exception conditions 10:0 can also set the rcv/opcode in the received
2967  *     packet's workQ entry.  The GMX_RX_FRM_CHK register provides a bit mask
2968  *     for configuring which conditions set the error.
2969  *
2970  * (3) in half duplex operation, the expectation is that collisions will appear
2971  *     as either MINERR o r CAREXT errors.
2972  *
2973  * (4) JABBER - An RX Jabber error indicates that a packet was received which
2974  *              is longer than the maximum allowed packet as defined by the
2975  *              system.  GMX will truncate the packet at the JABBER count.
2976  *              Failure to do so could lead to system instabilty.
2977  *
2978  * (5) NIBERR - This error is illegal at 1000Mbs speeds
2979  *              (GMX_RX_PRT_CFG[SPEED]==0) and will never assert.
2980  *
2981  * (6) MAXERR - for untagged frames, the total frame DA+SA+TL+DATA+PAD+FCS >
2982  *              GMX_RX_FRM_MAX.  For tagged frames, DA+SA+VLAN+TL+DATA+PAD+FCS
2983  *              > GMX_RX_FRM_MAX + 4*VLAN_VAL + 4*VLAN_STACKED.
2984  *
2985  * (7) MINERR - total frame DA+SA+TL+DATA+PAD+FCS < 64
2986  *
2987  * (8) ALNERR - Indicates that the packet received was not an integer number of
2988  *              bytes.  If FCS checking is enabled, ALNERR will only assert if
2989  *              the FCS is bad.  If FCS checking is disabled, ALNERR will
2990  *              assert in all non-integer frame cases.
2991  *
2992  * (9) Collisions - Collisions can only occur in half-duplex mode.  A collision
2993  *                  is assumed by the receiver when the slottime
2994  *                  (GMX_PRT_CFG[SLOTTIME]) is not satisfied.  In 10/100 mode,
2995  *                  this will result in a frame < SLOTTIME.  In 1000 mode, it
2996  *                  could result either in frame < SLOTTIME or a carrier extend
2997  *                  error with the SLOTTIME.  These conditions are visible by...
2998  *
2999  *                  . transfer ended before slottime - COLDET
3000  *                  . carrier extend error           - CAREXT
3001  *
3002  * (A) LENERR - Length errors occur when the received packet does not match the
3003  *              length field.  LENERR is only checked for packets between 64
3004  *              and 1500 bytes.  For untagged frames, the length must exact
3005  *              match.  For tagged frames the length or length+4 must match.
3006  *
3007  * (B) PCTERR - checks that the frame begins with a valid PREAMBLE sequence.
3008  *              Does not check the number of PREAMBLE cycles.
3009  *
3010  * (C) OVRERR -
3011  *
3012  *              OVRERR is an architectural assertion check internal to GMX to
3013  *              make sure no assumption was violated.  In a correctly operating
3014  *              system, this interrupt can never fire.
3015  *
3016  *              GMX has an internal arbiter which selects which of 4 ports to
3017  *              buffer in the main RX FIFO.  If we normally buffer 8 bytes,
3018  *              then each port will typically push a tick every 8 cycles - if
3019  *              the packet interface is going as fast as possible.  If there
3020  *              are four ports, they push every two cycles.  So that's the
3021  *              assumption.  That the inbound module will always be able to
3022  *              consume the tick before another is produced.  If that doesn't
3023  *              happen - that's when OVRERR will assert.
3024  *
3025  * (D) In XAUI mode prt0 is used for interrupt logging.
3026  */
3027 union cvmx_gmxx_rxx_int_reg {
3028 	u64 u64;
3029 	struct cvmx_gmxx_rxx_int_reg_s {
3030 		u64 reserved_30_63 : 34;
3031 		u64 wol : 1;
3032 		u64 hg2cc : 1;
3033 		u64 hg2fld : 1;
3034 		u64 undat : 1;
3035 		u64 uneop : 1;
3036 		u64 unsop : 1;
3037 		u64 bad_term : 1;
3038 		u64 bad_seq : 1;
3039 		u64 rem_fault : 1;
3040 		u64 loc_fault : 1;
3041 		u64 pause_drp : 1;
3042 		u64 phy_dupx : 1;
3043 		u64 phy_spd : 1;
3044 		u64 phy_link : 1;
3045 		u64 ifgerr : 1;
3046 		u64 coldet : 1;
3047 		u64 falerr : 1;
3048 		u64 rsverr : 1;
3049 		u64 pcterr : 1;
3050 		u64 ovrerr : 1;
3051 		u64 niberr : 1;
3052 		u64 skperr : 1;
3053 		u64 rcverr : 1;
3054 		u64 lenerr : 1;
3055 		u64 alnerr : 1;
3056 		u64 fcserr : 1;
3057 		u64 jabber : 1;
3058 		u64 maxerr : 1;
3059 		u64 carext : 1;
3060 		u64 minerr : 1;
3061 	} s;
3062 	struct cvmx_gmxx_rxx_int_reg_cn30xx {
3063 		u64 reserved_19_63 : 45;
3064 		u64 phy_dupx : 1;
3065 		u64 phy_spd : 1;
3066 		u64 phy_link : 1;
3067 		u64 ifgerr : 1;
3068 		u64 coldet : 1;
3069 		u64 falerr : 1;
3070 		u64 rsverr : 1;
3071 		u64 pcterr : 1;
3072 		u64 ovrerr : 1;
3073 		u64 niberr : 1;
3074 		u64 skperr : 1;
3075 		u64 rcverr : 1;
3076 		u64 lenerr : 1;
3077 		u64 alnerr : 1;
3078 		u64 fcserr : 1;
3079 		u64 jabber : 1;
3080 		u64 maxerr : 1;
3081 		u64 carext : 1;
3082 		u64 minerr : 1;
3083 	} cn30xx;
3084 	struct cvmx_gmxx_rxx_int_reg_cn30xx cn31xx;
3085 	struct cvmx_gmxx_rxx_int_reg_cn30xx cn38xx;
3086 	struct cvmx_gmxx_rxx_int_reg_cn30xx cn38xxp2;
3087 	struct cvmx_gmxx_rxx_int_reg_cn50xx {
3088 		u64 reserved_20_63 : 44;
3089 		u64 pause_drp : 1;
3090 		u64 phy_dupx : 1;
3091 		u64 phy_spd : 1;
3092 		u64 phy_link : 1;
3093 		u64 ifgerr : 1;
3094 		u64 coldet : 1;
3095 		u64 falerr : 1;
3096 		u64 rsverr : 1;
3097 		u64 pcterr : 1;
3098 		u64 ovrerr : 1;
3099 		u64 niberr : 1;
3100 		u64 skperr : 1;
3101 		u64 rcverr : 1;
3102 		u64 reserved_6_6 : 1;
3103 		u64 alnerr : 1;
3104 		u64 fcserr : 1;
3105 		u64 jabber : 1;
3106 		u64 reserved_2_2 : 1;
3107 		u64 carext : 1;
3108 		u64 reserved_0_0 : 1;
3109 	} cn50xx;
3110 	struct cvmx_gmxx_rxx_int_reg_cn52xx {
3111 		u64 reserved_29_63 : 35;
3112 		u64 hg2cc : 1;
3113 		u64 hg2fld : 1;
3114 		u64 undat : 1;
3115 		u64 uneop : 1;
3116 		u64 unsop : 1;
3117 		u64 bad_term : 1;
3118 		u64 bad_seq : 1;
3119 		u64 rem_fault : 1;
3120 		u64 loc_fault : 1;
3121 		u64 pause_drp : 1;
3122 		u64 reserved_16_18 : 3;
3123 		u64 ifgerr : 1;
3124 		u64 coldet : 1;
3125 		u64 falerr : 1;
3126 		u64 rsverr : 1;
3127 		u64 pcterr : 1;
3128 		u64 ovrerr : 1;
3129 		u64 reserved_9_9 : 1;
3130 		u64 skperr : 1;
3131 		u64 rcverr : 1;
3132 		u64 reserved_5_6 : 2;
3133 		u64 fcserr : 1;
3134 		u64 jabber : 1;
3135 		u64 reserved_2_2 : 1;
3136 		u64 carext : 1;
3137 		u64 reserved_0_0 : 1;
3138 	} cn52xx;
3139 	struct cvmx_gmxx_rxx_int_reg_cn52xx cn52xxp1;
3140 	struct cvmx_gmxx_rxx_int_reg_cn52xx cn56xx;
3141 	struct cvmx_gmxx_rxx_int_reg_cn56xxp1 {
3142 		u64 reserved_27_63 : 37;
3143 		u64 undat : 1;
3144 		u64 uneop : 1;
3145 		u64 unsop : 1;
3146 		u64 bad_term : 1;
3147 		u64 bad_seq : 1;
3148 		u64 rem_fault : 1;
3149 		u64 loc_fault : 1;
3150 		u64 pause_drp : 1;
3151 		u64 reserved_16_18 : 3;
3152 		u64 ifgerr : 1;
3153 		u64 coldet : 1;
3154 		u64 falerr : 1;
3155 		u64 rsverr : 1;
3156 		u64 pcterr : 1;
3157 		u64 ovrerr : 1;
3158 		u64 reserved_9_9 : 1;
3159 		u64 skperr : 1;
3160 		u64 rcverr : 1;
3161 		u64 reserved_5_6 : 2;
3162 		u64 fcserr : 1;
3163 		u64 jabber : 1;
3164 		u64 reserved_2_2 : 1;
3165 		u64 carext : 1;
3166 		u64 reserved_0_0 : 1;
3167 	} cn56xxp1;
3168 	struct cvmx_gmxx_rxx_int_reg_cn58xx {
3169 		u64 reserved_20_63 : 44;
3170 		u64 pause_drp : 1;
3171 		u64 phy_dupx : 1;
3172 		u64 phy_spd : 1;
3173 		u64 phy_link : 1;
3174 		u64 ifgerr : 1;
3175 		u64 coldet : 1;
3176 		u64 falerr : 1;
3177 		u64 rsverr : 1;
3178 		u64 pcterr : 1;
3179 		u64 ovrerr : 1;
3180 		u64 niberr : 1;
3181 		u64 skperr : 1;
3182 		u64 rcverr : 1;
3183 		u64 lenerr : 1;
3184 		u64 alnerr : 1;
3185 		u64 fcserr : 1;
3186 		u64 jabber : 1;
3187 		u64 maxerr : 1;
3188 		u64 carext : 1;
3189 		u64 minerr : 1;
3190 	} cn58xx;
3191 	struct cvmx_gmxx_rxx_int_reg_cn58xx cn58xxp1;
3192 	struct cvmx_gmxx_rxx_int_reg_cn61xx {
3193 		u64 reserved_29_63 : 35;
3194 		u64 hg2cc : 1;
3195 		u64 hg2fld : 1;
3196 		u64 undat : 1;
3197 		u64 uneop : 1;
3198 		u64 unsop : 1;
3199 		u64 bad_term : 1;
3200 		u64 bad_seq : 1;
3201 		u64 rem_fault : 1;
3202 		u64 loc_fault : 1;
3203 		u64 pause_drp : 1;
3204 		u64 reserved_16_18 : 3;
3205 		u64 ifgerr : 1;
3206 		u64 coldet : 1;
3207 		u64 falerr : 1;
3208 		u64 rsverr : 1;
3209 		u64 pcterr : 1;
3210 		u64 ovrerr : 1;
3211 		u64 reserved_9_9 : 1;
3212 		u64 skperr : 1;
3213 		u64 rcverr : 1;
3214 		u64 reserved_5_6 : 2;
3215 		u64 fcserr : 1;
3216 		u64 jabber : 1;
3217 		u64 reserved_2_2 : 1;
3218 		u64 carext : 1;
3219 		u64 minerr : 1;
3220 	} cn61xx;
3221 	struct cvmx_gmxx_rxx_int_reg_cn61xx cn63xx;
3222 	struct cvmx_gmxx_rxx_int_reg_cn61xx cn63xxp1;
3223 	struct cvmx_gmxx_rxx_int_reg_cn61xx cn66xx;
3224 	struct cvmx_gmxx_rxx_int_reg_cn61xx cn68xx;
3225 	struct cvmx_gmxx_rxx_int_reg_cn61xx cn68xxp1;
3226 	struct cvmx_gmxx_rxx_int_reg_cn70xx {
3227 		u64 reserved_30_63 : 34;
3228 		u64 wol : 1;
3229 		u64 hg2cc : 1;
3230 		u64 hg2fld : 1;
3231 		u64 undat : 1;
3232 		u64 uneop : 1;
3233 		u64 unsop : 1;
3234 		u64 bad_term : 1;
3235 		u64 bad_seq : 1;
3236 		u64 rem_fault : 1;
3237 		u64 loc_fault : 1;
3238 		u64 pause_drp : 1;
3239 		u64 reserved_16_18 : 3;
3240 		u64 ifgerr : 1;
3241 		u64 coldet : 1;
3242 		u64 falerr : 1;
3243 		u64 rsverr : 1;
3244 		u64 pcterr : 1;
3245 		u64 ovrerr : 1;
3246 		u64 reserved_9_9 : 1;
3247 		u64 skperr : 1;
3248 		u64 rcverr : 1;
3249 		u64 reserved_5_6 : 2;
3250 		u64 fcserr : 1;
3251 		u64 jabber : 1;
3252 		u64 reserved_2_2 : 1;
3253 		u64 carext : 1;
3254 		u64 minerr : 1;
3255 	} cn70xx;
3256 	struct cvmx_gmxx_rxx_int_reg_cn70xx cn70xxp1;
3257 	struct cvmx_gmxx_rxx_int_reg_cn61xx cnf71xx;
3258 };
3259 
3260 typedef union cvmx_gmxx_rxx_int_reg cvmx_gmxx_rxx_int_reg_t;
3261 
3262 /**
3263  * cvmx_gmx#_rx#_jabber
3264  *
3265  * GMX_RX_JABBER = The max size packet after which GMX will truncate
3266  *
3267  *
3268  * Notes:
3269  * CNT must be 8-byte aligned such that CNT[2:0] == 0
3270  *
3271  * The packet that will be sent to the packet input logic will have an
3272  * additionl 8 bytes if GMX_RX_FRM_CTL[PRE_CHK] is set and
3273  * GMX_RX_FRM_CTL[PRE_STRP] is clear.  The max packet that will be sent is
3274  * defined as...
3275  *
3276  *      max_sized_packet = GMX_RX_JABBER[CNT]+((GMX_RX_FRM_CTL[PRE_CHK] & !GMX_RX_FRM_CTL[PRE_STRP])*8)
3277  *
3278  * In XAUI mode prt0 is used for checking.
3279  */
3280 union cvmx_gmxx_rxx_jabber {
3281 	u64 u64;
3282 	struct cvmx_gmxx_rxx_jabber_s {
3283 		u64 reserved_16_63 : 48;
3284 		u64 cnt : 16;
3285 	} s;
3286 	struct cvmx_gmxx_rxx_jabber_s cn30xx;
3287 	struct cvmx_gmxx_rxx_jabber_s cn31xx;
3288 	struct cvmx_gmxx_rxx_jabber_s cn38xx;
3289 	struct cvmx_gmxx_rxx_jabber_s cn38xxp2;
3290 	struct cvmx_gmxx_rxx_jabber_s cn50xx;
3291 	struct cvmx_gmxx_rxx_jabber_s cn52xx;
3292 	struct cvmx_gmxx_rxx_jabber_s cn52xxp1;
3293 	struct cvmx_gmxx_rxx_jabber_s cn56xx;
3294 	struct cvmx_gmxx_rxx_jabber_s cn56xxp1;
3295 	struct cvmx_gmxx_rxx_jabber_s cn58xx;
3296 	struct cvmx_gmxx_rxx_jabber_s cn58xxp1;
3297 	struct cvmx_gmxx_rxx_jabber_s cn61xx;
3298 	struct cvmx_gmxx_rxx_jabber_s cn63xx;
3299 	struct cvmx_gmxx_rxx_jabber_s cn63xxp1;
3300 	struct cvmx_gmxx_rxx_jabber_s cn66xx;
3301 	struct cvmx_gmxx_rxx_jabber_s cn68xx;
3302 	struct cvmx_gmxx_rxx_jabber_s cn68xxp1;
3303 	struct cvmx_gmxx_rxx_jabber_s cn70xx;
3304 	struct cvmx_gmxx_rxx_jabber_s cn70xxp1;
3305 	struct cvmx_gmxx_rxx_jabber_s cnf71xx;
3306 };
3307 
3308 typedef union cvmx_gmxx_rxx_jabber cvmx_gmxx_rxx_jabber_t;
3309 
3310 /**
3311  * cvmx_gmx#_rx#_pause_drop_time
3312  *
3313  * GMX_RX_PAUSE_DROP_TIME = The TIME field in a PAUSE Packet which was dropped due to GMX RX FIFO full condition
3314  *
3315  */
3316 union cvmx_gmxx_rxx_pause_drop_time {
3317 	u64 u64;
3318 	struct cvmx_gmxx_rxx_pause_drop_time_s {
3319 		u64 reserved_16_63 : 48;
3320 		u64 status : 16;
3321 	} s;
3322 	struct cvmx_gmxx_rxx_pause_drop_time_s cn50xx;
3323 	struct cvmx_gmxx_rxx_pause_drop_time_s cn52xx;
3324 	struct cvmx_gmxx_rxx_pause_drop_time_s cn52xxp1;
3325 	struct cvmx_gmxx_rxx_pause_drop_time_s cn56xx;
3326 	struct cvmx_gmxx_rxx_pause_drop_time_s cn56xxp1;
3327 	struct cvmx_gmxx_rxx_pause_drop_time_s cn58xx;
3328 	struct cvmx_gmxx_rxx_pause_drop_time_s cn58xxp1;
3329 	struct cvmx_gmxx_rxx_pause_drop_time_s cn61xx;
3330 	struct cvmx_gmxx_rxx_pause_drop_time_s cn63xx;
3331 	struct cvmx_gmxx_rxx_pause_drop_time_s cn63xxp1;
3332 	struct cvmx_gmxx_rxx_pause_drop_time_s cn66xx;
3333 	struct cvmx_gmxx_rxx_pause_drop_time_s cn68xx;
3334 	struct cvmx_gmxx_rxx_pause_drop_time_s cn68xxp1;
3335 	struct cvmx_gmxx_rxx_pause_drop_time_s cn70xx;
3336 	struct cvmx_gmxx_rxx_pause_drop_time_s cn70xxp1;
3337 	struct cvmx_gmxx_rxx_pause_drop_time_s cnf71xx;
3338 };
3339 
3340 typedef union cvmx_gmxx_rxx_pause_drop_time cvmx_gmxx_rxx_pause_drop_time_t;
3341 
3342 /**
3343  * cvmx_gmx#_rx#_rx_inbnd
3344  *
3345  * GMX_RX_INBND = RGMII InBand Link Status
3346  *
3347  *
3348  * Notes:
3349  * These fields are only valid if the attached PHY is operating in RGMII mode
3350  * and supports the optional in-band status (see section 3.4.1 of the RGMII
3351  * specification, version 1.3 for more information).
3352  */
3353 union cvmx_gmxx_rxx_rx_inbnd {
3354 	u64 u64;
3355 	struct cvmx_gmxx_rxx_rx_inbnd_s {
3356 		u64 reserved_4_63 : 60;
3357 		u64 duplex : 1;
3358 		u64 speed : 2;
3359 		u64 status : 1;
3360 	} s;
3361 	struct cvmx_gmxx_rxx_rx_inbnd_s cn30xx;
3362 	struct cvmx_gmxx_rxx_rx_inbnd_s cn31xx;
3363 	struct cvmx_gmxx_rxx_rx_inbnd_s cn38xx;
3364 	struct cvmx_gmxx_rxx_rx_inbnd_s cn38xxp2;
3365 	struct cvmx_gmxx_rxx_rx_inbnd_s cn50xx;
3366 	struct cvmx_gmxx_rxx_rx_inbnd_s cn58xx;
3367 	struct cvmx_gmxx_rxx_rx_inbnd_s cn58xxp1;
3368 };
3369 
3370 typedef union cvmx_gmxx_rxx_rx_inbnd cvmx_gmxx_rxx_rx_inbnd_t;
3371 
3372 /**
3373  * cvmx_gmx#_rx#_stats_ctl
3374  *
3375  * GMX_RX_STATS_CTL = RX Stats Control register
3376  *
3377  */
3378 union cvmx_gmxx_rxx_stats_ctl {
3379 	u64 u64;
3380 	struct cvmx_gmxx_rxx_stats_ctl_s {
3381 		u64 reserved_1_63 : 63;
3382 		u64 rd_clr : 1;
3383 	} s;
3384 	struct cvmx_gmxx_rxx_stats_ctl_s cn30xx;
3385 	struct cvmx_gmxx_rxx_stats_ctl_s cn31xx;
3386 	struct cvmx_gmxx_rxx_stats_ctl_s cn38xx;
3387 	struct cvmx_gmxx_rxx_stats_ctl_s cn38xxp2;
3388 	struct cvmx_gmxx_rxx_stats_ctl_s cn50xx;
3389 	struct cvmx_gmxx_rxx_stats_ctl_s cn52xx;
3390 	struct cvmx_gmxx_rxx_stats_ctl_s cn52xxp1;
3391 	struct cvmx_gmxx_rxx_stats_ctl_s cn56xx;
3392 	struct cvmx_gmxx_rxx_stats_ctl_s cn56xxp1;
3393 	struct cvmx_gmxx_rxx_stats_ctl_s cn58xx;
3394 	struct cvmx_gmxx_rxx_stats_ctl_s cn58xxp1;
3395 	struct cvmx_gmxx_rxx_stats_ctl_s cn61xx;
3396 	struct cvmx_gmxx_rxx_stats_ctl_s cn63xx;
3397 	struct cvmx_gmxx_rxx_stats_ctl_s cn63xxp1;
3398 	struct cvmx_gmxx_rxx_stats_ctl_s cn66xx;
3399 	struct cvmx_gmxx_rxx_stats_ctl_s cn68xx;
3400 	struct cvmx_gmxx_rxx_stats_ctl_s cn68xxp1;
3401 	struct cvmx_gmxx_rxx_stats_ctl_s cn70xx;
3402 	struct cvmx_gmxx_rxx_stats_ctl_s cn70xxp1;
3403 	struct cvmx_gmxx_rxx_stats_ctl_s cnf71xx;
3404 };
3405 
3406 typedef union cvmx_gmxx_rxx_stats_ctl cvmx_gmxx_rxx_stats_ctl_t;
3407 
3408 /**
3409  * cvmx_gmx#_rx#_stats_octs
3410  *
3411  * Notes:
3412  * - Cleared either by a write (of any value) or a read when GMX_RX_STATS_CTL[RD_CLR] is set
3413  * - Counters will wrap
3414  */
3415 union cvmx_gmxx_rxx_stats_octs {
3416 	u64 u64;
3417 	struct cvmx_gmxx_rxx_stats_octs_s {
3418 		u64 reserved_48_63 : 16;
3419 		u64 cnt : 48;
3420 	} s;
3421 	struct cvmx_gmxx_rxx_stats_octs_s cn30xx;
3422 	struct cvmx_gmxx_rxx_stats_octs_s cn31xx;
3423 	struct cvmx_gmxx_rxx_stats_octs_s cn38xx;
3424 	struct cvmx_gmxx_rxx_stats_octs_s cn38xxp2;
3425 	struct cvmx_gmxx_rxx_stats_octs_s cn50xx;
3426 	struct cvmx_gmxx_rxx_stats_octs_s cn52xx;
3427 	struct cvmx_gmxx_rxx_stats_octs_s cn52xxp1;
3428 	struct cvmx_gmxx_rxx_stats_octs_s cn56xx;
3429 	struct cvmx_gmxx_rxx_stats_octs_s cn56xxp1;
3430 	struct cvmx_gmxx_rxx_stats_octs_s cn58xx;
3431 	struct cvmx_gmxx_rxx_stats_octs_s cn58xxp1;
3432 	struct cvmx_gmxx_rxx_stats_octs_s cn61xx;
3433 	struct cvmx_gmxx_rxx_stats_octs_s cn63xx;
3434 	struct cvmx_gmxx_rxx_stats_octs_s cn63xxp1;
3435 	struct cvmx_gmxx_rxx_stats_octs_s cn66xx;
3436 	struct cvmx_gmxx_rxx_stats_octs_s cn68xx;
3437 	struct cvmx_gmxx_rxx_stats_octs_s cn68xxp1;
3438 	struct cvmx_gmxx_rxx_stats_octs_s cn70xx;
3439 	struct cvmx_gmxx_rxx_stats_octs_s cn70xxp1;
3440 	struct cvmx_gmxx_rxx_stats_octs_s cnf71xx;
3441 };
3442 
3443 typedef union cvmx_gmxx_rxx_stats_octs cvmx_gmxx_rxx_stats_octs_t;
3444 
3445 /**
3446  * cvmx_gmx#_rx#_stats_octs_ctl
3447  *
3448  * Notes:
3449  * - Cleared either by a write (of any value) or a read when GMX_RX_STATS_CTL[RD_CLR] is set
3450  * - Counters will wrap
3451  */
3452 union cvmx_gmxx_rxx_stats_octs_ctl {
3453 	u64 u64;
3454 	struct cvmx_gmxx_rxx_stats_octs_ctl_s {
3455 		u64 reserved_48_63 : 16;
3456 		u64 cnt : 48;
3457 	} s;
3458 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn30xx;
3459 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn31xx;
3460 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn38xx;
3461 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn38xxp2;
3462 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn50xx;
3463 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn52xx;
3464 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn52xxp1;
3465 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn56xx;
3466 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn56xxp1;
3467 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn58xx;
3468 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn58xxp1;
3469 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn61xx;
3470 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn63xx;
3471 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn63xxp1;
3472 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn66xx;
3473 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn68xx;
3474 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn68xxp1;
3475 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn70xx;
3476 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cn70xxp1;
3477 	struct cvmx_gmxx_rxx_stats_octs_ctl_s cnf71xx;
3478 };
3479 
3480 typedef union cvmx_gmxx_rxx_stats_octs_ctl cvmx_gmxx_rxx_stats_octs_ctl_t;
3481 
3482 /**
3483  * cvmx_gmx#_rx#_stats_octs_dmac
3484  *
3485  * Notes:
3486  * - Cleared either by a write (of any value) or a read when GMX_RX_STATS_CTL[RD_CLR] is set
3487  * - Counters will wrap
3488  */
3489 union cvmx_gmxx_rxx_stats_octs_dmac {
3490 	u64 u64;
3491 	struct cvmx_gmxx_rxx_stats_octs_dmac_s {
3492 		u64 reserved_48_63 : 16;
3493 		u64 cnt : 48;
3494 	} s;
3495 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn30xx;
3496 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn31xx;
3497 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn38xx;
3498 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn38xxp2;
3499 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn50xx;
3500 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn52xx;
3501 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn52xxp1;
3502 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn56xx;
3503 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn56xxp1;
3504 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn58xx;
3505 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn58xxp1;
3506 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn61xx;
3507 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn63xx;
3508 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn63xxp1;
3509 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn66xx;
3510 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn68xx;
3511 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn68xxp1;
3512 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn70xx;
3513 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cn70xxp1;
3514 	struct cvmx_gmxx_rxx_stats_octs_dmac_s cnf71xx;
3515 };
3516 
3517 typedef union cvmx_gmxx_rxx_stats_octs_dmac cvmx_gmxx_rxx_stats_octs_dmac_t;
3518 
3519 /**
3520  * cvmx_gmx#_rx#_stats_octs_drp
3521  *
3522  * Notes:
3523  * - Cleared either by a write (of any value) or a read when GMX_RX_STATS_CTL[RD_CLR] is set
3524  * - Counters will wrap
3525  */
3526 union cvmx_gmxx_rxx_stats_octs_drp {
3527 	u64 u64;
3528 	struct cvmx_gmxx_rxx_stats_octs_drp_s {
3529 		u64 reserved_48_63 : 16;
3530 		u64 cnt : 48;
3531 	} s;
3532 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn30xx;
3533 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn31xx;
3534 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn38xx;
3535 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn38xxp2;
3536 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn50xx;
3537 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn52xx;
3538 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn52xxp1;
3539 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn56xx;
3540 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn56xxp1;
3541 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn58xx;
3542 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn58xxp1;
3543 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn61xx;
3544 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn63xx;
3545 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn63xxp1;
3546 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn66xx;
3547 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn68xx;
3548 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn68xxp1;
3549 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn70xx;
3550 	struct cvmx_gmxx_rxx_stats_octs_drp_s cn70xxp1;
3551 	struct cvmx_gmxx_rxx_stats_octs_drp_s cnf71xx;
3552 };
3553 
3554 typedef union cvmx_gmxx_rxx_stats_octs_drp cvmx_gmxx_rxx_stats_octs_drp_t;
3555 
3556 /**
3557  * cvmx_gmx#_rx#_stats_pkts
3558  *
3559  * Count of good received packets - packets that are not recognized as PAUSE
3560  * packets, dropped due the DMAC filter, dropped due FIFO full status, or
3561  * have any other OPCODE (FCS, Length, etc).
3562  */
3563 union cvmx_gmxx_rxx_stats_pkts {
3564 	u64 u64;
3565 	struct cvmx_gmxx_rxx_stats_pkts_s {
3566 		u64 reserved_32_63 : 32;
3567 		u64 cnt : 32;
3568 	} s;
3569 	struct cvmx_gmxx_rxx_stats_pkts_s cn30xx;
3570 	struct cvmx_gmxx_rxx_stats_pkts_s cn31xx;
3571 	struct cvmx_gmxx_rxx_stats_pkts_s cn38xx;
3572 	struct cvmx_gmxx_rxx_stats_pkts_s cn38xxp2;
3573 	struct cvmx_gmxx_rxx_stats_pkts_s cn50xx;
3574 	struct cvmx_gmxx_rxx_stats_pkts_s cn52xx;
3575 	struct cvmx_gmxx_rxx_stats_pkts_s cn52xxp1;
3576 	struct cvmx_gmxx_rxx_stats_pkts_s cn56xx;
3577 	struct cvmx_gmxx_rxx_stats_pkts_s cn56xxp1;
3578 	struct cvmx_gmxx_rxx_stats_pkts_s cn58xx;
3579 	struct cvmx_gmxx_rxx_stats_pkts_s cn58xxp1;
3580 	struct cvmx_gmxx_rxx_stats_pkts_s cn61xx;
3581 	struct cvmx_gmxx_rxx_stats_pkts_s cn63xx;
3582 	struct cvmx_gmxx_rxx_stats_pkts_s cn63xxp1;
3583 	struct cvmx_gmxx_rxx_stats_pkts_s cn66xx;
3584 	struct cvmx_gmxx_rxx_stats_pkts_s cn68xx;
3585 	struct cvmx_gmxx_rxx_stats_pkts_s cn68xxp1;
3586 	struct cvmx_gmxx_rxx_stats_pkts_s cn70xx;
3587 	struct cvmx_gmxx_rxx_stats_pkts_s cn70xxp1;
3588 	struct cvmx_gmxx_rxx_stats_pkts_s cnf71xx;
3589 };
3590 
3591 typedef union cvmx_gmxx_rxx_stats_pkts cvmx_gmxx_rxx_stats_pkts_t;
3592 
3593 /**
3594  * cvmx_gmx#_rx#_stats_pkts_bad
3595  *
3596  * Count of all packets received with some error that were not dropped
3597  * either due to the dmac filter or lack of room in the receive FIFO.
3598  */
3599 union cvmx_gmxx_rxx_stats_pkts_bad {
3600 	u64 u64;
3601 	struct cvmx_gmxx_rxx_stats_pkts_bad_s {
3602 		u64 reserved_32_63 : 32;
3603 		u64 cnt : 32;
3604 	} s;
3605 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn30xx;
3606 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn31xx;
3607 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn38xx;
3608 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn38xxp2;
3609 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn50xx;
3610 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn52xx;
3611 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn52xxp1;
3612 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn56xx;
3613 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn56xxp1;
3614 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn58xx;
3615 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn58xxp1;
3616 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn61xx;
3617 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn63xx;
3618 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn63xxp1;
3619 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn66xx;
3620 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn68xx;
3621 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn68xxp1;
3622 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn70xx;
3623 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cn70xxp1;
3624 	struct cvmx_gmxx_rxx_stats_pkts_bad_s cnf71xx;
3625 };
3626 
3627 typedef union cvmx_gmxx_rxx_stats_pkts_bad cvmx_gmxx_rxx_stats_pkts_bad_t;
3628 
3629 /**
3630  * cvmx_gmx#_rx#_stats_pkts_ctl
3631  *
3632  * Count of all packets received that were recognized as Flow Control or
3633  * PAUSE packets.  PAUSE packets with any kind of error are counted in
3634  * GMX_RX_STATS_PKTS_BAD.  Pause packets can be optionally dropped or
3635  * forwarded based on the GMX_RX_FRM_CTL[CTL_DRP] bit.  This count
3636  * increments regardless of whether the packet is dropped.  Pause packets
3637  * will never be counted in GMX_RX_STATS_PKTS.  Packets dropped due the dmac
3638  * filter will be counted in GMX_RX_STATS_PKTS_DMAC and not here.
3639  */
3640 union cvmx_gmxx_rxx_stats_pkts_ctl {
3641 	u64 u64;
3642 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s {
3643 		u64 reserved_32_63 : 32;
3644 		u64 cnt : 32;
3645 	} s;
3646 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn30xx;
3647 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn31xx;
3648 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn38xx;
3649 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn38xxp2;
3650 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn50xx;
3651 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn52xx;
3652 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn52xxp1;
3653 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn56xx;
3654 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn56xxp1;
3655 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn58xx;
3656 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn58xxp1;
3657 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn61xx;
3658 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn63xx;
3659 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn63xxp1;
3660 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn66xx;
3661 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn68xx;
3662 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn68xxp1;
3663 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn70xx;
3664 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cn70xxp1;
3665 	struct cvmx_gmxx_rxx_stats_pkts_ctl_s cnf71xx;
3666 };
3667 
3668 typedef union cvmx_gmxx_rxx_stats_pkts_ctl cvmx_gmxx_rxx_stats_pkts_ctl_t;
3669 
3670 /**
3671  * cvmx_gmx#_rx#_stats_pkts_dmac
3672  *
3673  * Count of all packets received that were dropped by the dmac filter.
3674  * Packets that match the DMAC will be dropped and counted here regardless
3675  * of if they were bad packets.  These packets will never be counted in
3676  * GMX_RX_STATS_PKTS.
3677  * Some packets that were not able to satisify the DECISION_CNT may not
3678  * actually be dropped by Octeon, but they will be counted here as if they
3679  * were dropped.
3680  */
3681 union cvmx_gmxx_rxx_stats_pkts_dmac {
3682 	u64 u64;
3683 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s {
3684 		u64 reserved_32_63 : 32;
3685 		u64 cnt : 32;
3686 	} s;
3687 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn30xx;
3688 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn31xx;
3689 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn38xx;
3690 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn38xxp2;
3691 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn50xx;
3692 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn52xx;
3693 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn52xxp1;
3694 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn56xx;
3695 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn56xxp1;
3696 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn58xx;
3697 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn58xxp1;
3698 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn61xx;
3699 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn63xx;
3700 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn63xxp1;
3701 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn66xx;
3702 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn68xx;
3703 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn68xxp1;
3704 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn70xx;
3705 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cn70xxp1;
3706 	struct cvmx_gmxx_rxx_stats_pkts_dmac_s cnf71xx;
3707 };
3708 
3709 typedef union cvmx_gmxx_rxx_stats_pkts_dmac cvmx_gmxx_rxx_stats_pkts_dmac_t;
3710 
3711 /**
3712  * cvmx_gmx#_rx#_stats_pkts_drp
3713  *
3714  * Count of all packets received that were dropped due to a full receive FIFO.
3715  * This counts both partial packets in which there was enough space in the RX
3716  * FIFO to begin to buffer and the packet and total drops in which no packet was
3717  * sent to PKI.  This counts good and bad packets received - all packets dropped
3718  * by the FIFO.  It does not count packets dropped by the dmac or pause packet
3719  * filters.
3720  */
3721 union cvmx_gmxx_rxx_stats_pkts_drp {
3722 	u64 u64;
3723 	struct cvmx_gmxx_rxx_stats_pkts_drp_s {
3724 		u64 reserved_32_63 : 32;
3725 		u64 cnt : 32;
3726 	} s;
3727 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn30xx;
3728 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn31xx;
3729 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn38xx;
3730 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn38xxp2;
3731 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn50xx;
3732 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn52xx;
3733 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn52xxp1;
3734 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn56xx;
3735 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn56xxp1;
3736 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn58xx;
3737 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn58xxp1;
3738 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn61xx;
3739 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn63xx;
3740 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn63xxp1;
3741 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn66xx;
3742 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn68xx;
3743 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn68xxp1;
3744 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn70xx;
3745 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cn70xxp1;
3746 	struct cvmx_gmxx_rxx_stats_pkts_drp_s cnf71xx;
3747 };
3748 
3749 typedef union cvmx_gmxx_rxx_stats_pkts_drp cvmx_gmxx_rxx_stats_pkts_drp_t;
3750 
3751 /**
3752  * cvmx_gmx#_rx#_udd_skp
3753  *
3754  * GMX_RX_UDD_SKP = Amount of User-defined data before the start of the L2 data
3755  *
3756  *
3757  * Notes:
3758  * (1) The skip bytes are part of the packet and will be sent down the NCB
3759  *     packet interface and will be handled by PKI.
3760  *
3761  * (2) The system can determine if the UDD bytes are included in the FCS check
3762  *     by using the FCSSEL field - if the FCS check is enabled.
3763  *
3764  * (3) Assume that the preamble/sfd is always at the start of the frame - even
3765  *     before UDD bytes.  In most cases, there will be no preamble in these
3766  *     cases since it will be packet interface in direct communication to
3767  *     another packet interface (MAC to MAC) without a PHY involved.
3768  *
3769  * (4) We can still do address filtering and control packet filtering is the
3770  *     user desires.
3771  *
3772  * (5) UDD_SKP must be 0 in half-duplex operation unless
3773  *     GMX_RX_FRM_CTL[PRE_CHK] is clear.  If GMX_RX_FRM_CTL[PRE_CHK] is clear,
3774  *     then UDD_SKP will normally be 8.
3775  *
3776  * (6) In all cases, the UDD bytes will be sent down the packet interface as
3777  *     part of the packet.  The UDD bytes are never stripped from the actual
3778  *     packet.
3779  *
3780  * (7) If LEN != 0, then GMX_RX_FRM_CHK[LENERR] will be disabled and GMX_RX_INT_REG[LENERR] will be zero
3781  */
3782 union cvmx_gmxx_rxx_udd_skp {
3783 	u64 u64;
3784 	struct cvmx_gmxx_rxx_udd_skp_s {
3785 		u64 reserved_9_63 : 55;
3786 		u64 fcssel : 1;
3787 		u64 reserved_7_7 : 1;
3788 		u64 len : 7;
3789 	} s;
3790 	struct cvmx_gmxx_rxx_udd_skp_s cn30xx;
3791 	struct cvmx_gmxx_rxx_udd_skp_s cn31xx;
3792 	struct cvmx_gmxx_rxx_udd_skp_s cn38xx;
3793 	struct cvmx_gmxx_rxx_udd_skp_s cn38xxp2;
3794 	struct cvmx_gmxx_rxx_udd_skp_s cn50xx;
3795 	struct cvmx_gmxx_rxx_udd_skp_s cn52xx;
3796 	struct cvmx_gmxx_rxx_udd_skp_s cn52xxp1;
3797 	struct cvmx_gmxx_rxx_udd_skp_s cn56xx;
3798 	struct cvmx_gmxx_rxx_udd_skp_s cn56xxp1;
3799 	struct cvmx_gmxx_rxx_udd_skp_s cn58xx;
3800 	struct cvmx_gmxx_rxx_udd_skp_s cn58xxp1;
3801 	struct cvmx_gmxx_rxx_udd_skp_s cn61xx;
3802 	struct cvmx_gmxx_rxx_udd_skp_s cn63xx;
3803 	struct cvmx_gmxx_rxx_udd_skp_s cn63xxp1;
3804 	struct cvmx_gmxx_rxx_udd_skp_s cn66xx;
3805 	struct cvmx_gmxx_rxx_udd_skp_s cn68xx;
3806 	struct cvmx_gmxx_rxx_udd_skp_s cn68xxp1;
3807 	struct cvmx_gmxx_rxx_udd_skp_s cn70xx;
3808 	struct cvmx_gmxx_rxx_udd_skp_s cn70xxp1;
3809 	struct cvmx_gmxx_rxx_udd_skp_s cnf71xx;
3810 };
3811 
3812 typedef union cvmx_gmxx_rxx_udd_skp cvmx_gmxx_rxx_udd_skp_t;
3813 
3814 /**
3815  * cvmx_gmx#_rx_bp_drop#
3816  *
3817  * GMX_RX_BP_DROP = FIFO mark for packet drop
3818  *
3819  *
3820  * Notes:
3821  * The actual watermark is dynamic with respect to the GMX_RX_PRTS
3822  * register.  The GMX_RX_PRTS controls the depth of the port's
3823  * FIFO so as ports are added or removed, the drop point may change.
3824  *
3825  * In XAUI mode prt0 is used for checking.
3826  */
3827 union cvmx_gmxx_rx_bp_dropx {
3828 	u64 u64;
3829 	struct cvmx_gmxx_rx_bp_dropx_s {
3830 		u64 reserved_6_63 : 58;
3831 		u64 mark : 6;
3832 	} s;
3833 	struct cvmx_gmxx_rx_bp_dropx_s cn30xx;
3834 	struct cvmx_gmxx_rx_bp_dropx_s cn31xx;
3835 	struct cvmx_gmxx_rx_bp_dropx_s cn38xx;
3836 	struct cvmx_gmxx_rx_bp_dropx_s cn38xxp2;
3837 	struct cvmx_gmxx_rx_bp_dropx_s cn50xx;
3838 	struct cvmx_gmxx_rx_bp_dropx_s cn52xx;
3839 	struct cvmx_gmxx_rx_bp_dropx_s cn52xxp1;
3840 	struct cvmx_gmxx_rx_bp_dropx_s cn56xx;
3841 	struct cvmx_gmxx_rx_bp_dropx_s cn56xxp1;
3842 	struct cvmx_gmxx_rx_bp_dropx_s cn58xx;
3843 	struct cvmx_gmxx_rx_bp_dropx_s cn58xxp1;
3844 	struct cvmx_gmxx_rx_bp_dropx_s cn61xx;
3845 	struct cvmx_gmxx_rx_bp_dropx_s cn63xx;
3846 	struct cvmx_gmxx_rx_bp_dropx_s cn63xxp1;
3847 	struct cvmx_gmxx_rx_bp_dropx_s cn66xx;
3848 	struct cvmx_gmxx_rx_bp_dropx_s cn68xx;
3849 	struct cvmx_gmxx_rx_bp_dropx_s cn68xxp1;
3850 	struct cvmx_gmxx_rx_bp_dropx_s cn70xx;
3851 	struct cvmx_gmxx_rx_bp_dropx_s cn70xxp1;
3852 	struct cvmx_gmxx_rx_bp_dropx_s cnf71xx;
3853 };
3854 
3855 typedef union cvmx_gmxx_rx_bp_dropx cvmx_gmxx_rx_bp_dropx_t;
3856 
3857 /**
3858  * cvmx_gmx#_rx_bp_off#
3859  *
3860  * GMX_RX_BP_OFF = Lowater mark for packet drop
3861  *
3862  *
3863  * Notes:
3864  * In XAUI mode, prt0 is used for checking.
3865  *
3866  */
3867 union cvmx_gmxx_rx_bp_offx {
3868 	u64 u64;
3869 	struct cvmx_gmxx_rx_bp_offx_s {
3870 		u64 reserved_6_63 : 58;
3871 		u64 mark : 6;
3872 	} s;
3873 	struct cvmx_gmxx_rx_bp_offx_s cn30xx;
3874 	struct cvmx_gmxx_rx_bp_offx_s cn31xx;
3875 	struct cvmx_gmxx_rx_bp_offx_s cn38xx;
3876 	struct cvmx_gmxx_rx_bp_offx_s cn38xxp2;
3877 	struct cvmx_gmxx_rx_bp_offx_s cn50xx;
3878 	struct cvmx_gmxx_rx_bp_offx_s cn52xx;
3879 	struct cvmx_gmxx_rx_bp_offx_s cn52xxp1;
3880 	struct cvmx_gmxx_rx_bp_offx_s cn56xx;
3881 	struct cvmx_gmxx_rx_bp_offx_s cn56xxp1;
3882 	struct cvmx_gmxx_rx_bp_offx_s cn58xx;
3883 	struct cvmx_gmxx_rx_bp_offx_s cn58xxp1;
3884 	struct cvmx_gmxx_rx_bp_offx_s cn61xx;
3885 	struct cvmx_gmxx_rx_bp_offx_s cn63xx;
3886 	struct cvmx_gmxx_rx_bp_offx_s cn63xxp1;
3887 	struct cvmx_gmxx_rx_bp_offx_s cn66xx;
3888 	struct cvmx_gmxx_rx_bp_offx_s cn68xx;
3889 	struct cvmx_gmxx_rx_bp_offx_s cn68xxp1;
3890 	struct cvmx_gmxx_rx_bp_offx_s cn70xx;
3891 	struct cvmx_gmxx_rx_bp_offx_s cn70xxp1;
3892 	struct cvmx_gmxx_rx_bp_offx_s cnf71xx;
3893 };
3894 
3895 typedef union cvmx_gmxx_rx_bp_offx cvmx_gmxx_rx_bp_offx_t;
3896 
3897 /**
3898  * cvmx_gmx#_rx_bp_on#
3899  *
3900  * GMX_RX_BP_ON = Hiwater mark for port/interface backpressure
3901  *
3902  *
3903  * Notes:
3904  * In XAUI mode, prt0 is used for checking.
3905  *
3906  */
3907 union cvmx_gmxx_rx_bp_onx {
3908 	u64 u64;
3909 	struct cvmx_gmxx_rx_bp_onx_s {
3910 		u64 reserved_11_63 : 53;
3911 		u64 mark : 11;
3912 	} s;
3913 	struct cvmx_gmxx_rx_bp_onx_cn30xx {
3914 		u64 reserved_9_63 : 55;
3915 		u64 mark : 9;
3916 	} cn30xx;
3917 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn31xx;
3918 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn38xx;
3919 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn38xxp2;
3920 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn50xx;
3921 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn52xx;
3922 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn52xxp1;
3923 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn56xx;
3924 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn56xxp1;
3925 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn58xx;
3926 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn58xxp1;
3927 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn61xx;
3928 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn63xx;
3929 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn63xxp1;
3930 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn66xx;
3931 	struct cvmx_gmxx_rx_bp_onx_s cn68xx;
3932 	struct cvmx_gmxx_rx_bp_onx_s cn68xxp1;
3933 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn70xx;
3934 	struct cvmx_gmxx_rx_bp_onx_cn30xx cn70xxp1;
3935 	struct cvmx_gmxx_rx_bp_onx_cn30xx cnf71xx;
3936 };
3937 
3938 typedef union cvmx_gmxx_rx_bp_onx cvmx_gmxx_rx_bp_onx_t;
3939 
3940 /**
3941  * cvmx_gmx#_rx_hg2_status
3942  *
3943  * ** HG2 message CSRs
3944  *
3945  */
3946 union cvmx_gmxx_rx_hg2_status {
3947 	u64 u64;
3948 	struct cvmx_gmxx_rx_hg2_status_s {
3949 		u64 reserved_48_63 : 16;
3950 		u64 phtim2go : 16;
3951 		u64 xof : 16;
3952 		u64 lgtim2go : 16;
3953 	} s;
3954 	struct cvmx_gmxx_rx_hg2_status_s cn52xx;
3955 	struct cvmx_gmxx_rx_hg2_status_s cn52xxp1;
3956 	struct cvmx_gmxx_rx_hg2_status_s cn56xx;
3957 	struct cvmx_gmxx_rx_hg2_status_s cn61xx;
3958 	struct cvmx_gmxx_rx_hg2_status_s cn63xx;
3959 	struct cvmx_gmxx_rx_hg2_status_s cn63xxp1;
3960 	struct cvmx_gmxx_rx_hg2_status_s cn66xx;
3961 	struct cvmx_gmxx_rx_hg2_status_s cn68xx;
3962 	struct cvmx_gmxx_rx_hg2_status_s cn68xxp1;
3963 	struct cvmx_gmxx_rx_hg2_status_s cn70xx;
3964 	struct cvmx_gmxx_rx_hg2_status_s cn70xxp1;
3965 	struct cvmx_gmxx_rx_hg2_status_s cnf71xx;
3966 };
3967 
3968 typedef union cvmx_gmxx_rx_hg2_status cvmx_gmxx_rx_hg2_status_t;
3969 
3970 /**
3971  * cvmx_gmx#_rx_pass_en
3972  *
3973  * GMX_RX_PASS_EN = Packet pass through mode enable
3974  *
3975  * When both Octane ports are running in Spi4 mode, packets can be directly
3976  * passed from one SPX interface to the other without being processed by the
3977  * core or PP's.  The register has one bit for each port to enable the pass
3978  * through feature.
3979  *
3980  * Notes:
3981  * (1) Can only be used in dual Spi4 configs
3982  *
3983  * (2) The mapped pass through output port cannot be the destination port for
3984  *     any Octane core traffic.
3985  */
3986 union cvmx_gmxx_rx_pass_en {
3987 	u64 u64;
3988 	struct cvmx_gmxx_rx_pass_en_s {
3989 		u64 reserved_16_63 : 48;
3990 		u64 en : 16;
3991 	} s;
3992 	struct cvmx_gmxx_rx_pass_en_s cn38xx;
3993 	struct cvmx_gmxx_rx_pass_en_s cn38xxp2;
3994 	struct cvmx_gmxx_rx_pass_en_s cn58xx;
3995 	struct cvmx_gmxx_rx_pass_en_s cn58xxp1;
3996 };
3997 
3998 typedef union cvmx_gmxx_rx_pass_en cvmx_gmxx_rx_pass_en_t;
3999 
4000 /**
4001  * cvmx_gmx#_rx_pass_map#
4002  *
4003  * GMX_RX_PASS_MAP = Packet pass through port map
4004  *
4005  */
4006 union cvmx_gmxx_rx_pass_mapx {
4007 	u64 u64;
4008 	struct cvmx_gmxx_rx_pass_mapx_s {
4009 		u64 reserved_4_63 : 60;
4010 		u64 dprt : 4;
4011 	} s;
4012 	struct cvmx_gmxx_rx_pass_mapx_s cn38xx;
4013 	struct cvmx_gmxx_rx_pass_mapx_s cn38xxp2;
4014 	struct cvmx_gmxx_rx_pass_mapx_s cn58xx;
4015 	struct cvmx_gmxx_rx_pass_mapx_s cn58xxp1;
4016 };
4017 
4018 typedef union cvmx_gmxx_rx_pass_mapx cvmx_gmxx_rx_pass_mapx_t;
4019 
4020 /**
4021  * cvmx_gmx#_rx_prt_info
4022  *
4023  * GMX_RX_PRT_INFO = Report the RX status for port
4024  *
4025  *
4026  * Notes:
4027  * In XAUI mode, only the lsb (corresponding to port0) of DROP and COMMIT are used.
4028  *
4029  */
4030 union cvmx_gmxx_rx_prt_info {
4031 	u64 u64;
4032 	struct cvmx_gmxx_rx_prt_info_s {
4033 		u64 reserved_32_63 : 32;
4034 		u64 drop : 16;
4035 		u64 commit : 16;
4036 	} s;
4037 	struct cvmx_gmxx_rx_prt_info_cn30xx {
4038 		u64 reserved_19_63 : 45;
4039 		u64 drop : 3;
4040 		u64 reserved_3_15 : 13;
4041 		u64 commit : 3;
4042 	} cn30xx;
4043 	struct cvmx_gmxx_rx_prt_info_cn30xx cn31xx;
4044 	struct cvmx_gmxx_rx_prt_info_s cn38xx;
4045 	struct cvmx_gmxx_rx_prt_info_cn30xx cn50xx;
4046 	struct cvmx_gmxx_rx_prt_info_cn52xx {
4047 		u64 reserved_20_63 : 44;
4048 		u64 drop : 4;
4049 		u64 reserved_4_15 : 12;
4050 		u64 commit : 4;
4051 	} cn52xx;
4052 	struct cvmx_gmxx_rx_prt_info_cn52xx cn52xxp1;
4053 	struct cvmx_gmxx_rx_prt_info_cn52xx cn56xx;
4054 	struct cvmx_gmxx_rx_prt_info_cn52xx cn56xxp1;
4055 	struct cvmx_gmxx_rx_prt_info_s cn58xx;
4056 	struct cvmx_gmxx_rx_prt_info_s cn58xxp1;
4057 	struct cvmx_gmxx_rx_prt_info_cn52xx cn61xx;
4058 	struct cvmx_gmxx_rx_prt_info_cn52xx cn63xx;
4059 	struct cvmx_gmxx_rx_prt_info_cn52xx cn63xxp1;
4060 	struct cvmx_gmxx_rx_prt_info_cn52xx cn66xx;
4061 	struct cvmx_gmxx_rx_prt_info_cn52xx cn68xx;
4062 	struct cvmx_gmxx_rx_prt_info_cn52xx cn68xxp1;
4063 	struct cvmx_gmxx_rx_prt_info_cn52xx cn70xx;
4064 	struct cvmx_gmxx_rx_prt_info_cn52xx cn70xxp1;
4065 	struct cvmx_gmxx_rx_prt_info_cnf71xx {
4066 		u64 reserved_18_63 : 46;
4067 		u64 drop : 2;
4068 		u64 reserved_2_15 : 14;
4069 		u64 commit : 2;
4070 	} cnf71xx;
4071 };
4072 
4073 typedef union cvmx_gmxx_rx_prt_info cvmx_gmxx_rx_prt_info_t;
4074 
4075 /**
4076  * cvmx_gmx#_rx_prts
4077  *
4078  * GMX_RX_PRTS = Number of FIFOs to carve the RX buffer into
4079  *
4080  *
4081  * Notes:
4082  * GMX_RX_PRTS[PRTS] must be set to '1' in XAUI mode.
4083  *
4084  */
4085 union cvmx_gmxx_rx_prts {
4086 	u64 u64;
4087 	struct cvmx_gmxx_rx_prts_s {
4088 		u64 reserved_3_63 : 61;
4089 		u64 prts : 3;
4090 	} s;
4091 	struct cvmx_gmxx_rx_prts_s cn30xx;
4092 	struct cvmx_gmxx_rx_prts_s cn31xx;
4093 	struct cvmx_gmxx_rx_prts_s cn38xx;
4094 	struct cvmx_gmxx_rx_prts_s cn38xxp2;
4095 	struct cvmx_gmxx_rx_prts_s cn50xx;
4096 	struct cvmx_gmxx_rx_prts_s cn52xx;
4097 	struct cvmx_gmxx_rx_prts_s cn52xxp1;
4098 	struct cvmx_gmxx_rx_prts_s cn56xx;
4099 	struct cvmx_gmxx_rx_prts_s cn56xxp1;
4100 	struct cvmx_gmxx_rx_prts_s cn58xx;
4101 	struct cvmx_gmxx_rx_prts_s cn58xxp1;
4102 	struct cvmx_gmxx_rx_prts_s cn61xx;
4103 	struct cvmx_gmxx_rx_prts_s cn63xx;
4104 	struct cvmx_gmxx_rx_prts_s cn63xxp1;
4105 	struct cvmx_gmxx_rx_prts_s cn66xx;
4106 	struct cvmx_gmxx_rx_prts_s cn68xx;
4107 	struct cvmx_gmxx_rx_prts_s cn68xxp1;
4108 	struct cvmx_gmxx_rx_prts_s cn70xx;
4109 	struct cvmx_gmxx_rx_prts_s cn70xxp1;
4110 	struct cvmx_gmxx_rx_prts_s cnf71xx;
4111 };
4112 
4113 typedef union cvmx_gmxx_rx_prts cvmx_gmxx_rx_prts_t;
4114 
4115 /**
4116  * cvmx_gmx#_rx_tx_status
4117  *
4118  * GMX_RX_TX_STATUS = GMX RX/TX Status
4119  *
4120  */
4121 union cvmx_gmxx_rx_tx_status {
4122 	u64 u64;
4123 	struct cvmx_gmxx_rx_tx_status_s {
4124 		u64 reserved_7_63 : 57;
4125 		u64 tx : 3;
4126 		u64 reserved_3_3 : 1;
4127 		u64 rx : 3;
4128 	} s;
4129 	struct cvmx_gmxx_rx_tx_status_s cn30xx;
4130 	struct cvmx_gmxx_rx_tx_status_s cn31xx;
4131 	struct cvmx_gmxx_rx_tx_status_s cn50xx;
4132 };
4133 
4134 typedef union cvmx_gmxx_rx_tx_status cvmx_gmxx_rx_tx_status_t;
4135 
4136 /**
4137  * cvmx_gmx#_rx_xaui_bad_col
4138  */
4139 union cvmx_gmxx_rx_xaui_bad_col {
4140 	u64 u64;
4141 	struct cvmx_gmxx_rx_xaui_bad_col_s {
4142 		u64 reserved_40_63 : 24;
4143 		u64 val : 1;
4144 		u64 state : 3;
4145 		u64 lane_rxc : 4;
4146 		u64 lane_rxd : 32;
4147 	} s;
4148 	struct cvmx_gmxx_rx_xaui_bad_col_s cn52xx;
4149 	struct cvmx_gmxx_rx_xaui_bad_col_s cn52xxp1;
4150 	struct cvmx_gmxx_rx_xaui_bad_col_s cn56xx;
4151 	struct cvmx_gmxx_rx_xaui_bad_col_s cn56xxp1;
4152 	struct cvmx_gmxx_rx_xaui_bad_col_s cn61xx;
4153 	struct cvmx_gmxx_rx_xaui_bad_col_s cn63xx;
4154 	struct cvmx_gmxx_rx_xaui_bad_col_s cn63xxp1;
4155 	struct cvmx_gmxx_rx_xaui_bad_col_s cn66xx;
4156 	struct cvmx_gmxx_rx_xaui_bad_col_s cn68xx;
4157 	struct cvmx_gmxx_rx_xaui_bad_col_s cn68xxp1;
4158 	struct cvmx_gmxx_rx_xaui_bad_col_s cn70xx;
4159 	struct cvmx_gmxx_rx_xaui_bad_col_s cn70xxp1;
4160 	struct cvmx_gmxx_rx_xaui_bad_col_s cnf71xx;
4161 };
4162 
4163 typedef union cvmx_gmxx_rx_xaui_bad_col cvmx_gmxx_rx_xaui_bad_col_t;
4164 
4165 /**
4166  * cvmx_gmx#_rx_xaui_ctl
4167  */
4168 union cvmx_gmxx_rx_xaui_ctl {
4169 	u64 u64;
4170 	struct cvmx_gmxx_rx_xaui_ctl_s {
4171 		u64 reserved_2_63 : 62;
4172 		u64 status : 2;
4173 	} s;
4174 	struct cvmx_gmxx_rx_xaui_ctl_s cn52xx;
4175 	struct cvmx_gmxx_rx_xaui_ctl_s cn52xxp1;
4176 	struct cvmx_gmxx_rx_xaui_ctl_s cn56xx;
4177 	struct cvmx_gmxx_rx_xaui_ctl_s cn56xxp1;
4178 	struct cvmx_gmxx_rx_xaui_ctl_s cn61xx;
4179 	struct cvmx_gmxx_rx_xaui_ctl_s cn63xx;
4180 	struct cvmx_gmxx_rx_xaui_ctl_s cn63xxp1;
4181 	struct cvmx_gmxx_rx_xaui_ctl_s cn66xx;
4182 	struct cvmx_gmxx_rx_xaui_ctl_s cn68xx;
4183 	struct cvmx_gmxx_rx_xaui_ctl_s cn68xxp1;
4184 	struct cvmx_gmxx_rx_xaui_ctl_s cn70xx;
4185 	struct cvmx_gmxx_rx_xaui_ctl_s cn70xxp1;
4186 	struct cvmx_gmxx_rx_xaui_ctl_s cnf71xx;
4187 };
4188 
4189 typedef union cvmx_gmxx_rx_xaui_ctl cvmx_gmxx_rx_xaui_ctl_t;
4190 
4191 /**
4192  * cvmx_gmx#_rxaui_ctl
4193  */
4194 union cvmx_gmxx_rxaui_ctl {
4195 	u64 u64;
4196 	struct cvmx_gmxx_rxaui_ctl_s {
4197 		u64 reserved_1_63 : 63;
4198 		u64 disparity : 1;
4199 	} s;
4200 	struct cvmx_gmxx_rxaui_ctl_s cn68xx;
4201 	struct cvmx_gmxx_rxaui_ctl_s cn68xxp1;
4202 	struct cvmx_gmxx_rxaui_ctl_s cn70xx;
4203 	struct cvmx_gmxx_rxaui_ctl_s cn70xxp1;
4204 };
4205 
4206 typedef union cvmx_gmxx_rxaui_ctl cvmx_gmxx_rxaui_ctl_t;
4207 
4208 /**
4209  * cvmx_gmx#_smac#
4210  *
4211  * GMX_SMAC = Packet SMAC
4212  *
4213  */
4214 union cvmx_gmxx_smacx {
4215 	u64 u64;
4216 	struct cvmx_gmxx_smacx_s {
4217 		u64 reserved_48_63 : 16;
4218 		u64 smac : 48;
4219 	} s;
4220 	struct cvmx_gmxx_smacx_s cn30xx;
4221 	struct cvmx_gmxx_smacx_s cn31xx;
4222 	struct cvmx_gmxx_smacx_s cn38xx;
4223 	struct cvmx_gmxx_smacx_s cn38xxp2;
4224 	struct cvmx_gmxx_smacx_s cn50xx;
4225 	struct cvmx_gmxx_smacx_s cn52xx;
4226 	struct cvmx_gmxx_smacx_s cn52xxp1;
4227 	struct cvmx_gmxx_smacx_s cn56xx;
4228 	struct cvmx_gmxx_smacx_s cn56xxp1;
4229 	struct cvmx_gmxx_smacx_s cn58xx;
4230 	struct cvmx_gmxx_smacx_s cn58xxp1;
4231 	struct cvmx_gmxx_smacx_s cn61xx;
4232 	struct cvmx_gmxx_smacx_s cn63xx;
4233 	struct cvmx_gmxx_smacx_s cn63xxp1;
4234 	struct cvmx_gmxx_smacx_s cn66xx;
4235 	struct cvmx_gmxx_smacx_s cn68xx;
4236 	struct cvmx_gmxx_smacx_s cn68xxp1;
4237 	struct cvmx_gmxx_smacx_s cn70xx;
4238 	struct cvmx_gmxx_smacx_s cn70xxp1;
4239 	struct cvmx_gmxx_smacx_s cnf71xx;
4240 };
4241 
4242 typedef union cvmx_gmxx_smacx cvmx_gmxx_smacx_t;
4243 
4244 /**
4245  * cvmx_gmx#_soft_bist
4246  *
4247  * GMX_SOFT_BIST = Software BIST Control
4248  *
4249  */
4250 union cvmx_gmxx_soft_bist {
4251 	u64 u64;
4252 	struct cvmx_gmxx_soft_bist_s {
4253 		u64 reserved_2_63 : 62;
4254 		u64 start_bist : 1;
4255 		u64 clear_bist : 1;
4256 	} s;
4257 	struct cvmx_gmxx_soft_bist_s cn63xx;
4258 	struct cvmx_gmxx_soft_bist_s cn63xxp1;
4259 	struct cvmx_gmxx_soft_bist_s cn66xx;
4260 	struct cvmx_gmxx_soft_bist_s cn68xx;
4261 	struct cvmx_gmxx_soft_bist_s cn68xxp1;
4262 };
4263 
4264 typedef union cvmx_gmxx_soft_bist cvmx_gmxx_soft_bist_t;
4265 
4266 /**
4267  * cvmx_gmx#_stat_bp
4268  *
4269  * GMX_STAT_BP = Number of cycles that the TX/Stats block has help up operation
4270  *
4271  *
4272  * Notes:
4273  * It has no relationship with the TX FIFO per se.  The TX engine sends packets
4274  * from PKO and upon completion, sends a command to the TX stats block for an
4275  * update based on the packet size.  The stats operation can take a few cycles -
4276  * normally not enough to be visible considering the 64B min packet size that is
4277  * ethernet convention.
4278  *
4279  * In the rare case in which SW attempted to schedule really, really, small packets
4280  * or the sclk (6xxx) is running ass-slow, then the stats updates may not happen in
4281  * real time and can back up the TX engine.
4282  *
4283  * This counter is the number of cycles in which the TX engine was stalled.  In
4284  * normal operation, it should always be zeros.
4285  */
4286 union cvmx_gmxx_stat_bp {
4287 	u64 u64;
4288 	struct cvmx_gmxx_stat_bp_s {
4289 		u64 reserved_17_63 : 47;
4290 		u64 bp : 1;
4291 		u64 cnt : 16;
4292 	} s;
4293 	struct cvmx_gmxx_stat_bp_s cn30xx;
4294 	struct cvmx_gmxx_stat_bp_s cn31xx;
4295 	struct cvmx_gmxx_stat_bp_s cn38xx;
4296 	struct cvmx_gmxx_stat_bp_s cn38xxp2;
4297 	struct cvmx_gmxx_stat_bp_s cn50xx;
4298 	struct cvmx_gmxx_stat_bp_s cn52xx;
4299 	struct cvmx_gmxx_stat_bp_s cn52xxp1;
4300 	struct cvmx_gmxx_stat_bp_s cn56xx;
4301 	struct cvmx_gmxx_stat_bp_s cn56xxp1;
4302 	struct cvmx_gmxx_stat_bp_s cn58xx;
4303 	struct cvmx_gmxx_stat_bp_s cn58xxp1;
4304 	struct cvmx_gmxx_stat_bp_s cn61xx;
4305 	struct cvmx_gmxx_stat_bp_s cn63xx;
4306 	struct cvmx_gmxx_stat_bp_s cn63xxp1;
4307 	struct cvmx_gmxx_stat_bp_s cn66xx;
4308 	struct cvmx_gmxx_stat_bp_s cn68xx;
4309 	struct cvmx_gmxx_stat_bp_s cn68xxp1;
4310 	struct cvmx_gmxx_stat_bp_s cn70xx;
4311 	struct cvmx_gmxx_stat_bp_s cn70xxp1;
4312 	struct cvmx_gmxx_stat_bp_s cnf71xx;
4313 };
4314 
4315 typedef union cvmx_gmxx_stat_bp cvmx_gmxx_stat_bp_t;
4316 
4317 /**
4318  * cvmx_gmx#_tb_reg
4319  *
4320  * DON'T PUT IN HRM*
4321  *
4322  */
4323 union cvmx_gmxx_tb_reg {
4324 	u64 u64;
4325 	struct cvmx_gmxx_tb_reg_s {
4326 		u64 reserved_1_63 : 63;
4327 		u64 wr_magic : 1;
4328 	} s;
4329 	struct cvmx_gmxx_tb_reg_s cn61xx;
4330 	struct cvmx_gmxx_tb_reg_s cn66xx;
4331 	struct cvmx_gmxx_tb_reg_s cn68xx;
4332 	struct cvmx_gmxx_tb_reg_s cn70xx;
4333 	struct cvmx_gmxx_tb_reg_s cn70xxp1;
4334 	struct cvmx_gmxx_tb_reg_s cnf71xx;
4335 };
4336 
4337 typedef union cvmx_gmxx_tb_reg cvmx_gmxx_tb_reg_t;
4338 
4339 /**
4340  * cvmx_gmx#_tx#_append
4341  *
4342  * GMX_TX_APPEND = Packet TX Append Control
4343  *
4344  */
4345 union cvmx_gmxx_txx_append {
4346 	u64 u64;
4347 	struct cvmx_gmxx_txx_append_s {
4348 		u64 reserved_4_63 : 60;
4349 		u64 force_fcs : 1;
4350 		u64 fcs : 1;
4351 		u64 pad : 1;
4352 		u64 preamble : 1;
4353 	} s;
4354 	struct cvmx_gmxx_txx_append_s cn30xx;
4355 	struct cvmx_gmxx_txx_append_s cn31xx;
4356 	struct cvmx_gmxx_txx_append_s cn38xx;
4357 	struct cvmx_gmxx_txx_append_s cn38xxp2;
4358 	struct cvmx_gmxx_txx_append_s cn50xx;
4359 	struct cvmx_gmxx_txx_append_s cn52xx;
4360 	struct cvmx_gmxx_txx_append_s cn52xxp1;
4361 	struct cvmx_gmxx_txx_append_s cn56xx;
4362 	struct cvmx_gmxx_txx_append_s cn56xxp1;
4363 	struct cvmx_gmxx_txx_append_s cn58xx;
4364 	struct cvmx_gmxx_txx_append_s cn58xxp1;
4365 	struct cvmx_gmxx_txx_append_s cn61xx;
4366 	struct cvmx_gmxx_txx_append_s cn63xx;
4367 	struct cvmx_gmxx_txx_append_s cn63xxp1;
4368 	struct cvmx_gmxx_txx_append_s cn66xx;
4369 	struct cvmx_gmxx_txx_append_s cn68xx;
4370 	struct cvmx_gmxx_txx_append_s cn68xxp1;
4371 	struct cvmx_gmxx_txx_append_s cn70xx;
4372 	struct cvmx_gmxx_txx_append_s cn70xxp1;
4373 	struct cvmx_gmxx_txx_append_s cnf71xx;
4374 };
4375 
4376 typedef union cvmx_gmxx_txx_append cvmx_gmxx_txx_append_t;
4377 
4378 /**
4379  * cvmx_gmx#_tx#_bck_crdt
4380  *
4381  * gmi_tx_bck to gmi_tx_out credit count register
4382  *
4383  */
4384 union cvmx_gmxx_txx_bck_crdt {
4385 	u64 u64;
4386 	struct cvmx_gmxx_txx_bck_crdt_s {
4387 		u64 reserved_4_63 : 60;
4388 		u64 cnt : 4;
4389 	} s;
4390 	struct cvmx_gmxx_txx_bck_crdt_s cn70xx;
4391 	struct cvmx_gmxx_txx_bck_crdt_s cn70xxp1;
4392 };
4393 
4394 typedef union cvmx_gmxx_txx_bck_crdt cvmx_gmxx_txx_bck_crdt_t;
4395 
4396 /**
4397  * cvmx_gmx#_tx#_burst
4398  *
4399  * GMX_TX_BURST = Packet TX Burst Counter
4400  *
4401  */
4402 union cvmx_gmxx_txx_burst {
4403 	u64 u64;
4404 	struct cvmx_gmxx_txx_burst_s {
4405 		u64 reserved_16_63 : 48;
4406 		u64 burst : 16;
4407 	} s;
4408 	struct cvmx_gmxx_txx_burst_s cn30xx;
4409 	struct cvmx_gmxx_txx_burst_s cn31xx;
4410 	struct cvmx_gmxx_txx_burst_s cn38xx;
4411 	struct cvmx_gmxx_txx_burst_s cn38xxp2;
4412 	struct cvmx_gmxx_txx_burst_s cn50xx;
4413 	struct cvmx_gmxx_txx_burst_s cn52xx;
4414 	struct cvmx_gmxx_txx_burst_s cn52xxp1;
4415 	struct cvmx_gmxx_txx_burst_s cn56xx;
4416 	struct cvmx_gmxx_txx_burst_s cn56xxp1;
4417 	struct cvmx_gmxx_txx_burst_s cn58xx;
4418 	struct cvmx_gmxx_txx_burst_s cn58xxp1;
4419 	struct cvmx_gmxx_txx_burst_s cn61xx;
4420 	struct cvmx_gmxx_txx_burst_s cn63xx;
4421 	struct cvmx_gmxx_txx_burst_s cn63xxp1;
4422 	struct cvmx_gmxx_txx_burst_s cn66xx;
4423 	struct cvmx_gmxx_txx_burst_s cn68xx;
4424 	struct cvmx_gmxx_txx_burst_s cn68xxp1;
4425 	struct cvmx_gmxx_txx_burst_s cn70xx;
4426 	struct cvmx_gmxx_txx_burst_s cn70xxp1;
4427 	struct cvmx_gmxx_txx_burst_s cnf71xx;
4428 };
4429 
4430 typedef union cvmx_gmxx_txx_burst cvmx_gmxx_txx_burst_t;
4431 
4432 /**
4433  * cvmx_gmx#_tx#_cbfc_xoff
4434  */
4435 union cvmx_gmxx_txx_cbfc_xoff {
4436 	u64 u64;
4437 	struct cvmx_gmxx_txx_cbfc_xoff_s {
4438 		u64 reserved_16_63 : 48;
4439 		u64 xoff : 16;
4440 	} s;
4441 	struct cvmx_gmxx_txx_cbfc_xoff_s cn52xx;
4442 	struct cvmx_gmxx_txx_cbfc_xoff_s cn56xx;
4443 	struct cvmx_gmxx_txx_cbfc_xoff_s cn61xx;
4444 	struct cvmx_gmxx_txx_cbfc_xoff_s cn63xx;
4445 	struct cvmx_gmxx_txx_cbfc_xoff_s cn63xxp1;
4446 	struct cvmx_gmxx_txx_cbfc_xoff_s cn66xx;
4447 	struct cvmx_gmxx_txx_cbfc_xoff_s cn68xx;
4448 	struct cvmx_gmxx_txx_cbfc_xoff_s cn68xxp1;
4449 	struct cvmx_gmxx_txx_cbfc_xoff_s cn70xx;
4450 	struct cvmx_gmxx_txx_cbfc_xoff_s cn70xxp1;
4451 	struct cvmx_gmxx_txx_cbfc_xoff_s cnf71xx;
4452 };
4453 
4454 typedef union cvmx_gmxx_txx_cbfc_xoff cvmx_gmxx_txx_cbfc_xoff_t;
4455 
4456 /**
4457  * cvmx_gmx#_tx#_cbfc_xon
4458  */
4459 union cvmx_gmxx_txx_cbfc_xon {
4460 	u64 u64;
4461 	struct cvmx_gmxx_txx_cbfc_xon_s {
4462 		u64 reserved_16_63 : 48;
4463 		u64 xon : 16;
4464 	} s;
4465 	struct cvmx_gmxx_txx_cbfc_xon_s cn52xx;
4466 	struct cvmx_gmxx_txx_cbfc_xon_s cn56xx;
4467 	struct cvmx_gmxx_txx_cbfc_xon_s cn61xx;
4468 	struct cvmx_gmxx_txx_cbfc_xon_s cn63xx;
4469 	struct cvmx_gmxx_txx_cbfc_xon_s cn63xxp1;
4470 	struct cvmx_gmxx_txx_cbfc_xon_s cn66xx;
4471 	struct cvmx_gmxx_txx_cbfc_xon_s cn68xx;
4472 	struct cvmx_gmxx_txx_cbfc_xon_s cn68xxp1;
4473 	struct cvmx_gmxx_txx_cbfc_xon_s cn70xx;
4474 	struct cvmx_gmxx_txx_cbfc_xon_s cn70xxp1;
4475 	struct cvmx_gmxx_txx_cbfc_xon_s cnf71xx;
4476 };
4477 
4478 typedef union cvmx_gmxx_txx_cbfc_xon cvmx_gmxx_txx_cbfc_xon_t;
4479 
4480 /**
4481  * cvmx_gmx#_tx#_clk
4482  *
4483  * Per Port
4484  *
4485  *
4486  * GMX_TX_CLK = RGMII TX Clock Generation Register
4487  *
4488  * Notes:
4489  * Programming Restrictions:
4490  *  (1) In RGMII mode, if GMX_PRT_CFG[SPEED]==0, then CLK_CNT must be > 1.
4491  *  (2) In MII mode, CLK_CNT == 1
4492  *  (3) In RGMII or GMII mode, if CLK_CNT==0, Octeon will not generate a tx clock.
4493  *
4494  * RGMII Example:
4495  *  Given a 125MHz PLL reference clock...
4496  *   CLK_CNT ==  1 ==> 125.0MHz TXC clock period (8ns* 1)
4497  *   CLK_CNT ==  5 ==>  25.0MHz TXC clock period (8ns* 5)
4498  *   CLK_CNT == 50 ==>   2.5MHz TXC clock period (8ns*50)
4499  */
4500 union cvmx_gmxx_txx_clk {
4501 	u64 u64;
4502 	struct cvmx_gmxx_txx_clk_s {
4503 		u64 reserved_6_63 : 58;
4504 		u64 clk_cnt : 6;
4505 	} s;
4506 	struct cvmx_gmxx_txx_clk_s cn30xx;
4507 	struct cvmx_gmxx_txx_clk_s cn31xx;
4508 	struct cvmx_gmxx_txx_clk_s cn38xx;
4509 	struct cvmx_gmxx_txx_clk_s cn38xxp2;
4510 	struct cvmx_gmxx_txx_clk_s cn50xx;
4511 	struct cvmx_gmxx_txx_clk_s cn58xx;
4512 	struct cvmx_gmxx_txx_clk_s cn58xxp1;
4513 };
4514 
4515 typedef union cvmx_gmxx_txx_clk cvmx_gmxx_txx_clk_t;
4516 
4517 /**
4518  * cvmx_gmx#_tx#_ctl
4519  *
4520  * GMX_TX_CTL = TX Control register
4521  *
4522  */
4523 union cvmx_gmxx_txx_ctl {
4524 	u64 u64;
4525 	struct cvmx_gmxx_txx_ctl_s {
4526 		u64 reserved_2_63 : 62;
4527 		u64 xsdef_en : 1;
4528 		u64 xscol_en : 1;
4529 	} s;
4530 	struct cvmx_gmxx_txx_ctl_s cn30xx;
4531 	struct cvmx_gmxx_txx_ctl_s cn31xx;
4532 	struct cvmx_gmxx_txx_ctl_s cn38xx;
4533 	struct cvmx_gmxx_txx_ctl_s cn38xxp2;
4534 	struct cvmx_gmxx_txx_ctl_s cn50xx;
4535 	struct cvmx_gmxx_txx_ctl_s cn52xx;
4536 	struct cvmx_gmxx_txx_ctl_s cn52xxp1;
4537 	struct cvmx_gmxx_txx_ctl_s cn56xx;
4538 	struct cvmx_gmxx_txx_ctl_s cn56xxp1;
4539 	struct cvmx_gmxx_txx_ctl_s cn58xx;
4540 	struct cvmx_gmxx_txx_ctl_s cn58xxp1;
4541 	struct cvmx_gmxx_txx_ctl_s cn61xx;
4542 	struct cvmx_gmxx_txx_ctl_s cn63xx;
4543 	struct cvmx_gmxx_txx_ctl_s cn63xxp1;
4544 	struct cvmx_gmxx_txx_ctl_s cn66xx;
4545 	struct cvmx_gmxx_txx_ctl_s cn68xx;
4546 	struct cvmx_gmxx_txx_ctl_s cn68xxp1;
4547 	struct cvmx_gmxx_txx_ctl_s cn70xx;
4548 	struct cvmx_gmxx_txx_ctl_s cn70xxp1;
4549 	struct cvmx_gmxx_txx_ctl_s cnf71xx;
4550 };
4551 
4552 typedef union cvmx_gmxx_txx_ctl cvmx_gmxx_txx_ctl_t;
4553 
4554 /**
4555  * cvmx_gmx#_tx#_jam_mode
4556  */
4557 union cvmx_gmxx_txx_jam_mode {
4558 	u64 u64;
4559 	struct cvmx_gmxx_txx_jam_mode_s {
4560 		u64 reserved_1_63 : 63;
4561 		u64 mode : 1;
4562 	} s;
4563 	struct cvmx_gmxx_txx_jam_mode_s cn70xx;
4564 	struct cvmx_gmxx_txx_jam_mode_s cn70xxp1;
4565 };
4566 
4567 typedef union cvmx_gmxx_txx_jam_mode cvmx_gmxx_txx_jam_mode_t;
4568 
4569 /**
4570  * cvmx_gmx#_tx#_min_pkt
4571  *
4572  * GMX_TX_MIN_PKT = Packet TX Min Size Packet (PAD upto min size)
4573  *
4574  */
4575 union cvmx_gmxx_txx_min_pkt {
4576 	u64 u64;
4577 	struct cvmx_gmxx_txx_min_pkt_s {
4578 		u64 reserved_8_63 : 56;
4579 		u64 min_size : 8;
4580 	} s;
4581 	struct cvmx_gmxx_txx_min_pkt_s cn30xx;
4582 	struct cvmx_gmxx_txx_min_pkt_s cn31xx;
4583 	struct cvmx_gmxx_txx_min_pkt_s cn38xx;
4584 	struct cvmx_gmxx_txx_min_pkt_s cn38xxp2;
4585 	struct cvmx_gmxx_txx_min_pkt_s cn50xx;
4586 	struct cvmx_gmxx_txx_min_pkt_s cn52xx;
4587 	struct cvmx_gmxx_txx_min_pkt_s cn52xxp1;
4588 	struct cvmx_gmxx_txx_min_pkt_s cn56xx;
4589 	struct cvmx_gmxx_txx_min_pkt_s cn56xxp1;
4590 	struct cvmx_gmxx_txx_min_pkt_s cn58xx;
4591 	struct cvmx_gmxx_txx_min_pkt_s cn58xxp1;
4592 	struct cvmx_gmxx_txx_min_pkt_s cn61xx;
4593 	struct cvmx_gmxx_txx_min_pkt_s cn63xx;
4594 	struct cvmx_gmxx_txx_min_pkt_s cn63xxp1;
4595 	struct cvmx_gmxx_txx_min_pkt_s cn66xx;
4596 	struct cvmx_gmxx_txx_min_pkt_s cn68xx;
4597 	struct cvmx_gmxx_txx_min_pkt_s cn68xxp1;
4598 	struct cvmx_gmxx_txx_min_pkt_s cn70xx;
4599 	struct cvmx_gmxx_txx_min_pkt_s cn70xxp1;
4600 	struct cvmx_gmxx_txx_min_pkt_s cnf71xx;
4601 };
4602 
4603 typedef union cvmx_gmxx_txx_min_pkt cvmx_gmxx_txx_min_pkt_t;
4604 
4605 /**
4606  * cvmx_gmx#_tx#_pause_pkt_interval
4607  *
4608  * GMX_TX_PAUSE_PKT_INTERVAL = Packet TX Pause Packet transmission interval - how often PAUSE packets will be sent
4609  *
4610  *
4611  * Notes:
4612  * Choosing proper values of GMX_TX_PAUSE_PKT_TIME[TIME] and
4613  * GMX_TX_PAUSE_PKT_INTERVAL[INTERVAL] can be challenging to the system
4614  * designer.  It is suggested that TIME be much greater than INTERVAL and
4615  * GMX_TX_PAUSE_ZERO[SEND] be set.  This allows a periodic refresh of the PAUSE
4616  * count and then when the backpressure condition is lifted, a PAUSE packet
4617  * with TIME==0 will be sent indicating that Octane is ready for additional
4618  * data.
4619  *
4620  * If the system chooses to not set GMX_TX_PAUSE_ZERO[SEND], then it is
4621  * suggested that TIME and INTERVAL are programmed such that they satisify the
4622  * following rule...
4623  *
4624  *    INTERVAL <= TIME - (largest_pkt_size + IFG + pause_pkt_size)
4625  *
4626  * where largest_pkt_size is that largest packet that the system can send
4627  * (normally 1518B), IFG is the interframe gap and pause_pkt_size is the size
4628  * of the PAUSE packet (normally 64B).
4629  */
4630 union cvmx_gmxx_txx_pause_pkt_interval {
4631 	u64 u64;
4632 	struct cvmx_gmxx_txx_pause_pkt_interval_s {
4633 		u64 reserved_16_63 : 48;
4634 		u64 interval : 16;
4635 	} s;
4636 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn30xx;
4637 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn31xx;
4638 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn38xx;
4639 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn38xxp2;
4640 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn50xx;
4641 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn52xx;
4642 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn52xxp1;
4643 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn56xx;
4644 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn56xxp1;
4645 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn58xx;
4646 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn58xxp1;
4647 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn61xx;
4648 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn63xx;
4649 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn63xxp1;
4650 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn66xx;
4651 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn68xx;
4652 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn68xxp1;
4653 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn70xx;
4654 	struct cvmx_gmxx_txx_pause_pkt_interval_s cn70xxp1;
4655 	struct cvmx_gmxx_txx_pause_pkt_interval_s cnf71xx;
4656 };
4657 
4658 typedef union cvmx_gmxx_txx_pause_pkt_interval cvmx_gmxx_txx_pause_pkt_interval_t;
4659 
4660 /**
4661  * cvmx_gmx#_tx#_pause_pkt_time
4662  *
4663  * GMX_TX_PAUSE_PKT_TIME = Packet TX Pause Packet pause_time field
4664  *
4665  *
4666  * Notes:
4667  * Choosing proper values of GMX_TX_PAUSE_PKT_TIME[TIME] and
4668  * GMX_TX_PAUSE_PKT_INTERVAL[INTERVAL] can be challenging to the system
4669  * designer.  It is suggested that TIME be much greater than INTERVAL and
4670  * GMX_TX_PAUSE_ZERO[SEND] be set.  This allows a periodic refresh of the PAUSE
4671  * count and then when the backpressure condition is lifted, a PAUSE packet
4672  * with TIME==0 will be sent indicating that Octane is ready for additional
4673  * data.
4674  *
4675  * If the system chooses to not set GMX_TX_PAUSE_ZERO[SEND], then it is
4676  * suggested that TIME and INTERVAL are programmed such that they satisify the
4677  * following rule...
4678  *
4679  *    INTERVAL <= TIME - (largest_pkt_size + IFG + pause_pkt_size)
4680  *
4681  * where largest_pkt_size is that largest packet that the system can send
4682  * (normally 1518B), IFG is the interframe gap and pause_pkt_size is the size
4683  * of the PAUSE packet (normally 64B).
4684  */
4685 union cvmx_gmxx_txx_pause_pkt_time {
4686 	u64 u64;
4687 	struct cvmx_gmxx_txx_pause_pkt_time_s {
4688 		u64 reserved_16_63 : 48;
4689 		u64 time : 16;
4690 	} s;
4691 	struct cvmx_gmxx_txx_pause_pkt_time_s cn30xx;
4692 	struct cvmx_gmxx_txx_pause_pkt_time_s cn31xx;
4693 	struct cvmx_gmxx_txx_pause_pkt_time_s cn38xx;
4694 	struct cvmx_gmxx_txx_pause_pkt_time_s cn38xxp2;
4695 	struct cvmx_gmxx_txx_pause_pkt_time_s cn50xx;
4696 	struct cvmx_gmxx_txx_pause_pkt_time_s cn52xx;
4697 	struct cvmx_gmxx_txx_pause_pkt_time_s cn52xxp1;
4698 	struct cvmx_gmxx_txx_pause_pkt_time_s cn56xx;
4699 	struct cvmx_gmxx_txx_pause_pkt_time_s cn56xxp1;
4700 	struct cvmx_gmxx_txx_pause_pkt_time_s cn58xx;
4701 	struct cvmx_gmxx_txx_pause_pkt_time_s cn58xxp1;
4702 	struct cvmx_gmxx_txx_pause_pkt_time_s cn61xx;
4703 	struct cvmx_gmxx_txx_pause_pkt_time_s cn63xx;
4704 	struct cvmx_gmxx_txx_pause_pkt_time_s cn63xxp1;
4705 	struct cvmx_gmxx_txx_pause_pkt_time_s cn66xx;
4706 	struct cvmx_gmxx_txx_pause_pkt_time_s cn68xx;
4707 	struct cvmx_gmxx_txx_pause_pkt_time_s cn68xxp1;
4708 	struct cvmx_gmxx_txx_pause_pkt_time_s cn70xx;
4709 	struct cvmx_gmxx_txx_pause_pkt_time_s cn70xxp1;
4710 	struct cvmx_gmxx_txx_pause_pkt_time_s cnf71xx;
4711 };
4712 
4713 typedef union cvmx_gmxx_txx_pause_pkt_time cvmx_gmxx_txx_pause_pkt_time_t;
4714 
4715 /**
4716  * cvmx_gmx#_tx#_pause_togo
4717  *
4718  * GMX_TX_PAUSE_TOGO = Packet TX Amount of time remaining to backpressure
4719  *
4720  */
4721 union cvmx_gmxx_txx_pause_togo {
4722 	u64 u64;
4723 	struct cvmx_gmxx_txx_pause_togo_s {
4724 		u64 reserved_32_63 : 32;
4725 		u64 msg_time : 16;
4726 		u64 time : 16;
4727 	} s;
4728 	struct cvmx_gmxx_txx_pause_togo_cn30xx {
4729 		u64 reserved_16_63 : 48;
4730 		u64 time : 16;
4731 	} cn30xx;
4732 	struct cvmx_gmxx_txx_pause_togo_cn30xx cn31xx;
4733 	struct cvmx_gmxx_txx_pause_togo_cn30xx cn38xx;
4734 	struct cvmx_gmxx_txx_pause_togo_cn30xx cn38xxp2;
4735 	struct cvmx_gmxx_txx_pause_togo_cn30xx cn50xx;
4736 	struct cvmx_gmxx_txx_pause_togo_s cn52xx;
4737 	struct cvmx_gmxx_txx_pause_togo_s cn52xxp1;
4738 	struct cvmx_gmxx_txx_pause_togo_s cn56xx;
4739 	struct cvmx_gmxx_txx_pause_togo_cn30xx cn56xxp1;
4740 	struct cvmx_gmxx_txx_pause_togo_cn30xx cn58xx;
4741 	struct cvmx_gmxx_txx_pause_togo_cn30xx cn58xxp1;
4742 	struct cvmx_gmxx_txx_pause_togo_s cn61xx;
4743 	struct cvmx_gmxx_txx_pause_togo_s cn63xx;
4744 	struct cvmx_gmxx_txx_pause_togo_s cn63xxp1;
4745 	struct cvmx_gmxx_txx_pause_togo_s cn66xx;
4746 	struct cvmx_gmxx_txx_pause_togo_s cn68xx;
4747 	struct cvmx_gmxx_txx_pause_togo_s cn68xxp1;
4748 	struct cvmx_gmxx_txx_pause_togo_s cn70xx;
4749 	struct cvmx_gmxx_txx_pause_togo_s cn70xxp1;
4750 	struct cvmx_gmxx_txx_pause_togo_s cnf71xx;
4751 };
4752 
4753 typedef union cvmx_gmxx_txx_pause_togo cvmx_gmxx_txx_pause_togo_t;
4754 
4755 /**
4756  * cvmx_gmx#_tx#_pause_zero
4757  *
4758  * GMX_TX_PAUSE_ZERO = Packet TX Amount of time remaining to backpressure
4759  *
4760  */
4761 union cvmx_gmxx_txx_pause_zero {
4762 	u64 u64;
4763 	struct cvmx_gmxx_txx_pause_zero_s {
4764 		u64 reserved_1_63 : 63;
4765 		u64 send : 1;
4766 	} s;
4767 	struct cvmx_gmxx_txx_pause_zero_s cn30xx;
4768 	struct cvmx_gmxx_txx_pause_zero_s cn31xx;
4769 	struct cvmx_gmxx_txx_pause_zero_s cn38xx;
4770 	struct cvmx_gmxx_txx_pause_zero_s cn38xxp2;
4771 	struct cvmx_gmxx_txx_pause_zero_s cn50xx;
4772 	struct cvmx_gmxx_txx_pause_zero_s cn52xx;
4773 	struct cvmx_gmxx_txx_pause_zero_s cn52xxp1;
4774 	struct cvmx_gmxx_txx_pause_zero_s cn56xx;
4775 	struct cvmx_gmxx_txx_pause_zero_s cn56xxp1;
4776 	struct cvmx_gmxx_txx_pause_zero_s cn58xx;
4777 	struct cvmx_gmxx_txx_pause_zero_s cn58xxp1;
4778 	struct cvmx_gmxx_txx_pause_zero_s cn61xx;
4779 	struct cvmx_gmxx_txx_pause_zero_s cn63xx;
4780 	struct cvmx_gmxx_txx_pause_zero_s cn63xxp1;
4781 	struct cvmx_gmxx_txx_pause_zero_s cn66xx;
4782 	struct cvmx_gmxx_txx_pause_zero_s cn68xx;
4783 	struct cvmx_gmxx_txx_pause_zero_s cn68xxp1;
4784 	struct cvmx_gmxx_txx_pause_zero_s cn70xx;
4785 	struct cvmx_gmxx_txx_pause_zero_s cn70xxp1;
4786 	struct cvmx_gmxx_txx_pause_zero_s cnf71xx;
4787 };
4788 
4789 typedef union cvmx_gmxx_txx_pause_zero cvmx_gmxx_txx_pause_zero_t;
4790 
4791 /**
4792  * cvmx_gmx#_tx#_pipe
4793  */
4794 union cvmx_gmxx_txx_pipe {
4795 	u64 u64;
4796 	struct cvmx_gmxx_txx_pipe_s {
4797 		u64 reserved_33_63 : 31;
4798 		u64 ign_bp : 1;
4799 		u64 reserved_21_31 : 11;
4800 		u64 nump : 5;
4801 		u64 reserved_7_15 : 9;
4802 		u64 base : 7;
4803 	} s;
4804 	struct cvmx_gmxx_txx_pipe_s cn68xx;
4805 	struct cvmx_gmxx_txx_pipe_s cn68xxp1;
4806 };
4807 
4808 typedef union cvmx_gmxx_txx_pipe cvmx_gmxx_txx_pipe_t;
4809 
4810 /**
4811  * cvmx_gmx#_tx#_sgmii_ctl
4812  */
4813 union cvmx_gmxx_txx_sgmii_ctl {
4814 	u64 u64;
4815 	struct cvmx_gmxx_txx_sgmii_ctl_s {
4816 		u64 reserved_1_63 : 63;
4817 		u64 align : 1;
4818 	} s;
4819 	struct cvmx_gmxx_txx_sgmii_ctl_s cn52xx;
4820 	struct cvmx_gmxx_txx_sgmii_ctl_s cn52xxp1;
4821 	struct cvmx_gmxx_txx_sgmii_ctl_s cn56xx;
4822 	struct cvmx_gmxx_txx_sgmii_ctl_s cn56xxp1;
4823 	struct cvmx_gmxx_txx_sgmii_ctl_s cn61xx;
4824 	struct cvmx_gmxx_txx_sgmii_ctl_s cn63xx;
4825 	struct cvmx_gmxx_txx_sgmii_ctl_s cn63xxp1;
4826 	struct cvmx_gmxx_txx_sgmii_ctl_s cn66xx;
4827 	struct cvmx_gmxx_txx_sgmii_ctl_s cn68xx;
4828 	struct cvmx_gmxx_txx_sgmii_ctl_s cn68xxp1;
4829 	struct cvmx_gmxx_txx_sgmii_ctl_s cn70xx;
4830 	struct cvmx_gmxx_txx_sgmii_ctl_s cn70xxp1;
4831 	struct cvmx_gmxx_txx_sgmii_ctl_s cnf71xx;
4832 };
4833 
4834 typedef union cvmx_gmxx_txx_sgmii_ctl cvmx_gmxx_txx_sgmii_ctl_t;
4835 
4836 /**
4837  * cvmx_gmx#_tx#_slot
4838  *
4839  * GMX_TX_SLOT = Packet TX Slottime Counter
4840  *
4841  */
4842 union cvmx_gmxx_txx_slot {
4843 	u64 u64;
4844 	struct cvmx_gmxx_txx_slot_s {
4845 		u64 reserved_10_63 : 54;
4846 		u64 slot : 10;
4847 	} s;
4848 	struct cvmx_gmxx_txx_slot_s cn30xx;
4849 	struct cvmx_gmxx_txx_slot_s cn31xx;
4850 	struct cvmx_gmxx_txx_slot_s cn38xx;
4851 	struct cvmx_gmxx_txx_slot_s cn38xxp2;
4852 	struct cvmx_gmxx_txx_slot_s cn50xx;
4853 	struct cvmx_gmxx_txx_slot_s cn52xx;
4854 	struct cvmx_gmxx_txx_slot_s cn52xxp1;
4855 	struct cvmx_gmxx_txx_slot_s cn56xx;
4856 	struct cvmx_gmxx_txx_slot_s cn56xxp1;
4857 	struct cvmx_gmxx_txx_slot_s cn58xx;
4858 	struct cvmx_gmxx_txx_slot_s cn58xxp1;
4859 	struct cvmx_gmxx_txx_slot_s cn61xx;
4860 	struct cvmx_gmxx_txx_slot_s cn63xx;
4861 	struct cvmx_gmxx_txx_slot_s cn63xxp1;
4862 	struct cvmx_gmxx_txx_slot_s cn66xx;
4863 	struct cvmx_gmxx_txx_slot_s cn68xx;
4864 	struct cvmx_gmxx_txx_slot_s cn68xxp1;
4865 	struct cvmx_gmxx_txx_slot_s cn70xx;
4866 	struct cvmx_gmxx_txx_slot_s cn70xxp1;
4867 	struct cvmx_gmxx_txx_slot_s cnf71xx;
4868 };
4869 
4870 typedef union cvmx_gmxx_txx_slot cvmx_gmxx_txx_slot_t;
4871 
4872 /**
4873  * cvmx_gmx#_tx#_soft_pause
4874  *
4875  * GMX_TX_SOFT_PAUSE = Packet TX Software Pause
4876  *
4877  */
4878 union cvmx_gmxx_txx_soft_pause {
4879 	u64 u64;
4880 	struct cvmx_gmxx_txx_soft_pause_s {
4881 		u64 reserved_16_63 : 48;
4882 		u64 time : 16;
4883 	} s;
4884 	struct cvmx_gmxx_txx_soft_pause_s cn30xx;
4885 	struct cvmx_gmxx_txx_soft_pause_s cn31xx;
4886 	struct cvmx_gmxx_txx_soft_pause_s cn38xx;
4887 	struct cvmx_gmxx_txx_soft_pause_s cn38xxp2;
4888 	struct cvmx_gmxx_txx_soft_pause_s cn50xx;
4889 	struct cvmx_gmxx_txx_soft_pause_s cn52xx;
4890 	struct cvmx_gmxx_txx_soft_pause_s cn52xxp1;
4891 	struct cvmx_gmxx_txx_soft_pause_s cn56xx;
4892 	struct cvmx_gmxx_txx_soft_pause_s cn56xxp1;
4893 	struct cvmx_gmxx_txx_soft_pause_s cn58xx;
4894 	struct cvmx_gmxx_txx_soft_pause_s cn58xxp1;
4895 	struct cvmx_gmxx_txx_soft_pause_s cn61xx;
4896 	struct cvmx_gmxx_txx_soft_pause_s cn63xx;
4897 	struct cvmx_gmxx_txx_soft_pause_s cn63xxp1;
4898 	struct cvmx_gmxx_txx_soft_pause_s cn66xx;
4899 	struct cvmx_gmxx_txx_soft_pause_s cn68xx;
4900 	struct cvmx_gmxx_txx_soft_pause_s cn68xxp1;
4901 	struct cvmx_gmxx_txx_soft_pause_s cn70xx;
4902 	struct cvmx_gmxx_txx_soft_pause_s cn70xxp1;
4903 	struct cvmx_gmxx_txx_soft_pause_s cnf71xx;
4904 };
4905 
4906 typedef union cvmx_gmxx_txx_soft_pause cvmx_gmxx_txx_soft_pause_t;
4907 
4908 /**
4909  * cvmx_gmx#_tx#_stat0
4910  *
4911  * GMX_TX_STAT0 = GMX_TX_STATS_XSDEF / GMX_TX_STATS_XSCOL
4912  *
4913  *
4914  * Notes:
4915  * - Cleared either by a write (of any value) or a read when GMX_TX_STATS_CTL[RD_CLR] is set
4916  * - Counters will wrap
4917  */
4918 union cvmx_gmxx_txx_stat0 {
4919 	u64 u64;
4920 	struct cvmx_gmxx_txx_stat0_s {
4921 		u64 xsdef : 32;
4922 		u64 xscol : 32;
4923 	} s;
4924 	struct cvmx_gmxx_txx_stat0_s cn30xx;
4925 	struct cvmx_gmxx_txx_stat0_s cn31xx;
4926 	struct cvmx_gmxx_txx_stat0_s cn38xx;
4927 	struct cvmx_gmxx_txx_stat0_s cn38xxp2;
4928 	struct cvmx_gmxx_txx_stat0_s cn50xx;
4929 	struct cvmx_gmxx_txx_stat0_s cn52xx;
4930 	struct cvmx_gmxx_txx_stat0_s cn52xxp1;
4931 	struct cvmx_gmxx_txx_stat0_s cn56xx;
4932 	struct cvmx_gmxx_txx_stat0_s cn56xxp1;
4933 	struct cvmx_gmxx_txx_stat0_s cn58xx;
4934 	struct cvmx_gmxx_txx_stat0_s cn58xxp1;
4935 	struct cvmx_gmxx_txx_stat0_s cn61xx;
4936 	struct cvmx_gmxx_txx_stat0_s cn63xx;
4937 	struct cvmx_gmxx_txx_stat0_s cn63xxp1;
4938 	struct cvmx_gmxx_txx_stat0_s cn66xx;
4939 	struct cvmx_gmxx_txx_stat0_s cn68xx;
4940 	struct cvmx_gmxx_txx_stat0_s cn68xxp1;
4941 	struct cvmx_gmxx_txx_stat0_s cn70xx;
4942 	struct cvmx_gmxx_txx_stat0_s cn70xxp1;
4943 	struct cvmx_gmxx_txx_stat0_s cnf71xx;
4944 };
4945 
4946 typedef union cvmx_gmxx_txx_stat0 cvmx_gmxx_txx_stat0_t;
4947 
4948 /**
4949  * cvmx_gmx#_tx#_stat1
4950  *
4951  * GMX_TX_STAT1 = GMX_TX_STATS_SCOL  / GMX_TX_STATS_MCOL
4952  *
4953  *
4954  * Notes:
4955  * - Cleared either by a write (of any value) or a read when GMX_TX_STATS_CTL[RD_CLR] is set
4956  * - Counters will wrap
4957  */
4958 union cvmx_gmxx_txx_stat1 {
4959 	u64 u64;
4960 	struct cvmx_gmxx_txx_stat1_s {
4961 		u64 scol : 32;
4962 		u64 mcol : 32;
4963 	} s;
4964 	struct cvmx_gmxx_txx_stat1_s cn30xx;
4965 	struct cvmx_gmxx_txx_stat1_s cn31xx;
4966 	struct cvmx_gmxx_txx_stat1_s cn38xx;
4967 	struct cvmx_gmxx_txx_stat1_s cn38xxp2;
4968 	struct cvmx_gmxx_txx_stat1_s cn50xx;
4969 	struct cvmx_gmxx_txx_stat1_s cn52xx;
4970 	struct cvmx_gmxx_txx_stat1_s cn52xxp1;
4971 	struct cvmx_gmxx_txx_stat1_s cn56xx;
4972 	struct cvmx_gmxx_txx_stat1_s cn56xxp1;
4973 	struct cvmx_gmxx_txx_stat1_s cn58xx;
4974 	struct cvmx_gmxx_txx_stat1_s cn58xxp1;
4975 	struct cvmx_gmxx_txx_stat1_s cn61xx;
4976 	struct cvmx_gmxx_txx_stat1_s cn63xx;
4977 	struct cvmx_gmxx_txx_stat1_s cn63xxp1;
4978 	struct cvmx_gmxx_txx_stat1_s cn66xx;
4979 	struct cvmx_gmxx_txx_stat1_s cn68xx;
4980 	struct cvmx_gmxx_txx_stat1_s cn68xxp1;
4981 	struct cvmx_gmxx_txx_stat1_s cn70xx;
4982 	struct cvmx_gmxx_txx_stat1_s cn70xxp1;
4983 	struct cvmx_gmxx_txx_stat1_s cnf71xx;
4984 };
4985 
4986 typedef union cvmx_gmxx_txx_stat1 cvmx_gmxx_txx_stat1_t;
4987 
4988 /**
4989  * cvmx_gmx#_tx#_stat2
4990  *
4991  * GMX_TX_STAT2 = GMX_TX_STATS_OCTS
4992  *
4993  *
4994  * Notes:
4995  * - Octect counts are the sum of all data transmitted on the wire including
4996  *   packet data, pad bytes, fcs bytes, pause bytes, and jam bytes.  The octect
4997  *   counts do not include PREAMBLE byte or EXTEND cycles.
4998  * - Cleared either by a write (of any value) or a read when GMX_TX_STATS_CTL[RD_CLR] is set
4999  * - Counters will wrap
5000  */
5001 union cvmx_gmxx_txx_stat2 {
5002 	u64 u64;
5003 	struct cvmx_gmxx_txx_stat2_s {
5004 		u64 reserved_48_63 : 16;
5005 		u64 octs : 48;
5006 	} s;
5007 	struct cvmx_gmxx_txx_stat2_s cn30xx;
5008 	struct cvmx_gmxx_txx_stat2_s cn31xx;
5009 	struct cvmx_gmxx_txx_stat2_s cn38xx;
5010 	struct cvmx_gmxx_txx_stat2_s cn38xxp2;
5011 	struct cvmx_gmxx_txx_stat2_s cn50xx;
5012 	struct cvmx_gmxx_txx_stat2_s cn52xx;
5013 	struct cvmx_gmxx_txx_stat2_s cn52xxp1;
5014 	struct cvmx_gmxx_txx_stat2_s cn56xx;
5015 	struct cvmx_gmxx_txx_stat2_s cn56xxp1;
5016 	struct cvmx_gmxx_txx_stat2_s cn58xx;
5017 	struct cvmx_gmxx_txx_stat2_s cn58xxp1;
5018 	struct cvmx_gmxx_txx_stat2_s cn61xx;
5019 	struct cvmx_gmxx_txx_stat2_s cn63xx;
5020 	struct cvmx_gmxx_txx_stat2_s cn63xxp1;
5021 	struct cvmx_gmxx_txx_stat2_s cn66xx;
5022 	struct cvmx_gmxx_txx_stat2_s cn68xx;
5023 	struct cvmx_gmxx_txx_stat2_s cn68xxp1;
5024 	struct cvmx_gmxx_txx_stat2_s cn70xx;
5025 	struct cvmx_gmxx_txx_stat2_s cn70xxp1;
5026 	struct cvmx_gmxx_txx_stat2_s cnf71xx;
5027 };
5028 
5029 typedef union cvmx_gmxx_txx_stat2 cvmx_gmxx_txx_stat2_t;
5030 
5031 /**
5032  * cvmx_gmx#_tx#_stat3
5033  *
5034  * GMX_TX_STAT3 = GMX_TX_STATS_PKTS
5035  *
5036  *
5037  * Notes:
5038  * - Cleared either by a write (of any value) or a read when GMX_TX_STATS_CTL[RD_CLR] is set
5039  * - Counters will wrap
5040  */
5041 union cvmx_gmxx_txx_stat3 {
5042 	u64 u64;
5043 	struct cvmx_gmxx_txx_stat3_s {
5044 		u64 reserved_32_63 : 32;
5045 		u64 pkts : 32;
5046 	} s;
5047 	struct cvmx_gmxx_txx_stat3_s cn30xx;
5048 	struct cvmx_gmxx_txx_stat3_s cn31xx;
5049 	struct cvmx_gmxx_txx_stat3_s cn38xx;
5050 	struct cvmx_gmxx_txx_stat3_s cn38xxp2;
5051 	struct cvmx_gmxx_txx_stat3_s cn50xx;
5052 	struct cvmx_gmxx_txx_stat3_s cn52xx;
5053 	struct cvmx_gmxx_txx_stat3_s cn52xxp1;
5054 	struct cvmx_gmxx_txx_stat3_s cn56xx;
5055 	struct cvmx_gmxx_txx_stat3_s cn56xxp1;
5056 	struct cvmx_gmxx_txx_stat3_s cn58xx;
5057 	struct cvmx_gmxx_txx_stat3_s cn58xxp1;
5058 	struct cvmx_gmxx_txx_stat3_s cn61xx;
5059 	struct cvmx_gmxx_txx_stat3_s cn63xx;
5060 	struct cvmx_gmxx_txx_stat3_s cn63xxp1;
5061 	struct cvmx_gmxx_txx_stat3_s cn66xx;
5062 	struct cvmx_gmxx_txx_stat3_s cn68xx;
5063 	struct cvmx_gmxx_txx_stat3_s cn68xxp1;
5064 	struct cvmx_gmxx_txx_stat3_s cn70xx;
5065 	struct cvmx_gmxx_txx_stat3_s cn70xxp1;
5066 	struct cvmx_gmxx_txx_stat3_s cnf71xx;
5067 };
5068 
5069 typedef union cvmx_gmxx_txx_stat3 cvmx_gmxx_txx_stat3_t;
5070 
5071 /**
5072  * cvmx_gmx#_tx#_stat4
5073  *
5074  * GMX_TX_STAT4 = GMX_TX_STATS_HIST1 (64) / GMX_TX_STATS_HIST0 (<64)
5075  *
5076  *
5077  * Notes:
5078  * - Packet length is the sum of all data transmitted on the wire for the given
5079  *   packet including packet data, pad bytes, fcs bytes, pause bytes, and jam
5080  *   bytes.  The octect counts do not include PREAMBLE byte or EXTEND cycles.
5081  * - Cleared either by a write (of any value) or a read when GMX_TX_STATS_CTL[RD_CLR] is set
5082  * - Counters will wrap
5083  */
5084 union cvmx_gmxx_txx_stat4 {
5085 	u64 u64;
5086 	struct cvmx_gmxx_txx_stat4_s {
5087 		u64 hist1 : 32;
5088 		u64 hist0 : 32;
5089 	} s;
5090 	struct cvmx_gmxx_txx_stat4_s cn30xx;
5091 	struct cvmx_gmxx_txx_stat4_s cn31xx;
5092 	struct cvmx_gmxx_txx_stat4_s cn38xx;
5093 	struct cvmx_gmxx_txx_stat4_s cn38xxp2;
5094 	struct cvmx_gmxx_txx_stat4_s cn50xx;
5095 	struct cvmx_gmxx_txx_stat4_s cn52xx;
5096 	struct cvmx_gmxx_txx_stat4_s cn52xxp1;
5097 	struct cvmx_gmxx_txx_stat4_s cn56xx;
5098 	struct cvmx_gmxx_txx_stat4_s cn56xxp1;
5099 	struct cvmx_gmxx_txx_stat4_s cn58xx;
5100 	struct cvmx_gmxx_txx_stat4_s cn58xxp1;
5101 	struct cvmx_gmxx_txx_stat4_s cn61xx;
5102 	struct cvmx_gmxx_txx_stat4_s cn63xx;
5103 	struct cvmx_gmxx_txx_stat4_s cn63xxp1;
5104 	struct cvmx_gmxx_txx_stat4_s cn66xx;
5105 	struct cvmx_gmxx_txx_stat4_s cn68xx;
5106 	struct cvmx_gmxx_txx_stat4_s cn68xxp1;
5107 	struct cvmx_gmxx_txx_stat4_s cn70xx;
5108 	struct cvmx_gmxx_txx_stat4_s cn70xxp1;
5109 	struct cvmx_gmxx_txx_stat4_s cnf71xx;
5110 };
5111 
5112 typedef union cvmx_gmxx_txx_stat4 cvmx_gmxx_txx_stat4_t;
5113 
5114 /**
5115  * cvmx_gmx#_tx#_stat5
5116  *
5117  * GMX_TX_STAT5 = GMX_TX_STATS_HIST3 (128- 255) / GMX_TX_STATS_HIST2 (65- 127)
5118  *
5119  *
5120  * Notes:
5121  * - Packet length is the sum of all data transmitted on the wire for the given
5122  *   packet including packet data, pad bytes, fcs bytes, pause bytes, and jam
5123  *   bytes.  The octect counts do not include PREAMBLE byte or EXTEND cycles.
5124  * - Cleared either by a write (of any value) or a read when GMX_TX_STATS_CTL[RD_CLR] is set
5125  * - Counters will wrap
5126  */
5127 union cvmx_gmxx_txx_stat5 {
5128 	u64 u64;
5129 	struct cvmx_gmxx_txx_stat5_s {
5130 		u64 hist3 : 32;
5131 		u64 hist2 : 32;
5132 	} s;
5133 	struct cvmx_gmxx_txx_stat5_s cn30xx;
5134 	struct cvmx_gmxx_txx_stat5_s cn31xx;
5135 	struct cvmx_gmxx_txx_stat5_s cn38xx;
5136 	struct cvmx_gmxx_txx_stat5_s cn38xxp2;
5137 	struct cvmx_gmxx_txx_stat5_s cn50xx;
5138 	struct cvmx_gmxx_txx_stat5_s cn52xx;
5139 	struct cvmx_gmxx_txx_stat5_s cn52xxp1;
5140 	struct cvmx_gmxx_txx_stat5_s cn56xx;
5141 	struct cvmx_gmxx_txx_stat5_s cn56xxp1;
5142 	struct cvmx_gmxx_txx_stat5_s cn58xx;
5143 	struct cvmx_gmxx_txx_stat5_s cn58xxp1;
5144 	struct cvmx_gmxx_txx_stat5_s cn61xx;
5145 	struct cvmx_gmxx_txx_stat5_s cn63xx;
5146 	struct cvmx_gmxx_txx_stat5_s cn63xxp1;
5147 	struct cvmx_gmxx_txx_stat5_s cn66xx;
5148 	struct cvmx_gmxx_txx_stat5_s cn68xx;
5149 	struct cvmx_gmxx_txx_stat5_s cn68xxp1;
5150 	struct cvmx_gmxx_txx_stat5_s cn70xx;
5151 	struct cvmx_gmxx_txx_stat5_s cn70xxp1;
5152 	struct cvmx_gmxx_txx_stat5_s cnf71xx;
5153 };
5154 
5155 typedef union cvmx_gmxx_txx_stat5 cvmx_gmxx_txx_stat5_t;
5156 
5157 /**
5158  * cvmx_gmx#_tx#_stat6
5159  *
5160  * GMX_TX_STAT6 = GMX_TX_STATS_HIST5 (512-1023) / GMX_TX_STATS_HIST4 (256-511)
5161  *
5162  *
5163  * Notes:
5164  * - Packet length is the sum of all data transmitted on the wire for the given
5165  *   packet including packet data, pad bytes, fcs bytes, pause bytes, and jam
5166  *   bytes.  The octect counts do not include PREAMBLE byte or EXTEND cycles.
5167  * - Cleared either by a write (of any value) or a read when GMX_TX_STATS_CTL[RD_CLR] is set
5168  * - Counters will wrap
5169  */
5170 union cvmx_gmxx_txx_stat6 {
5171 	u64 u64;
5172 	struct cvmx_gmxx_txx_stat6_s {
5173 		u64 hist5 : 32;
5174 		u64 hist4 : 32;
5175 	} s;
5176 	struct cvmx_gmxx_txx_stat6_s cn30xx;
5177 	struct cvmx_gmxx_txx_stat6_s cn31xx;
5178 	struct cvmx_gmxx_txx_stat6_s cn38xx;
5179 	struct cvmx_gmxx_txx_stat6_s cn38xxp2;
5180 	struct cvmx_gmxx_txx_stat6_s cn50xx;
5181 	struct cvmx_gmxx_txx_stat6_s cn52xx;
5182 	struct cvmx_gmxx_txx_stat6_s cn52xxp1;
5183 	struct cvmx_gmxx_txx_stat6_s cn56xx;
5184 	struct cvmx_gmxx_txx_stat6_s cn56xxp1;
5185 	struct cvmx_gmxx_txx_stat6_s cn58xx;
5186 	struct cvmx_gmxx_txx_stat6_s cn58xxp1;
5187 	struct cvmx_gmxx_txx_stat6_s cn61xx;
5188 	struct cvmx_gmxx_txx_stat6_s cn63xx;
5189 	struct cvmx_gmxx_txx_stat6_s cn63xxp1;
5190 	struct cvmx_gmxx_txx_stat6_s cn66xx;
5191 	struct cvmx_gmxx_txx_stat6_s cn68xx;
5192 	struct cvmx_gmxx_txx_stat6_s cn68xxp1;
5193 	struct cvmx_gmxx_txx_stat6_s cn70xx;
5194 	struct cvmx_gmxx_txx_stat6_s cn70xxp1;
5195 	struct cvmx_gmxx_txx_stat6_s cnf71xx;
5196 };
5197 
5198 typedef union cvmx_gmxx_txx_stat6 cvmx_gmxx_txx_stat6_t;
5199 
5200 /**
5201  * cvmx_gmx#_tx#_stat7
5202  *
5203  * GMX_TX_STAT7 = GMX_TX_STATS_HIST7 (1024-1518) / GMX_TX_STATS_HIST6 (>1518)
5204  *
5205  *
5206  * Notes:
5207  * - Packet length is the sum of all data transmitted on the wire for the given
5208  *   packet including packet data, pad bytes, fcs bytes, pause bytes, and jam
5209  *   bytes.  The octect counts do not include PREAMBLE byte or EXTEND cycles.
5210  * - Cleared either by a write (of any value) or a read when GMX_TX_STATS_CTL[RD_CLR] is set
5211  * - Counters will wrap
5212  */
5213 union cvmx_gmxx_txx_stat7 {
5214 	u64 u64;
5215 	struct cvmx_gmxx_txx_stat7_s {
5216 		u64 hist7 : 32;
5217 		u64 hist6 : 32;
5218 	} s;
5219 	struct cvmx_gmxx_txx_stat7_s cn30xx;
5220 	struct cvmx_gmxx_txx_stat7_s cn31xx;
5221 	struct cvmx_gmxx_txx_stat7_s cn38xx;
5222 	struct cvmx_gmxx_txx_stat7_s cn38xxp2;
5223 	struct cvmx_gmxx_txx_stat7_s cn50xx;
5224 	struct cvmx_gmxx_txx_stat7_s cn52xx;
5225 	struct cvmx_gmxx_txx_stat7_s cn52xxp1;
5226 	struct cvmx_gmxx_txx_stat7_s cn56xx;
5227 	struct cvmx_gmxx_txx_stat7_s cn56xxp1;
5228 	struct cvmx_gmxx_txx_stat7_s cn58xx;
5229 	struct cvmx_gmxx_txx_stat7_s cn58xxp1;
5230 	struct cvmx_gmxx_txx_stat7_s cn61xx;
5231 	struct cvmx_gmxx_txx_stat7_s cn63xx;
5232 	struct cvmx_gmxx_txx_stat7_s cn63xxp1;
5233 	struct cvmx_gmxx_txx_stat7_s cn66xx;
5234 	struct cvmx_gmxx_txx_stat7_s cn68xx;
5235 	struct cvmx_gmxx_txx_stat7_s cn68xxp1;
5236 	struct cvmx_gmxx_txx_stat7_s cn70xx;
5237 	struct cvmx_gmxx_txx_stat7_s cn70xxp1;
5238 	struct cvmx_gmxx_txx_stat7_s cnf71xx;
5239 };
5240 
5241 typedef union cvmx_gmxx_txx_stat7 cvmx_gmxx_txx_stat7_t;
5242 
5243 /**
5244  * cvmx_gmx#_tx#_stat8
5245  *
5246  * GMX_TX_STAT8 = GMX_TX_STATS_MCST  / GMX_TX_STATS_BCST
5247  *
5248  *
5249  * Notes:
5250  * - Cleared either by a write (of any value) or a read when GMX_TX_STATS_CTL[RD_CLR] is set
5251  * - Counters will wrap
5252  * - Note, GMX determines if the packet is MCST or BCST from the DMAC of the
5253  *   packet.  GMX assumes that the DMAC lies in the first 6 bytes of the packet
5254  *   as per the 802.3 frame definition.  If the system requires additional data
5255  *   before the L2 header, then the MCST and BCST counters may not reflect
5256  *   reality and should be ignored by software.
5257  */
5258 union cvmx_gmxx_txx_stat8 {
5259 	u64 u64;
5260 	struct cvmx_gmxx_txx_stat8_s {
5261 		u64 mcst : 32;
5262 		u64 bcst : 32;
5263 	} s;
5264 	struct cvmx_gmxx_txx_stat8_s cn30xx;
5265 	struct cvmx_gmxx_txx_stat8_s cn31xx;
5266 	struct cvmx_gmxx_txx_stat8_s cn38xx;
5267 	struct cvmx_gmxx_txx_stat8_s cn38xxp2;
5268 	struct cvmx_gmxx_txx_stat8_s cn50xx;
5269 	struct cvmx_gmxx_txx_stat8_s cn52xx;
5270 	struct cvmx_gmxx_txx_stat8_s cn52xxp1;
5271 	struct cvmx_gmxx_txx_stat8_s cn56xx;
5272 	struct cvmx_gmxx_txx_stat8_s cn56xxp1;
5273 	struct cvmx_gmxx_txx_stat8_s cn58xx;
5274 	struct cvmx_gmxx_txx_stat8_s cn58xxp1;
5275 	struct cvmx_gmxx_txx_stat8_s cn61xx;
5276 	struct cvmx_gmxx_txx_stat8_s cn63xx;
5277 	struct cvmx_gmxx_txx_stat8_s cn63xxp1;
5278 	struct cvmx_gmxx_txx_stat8_s cn66xx;
5279 	struct cvmx_gmxx_txx_stat8_s cn68xx;
5280 	struct cvmx_gmxx_txx_stat8_s cn68xxp1;
5281 	struct cvmx_gmxx_txx_stat8_s cn70xx;
5282 	struct cvmx_gmxx_txx_stat8_s cn70xxp1;
5283 	struct cvmx_gmxx_txx_stat8_s cnf71xx;
5284 };
5285 
5286 typedef union cvmx_gmxx_txx_stat8 cvmx_gmxx_txx_stat8_t;
5287 
5288 /**
5289  * cvmx_gmx#_tx#_stat9
5290  *
5291  * GMX_TX_STAT9 = GMX_TX_STATS_UNDFLW / GMX_TX_STATS_CTL
5292  *
5293  *
5294  * Notes:
5295  * - Cleared either by a write (of any value) or a read when GMX_TX_STATS_CTL[RD_CLR] is set
5296  * - Counters will wrap
5297  */
5298 union cvmx_gmxx_txx_stat9 {
5299 	u64 u64;
5300 	struct cvmx_gmxx_txx_stat9_s {
5301 		u64 undflw : 32;
5302 		u64 ctl : 32;
5303 	} s;
5304 	struct cvmx_gmxx_txx_stat9_s cn30xx;
5305 	struct cvmx_gmxx_txx_stat9_s cn31xx;
5306 	struct cvmx_gmxx_txx_stat9_s cn38xx;
5307 	struct cvmx_gmxx_txx_stat9_s cn38xxp2;
5308 	struct cvmx_gmxx_txx_stat9_s cn50xx;
5309 	struct cvmx_gmxx_txx_stat9_s cn52xx;
5310 	struct cvmx_gmxx_txx_stat9_s cn52xxp1;
5311 	struct cvmx_gmxx_txx_stat9_s cn56xx;
5312 	struct cvmx_gmxx_txx_stat9_s cn56xxp1;
5313 	struct cvmx_gmxx_txx_stat9_s cn58xx;
5314 	struct cvmx_gmxx_txx_stat9_s cn58xxp1;
5315 	struct cvmx_gmxx_txx_stat9_s cn61xx;
5316 	struct cvmx_gmxx_txx_stat9_s cn63xx;
5317 	struct cvmx_gmxx_txx_stat9_s cn63xxp1;
5318 	struct cvmx_gmxx_txx_stat9_s cn66xx;
5319 	struct cvmx_gmxx_txx_stat9_s cn68xx;
5320 	struct cvmx_gmxx_txx_stat9_s cn68xxp1;
5321 	struct cvmx_gmxx_txx_stat9_s cn70xx;
5322 	struct cvmx_gmxx_txx_stat9_s cn70xxp1;
5323 	struct cvmx_gmxx_txx_stat9_s cnf71xx;
5324 };
5325 
5326 typedef union cvmx_gmxx_txx_stat9 cvmx_gmxx_txx_stat9_t;
5327 
5328 /**
5329  * cvmx_gmx#_tx#_stats_ctl
5330  *
5331  * GMX_TX_STATS_CTL = TX Stats Control register
5332  *
5333  */
5334 union cvmx_gmxx_txx_stats_ctl {
5335 	u64 u64;
5336 	struct cvmx_gmxx_txx_stats_ctl_s {
5337 		u64 reserved_1_63 : 63;
5338 		u64 rd_clr : 1;
5339 	} s;
5340 	struct cvmx_gmxx_txx_stats_ctl_s cn30xx;
5341 	struct cvmx_gmxx_txx_stats_ctl_s cn31xx;
5342 	struct cvmx_gmxx_txx_stats_ctl_s cn38xx;
5343 	struct cvmx_gmxx_txx_stats_ctl_s cn38xxp2;
5344 	struct cvmx_gmxx_txx_stats_ctl_s cn50xx;
5345 	struct cvmx_gmxx_txx_stats_ctl_s cn52xx;
5346 	struct cvmx_gmxx_txx_stats_ctl_s cn52xxp1;
5347 	struct cvmx_gmxx_txx_stats_ctl_s cn56xx;
5348 	struct cvmx_gmxx_txx_stats_ctl_s cn56xxp1;
5349 	struct cvmx_gmxx_txx_stats_ctl_s cn58xx;
5350 	struct cvmx_gmxx_txx_stats_ctl_s cn58xxp1;
5351 	struct cvmx_gmxx_txx_stats_ctl_s cn61xx;
5352 	struct cvmx_gmxx_txx_stats_ctl_s cn63xx;
5353 	struct cvmx_gmxx_txx_stats_ctl_s cn63xxp1;
5354 	struct cvmx_gmxx_txx_stats_ctl_s cn66xx;
5355 	struct cvmx_gmxx_txx_stats_ctl_s cn68xx;
5356 	struct cvmx_gmxx_txx_stats_ctl_s cn68xxp1;
5357 	struct cvmx_gmxx_txx_stats_ctl_s cn70xx;
5358 	struct cvmx_gmxx_txx_stats_ctl_s cn70xxp1;
5359 	struct cvmx_gmxx_txx_stats_ctl_s cnf71xx;
5360 };
5361 
5362 typedef union cvmx_gmxx_txx_stats_ctl cvmx_gmxx_txx_stats_ctl_t;
5363 
5364 /**
5365  * cvmx_gmx#_tx#_thresh
5366  *
5367  * Per Port
5368  * GMX_TX_THRESH = Packet TX Threshold
5369  */
5370 union cvmx_gmxx_txx_thresh {
5371 	u64 u64;
5372 	struct cvmx_gmxx_txx_thresh_s {
5373 		u64 reserved_10_63 : 54;
5374 		u64 cnt : 10;
5375 	} s;
5376 	struct cvmx_gmxx_txx_thresh_cn30xx {
5377 		u64 reserved_7_63 : 57;
5378 		u64 cnt : 7;
5379 	} cn30xx;
5380 	struct cvmx_gmxx_txx_thresh_cn30xx cn31xx;
5381 	struct cvmx_gmxx_txx_thresh_cn38xx {
5382 		u64 reserved_9_63 : 55;
5383 		u64 cnt : 9;
5384 	} cn38xx;
5385 	struct cvmx_gmxx_txx_thresh_cn38xx cn38xxp2;
5386 	struct cvmx_gmxx_txx_thresh_cn30xx cn50xx;
5387 	struct cvmx_gmxx_txx_thresh_cn38xx cn52xx;
5388 	struct cvmx_gmxx_txx_thresh_cn38xx cn52xxp1;
5389 	struct cvmx_gmxx_txx_thresh_cn38xx cn56xx;
5390 	struct cvmx_gmxx_txx_thresh_cn38xx cn56xxp1;
5391 	struct cvmx_gmxx_txx_thresh_cn38xx cn58xx;
5392 	struct cvmx_gmxx_txx_thresh_cn38xx cn58xxp1;
5393 	struct cvmx_gmxx_txx_thresh_cn38xx cn61xx;
5394 	struct cvmx_gmxx_txx_thresh_cn38xx cn63xx;
5395 	struct cvmx_gmxx_txx_thresh_cn38xx cn63xxp1;
5396 	struct cvmx_gmxx_txx_thresh_cn38xx cn66xx;
5397 	struct cvmx_gmxx_txx_thresh_s cn68xx;
5398 	struct cvmx_gmxx_txx_thresh_s cn68xxp1;
5399 	struct cvmx_gmxx_txx_thresh_cn38xx cn70xx;
5400 	struct cvmx_gmxx_txx_thresh_cn38xx cn70xxp1;
5401 	struct cvmx_gmxx_txx_thresh_cn38xx cnf71xx;
5402 };
5403 
5404 typedef union cvmx_gmxx_txx_thresh cvmx_gmxx_txx_thresh_t;
5405 
5406 /**
5407  * cvmx_gmx#_tx_bp
5408  *
5409  * GMX_TX_BP = Packet Interface TX BackPressure Register
5410  *
5411  *
5412  * Notes:
5413  * In XAUI mode, only the lsb (corresponding to port0) of BP is used.
5414  *
5415  */
5416 union cvmx_gmxx_tx_bp {
5417 	u64 u64;
5418 	struct cvmx_gmxx_tx_bp_s {
5419 		u64 reserved_4_63 : 60;
5420 		u64 bp : 4;
5421 	} s;
5422 	struct cvmx_gmxx_tx_bp_cn30xx {
5423 		u64 reserved_3_63 : 61;
5424 		u64 bp : 3;
5425 	} cn30xx;
5426 	struct cvmx_gmxx_tx_bp_cn30xx cn31xx;
5427 	struct cvmx_gmxx_tx_bp_s cn38xx;
5428 	struct cvmx_gmxx_tx_bp_s cn38xxp2;
5429 	struct cvmx_gmxx_tx_bp_cn30xx cn50xx;
5430 	struct cvmx_gmxx_tx_bp_s cn52xx;
5431 	struct cvmx_gmxx_tx_bp_s cn52xxp1;
5432 	struct cvmx_gmxx_tx_bp_s cn56xx;
5433 	struct cvmx_gmxx_tx_bp_s cn56xxp1;
5434 	struct cvmx_gmxx_tx_bp_s cn58xx;
5435 	struct cvmx_gmxx_tx_bp_s cn58xxp1;
5436 	struct cvmx_gmxx_tx_bp_s cn61xx;
5437 	struct cvmx_gmxx_tx_bp_s cn63xx;
5438 	struct cvmx_gmxx_tx_bp_s cn63xxp1;
5439 	struct cvmx_gmxx_tx_bp_s cn66xx;
5440 	struct cvmx_gmxx_tx_bp_s cn68xx;
5441 	struct cvmx_gmxx_tx_bp_s cn68xxp1;
5442 	struct cvmx_gmxx_tx_bp_s cn70xx;
5443 	struct cvmx_gmxx_tx_bp_s cn70xxp1;
5444 	struct cvmx_gmxx_tx_bp_cnf71xx {
5445 		u64 reserved_2_63 : 62;
5446 		u64 bp : 2;
5447 	} cnf71xx;
5448 };
5449 
5450 typedef union cvmx_gmxx_tx_bp cvmx_gmxx_tx_bp_t;
5451 
5452 /**
5453  * cvmx_gmx#_tx_clk_msk#
5454  *
5455  * GMX_TX_CLK_MSK = GMX Clock Select
5456  *
5457  */
5458 union cvmx_gmxx_tx_clk_mskx {
5459 	u64 u64;
5460 	struct cvmx_gmxx_tx_clk_mskx_s {
5461 		u64 reserved_1_63 : 63;
5462 		u64 msk : 1;
5463 	} s;
5464 	struct cvmx_gmxx_tx_clk_mskx_s cn30xx;
5465 	struct cvmx_gmxx_tx_clk_mskx_s cn50xx;
5466 };
5467 
5468 typedef union cvmx_gmxx_tx_clk_mskx cvmx_gmxx_tx_clk_mskx_t;
5469 
5470 /**
5471  * cvmx_gmx#_tx_col_attempt
5472  *
5473  * GMX_TX_COL_ATTEMPT = Packet TX collision attempts before dropping frame
5474  *
5475  */
5476 union cvmx_gmxx_tx_col_attempt {
5477 	u64 u64;
5478 	struct cvmx_gmxx_tx_col_attempt_s {
5479 		u64 reserved_5_63 : 59;
5480 		u64 limit : 5;
5481 	} s;
5482 	struct cvmx_gmxx_tx_col_attempt_s cn30xx;
5483 	struct cvmx_gmxx_tx_col_attempt_s cn31xx;
5484 	struct cvmx_gmxx_tx_col_attempt_s cn38xx;
5485 	struct cvmx_gmxx_tx_col_attempt_s cn38xxp2;
5486 	struct cvmx_gmxx_tx_col_attempt_s cn50xx;
5487 	struct cvmx_gmxx_tx_col_attempt_s cn52xx;
5488 	struct cvmx_gmxx_tx_col_attempt_s cn52xxp1;
5489 	struct cvmx_gmxx_tx_col_attempt_s cn56xx;
5490 	struct cvmx_gmxx_tx_col_attempt_s cn56xxp1;
5491 	struct cvmx_gmxx_tx_col_attempt_s cn58xx;
5492 	struct cvmx_gmxx_tx_col_attempt_s cn58xxp1;
5493 	struct cvmx_gmxx_tx_col_attempt_s cn61xx;
5494 	struct cvmx_gmxx_tx_col_attempt_s cn63xx;
5495 	struct cvmx_gmxx_tx_col_attempt_s cn63xxp1;
5496 	struct cvmx_gmxx_tx_col_attempt_s cn66xx;
5497 	struct cvmx_gmxx_tx_col_attempt_s cn68xx;
5498 	struct cvmx_gmxx_tx_col_attempt_s cn68xxp1;
5499 	struct cvmx_gmxx_tx_col_attempt_s cn70xx;
5500 	struct cvmx_gmxx_tx_col_attempt_s cn70xxp1;
5501 	struct cvmx_gmxx_tx_col_attempt_s cnf71xx;
5502 };
5503 
5504 typedef union cvmx_gmxx_tx_col_attempt cvmx_gmxx_tx_col_attempt_t;
5505 
5506 /**
5507  * cvmx_gmx#_tx_corrupt
5508  *
5509  * GMX_TX_CORRUPT = TX - Corrupt TX packets with the ERR bit set
5510  *
5511  *
5512  * Notes:
5513  * Packets sent from PKO with the ERR wire asserted will be corrupted by
5514  * the transmitter if CORRUPT[prt] is set (XAUI uses prt==0).
5515  *
5516  * Corruption means that GMX will send a bad FCS value.  If GMX_TX_APPEND[FCS]
5517  * is clear then no FCS is sent and the GMX cannot corrupt it.  The corrupt FCS
5518  * value is 0xeeeeeeee for SGMII/1000Base-X and 4 bytes of the error
5519  * propagation code in XAUI mode.
5520  */
5521 union cvmx_gmxx_tx_corrupt {
5522 	u64 u64;
5523 	struct cvmx_gmxx_tx_corrupt_s {
5524 		u64 reserved_4_63 : 60;
5525 		u64 corrupt : 4;
5526 	} s;
5527 	struct cvmx_gmxx_tx_corrupt_cn30xx {
5528 		u64 reserved_3_63 : 61;
5529 		u64 corrupt : 3;
5530 	} cn30xx;
5531 	struct cvmx_gmxx_tx_corrupt_cn30xx cn31xx;
5532 	struct cvmx_gmxx_tx_corrupt_s cn38xx;
5533 	struct cvmx_gmxx_tx_corrupt_s cn38xxp2;
5534 	struct cvmx_gmxx_tx_corrupt_cn30xx cn50xx;
5535 	struct cvmx_gmxx_tx_corrupt_s cn52xx;
5536 	struct cvmx_gmxx_tx_corrupt_s cn52xxp1;
5537 	struct cvmx_gmxx_tx_corrupt_s cn56xx;
5538 	struct cvmx_gmxx_tx_corrupt_s cn56xxp1;
5539 	struct cvmx_gmxx_tx_corrupt_s cn58xx;
5540 	struct cvmx_gmxx_tx_corrupt_s cn58xxp1;
5541 	struct cvmx_gmxx_tx_corrupt_s cn61xx;
5542 	struct cvmx_gmxx_tx_corrupt_s cn63xx;
5543 	struct cvmx_gmxx_tx_corrupt_s cn63xxp1;
5544 	struct cvmx_gmxx_tx_corrupt_s cn66xx;
5545 	struct cvmx_gmxx_tx_corrupt_s cn68xx;
5546 	struct cvmx_gmxx_tx_corrupt_s cn68xxp1;
5547 	struct cvmx_gmxx_tx_corrupt_s cn70xx;
5548 	struct cvmx_gmxx_tx_corrupt_s cn70xxp1;
5549 	struct cvmx_gmxx_tx_corrupt_cnf71xx {
5550 		u64 reserved_2_63 : 62;
5551 		u64 corrupt : 2;
5552 	} cnf71xx;
5553 };
5554 
5555 typedef union cvmx_gmxx_tx_corrupt cvmx_gmxx_tx_corrupt_t;
5556 
5557 /**
5558  * cvmx_gmx#_tx_hg2_reg1
5559  *
5560  * Notes:
5561  * The TX_XOF[15:0] field in GMX(0)_TX_HG2_REG1 and the TX_XON[15:0] field in
5562  * GMX(0)_TX_HG2_REG2 register map to the same 16 physical flops. When written with address of
5563  * GMX(0)_TX_HG2_REG1, it will exhibit write 1 to set behavior and when written with address of
5564  * GMX(0)_TX_HG2_REG2, it will exhibit write 1 to clear behavior.
5565  * For reads, either address will return the $GMX(0)_TX_HG2_REG1 values.
5566  */
5567 union cvmx_gmxx_tx_hg2_reg1 {
5568 	u64 u64;
5569 	struct cvmx_gmxx_tx_hg2_reg1_s {
5570 		u64 reserved_16_63 : 48;
5571 		u64 tx_xof : 16;
5572 	} s;
5573 	struct cvmx_gmxx_tx_hg2_reg1_s cn52xx;
5574 	struct cvmx_gmxx_tx_hg2_reg1_s cn52xxp1;
5575 	struct cvmx_gmxx_tx_hg2_reg1_s cn56xx;
5576 	struct cvmx_gmxx_tx_hg2_reg1_s cn61xx;
5577 	struct cvmx_gmxx_tx_hg2_reg1_s cn63xx;
5578 	struct cvmx_gmxx_tx_hg2_reg1_s cn63xxp1;
5579 	struct cvmx_gmxx_tx_hg2_reg1_s cn66xx;
5580 	struct cvmx_gmxx_tx_hg2_reg1_s cn68xx;
5581 	struct cvmx_gmxx_tx_hg2_reg1_s cn68xxp1;
5582 	struct cvmx_gmxx_tx_hg2_reg1_s cn70xx;
5583 	struct cvmx_gmxx_tx_hg2_reg1_s cn70xxp1;
5584 	struct cvmx_gmxx_tx_hg2_reg1_s cnf71xx;
5585 };
5586 
5587 typedef union cvmx_gmxx_tx_hg2_reg1 cvmx_gmxx_tx_hg2_reg1_t;
5588 
5589 /**
5590  * cvmx_gmx#_tx_hg2_reg2
5591  *
5592  * Notes:
5593  * The TX_XOF[15:0] field in GMX(0)_TX_HG2_REG1 and the TX_XON[15:0] field in
5594  * GMX(0)_TX_HG2_REG2 register map to the same 16 physical flops. When written with address  of
5595  * GMX(0)_TX_HG2_REG1, it will exhibit write 1 to set behavior and when written with address of
5596  * GMX(0)_TX_HG2_REG2, it will exhibit write 1 to clear behavior.
5597  * For reads, either address will return the $GMX(0)_TX_HG2_REG1 values.
5598  */
5599 union cvmx_gmxx_tx_hg2_reg2 {
5600 	u64 u64;
5601 	struct cvmx_gmxx_tx_hg2_reg2_s {
5602 		u64 reserved_16_63 : 48;
5603 		u64 tx_xon : 16;
5604 	} s;
5605 	struct cvmx_gmxx_tx_hg2_reg2_s cn52xx;
5606 	struct cvmx_gmxx_tx_hg2_reg2_s cn52xxp1;
5607 	struct cvmx_gmxx_tx_hg2_reg2_s cn56xx;
5608 	struct cvmx_gmxx_tx_hg2_reg2_s cn61xx;
5609 	struct cvmx_gmxx_tx_hg2_reg2_s cn63xx;
5610 	struct cvmx_gmxx_tx_hg2_reg2_s cn63xxp1;
5611 	struct cvmx_gmxx_tx_hg2_reg2_s cn66xx;
5612 	struct cvmx_gmxx_tx_hg2_reg2_s cn68xx;
5613 	struct cvmx_gmxx_tx_hg2_reg2_s cn68xxp1;
5614 	struct cvmx_gmxx_tx_hg2_reg2_s cn70xx;
5615 	struct cvmx_gmxx_tx_hg2_reg2_s cn70xxp1;
5616 	struct cvmx_gmxx_tx_hg2_reg2_s cnf71xx;
5617 };
5618 
5619 typedef union cvmx_gmxx_tx_hg2_reg2 cvmx_gmxx_tx_hg2_reg2_t;
5620 
5621 /**
5622  * cvmx_gmx#_tx_ifg
5623  *
5624  * GMX_TX_IFG = Packet TX Interframe Gap
5625  *
5626  *
5627  * Notes:
5628  * * Programming IFG1 and IFG2.
5629  *
5630  * For 10/100/1000Mbs half-duplex systems that require IEEE 802.3
5631  * compatibility, IFG1 must be in the range of 1-8, IFG2 must be in the range
5632  * of 4-12, and the IFG1+IFG2 sum must be 12.
5633  *
5634  * For 10/100/1000Mbs full-duplex systems that require IEEE 802.3
5635  * compatibility, IFG1 must be in the range of 1-11, IFG2 must be in the range
5636  * of 1-11, and the IFG1+IFG2 sum must be 12.
5637  *
5638  * For XAUI/10Gbs systems that require IEEE 802.3 compatibility, the
5639  * IFG1+IFG2 sum must be 12.  IFG1[1:0] and IFG2[1:0] must be zero.
5640  *
5641  * For all other systems, IFG1 and IFG2 can be any value in the range of
5642  * 1-15.  Allowing for a total possible IFG sum of 2-30.
5643  */
5644 union cvmx_gmxx_tx_ifg {
5645 	u64 u64;
5646 	struct cvmx_gmxx_tx_ifg_s {
5647 		u64 reserved_8_63 : 56;
5648 		u64 ifg2 : 4;
5649 		u64 ifg1 : 4;
5650 	} s;
5651 	struct cvmx_gmxx_tx_ifg_s cn30xx;
5652 	struct cvmx_gmxx_tx_ifg_s cn31xx;
5653 	struct cvmx_gmxx_tx_ifg_s cn38xx;
5654 	struct cvmx_gmxx_tx_ifg_s cn38xxp2;
5655 	struct cvmx_gmxx_tx_ifg_s cn50xx;
5656 	struct cvmx_gmxx_tx_ifg_s cn52xx;
5657 	struct cvmx_gmxx_tx_ifg_s cn52xxp1;
5658 	struct cvmx_gmxx_tx_ifg_s cn56xx;
5659 	struct cvmx_gmxx_tx_ifg_s cn56xxp1;
5660 	struct cvmx_gmxx_tx_ifg_s cn58xx;
5661 	struct cvmx_gmxx_tx_ifg_s cn58xxp1;
5662 	struct cvmx_gmxx_tx_ifg_s cn61xx;
5663 	struct cvmx_gmxx_tx_ifg_s cn63xx;
5664 	struct cvmx_gmxx_tx_ifg_s cn63xxp1;
5665 	struct cvmx_gmxx_tx_ifg_s cn66xx;
5666 	struct cvmx_gmxx_tx_ifg_s cn68xx;
5667 	struct cvmx_gmxx_tx_ifg_s cn68xxp1;
5668 	struct cvmx_gmxx_tx_ifg_s cn70xx;
5669 	struct cvmx_gmxx_tx_ifg_s cn70xxp1;
5670 	struct cvmx_gmxx_tx_ifg_s cnf71xx;
5671 };
5672 
5673 typedef union cvmx_gmxx_tx_ifg cvmx_gmxx_tx_ifg_t;
5674 
5675 /**
5676  * cvmx_gmx#_tx_int_en
5677  *
5678  * GMX_TX_INT_EN = Interrupt Enable
5679  *
5680  *
5681  * Notes:
5682  * In XAUI mode, only the lsb (corresponding to port0) of UNDFLW is used.
5683  *
5684  */
5685 union cvmx_gmxx_tx_int_en {
5686 	u64 u64;
5687 	struct cvmx_gmxx_tx_int_en_s {
5688 		u64 reserved_25_63 : 39;
5689 		u64 xchange : 1;
5690 		u64 ptp_lost : 4;
5691 		u64 late_col : 4;
5692 		u64 xsdef : 4;
5693 		u64 xscol : 4;
5694 		u64 reserved_6_7 : 2;
5695 		u64 undflw : 4;
5696 		u64 reserved_1_1 : 1;
5697 		u64 pko_nxa : 1;
5698 	} s;
5699 	struct cvmx_gmxx_tx_int_en_cn30xx {
5700 		u64 reserved_19_63 : 45;
5701 		u64 late_col : 3;
5702 		u64 reserved_15_15 : 1;
5703 		u64 xsdef : 3;
5704 		u64 reserved_11_11 : 1;
5705 		u64 xscol : 3;
5706 		u64 reserved_5_7 : 3;
5707 		u64 undflw : 3;
5708 		u64 reserved_1_1 : 1;
5709 		u64 pko_nxa : 1;
5710 	} cn30xx;
5711 	struct cvmx_gmxx_tx_int_en_cn31xx {
5712 		u64 reserved_15_63 : 49;
5713 		u64 xsdef : 3;
5714 		u64 reserved_11_11 : 1;
5715 		u64 xscol : 3;
5716 		u64 reserved_5_7 : 3;
5717 		u64 undflw : 3;
5718 		u64 reserved_1_1 : 1;
5719 		u64 pko_nxa : 1;
5720 	} cn31xx;
5721 	struct cvmx_gmxx_tx_int_en_cn38xx {
5722 		u64 reserved_20_63 : 44;
5723 		u64 late_col : 4;
5724 		u64 xsdef : 4;
5725 		u64 xscol : 4;
5726 		u64 reserved_6_7 : 2;
5727 		u64 undflw : 4;
5728 		u64 ncb_nxa : 1;
5729 		u64 pko_nxa : 1;
5730 	} cn38xx;
5731 	struct cvmx_gmxx_tx_int_en_cn38xxp2 {
5732 		u64 reserved_16_63 : 48;
5733 		u64 xsdef : 4;
5734 		u64 xscol : 4;
5735 		u64 reserved_6_7 : 2;
5736 		u64 undflw : 4;
5737 		u64 ncb_nxa : 1;
5738 		u64 pko_nxa : 1;
5739 	} cn38xxp2;
5740 	struct cvmx_gmxx_tx_int_en_cn30xx cn50xx;
5741 	struct cvmx_gmxx_tx_int_en_cn52xx {
5742 		u64 reserved_20_63 : 44;
5743 		u64 late_col : 4;
5744 		u64 xsdef : 4;
5745 		u64 xscol : 4;
5746 		u64 reserved_6_7 : 2;
5747 		u64 undflw : 4;
5748 		u64 reserved_1_1 : 1;
5749 		u64 pko_nxa : 1;
5750 	} cn52xx;
5751 	struct cvmx_gmxx_tx_int_en_cn52xx cn52xxp1;
5752 	struct cvmx_gmxx_tx_int_en_cn52xx cn56xx;
5753 	struct cvmx_gmxx_tx_int_en_cn52xx cn56xxp1;
5754 	struct cvmx_gmxx_tx_int_en_cn38xx cn58xx;
5755 	struct cvmx_gmxx_tx_int_en_cn38xx cn58xxp1;
5756 	struct cvmx_gmxx_tx_int_en_s cn61xx;
5757 	struct cvmx_gmxx_tx_int_en_cn63xx {
5758 		u64 reserved_24_63 : 40;
5759 		u64 ptp_lost : 4;
5760 		u64 late_col : 4;
5761 		u64 xsdef : 4;
5762 		u64 xscol : 4;
5763 		u64 reserved_6_7 : 2;
5764 		u64 undflw : 4;
5765 		u64 reserved_1_1 : 1;
5766 		u64 pko_nxa : 1;
5767 	} cn63xx;
5768 	struct cvmx_gmxx_tx_int_en_cn63xx cn63xxp1;
5769 	struct cvmx_gmxx_tx_int_en_s cn66xx;
5770 	struct cvmx_gmxx_tx_int_en_cn68xx {
5771 		u64 reserved_25_63 : 39;
5772 		u64 xchange : 1;
5773 		u64 ptp_lost : 4;
5774 		u64 late_col : 4;
5775 		u64 xsdef : 4;
5776 		u64 xscol : 4;
5777 		u64 reserved_6_7 : 2;
5778 		u64 undflw : 4;
5779 		u64 pko_nxp : 1;
5780 		u64 pko_nxa : 1;
5781 	} cn68xx;
5782 	struct cvmx_gmxx_tx_int_en_cn68xx cn68xxp1;
5783 	struct cvmx_gmxx_tx_int_en_s cn70xx;
5784 	struct cvmx_gmxx_tx_int_en_s cn70xxp1;
5785 	struct cvmx_gmxx_tx_int_en_cnf71xx {
5786 		u64 reserved_25_63 : 39;
5787 		u64 xchange : 1;
5788 		u64 reserved_22_23 : 2;
5789 		u64 ptp_lost : 2;
5790 		u64 reserved_18_19 : 2;
5791 		u64 late_col : 2;
5792 		u64 reserved_14_15 : 2;
5793 		u64 xsdef : 2;
5794 		u64 reserved_10_11 : 2;
5795 		u64 xscol : 2;
5796 		u64 reserved_4_7 : 4;
5797 		u64 undflw : 2;
5798 		u64 reserved_1_1 : 1;
5799 		u64 pko_nxa : 1;
5800 	} cnf71xx;
5801 };
5802 
5803 typedef union cvmx_gmxx_tx_int_en cvmx_gmxx_tx_int_en_t;
5804 
5805 /**
5806  * cvmx_gmx#_tx_int_reg
5807  *
5808  * GMX_TX_INT_REG = Interrupt Register
5809  *
5810  *
5811  * Notes:
5812  * In XAUI mode, only the lsb (corresponding to port0) of UNDFLW is used.
5813  *
5814  */
5815 union cvmx_gmxx_tx_int_reg {
5816 	u64 u64;
5817 	struct cvmx_gmxx_tx_int_reg_s {
5818 		u64 reserved_25_63 : 39;
5819 		u64 xchange : 1;
5820 		u64 ptp_lost : 4;
5821 		u64 late_col : 4;
5822 		u64 xsdef : 4;
5823 		u64 xscol : 4;
5824 		u64 reserved_6_7 : 2;
5825 		u64 undflw : 4;
5826 		u64 reserved_1_1 : 1;
5827 		u64 pko_nxa : 1;
5828 	} s;
5829 	struct cvmx_gmxx_tx_int_reg_cn30xx {
5830 		u64 reserved_19_63 : 45;
5831 		u64 late_col : 3;
5832 		u64 reserved_15_15 : 1;
5833 		u64 xsdef : 3;
5834 		u64 reserved_11_11 : 1;
5835 		u64 xscol : 3;
5836 		u64 reserved_5_7 : 3;
5837 		u64 undflw : 3;
5838 		u64 reserved_1_1 : 1;
5839 		u64 pko_nxa : 1;
5840 	} cn30xx;
5841 	struct cvmx_gmxx_tx_int_reg_cn31xx {
5842 		u64 reserved_15_63 : 49;
5843 		u64 xsdef : 3;
5844 		u64 reserved_11_11 : 1;
5845 		u64 xscol : 3;
5846 		u64 reserved_5_7 : 3;
5847 		u64 undflw : 3;
5848 		u64 reserved_1_1 : 1;
5849 		u64 pko_nxa : 1;
5850 	} cn31xx;
5851 	struct cvmx_gmxx_tx_int_reg_cn38xx {
5852 		u64 reserved_20_63 : 44;
5853 		u64 late_col : 4;
5854 		u64 xsdef : 4;
5855 		u64 xscol : 4;
5856 		u64 reserved_6_7 : 2;
5857 		u64 undflw : 4;
5858 		u64 ncb_nxa : 1;
5859 		u64 pko_nxa : 1;
5860 	} cn38xx;
5861 	struct cvmx_gmxx_tx_int_reg_cn38xxp2 {
5862 		u64 reserved_16_63 : 48;
5863 		u64 xsdef : 4;
5864 		u64 xscol : 4;
5865 		u64 reserved_6_7 : 2;
5866 		u64 undflw : 4;
5867 		u64 ncb_nxa : 1;
5868 		u64 pko_nxa : 1;
5869 	} cn38xxp2;
5870 	struct cvmx_gmxx_tx_int_reg_cn30xx cn50xx;
5871 	struct cvmx_gmxx_tx_int_reg_cn52xx {
5872 		u64 reserved_20_63 : 44;
5873 		u64 late_col : 4;
5874 		u64 xsdef : 4;
5875 		u64 xscol : 4;
5876 		u64 reserved_6_7 : 2;
5877 		u64 undflw : 4;
5878 		u64 reserved_1_1 : 1;
5879 		u64 pko_nxa : 1;
5880 	} cn52xx;
5881 	struct cvmx_gmxx_tx_int_reg_cn52xx cn52xxp1;
5882 	struct cvmx_gmxx_tx_int_reg_cn52xx cn56xx;
5883 	struct cvmx_gmxx_tx_int_reg_cn52xx cn56xxp1;
5884 	struct cvmx_gmxx_tx_int_reg_cn38xx cn58xx;
5885 	struct cvmx_gmxx_tx_int_reg_cn38xx cn58xxp1;
5886 	struct cvmx_gmxx_tx_int_reg_s cn61xx;
5887 	struct cvmx_gmxx_tx_int_reg_cn63xx {
5888 		u64 reserved_24_63 : 40;
5889 		u64 ptp_lost : 4;
5890 		u64 late_col : 4;
5891 		u64 xsdef : 4;
5892 		u64 xscol : 4;
5893 		u64 reserved_6_7 : 2;
5894 		u64 undflw : 4;
5895 		u64 reserved_1_1 : 1;
5896 		u64 pko_nxa : 1;
5897 	} cn63xx;
5898 	struct cvmx_gmxx_tx_int_reg_cn63xx cn63xxp1;
5899 	struct cvmx_gmxx_tx_int_reg_s cn66xx;
5900 	struct cvmx_gmxx_tx_int_reg_cn68xx {
5901 		u64 reserved_25_63 : 39;
5902 		u64 xchange : 1;
5903 		u64 ptp_lost : 4;
5904 		u64 late_col : 4;
5905 		u64 xsdef : 4;
5906 		u64 xscol : 4;
5907 		u64 reserved_6_7 : 2;
5908 		u64 undflw : 4;
5909 		u64 pko_nxp : 1;
5910 		u64 pko_nxa : 1;
5911 	} cn68xx;
5912 	struct cvmx_gmxx_tx_int_reg_cn68xx cn68xxp1;
5913 	struct cvmx_gmxx_tx_int_reg_s cn70xx;
5914 	struct cvmx_gmxx_tx_int_reg_s cn70xxp1;
5915 	struct cvmx_gmxx_tx_int_reg_cnf71xx {
5916 		u64 reserved_25_63 : 39;
5917 		u64 xchange : 1;
5918 		u64 reserved_22_23 : 2;
5919 		u64 ptp_lost : 2;
5920 		u64 reserved_18_19 : 2;
5921 		u64 late_col : 2;
5922 		u64 reserved_14_15 : 2;
5923 		u64 xsdef : 2;
5924 		u64 reserved_10_11 : 2;
5925 		u64 xscol : 2;
5926 		u64 reserved_4_7 : 4;
5927 		u64 undflw : 2;
5928 		u64 reserved_1_1 : 1;
5929 		u64 pko_nxa : 1;
5930 	} cnf71xx;
5931 };
5932 
5933 typedef union cvmx_gmxx_tx_int_reg cvmx_gmxx_tx_int_reg_t;
5934 
5935 /**
5936  * cvmx_gmx#_tx_jam
5937  *
5938  * GMX_TX_JAM = Packet TX Jam Pattern
5939  *
5940  */
5941 union cvmx_gmxx_tx_jam {
5942 	u64 u64;
5943 	struct cvmx_gmxx_tx_jam_s {
5944 		u64 reserved_8_63 : 56;
5945 		u64 jam : 8;
5946 	} s;
5947 	struct cvmx_gmxx_tx_jam_s cn30xx;
5948 	struct cvmx_gmxx_tx_jam_s cn31xx;
5949 	struct cvmx_gmxx_tx_jam_s cn38xx;
5950 	struct cvmx_gmxx_tx_jam_s cn38xxp2;
5951 	struct cvmx_gmxx_tx_jam_s cn50xx;
5952 	struct cvmx_gmxx_tx_jam_s cn52xx;
5953 	struct cvmx_gmxx_tx_jam_s cn52xxp1;
5954 	struct cvmx_gmxx_tx_jam_s cn56xx;
5955 	struct cvmx_gmxx_tx_jam_s cn56xxp1;
5956 	struct cvmx_gmxx_tx_jam_s cn58xx;
5957 	struct cvmx_gmxx_tx_jam_s cn58xxp1;
5958 	struct cvmx_gmxx_tx_jam_s cn61xx;
5959 	struct cvmx_gmxx_tx_jam_s cn63xx;
5960 	struct cvmx_gmxx_tx_jam_s cn63xxp1;
5961 	struct cvmx_gmxx_tx_jam_s cn66xx;
5962 	struct cvmx_gmxx_tx_jam_s cn68xx;
5963 	struct cvmx_gmxx_tx_jam_s cn68xxp1;
5964 	struct cvmx_gmxx_tx_jam_s cn70xx;
5965 	struct cvmx_gmxx_tx_jam_s cn70xxp1;
5966 	struct cvmx_gmxx_tx_jam_s cnf71xx;
5967 };
5968 
5969 typedef union cvmx_gmxx_tx_jam cvmx_gmxx_tx_jam_t;
5970 
5971 /**
5972  * cvmx_gmx#_tx_lfsr
5973  *
5974  * GMX_TX_LFSR = LFSR used to implement truncated binary exponential backoff
5975  *
5976  */
5977 union cvmx_gmxx_tx_lfsr {
5978 	u64 u64;
5979 	struct cvmx_gmxx_tx_lfsr_s {
5980 		u64 reserved_16_63 : 48;
5981 		u64 lfsr : 16;
5982 	} s;
5983 	struct cvmx_gmxx_tx_lfsr_s cn30xx;
5984 	struct cvmx_gmxx_tx_lfsr_s cn31xx;
5985 	struct cvmx_gmxx_tx_lfsr_s cn38xx;
5986 	struct cvmx_gmxx_tx_lfsr_s cn38xxp2;
5987 	struct cvmx_gmxx_tx_lfsr_s cn50xx;
5988 	struct cvmx_gmxx_tx_lfsr_s cn52xx;
5989 	struct cvmx_gmxx_tx_lfsr_s cn52xxp1;
5990 	struct cvmx_gmxx_tx_lfsr_s cn56xx;
5991 	struct cvmx_gmxx_tx_lfsr_s cn56xxp1;
5992 	struct cvmx_gmxx_tx_lfsr_s cn58xx;
5993 	struct cvmx_gmxx_tx_lfsr_s cn58xxp1;
5994 	struct cvmx_gmxx_tx_lfsr_s cn61xx;
5995 	struct cvmx_gmxx_tx_lfsr_s cn63xx;
5996 	struct cvmx_gmxx_tx_lfsr_s cn63xxp1;
5997 	struct cvmx_gmxx_tx_lfsr_s cn66xx;
5998 	struct cvmx_gmxx_tx_lfsr_s cn68xx;
5999 	struct cvmx_gmxx_tx_lfsr_s cn68xxp1;
6000 	struct cvmx_gmxx_tx_lfsr_s cn70xx;
6001 	struct cvmx_gmxx_tx_lfsr_s cn70xxp1;
6002 	struct cvmx_gmxx_tx_lfsr_s cnf71xx;
6003 };
6004 
6005 typedef union cvmx_gmxx_tx_lfsr cvmx_gmxx_tx_lfsr_t;
6006 
6007 /**
6008  * cvmx_gmx#_tx_ovr_bp
6009  *
6010  * GMX_TX_OVR_BP = Packet Interface TX Override BackPressure
6011  *
6012  *
6013  * Notes:
6014  * In XAUI mode, only the lsb (corresponding to port0) of EN, BP, and IGN_FULL are used.
6015  *
6016  * GMX*_TX_OVR_BP[EN<0>] must be set to one and GMX*_TX_OVR_BP[BP<0>] must be cleared to zero
6017  * (to forcibly disable HW-automatic 802.3 pause packet generation) with the HiGig2 Protocol
6018  * when GMX*_HG2_CONTROL[HG2TX_EN]=0. (The HiGig2 protocol is indicated by
6019  * GMX*_TX_XAUI_CTL[HG_EN]=1 and GMX*_RX0_UDD_SKP[LEN]=16.) HW can only auto-generate backpressure
6020  * through HiGig2 messages (optionally, when GMX*_HG2_CONTROL[HG2TX_EN]=1) with the HiGig2
6021  * protocol.
6022  */
6023 union cvmx_gmxx_tx_ovr_bp {
6024 	u64 u64;
6025 	struct cvmx_gmxx_tx_ovr_bp_s {
6026 		u64 reserved_48_63 : 16;
6027 		u64 tx_prt_bp : 16;
6028 		u64 reserved_12_31 : 20;
6029 		u64 en : 4;
6030 		u64 bp : 4;
6031 		u64 ign_full : 4;
6032 	} s;
6033 	struct cvmx_gmxx_tx_ovr_bp_cn30xx {
6034 		u64 reserved_11_63 : 53;
6035 		u64 en : 3;
6036 		u64 reserved_7_7 : 1;
6037 		u64 bp : 3;
6038 		u64 reserved_3_3 : 1;
6039 		u64 ign_full : 3;
6040 	} cn30xx;
6041 	struct cvmx_gmxx_tx_ovr_bp_cn30xx cn31xx;
6042 	struct cvmx_gmxx_tx_ovr_bp_cn38xx {
6043 		u64 reserved_12_63 : 52;
6044 		u64 en : 4;
6045 		u64 bp : 4;
6046 		u64 ign_full : 4;
6047 	} cn38xx;
6048 	struct cvmx_gmxx_tx_ovr_bp_cn38xx cn38xxp2;
6049 	struct cvmx_gmxx_tx_ovr_bp_cn30xx cn50xx;
6050 	struct cvmx_gmxx_tx_ovr_bp_s cn52xx;
6051 	struct cvmx_gmxx_tx_ovr_bp_s cn52xxp1;
6052 	struct cvmx_gmxx_tx_ovr_bp_s cn56xx;
6053 	struct cvmx_gmxx_tx_ovr_bp_s cn56xxp1;
6054 	struct cvmx_gmxx_tx_ovr_bp_cn38xx cn58xx;
6055 	struct cvmx_gmxx_tx_ovr_bp_cn38xx cn58xxp1;
6056 	struct cvmx_gmxx_tx_ovr_bp_s cn61xx;
6057 	struct cvmx_gmxx_tx_ovr_bp_s cn63xx;
6058 	struct cvmx_gmxx_tx_ovr_bp_s cn63xxp1;
6059 	struct cvmx_gmxx_tx_ovr_bp_s cn66xx;
6060 	struct cvmx_gmxx_tx_ovr_bp_s cn68xx;
6061 	struct cvmx_gmxx_tx_ovr_bp_s cn68xxp1;
6062 	struct cvmx_gmxx_tx_ovr_bp_s cn70xx;
6063 	struct cvmx_gmxx_tx_ovr_bp_s cn70xxp1;
6064 	struct cvmx_gmxx_tx_ovr_bp_cnf71xx {
6065 		u64 reserved_48_63 : 16;
6066 		u64 tx_prt_bp : 16;
6067 		u64 reserved_10_31 : 22;
6068 		u64 en : 2;
6069 		u64 reserved_6_7 : 2;
6070 		u64 bp : 2;
6071 		u64 reserved_2_3 : 2;
6072 		u64 ign_full : 2;
6073 	} cnf71xx;
6074 };
6075 
6076 typedef union cvmx_gmxx_tx_ovr_bp cvmx_gmxx_tx_ovr_bp_t;
6077 
6078 /**
6079  * cvmx_gmx#_tx_pause_pkt_dmac
6080  *
6081  * GMX_TX_PAUSE_PKT_DMAC = Packet TX Pause Packet DMAC field
6082  *
6083  */
6084 union cvmx_gmxx_tx_pause_pkt_dmac {
6085 	u64 u64;
6086 	struct cvmx_gmxx_tx_pause_pkt_dmac_s {
6087 		u64 reserved_48_63 : 16;
6088 		u64 dmac : 48;
6089 	} s;
6090 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn30xx;
6091 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn31xx;
6092 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn38xx;
6093 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn38xxp2;
6094 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn50xx;
6095 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn52xx;
6096 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn52xxp1;
6097 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn56xx;
6098 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn56xxp1;
6099 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn58xx;
6100 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn58xxp1;
6101 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn61xx;
6102 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn63xx;
6103 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn63xxp1;
6104 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn66xx;
6105 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn68xx;
6106 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn68xxp1;
6107 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn70xx;
6108 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cn70xxp1;
6109 	struct cvmx_gmxx_tx_pause_pkt_dmac_s cnf71xx;
6110 };
6111 
6112 typedef union cvmx_gmxx_tx_pause_pkt_dmac cvmx_gmxx_tx_pause_pkt_dmac_t;
6113 
6114 /**
6115  * cvmx_gmx#_tx_pause_pkt_type
6116  *
6117  * GMX_TX_PAUSE_PKT_TYPE = Packet Interface TX Pause Packet TYPE field
6118  *
6119  */
6120 union cvmx_gmxx_tx_pause_pkt_type {
6121 	u64 u64;
6122 	struct cvmx_gmxx_tx_pause_pkt_type_s {
6123 		u64 reserved_16_63 : 48;
6124 		u64 type : 16;
6125 	} s;
6126 	struct cvmx_gmxx_tx_pause_pkt_type_s cn30xx;
6127 	struct cvmx_gmxx_tx_pause_pkt_type_s cn31xx;
6128 	struct cvmx_gmxx_tx_pause_pkt_type_s cn38xx;
6129 	struct cvmx_gmxx_tx_pause_pkt_type_s cn38xxp2;
6130 	struct cvmx_gmxx_tx_pause_pkt_type_s cn50xx;
6131 	struct cvmx_gmxx_tx_pause_pkt_type_s cn52xx;
6132 	struct cvmx_gmxx_tx_pause_pkt_type_s cn52xxp1;
6133 	struct cvmx_gmxx_tx_pause_pkt_type_s cn56xx;
6134 	struct cvmx_gmxx_tx_pause_pkt_type_s cn56xxp1;
6135 	struct cvmx_gmxx_tx_pause_pkt_type_s cn58xx;
6136 	struct cvmx_gmxx_tx_pause_pkt_type_s cn58xxp1;
6137 	struct cvmx_gmxx_tx_pause_pkt_type_s cn61xx;
6138 	struct cvmx_gmxx_tx_pause_pkt_type_s cn63xx;
6139 	struct cvmx_gmxx_tx_pause_pkt_type_s cn63xxp1;
6140 	struct cvmx_gmxx_tx_pause_pkt_type_s cn66xx;
6141 	struct cvmx_gmxx_tx_pause_pkt_type_s cn68xx;
6142 	struct cvmx_gmxx_tx_pause_pkt_type_s cn68xxp1;
6143 	struct cvmx_gmxx_tx_pause_pkt_type_s cn70xx;
6144 	struct cvmx_gmxx_tx_pause_pkt_type_s cn70xxp1;
6145 	struct cvmx_gmxx_tx_pause_pkt_type_s cnf71xx;
6146 };
6147 
6148 typedef union cvmx_gmxx_tx_pause_pkt_type cvmx_gmxx_tx_pause_pkt_type_t;
6149 
6150 /**
6151  * cvmx_gmx#_tx_prts
6152  *
6153  * Common
6154  * GMX_TX_PRTS = TX Ports
6155  */
6156 union cvmx_gmxx_tx_prts {
6157 	u64 u64;
6158 	struct cvmx_gmxx_tx_prts_s {
6159 		u64 reserved_5_63 : 59;
6160 		u64 prts : 5;
6161 	} s;
6162 	struct cvmx_gmxx_tx_prts_s cn30xx;
6163 	struct cvmx_gmxx_tx_prts_s cn31xx;
6164 	struct cvmx_gmxx_tx_prts_s cn38xx;
6165 	struct cvmx_gmxx_tx_prts_s cn38xxp2;
6166 	struct cvmx_gmxx_tx_prts_s cn50xx;
6167 	struct cvmx_gmxx_tx_prts_s cn52xx;
6168 	struct cvmx_gmxx_tx_prts_s cn52xxp1;
6169 	struct cvmx_gmxx_tx_prts_s cn56xx;
6170 	struct cvmx_gmxx_tx_prts_s cn56xxp1;
6171 	struct cvmx_gmxx_tx_prts_s cn58xx;
6172 	struct cvmx_gmxx_tx_prts_s cn58xxp1;
6173 	struct cvmx_gmxx_tx_prts_s cn61xx;
6174 	struct cvmx_gmxx_tx_prts_s cn63xx;
6175 	struct cvmx_gmxx_tx_prts_s cn63xxp1;
6176 	struct cvmx_gmxx_tx_prts_s cn66xx;
6177 	struct cvmx_gmxx_tx_prts_s cn68xx;
6178 	struct cvmx_gmxx_tx_prts_s cn68xxp1;
6179 	struct cvmx_gmxx_tx_prts_s cn70xx;
6180 	struct cvmx_gmxx_tx_prts_s cn70xxp1;
6181 	struct cvmx_gmxx_tx_prts_s cnf71xx;
6182 };
6183 
6184 typedef union cvmx_gmxx_tx_prts cvmx_gmxx_tx_prts_t;
6185 
6186 /**
6187  * cvmx_gmx#_tx_spi_ctl
6188  *
6189  * GMX_TX_SPI_CTL = Spi4 TX ModesSpi4
6190  *
6191  */
6192 union cvmx_gmxx_tx_spi_ctl {
6193 	u64 u64;
6194 	struct cvmx_gmxx_tx_spi_ctl_s {
6195 		u64 reserved_2_63 : 62;
6196 		u64 tpa_clr : 1;
6197 		u64 cont_pkt : 1;
6198 	} s;
6199 	struct cvmx_gmxx_tx_spi_ctl_s cn38xx;
6200 	struct cvmx_gmxx_tx_spi_ctl_s cn38xxp2;
6201 	struct cvmx_gmxx_tx_spi_ctl_s cn58xx;
6202 	struct cvmx_gmxx_tx_spi_ctl_s cn58xxp1;
6203 };
6204 
6205 typedef union cvmx_gmxx_tx_spi_ctl cvmx_gmxx_tx_spi_ctl_t;
6206 
6207 /**
6208  * cvmx_gmx#_tx_spi_drain
6209  *
6210  * GMX_TX_SPI_DRAIN = Drain out Spi TX FIFO
6211  *
6212  */
6213 union cvmx_gmxx_tx_spi_drain {
6214 	u64 u64;
6215 	struct cvmx_gmxx_tx_spi_drain_s {
6216 		u64 reserved_16_63 : 48;
6217 		u64 drain : 16;
6218 	} s;
6219 	struct cvmx_gmxx_tx_spi_drain_s cn38xx;
6220 	struct cvmx_gmxx_tx_spi_drain_s cn58xx;
6221 	struct cvmx_gmxx_tx_spi_drain_s cn58xxp1;
6222 };
6223 
6224 typedef union cvmx_gmxx_tx_spi_drain cvmx_gmxx_tx_spi_drain_t;
6225 
6226 /**
6227  * cvmx_gmx#_tx_spi_max
6228  *
6229  * GMX_TX_SPI_MAX = RGMII TX Spi4 MAX
6230  *
6231  */
6232 union cvmx_gmxx_tx_spi_max {
6233 	u64 u64;
6234 	struct cvmx_gmxx_tx_spi_max_s {
6235 		u64 reserved_23_63 : 41;
6236 		u64 slice : 7;
6237 		u64 max2 : 8;
6238 		u64 max1 : 8;
6239 	} s;
6240 	struct cvmx_gmxx_tx_spi_max_cn38xx {
6241 		u64 reserved_16_63 : 48;
6242 		u64 max2 : 8;
6243 		u64 max1 : 8;
6244 	} cn38xx;
6245 	struct cvmx_gmxx_tx_spi_max_cn38xx cn38xxp2;
6246 	struct cvmx_gmxx_tx_spi_max_s cn58xx;
6247 	struct cvmx_gmxx_tx_spi_max_s cn58xxp1;
6248 };
6249 
6250 typedef union cvmx_gmxx_tx_spi_max cvmx_gmxx_tx_spi_max_t;
6251 
6252 /**
6253  * cvmx_gmx#_tx_spi_round#
6254  *
6255  * GMX_TX_SPI_ROUND = Controls SPI4 TX Arbitration
6256  *
6257  */
6258 union cvmx_gmxx_tx_spi_roundx {
6259 	u64 u64;
6260 	struct cvmx_gmxx_tx_spi_roundx_s {
6261 		u64 reserved_16_63 : 48;
6262 		u64 round : 16;
6263 	} s;
6264 	struct cvmx_gmxx_tx_spi_roundx_s cn58xx;
6265 	struct cvmx_gmxx_tx_spi_roundx_s cn58xxp1;
6266 };
6267 
6268 typedef union cvmx_gmxx_tx_spi_roundx cvmx_gmxx_tx_spi_roundx_t;
6269 
6270 /**
6271  * cvmx_gmx#_tx_spi_thresh
6272  *
6273  * GMX_TX_SPI_THRESH = RGMII TX Spi4 Transmit Threshold
6274  *
6275  *
6276  * Notes:
6277  * Note: zero will map to 0x20
6278  *
6279  * This will normally creates Spi4 traffic bursts at least THRESH in length.
6280  * If dclk > eclk, then this rule may not always hold and Octeon may split
6281  * transfers into smaller bursts - some of which could be as short as 16B.
6282  * Octeon will never violate the Spi4.2 spec and send a non-EOP burst that is
6283  * not a multiple of 16B.
6284  */
6285 union cvmx_gmxx_tx_spi_thresh {
6286 	u64 u64;
6287 	struct cvmx_gmxx_tx_spi_thresh_s {
6288 		u64 reserved_6_63 : 58;
6289 		u64 thresh : 6;
6290 	} s;
6291 	struct cvmx_gmxx_tx_spi_thresh_s cn38xx;
6292 	struct cvmx_gmxx_tx_spi_thresh_s cn38xxp2;
6293 	struct cvmx_gmxx_tx_spi_thresh_s cn58xx;
6294 	struct cvmx_gmxx_tx_spi_thresh_s cn58xxp1;
6295 };
6296 
6297 typedef union cvmx_gmxx_tx_spi_thresh cvmx_gmxx_tx_spi_thresh_t;
6298 
6299 /**
6300  * cvmx_gmx#_tx_xaui_ctl
6301  */
6302 union cvmx_gmxx_tx_xaui_ctl {
6303 	u64 u64;
6304 	struct cvmx_gmxx_tx_xaui_ctl_s {
6305 		u64 reserved_11_63 : 53;
6306 		u64 hg_pause_hgi : 2;
6307 		u64 hg_en : 1;
6308 		u64 reserved_7_7 : 1;
6309 		u64 ls_byp : 1;
6310 		u64 ls : 2;
6311 		u64 reserved_2_3 : 2;
6312 		u64 uni_en : 1;
6313 		u64 dic_en : 1;
6314 	} s;
6315 	struct cvmx_gmxx_tx_xaui_ctl_s cn52xx;
6316 	struct cvmx_gmxx_tx_xaui_ctl_s cn52xxp1;
6317 	struct cvmx_gmxx_tx_xaui_ctl_s cn56xx;
6318 	struct cvmx_gmxx_tx_xaui_ctl_s cn56xxp1;
6319 	struct cvmx_gmxx_tx_xaui_ctl_s cn61xx;
6320 	struct cvmx_gmxx_tx_xaui_ctl_s cn63xx;
6321 	struct cvmx_gmxx_tx_xaui_ctl_s cn63xxp1;
6322 	struct cvmx_gmxx_tx_xaui_ctl_s cn66xx;
6323 	struct cvmx_gmxx_tx_xaui_ctl_s cn68xx;
6324 	struct cvmx_gmxx_tx_xaui_ctl_s cn68xxp1;
6325 	struct cvmx_gmxx_tx_xaui_ctl_s cn70xx;
6326 	struct cvmx_gmxx_tx_xaui_ctl_s cn70xxp1;
6327 	struct cvmx_gmxx_tx_xaui_ctl_s cnf71xx;
6328 };
6329 
6330 typedef union cvmx_gmxx_tx_xaui_ctl cvmx_gmxx_tx_xaui_ctl_t;
6331 
6332 /**
6333  * cvmx_gmx#_wol_ctl
6334  */
6335 union cvmx_gmxx_wol_ctl {
6336 	u64 u64;
6337 	struct cvmx_gmxx_wol_ctl_s {
6338 		u64 reserved_36_63 : 28;
6339 		u64 magic_en : 4;
6340 		u64 reserved_20_31 : 12;
6341 		u64 direct_en : 4;
6342 		u64 reserved_1_15 : 15;
6343 		u64 en : 1;
6344 	} s;
6345 	struct cvmx_gmxx_wol_ctl_s cn70xx;
6346 	struct cvmx_gmxx_wol_ctl_s cn70xxp1;
6347 };
6348 
6349 typedef union cvmx_gmxx_wol_ctl cvmx_gmxx_wol_ctl_t;
6350 
6351 /**
6352  * cvmx_gmx#_xaui_ext_loopback
6353  */
6354 union cvmx_gmxx_xaui_ext_loopback {
6355 	u64 u64;
6356 	struct cvmx_gmxx_xaui_ext_loopback_s {
6357 		u64 reserved_5_63 : 59;
6358 		u64 en : 1;
6359 		u64 thresh : 4;
6360 	} s;
6361 	struct cvmx_gmxx_xaui_ext_loopback_s cn52xx;
6362 	struct cvmx_gmxx_xaui_ext_loopback_s cn52xxp1;
6363 	struct cvmx_gmxx_xaui_ext_loopback_s cn56xx;
6364 	struct cvmx_gmxx_xaui_ext_loopback_s cn56xxp1;
6365 	struct cvmx_gmxx_xaui_ext_loopback_s cn61xx;
6366 	struct cvmx_gmxx_xaui_ext_loopback_s cn63xx;
6367 	struct cvmx_gmxx_xaui_ext_loopback_s cn63xxp1;
6368 	struct cvmx_gmxx_xaui_ext_loopback_s cn66xx;
6369 	struct cvmx_gmxx_xaui_ext_loopback_s cn68xx;
6370 	struct cvmx_gmxx_xaui_ext_loopback_s cn68xxp1;
6371 	struct cvmx_gmxx_xaui_ext_loopback_s cn70xx;
6372 	struct cvmx_gmxx_xaui_ext_loopback_s cn70xxp1;
6373 	struct cvmx_gmxx_xaui_ext_loopback_s cnf71xx;
6374 };
6375 
6376 typedef union cvmx_gmxx_xaui_ext_loopback cvmx_gmxx_xaui_ext_loopback_t;
6377 
6378 #endif
6379