]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/contrib/octeon-sdk/cvmx-sriomaintx-defs.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / contrib / octeon-sdk / cvmx-sriomaintx-defs.h
1 /***********************license start***************
2  * Copyright (c) 2003-2012  Cavium Inc. (support@cavium.com). All rights
3  * reserved.
4  *
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are
8  * met:
9  *
10  *   * Redistributions of source code must retain the above copyright
11  *     notice, this list of conditions and the following disclaimer.
12  *
13  *   * Redistributions in binary form must reproduce the above
14  *     copyright notice, this list of conditions and the following
15  *     disclaimer in the documentation and/or other materials provided
16  *     with the distribution.
17
18  *   * Neither the name of Cavium Inc. nor the names of
19  *     its contributors may be used to endorse or promote products
20  *     derived from this software without specific prior written
21  *     permission.
22
23  * This Software, including technical data, may be subject to U.S. export  control
24  * laws, including the U.S. Export Administration Act and its  associated
25  * regulations, and may be subject to export or import  regulations in other
26  * countries.
27
28  * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29  * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30  * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
31  * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
32  * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
33  * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
34  * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35  * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
36  * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE  RISK ARISING OUT OF USE OR
37  * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38  ***********************license end**************************************/
39
40
41 /**
42  * cvmx-sriomaintx-defs.h
43  *
44  * Configuration and status register (CSR) type definitions for
45  * Octeon sriomaintx.
46  *
47  * This file is auto generated. Do not edit.
48  *
49  * <hr>$Revision$<hr>
50  *
51  */
52 #ifndef __CVMX_SRIOMAINTX_DEFS_H__
53 #define __CVMX_SRIOMAINTX_DEFS_H__
54
55 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56 static inline uint64_t CVMX_SRIOMAINTX_ASMBLY_ID(unsigned long block_id)
57 {
58         if (!(
59               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
60               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
61                 cvmx_warn("CVMX_SRIOMAINTX_ASMBLY_ID(%lu) is invalid on this chip\n", block_id);
62         return 0x0000000000000008ull;
63 }
64 #else
65 #define CVMX_SRIOMAINTX_ASMBLY_ID(block_id) (0x0000000000000008ull)
66 #endif
67 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
68 static inline uint64_t CVMX_SRIOMAINTX_ASMBLY_INFO(unsigned long block_id)
69 {
70         if (!(
71               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
72               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
73                 cvmx_warn("CVMX_SRIOMAINTX_ASMBLY_INFO(%lu) is invalid on this chip\n", block_id);
74         return 0x000000000000000Cull;
75 }
76 #else
77 #define CVMX_SRIOMAINTX_ASMBLY_INFO(block_id) (0x000000000000000Cull)
78 #endif
79 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
80 static inline uint64_t CVMX_SRIOMAINTX_BAR1_IDXX(unsigned long offset, unsigned long block_id)
81 {
82         if (!(
83               (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 15)) && ((block_id <= 1)))) ||
84               (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset <= 15)) && ((block_id == 0) || (block_id == 2) || (block_id == 3))))))
85                 cvmx_warn("CVMX_SRIOMAINTX_BAR1_IDXX(%lu,%lu) is invalid on this chip\n", offset, block_id);
86         return 0x0000000000200010ull + (((offset) & 15) + ((block_id) & 3) * 0x0ull) * 4;
87 }
88 #else
89 #define CVMX_SRIOMAINTX_BAR1_IDXX(offset, block_id) (0x0000000000200010ull + (((offset) & 15) + ((block_id) & 3) * 0x0ull) * 4)
90 #endif
91 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
92 static inline uint64_t CVMX_SRIOMAINTX_BELL_STATUS(unsigned long block_id)
93 {
94         if (!(
95               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
96               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
97                 cvmx_warn("CVMX_SRIOMAINTX_BELL_STATUS(%lu) is invalid on this chip\n", block_id);
98         return 0x0000000000200080ull;
99 }
100 #else
101 #define CVMX_SRIOMAINTX_BELL_STATUS(block_id) (0x0000000000200080ull)
102 #endif
103 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
104 static inline uint64_t CVMX_SRIOMAINTX_COMP_TAG(unsigned long block_id)
105 {
106         if (!(
107               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
108               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
109                 cvmx_warn("CVMX_SRIOMAINTX_COMP_TAG(%lu) is invalid on this chip\n", block_id);
110         return 0x000000000000006Cull;
111 }
112 #else
113 #define CVMX_SRIOMAINTX_COMP_TAG(block_id) (0x000000000000006Cull)
114 #endif
115 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
116 static inline uint64_t CVMX_SRIOMAINTX_CORE_ENABLES(unsigned long block_id)
117 {
118         if (!(
119               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
120               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
121                 cvmx_warn("CVMX_SRIOMAINTX_CORE_ENABLES(%lu) is invalid on this chip\n", block_id);
122         return 0x0000000000200070ull;
123 }
124 #else
125 #define CVMX_SRIOMAINTX_CORE_ENABLES(block_id) (0x0000000000200070ull)
126 #endif
127 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
128 static inline uint64_t CVMX_SRIOMAINTX_DEV_ID(unsigned long block_id)
129 {
130         if (!(
131               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
132               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
133                 cvmx_warn("CVMX_SRIOMAINTX_DEV_ID(%lu) is invalid on this chip\n", block_id);
134         return 0x0000000000000000ull;
135 }
136 #else
137 #define CVMX_SRIOMAINTX_DEV_ID(block_id) (0x0000000000000000ull)
138 #endif
139 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
140 static inline uint64_t CVMX_SRIOMAINTX_DEV_REV(unsigned long block_id)
141 {
142         if (!(
143               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
144               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
145                 cvmx_warn("CVMX_SRIOMAINTX_DEV_REV(%lu) is invalid on this chip\n", block_id);
146         return 0x0000000000000004ull;
147 }
148 #else
149 #define CVMX_SRIOMAINTX_DEV_REV(block_id) (0x0000000000000004ull)
150 #endif
151 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
152 static inline uint64_t CVMX_SRIOMAINTX_DST_OPS(unsigned long block_id)
153 {
154         if (!(
155               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
156               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
157                 cvmx_warn("CVMX_SRIOMAINTX_DST_OPS(%lu) is invalid on this chip\n", block_id);
158         return 0x000000000000001Cull;
159 }
160 #else
161 #define CVMX_SRIOMAINTX_DST_OPS(block_id) (0x000000000000001Cull)
162 #endif
163 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
164 static inline uint64_t CVMX_SRIOMAINTX_ERB_ATTR_CAPT(unsigned long block_id)
165 {
166         if (!(
167               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
168               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
169                 cvmx_warn("CVMX_SRIOMAINTX_ERB_ATTR_CAPT(%lu) is invalid on this chip\n", block_id);
170         return 0x0000000000002048ull;
171 }
172 #else
173 #define CVMX_SRIOMAINTX_ERB_ATTR_CAPT(block_id) (0x0000000000002048ull)
174 #endif
175 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
176 static inline uint64_t CVMX_SRIOMAINTX_ERB_ERR_DET(unsigned long block_id)
177 {
178         if (!(
179               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
180               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
181                 cvmx_warn("CVMX_SRIOMAINTX_ERB_ERR_DET(%lu) is invalid on this chip\n", block_id);
182         return 0x0000000000002040ull;
183 }
184 #else
185 #define CVMX_SRIOMAINTX_ERB_ERR_DET(block_id) (0x0000000000002040ull)
186 #endif
187 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
188 static inline uint64_t CVMX_SRIOMAINTX_ERB_ERR_RATE(unsigned long block_id)
189 {
190         if (!(
191               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
192               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
193                 cvmx_warn("CVMX_SRIOMAINTX_ERB_ERR_RATE(%lu) is invalid on this chip\n", block_id);
194         return 0x0000000000002068ull;
195 }
196 #else
197 #define CVMX_SRIOMAINTX_ERB_ERR_RATE(block_id) (0x0000000000002068ull)
198 #endif
199 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
200 static inline uint64_t CVMX_SRIOMAINTX_ERB_ERR_RATE_EN(unsigned long block_id)
201 {
202         if (!(
203               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
204               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
205                 cvmx_warn("CVMX_SRIOMAINTX_ERB_ERR_RATE_EN(%lu) is invalid on this chip\n", block_id);
206         return 0x0000000000002044ull;
207 }
208 #else
209 #define CVMX_SRIOMAINTX_ERB_ERR_RATE_EN(block_id) (0x0000000000002044ull)
210 #endif
211 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
212 static inline uint64_t CVMX_SRIOMAINTX_ERB_ERR_RATE_THR(unsigned long block_id)
213 {
214         if (!(
215               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
216               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
217                 cvmx_warn("CVMX_SRIOMAINTX_ERB_ERR_RATE_THR(%lu) is invalid on this chip\n", block_id);
218         return 0x000000000000206Cull;
219 }
220 #else
221 #define CVMX_SRIOMAINTX_ERB_ERR_RATE_THR(block_id) (0x000000000000206Cull)
222 #endif
223 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
224 static inline uint64_t CVMX_SRIOMAINTX_ERB_HDR(unsigned long block_id)
225 {
226         if (!(
227               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
228               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
229                 cvmx_warn("CVMX_SRIOMAINTX_ERB_HDR(%lu) is invalid on this chip\n", block_id);
230         return 0x0000000000002000ull;
231 }
232 #else
233 #define CVMX_SRIOMAINTX_ERB_HDR(block_id) (0x0000000000002000ull)
234 #endif
235 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
236 static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_H(unsigned long block_id)
237 {
238         if (!(
239               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
240               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
241                 cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_H(%lu) is invalid on this chip\n", block_id);
242         return 0x0000000000002010ull;
243 }
244 #else
245 #define CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_H(block_id) (0x0000000000002010ull)
246 #endif
247 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
248 static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_L(unsigned long block_id)
249 {
250         if (!(
251               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
252               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
253                 cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_L(%lu) is invalid on this chip\n", block_id);
254         return 0x0000000000002014ull;
255 }
256 #else
257 #define CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_L(block_id) (0x0000000000002014ull)
258 #endif
259 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
260 static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_CTRL_CAPT(unsigned long block_id)
261 {
262         if (!(
263               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
264               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
265                 cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_CTRL_CAPT(%lu) is invalid on this chip\n", block_id);
266         return 0x000000000000201Cull;
267 }
268 #else
269 #define CVMX_SRIOMAINTX_ERB_LT_CTRL_CAPT(block_id) (0x000000000000201Cull)
270 #endif
271 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
272 static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_DEV_ID(unsigned long block_id)
273 {
274         if (!(
275               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
276               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
277                 cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_DEV_ID(%lu) is invalid on this chip\n", block_id);
278         return 0x0000000000002028ull;
279 }
280 #else
281 #define CVMX_SRIOMAINTX_ERB_LT_DEV_ID(block_id) (0x0000000000002028ull)
282 #endif
283 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
284 static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_DEV_ID_CAPT(unsigned long block_id)
285 {
286         if (!(
287               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
288               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
289                 cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_DEV_ID_CAPT(%lu) is invalid on this chip\n", block_id);
290         return 0x0000000000002018ull;
291 }
292 #else
293 #define CVMX_SRIOMAINTX_ERB_LT_DEV_ID_CAPT(block_id) (0x0000000000002018ull)
294 #endif
295 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
296 static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_ERR_DET(unsigned long block_id)
297 {
298         if (!(
299               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
300               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
301                 cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_ERR_DET(%lu) is invalid on this chip\n", block_id);
302         return 0x0000000000002008ull;
303 }
304 #else
305 #define CVMX_SRIOMAINTX_ERB_LT_ERR_DET(block_id) (0x0000000000002008ull)
306 #endif
307 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
308 static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_ERR_EN(unsigned long block_id)
309 {
310         if (!(
311               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
312               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
313                 cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_ERR_EN(%lu) is invalid on this chip\n", block_id);
314         return 0x000000000000200Cull;
315 }
316 #else
317 #define CVMX_SRIOMAINTX_ERB_LT_ERR_EN(block_id) (0x000000000000200Cull)
318 #endif
319 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
320 static inline uint64_t CVMX_SRIOMAINTX_ERB_PACK_CAPT_1(unsigned long block_id)
321 {
322         if (!(
323               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
324               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
325                 cvmx_warn("CVMX_SRIOMAINTX_ERB_PACK_CAPT_1(%lu) is invalid on this chip\n", block_id);
326         return 0x0000000000002050ull;
327 }
328 #else
329 #define CVMX_SRIOMAINTX_ERB_PACK_CAPT_1(block_id) (0x0000000000002050ull)
330 #endif
331 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
332 static inline uint64_t CVMX_SRIOMAINTX_ERB_PACK_CAPT_2(unsigned long block_id)
333 {
334         if (!(
335               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
336               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
337                 cvmx_warn("CVMX_SRIOMAINTX_ERB_PACK_CAPT_2(%lu) is invalid on this chip\n", block_id);
338         return 0x0000000000002054ull;
339 }
340 #else
341 #define CVMX_SRIOMAINTX_ERB_PACK_CAPT_2(block_id) (0x0000000000002054ull)
342 #endif
343 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
344 static inline uint64_t CVMX_SRIOMAINTX_ERB_PACK_CAPT_3(unsigned long block_id)
345 {
346         if (!(
347               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
348               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
349                 cvmx_warn("CVMX_SRIOMAINTX_ERB_PACK_CAPT_3(%lu) is invalid on this chip\n", block_id);
350         return 0x0000000000002058ull;
351 }
352 #else
353 #define CVMX_SRIOMAINTX_ERB_PACK_CAPT_3(block_id) (0x0000000000002058ull)
354 #endif
355 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
356 static inline uint64_t CVMX_SRIOMAINTX_ERB_PACK_SYM_CAPT(unsigned long block_id)
357 {
358         if (!(
359               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
360               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
361                 cvmx_warn("CVMX_SRIOMAINTX_ERB_PACK_SYM_CAPT(%lu) is invalid on this chip\n", block_id);
362         return 0x000000000000204Cull;
363 }
364 #else
365 #define CVMX_SRIOMAINTX_ERB_PACK_SYM_CAPT(block_id) (0x000000000000204Cull)
366 #endif
367 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
368 static inline uint64_t CVMX_SRIOMAINTX_HB_DEV_ID_LOCK(unsigned long block_id)
369 {
370         if (!(
371               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
372               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
373                 cvmx_warn("CVMX_SRIOMAINTX_HB_DEV_ID_LOCK(%lu) is invalid on this chip\n", block_id);
374         return 0x0000000000000068ull;
375 }
376 #else
377 #define CVMX_SRIOMAINTX_HB_DEV_ID_LOCK(block_id) (0x0000000000000068ull)
378 #endif
379 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
380 static inline uint64_t CVMX_SRIOMAINTX_IR_BUFFER_CONFIG(unsigned long block_id)
381 {
382         if (!(
383               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
384               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
385                 cvmx_warn("CVMX_SRIOMAINTX_IR_BUFFER_CONFIG(%lu) is invalid on this chip\n", block_id);
386         return 0x0000000000102000ull;
387 }
388 #else
389 #define CVMX_SRIOMAINTX_IR_BUFFER_CONFIG(block_id) (0x0000000000102000ull)
390 #endif
391 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
392 static inline uint64_t CVMX_SRIOMAINTX_IR_BUFFER_CONFIG2(unsigned long block_id)
393 {
394         if (!(
395               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
396               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
397                 cvmx_warn("CVMX_SRIOMAINTX_IR_BUFFER_CONFIG2(%lu) is invalid on this chip\n", block_id);
398         return 0x0000000000102004ull;
399 }
400 #else
401 #define CVMX_SRIOMAINTX_IR_BUFFER_CONFIG2(block_id) (0x0000000000102004ull)
402 #endif
403 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
404 static inline uint64_t CVMX_SRIOMAINTX_IR_PD_PHY_CTRL(unsigned long block_id)
405 {
406         if (!(
407               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
408               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
409                 cvmx_warn("CVMX_SRIOMAINTX_IR_PD_PHY_CTRL(%lu) is invalid on this chip\n", block_id);
410         return 0x0000000000107028ull;
411 }
412 #else
413 #define CVMX_SRIOMAINTX_IR_PD_PHY_CTRL(block_id) (0x0000000000107028ull)
414 #endif
415 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
416 static inline uint64_t CVMX_SRIOMAINTX_IR_PD_PHY_STAT(unsigned long block_id)
417 {
418         if (!(
419               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
420               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
421                 cvmx_warn("CVMX_SRIOMAINTX_IR_PD_PHY_STAT(%lu) is invalid on this chip\n", block_id);
422         return 0x000000000010702Cull;
423 }
424 #else
425 #define CVMX_SRIOMAINTX_IR_PD_PHY_STAT(block_id) (0x000000000010702Cull)
426 #endif
427 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
428 static inline uint64_t CVMX_SRIOMAINTX_IR_PI_PHY_CTRL(unsigned long block_id)
429 {
430         if (!(
431               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
432               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
433                 cvmx_warn("CVMX_SRIOMAINTX_IR_PI_PHY_CTRL(%lu) is invalid on this chip\n", block_id);
434         return 0x0000000000107020ull;
435 }
436 #else
437 #define CVMX_SRIOMAINTX_IR_PI_PHY_CTRL(block_id) (0x0000000000107020ull)
438 #endif
439 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
440 static inline uint64_t CVMX_SRIOMAINTX_IR_PI_PHY_STAT(unsigned long block_id)
441 {
442         if (!(
443               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
444               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
445                 cvmx_warn("CVMX_SRIOMAINTX_IR_PI_PHY_STAT(%lu) is invalid on this chip\n", block_id);
446         return 0x0000000000107024ull;
447 }
448 #else
449 #define CVMX_SRIOMAINTX_IR_PI_PHY_STAT(block_id) (0x0000000000107024ull)
450 #endif
451 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
452 static inline uint64_t CVMX_SRIOMAINTX_IR_SP_RX_CTRL(unsigned long block_id)
453 {
454         if (!(
455               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
456               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
457                 cvmx_warn("CVMX_SRIOMAINTX_IR_SP_RX_CTRL(%lu) is invalid on this chip\n", block_id);
458         return 0x000000000010700Cull;
459 }
460 #else
461 #define CVMX_SRIOMAINTX_IR_SP_RX_CTRL(block_id) (0x000000000010700Cull)
462 #endif
463 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
464 static inline uint64_t CVMX_SRIOMAINTX_IR_SP_RX_DATA(unsigned long block_id)
465 {
466         if (!(
467               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
468               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
469                 cvmx_warn("CVMX_SRIOMAINTX_IR_SP_RX_DATA(%lu) is invalid on this chip\n", block_id);
470         return 0x0000000000107014ull;
471 }
472 #else
473 #define CVMX_SRIOMAINTX_IR_SP_RX_DATA(block_id) (0x0000000000107014ull)
474 #endif
475 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
476 static inline uint64_t CVMX_SRIOMAINTX_IR_SP_RX_STAT(unsigned long block_id)
477 {
478         if (!(
479               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
480               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
481                 cvmx_warn("CVMX_SRIOMAINTX_IR_SP_RX_STAT(%lu) is invalid on this chip\n", block_id);
482         return 0x0000000000107010ull;
483 }
484 #else
485 #define CVMX_SRIOMAINTX_IR_SP_RX_STAT(block_id) (0x0000000000107010ull)
486 #endif
487 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
488 static inline uint64_t CVMX_SRIOMAINTX_IR_SP_TX_CTRL(unsigned long block_id)
489 {
490         if (!(
491               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
492               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
493                 cvmx_warn("CVMX_SRIOMAINTX_IR_SP_TX_CTRL(%lu) is invalid on this chip\n", block_id);
494         return 0x0000000000107000ull;
495 }
496 #else
497 #define CVMX_SRIOMAINTX_IR_SP_TX_CTRL(block_id) (0x0000000000107000ull)
498 #endif
499 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
500 static inline uint64_t CVMX_SRIOMAINTX_IR_SP_TX_DATA(unsigned long block_id)
501 {
502         if (!(
503               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
504               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
505                 cvmx_warn("CVMX_SRIOMAINTX_IR_SP_TX_DATA(%lu) is invalid on this chip\n", block_id);
506         return 0x0000000000107008ull;
507 }
508 #else
509 #define CVMX_SRIOMAINTX_IR_SP_TX_DATA(block_id) (0x0000000000107008ull)
510 #endif
511 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
512 static inline uint64_t CVMX_SRIOMAINTX_IR_SP_TX_STAT(unsigned long block_id)
513 {
514         if (!(
515               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
516               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
517                 cvmx_warn("CVMX_SRIOMAINTX_IR_SP_TX_STAT(%lu) is invalid on this chip\n", block_id);
518         return 0x0000000000107004ull;
519 }
520 #else
521 #define CVMX_SRIOMAINTX_IR_SP_TX_STAT(block_id) (0x0000000000107004ull)
522 #endif
523 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
524 static inline uint64_t CVMX_SRIOMAINTX_LANE_X_STATUS_0(unsigned long offset, unsigned long block_id)
525 {
526         if (!(
527               (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
528               (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset <= 3)) && ((block_id == 0) || (block_id == 2) || (block_id == 3))))))
529                 cvmx_warn("CVMX_SRIOMAINTX_LANE_X_STATUS_0(%lu,%lu) is invalid on this chip\n", offset, block_id);
530         return 0x0000000000001010ull + (((offset) & 3) + ((block_id) & 3) * 0x0ull) * 32;
531 }
532 #else
533 #define CVMX_SRIOMAINTX_LANE_X_STATUS_0(offset, block_id) (0x0000000000001010ull + (((offset) & 3) + ((block_id) & 3) * 0x0ull) * 32)
534 #endif
535 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
536 static inline uint64_t CVMX_SRIOMAINTX_LCS_BA0(unsigned long block_id)
537 {
538         if (!(
539               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
540               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
541                 cvmx_warn("CVMX_SRIOMAINTX_LCS_BA0(%lu) is invalid on this chip\n", block_id);
542         return 0x0000000000000058ull;
543 }
544 #else
545 #define CVMX_SRIOMAINTX_LCS_BA0(block_id) (0x0000000000000058ull)
546 #endif
547 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
548 static inline uint64_t CVMX_SRIOMAINTX_LCS_BA1(unsigned long block_id)
549 {
550         if (!(
551               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
552               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
553                 cvmx_warn("CVMX_SRIOMAINTX_LCS_BA1(%lu) is invalid on this chip\n", block_id);
554         return 0x000000000000005Cull;
555 }
556 #else
557 #define CVMX_SRIOMAINTX_LCS_BA1(block_id) (0x000000000000005Cull)
558 #endif
559 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
560 static inline uint64_t CVMX_SRIOMAINTX_M2S_BAR0_START0(unsigned long block_id)
561 {
562         if (!(
563               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
564               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
565                 cvmx_warn("CVMX_SRIOMAINTX_M2S_BAR0_START0(%lu) is invalid on this chip\n", block_id);
566         return 0x0000000000200000ull;
567 }
568 #else
569 #define CVMX_SRIOMAINTX_M2S_BAR0_START0(block_id) (0x0000000000200000ull)
570 #endif
571 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
572 static inline uint64_t CVMX_SRIOMAINTX_M2S_BAR0_START1(unsigned long block_id)
573 {
574         if (!(
575               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
576               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
577                 cvmx_warn("CVMX_SRIOMAINTX_M2S_BAR0_START1(%lu) is invalid on this chip\n", block_id);
578         return 0x0000000000200004ull;
579 }
580 #else
581 #define CVMX_SRIOMAINTX_M2S_BAR0_START1(block_id) (0x0000000000200004ull)
582 #endif
583 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
584 static inline uint64_t CVMX_SRIOMAINTX_M2S_BAR1_START0(unsigned long block_id)
585 {
586         if (!(
587               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
588               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
589                 cvmx_warn("CVMX_SRIOMAINTX_M2S_BAR1_START0(%lu) is invalid on this chip\n", block_id);
590         return 0x0000000000200008ull;
591 }
592 #else
593 #define CVMX_SRIOMAINTX_M2S_BAR1_START0(block_id) (0x0000000000200008ull)
594 #endif
595 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
596 static inline uint64_t CVMX_SRIOMAINTX_M2S_BAR1_START1(unsigned long block_id)
597 {
598         if (!(
599               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
600               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
601                 cvmx_warn("CVMX_SRIOMAINTX_M2S_BAR1_START1(%lu) is invalid on this chip\n", block_id);
602         return 0x000000000020000Cull;
603 }
604 #else
605 #define CVMX_SRIOMAINTX_M2S_BAR1_START1(block_id) (0x000000000020000Cull)
606 #endif
607 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
608 static inline uint64_t CVMX_SRIOMAINTX_M2S_BAR2_START(unsigned long block_id)
609 {
610         if (!(
611               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
612               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
613                 cvmx_warn("CVMX_SRIOMAINTX_M2S_BAR2_START(%lu) is invalid on this chip\n", block_id);
614         return 0x0000000000200050ull;
615 }
616 #else
617 #define CVMX_SRIOMAINTX_M2S_BAR2_START(block_id) (0x0000000000200050ull)
618 #endif
619 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
620 static inline uint64_t CVMX_SRIOMAINTX_MAC_CTRL(unsigned long block_id)
621 {
622         if (!(
623               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
624               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
625                 cvmx_warn("CVMX_SRIOMAINTX_MAC_CTRL(%lu) is invalid on this chip\n", block_id);
626         return 0x0000000000200068ull;
627 }
628 #else
629 #define CVMX_SRIOMAINTX_MAC_CTRL(block_id) (0x0000000000200068ull)
630 #endif
631 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
632 static inline uint64_t CVMX_SRIOMAINTX_PE_FEAT(unsigned long block_id)
633 {
634         if (!(
635               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
636               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
637                 cvmx_warn("CVMX_SRIOMAINTX_PE_FEAT(%lu) is invalid on this chip\n", block_id);
638         return 0x0000000000000010ull;
639 }
640 #else
641 #define CVMX_SRIOMAINTX_PE_FEAT(block_id) (0x0000000000000010ull)
642 #endif
643 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
644 static inline uint64_t CVMX_SRIOMAINTX_PE_LLC(unsigned long block_id)
645 {
646         if (!(
647               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
648               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
649                 cvmx_warn("CVMX_SRIOMAINTX_PE_LLC(%lu) is invalid on this chip\n", block_id);
650         return 0x000000000000004Cull;
651 }
652 #else
653 #define CVMX_SRIOMAINTX_PE_LLC(block_id) (0x000000000000004Cull)
654 #endif
655 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
656 static inline uint64_t CVMX_SRIOMAINTX_PORT_0_CTL(unsigned long block_id)
657 {
658         if (!(
659               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
660               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
661                 cvmx_warn("CVMX_SRIOMAINTX_PORT_0_CTL(%lu) is invalid on this chip\n", block_id);
662         return 0x000000000000015Cull;
663 }
664 #else
665 #define CVMX_SRIOMAINTX_PORT_0_CTL(block_id) (0x000000000000015Cull)
666 #endif
667 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
668 static inline uint64_t CVMX_SRIOMAINTX_PORT_0_CTL2(unsigned long block_id)
669 {
670         if (!(
671               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
672               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
673                 cvmx_warn("CVMX_SRIOMAINTX_PORT_0_CTL2(%lu) is invalid on this chip\n", block_id);
674         return 0x0000000000000154ull;
675 }
676 #else
677 #define CVMX_SRIOMAINTX_PORT_0_CTL2(block_id) (0x0000000000000154ull)
678 #endif
679 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
680 static inline uint64_t CVMX_SRIOMAINTX_PORT_0_ERR_STAT(unsigned long block_id)
681 {
682         if (!(
683               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
684               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
685                 cvmx_warn("CVMX_SRIOMAINTX_PORT_0_ERR_STAT(%lu) is invalid on this chip\n", block_id);
686         return 0x0000000000000158ull;
687 }
688 #else
689 #define CVMX_SRIOMAINTX_PORT_0_ERR_STAT(block_id) (0x0000000000000158ull)
690 #endif
691 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
692 static inline uint64_t CVMX_SRIOMAINTX_PORT_0_LINK_REQ(unsigned long block_id)
693 {
694         if (!(
695               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
696               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
697                 cvmx_warn("CVMX_SRIOMAINTX_PORT_0_LINK_REQ(%lu) is invalid on this chip\n", block_id);
698         return 0x0000000000000140ull;
699 }
700 #else
701 #define CVMX_SRIOMAINTX_PORT_0_LINK_REQ(block_id) (0x0000000000000140ull)
702 #endif
703 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
704 static inline uint64_t CVMX_SRIOMAINTX_PORT_0_LINK_RESP(unsigned long block_id)
705 {
706         if (!(
707               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
708               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
709                 cvmx_warn("CVMX_SRIOMAINTX_PORT_0_LINK_RESP(%lu) is invalid on this chip\n", block_id);
710         return 0x0000000000000144ull;
711 }
712 #else
713 #define CVMX_SRIOMAINTX_PORT_0_LINK_RESP(block_id) (0x0000000000000144ull)
714 #endif
715 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
716 static inline uint64_t CVMX_SRIOMAINTX_PORT_0_LOCAL_ACKID(unsigned long block_id)
717 {
718         if (!(
719               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
720               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
721                 cvmx_warn("CVMX_SRIOMAINTX_PORT_0_LOCAL_ACKID(%lu) is invalid on this chip\n", block_id);
722         return 0x0000000000000148ull;
723 }
724 #else
725 #define CVMX_SRIOMAINTX_PORT_0_LOCAL_ACKID(block_id) (0x0000000000000148ull)
726 #endif
727 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
728 static inline uint64_t CVMX_SRIOMAINTX_PORT_GEN_CTL(unsigned long block_id)
729 {
730         if (!(
731               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
732               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
733                 cvmx_warn("CVMX_SRIOMAINTX_PORT_GEN_CTL(%lu) is invalid on this chip\n", block_id);
734         return 0x000000000000013Cull;
735 }
736 #else
737 #define CVMX_SRIOMAINTX_PORT_GEN_CTL(block_id) (0x000000000000013Cull)
738 #endif
739 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
740 static inline uint64_t CVMX_SRIOMAINTX_PORT_LT_CTL(unsigned long block_id)
741 {
742         if (!(
743               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
744               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
745                 cvmx_warn("CVMX_SRIOMAINTX_PORT_LT_CTL(%lu) is invalid on this chip\n", block_id);
746         return 0x0000000000000120ull;
747 }
748 #else
749 #define CVMX_SRIOMAINTX_PORT_LT_CTL(block_id) (0x0000000000000120ull)
750 #endif
751 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
752 static inline uint64_t CVMX_SRIOMAINTX_PORT_MBH0(unsigned long block_id)
753 {
754         if (!(
755               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
756               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
757                 cvmx_warn("CVMX_SRIOMAINTX_PORT_MBH0(%lu) is invalid on this chip\n", block_id);
758         return 0x0000000000000100ull;
759 }
760 #else
761 #define CVMX_SRIOMAINTX_PORT_MBH0(block_id) (0x0000000000000100ull)
762 #endif
763 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
764 static inline uint64_t CVMX_SRIOMAINTX_PORT_RT_CTL(unsigned long block_id)
765 {
766         if (!(
767               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
768               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
769                 cvmx_warn("CVMX_SRIOMAINTX_PORT_RT_CTL(%lu) is invalid on this chip\n", block_id);
770         return 0x0000000000000124ull;
771 }
772 #else
773 #define CVMX_SRIOMAINTX_PORT_RT_CTL(block_id) (0x0000000000000124ull)
774 #endif
775 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
776 static inline uint64_t CVMX_SRIOMAINTX_PORT_TTL_CTL(unsigned long block_id)
777 {
778         if (!(
779               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
780               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
781                 cvmx_warn("CVMX_SRIOMAINTX_PORT_TTL_CTL(%lu) is invalid on this chip\n", block_id);
782         return 0x000000000000012Cull;
783 }
784 #else
785 #define CVMX_SRIOMAINTX_PORT_TTL_CTL(block_id) (0x000000000000012Cull)
786 #endif
787 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
788 static inline uint64_t CVMX_SRIOMAINTX_PRI_DEV_ID(unsigned long block_id)
789 {
790         if (!(
791               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
792               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
793                 cvmx_warn("CVMX_SRIOMAINTX_PRI_DEV_ID(%lu) is invalid on this chip\n", block_id);
794         return 0x0000000000000060ull;
795 }
796 #else
797 #define CVMX_SRIOMAINTX_PRI_DEV_ID(block_id) (0x0000000000000060ull)
798 #endif
799 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
800 static inline uint64_t CVMX_SRIOMAINTX_SEC_DEV_CTRL(unsigned long block_id)
801 {
802         if (!(
803               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
804               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
805                 cvmx_warn("CVMX_SRIOMAINTX_SEC_DEV_CTRL(%lu) is invalid on this chip\n", block_id);
806         return 0x0000000000200064ull;
807 }
808 #else
809 #define CVMX_SRIOMAINTX_SEC_DEV_CTRL(block_id) (0x0000000000200064ull)
810 #endif
811 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
812 static inline uint64_t CVMX_SRIOMAINTX_SEC_DEV_ID(unsigned long block_id)
813 {
814         if (!(
815               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
816               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
817                 cvmx_warn("CVMX_SRIOMAINTX_SEC_DEV_ID(%lu) is invalid on this chip\n", block_id);
818         return 0x0000000000200060ull;
819 }
820 #else
821 #define CVMX_SRIOMAINTX_SEC_DEV_ID(block_id) (0x0000000000200060ull)
822 #endif
823 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
824 static inline uint64_t CVMX_SRIOMAINTX_SERIAL_LANE_HDR(unsigned long block_id)
825 {
826         if (!(
827               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
828               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
829                 cvmx_warn("CVMX_SRIOMAINTX_SERIAL_LANE_HDR(%lu) is invalid on this chip\n", block_id);
830         return 0x0000000000001000ull;
831 }
832 #else
833 #define CVMX_SRIOMAINTX_SERIAL_LANE_HDR(block_id) (0x0000000000001000ull)
834 #endif
835 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
836 static inline uint64_t CVMX_SRIOMAINTX_SRC_OPS(unsigned long block_id)
837 {
838         if (!(
839               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
840               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
841                 cvmx_warn("CVMX_SRIOMAINTX_SRC_OPS(%lu) is invalid on this chip\n", block_id);
842         return 0x0000000000000018ull;
843 }
844 #else
845 #define CVMX_SRIOMAINTX_SRC_OPS(block_id) (0x0000000000000018ull)
846 #endif
847 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
848 static inline uint64_t CVMX_SRIOMAINTX_TX_DROP(unsigned long block_id)
849 {
850         if (!(
851               (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
852               (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0) || ((block_id >= 2) && (block_id <= 3))))))
853                 cvmx_warn("CVMX_SRIOMAINTX_TX_DROP(%lu) is invalid on this chip\n", block_id);
854         return 0x000000000020006Cull;
855 }
856 #else
857 #define CVMX_SRIOMAINTX_TX_DROP(block_id) (0x000000000020006Cull)
858 #endif
859
860 /**
861  * cvmx_sriomaint#_asmbly_id
862  *
863  * SRIOMAINT_ASMBLY_ID = SRIO Assembly ID
864  *
865  * The Assembly ID register shows the Assembly ID and Vendor
866  *
867  * Notes:
868  * The Assembly ID register shows the Assembly ID and Vendor specified in $SRIO_ASMBLY_ID.
869  *
870  * Clk_Rst:        SRIOMAINT(0,2..3)_ASMBLY_ID     hclk    hrst_n
871  */
872 union cvmx_sriomaintx_asmbly_id {
873         uint32_t u32;
874         struct cvmx_sriomaintx_asmbly_id_s {
875 #ifdef __BIG_ENDIAN_BITFIELD
876         uint32_t assy_id                      : 16; /**< Assembly Identifer */
877         uint32_t assy_ven                     : 16; /**< Assembly Vendor Identifer */
878 #else
879         uint32_t assy_ven                     : 16;
880         uint32_t assy_id                      : 16;
881 #endif
882         } s;
883         struct cvmx_sriomaintx_asmbly_id_s    cn63xx;
884         struct cvmx_sriomaintx_asmbly_id_s    cn63xxp1;
885         struct cvmx_sriomaintx_asmbly_id_s    cn66xx;
886 };
887 typedef union cvmx_sriomaintx_asmbly_id cvmx_sriomaintx_asmbly_id_t;
888
889 /**
890  * cvmx_sriomaint#_asmbly_info
891  *
892  * SRIOMAINT_ASMBLY_INFO = SRIO Assembly Information
893  *
894  * The Assembly Info register shows the Assembly Revision specified in $SRIO_ASMBLY_INFO
895  *
896  * Notes:
897  * The Assembly Info register shows the Assembly Revision specified in $SRIO_ASMBLY_INFO and Extended
898  *  Feature Pointer.
899  *
900  * Clk_Rst:        SRIOMAINT(0,2..3)_ASMBLY_INFO   hclk    hrst_n
901  */
902 union cvmx_sriomaintx_asmbly_info {
903         uint32_t u32;
904         struct cvmx_sriomaintx_asmbly_info_s {
905 #ifdef __BIG_ENDIAN_BITFIELD
906         uint32_t assy_rev                     : 16; /**< Assembly Revision */
907         uint32_t ext_fptr                     : 16; /**< Pointer to the first entry in the extended feature
908                                                          list. */
909 #else
910         uint32_t ext_fptr                     : 16;
911         uint32_t assy_rev                     : 16;
912 #endif
913         } s;
914         struct cvmx_sriomaintx_asmbly_info_s  cn63xx;
915         struct cvmx_sriomaintx_asmbly_info_s  cn63xxp1;
916         struct cvmx_sriomaintx_asmbly_info_s  cn66xx;
917 };
918 typedef union cvmx_sriomaintx_asmbly_info cvmx_sriomaintx_asmbly_info_t;
919
920 /**
921  * cvmx_sriomaint#_bar1_idx#
922  *
923  * SRIOMAINT_BAR1_IDXX = SRIO BAR1 IndexX Register
924  *
925  * Contains address index and control bits for access to memory ranges of BAR1.
926  *
927  * Notes:
928  * This register specifies the Octeon address, endian swap and cache status associated with each of
929  *  the 16 BAR1 entries.  The local address bits used are based on the BARSIZE field located in the
930  *  SRIOMAINT(0,2..3)_M2S_BAR1_START0 register.  This register is only writeable over SRIO if the
931  *  SRIO(0,2..3)_ACC_CTRL.DENY_BAR1 bit is zero.
932  *
933  * Clk_Rst:        SRIOMAINT(0,2..3)_BAR1_IDX[0:15]        hclk    hrst_n
934  */
935 union cvmx_sriomaintx_bar1_idxx {
936         uint32_t u32;
937         struct cvmx_sriomaintx_bar1_idxx_s {
938 #ifdef __BIG_ENDIAN_BITFIELD
939         uint32_t reserved_30_31               : 2;
940         uint32_t la                           : 22; /**< L2/DRAM Address bits [37:16]
941                                                          Not all LA[21:0] bits are used by SRIO hardware,
942                                                          depending on SRIOMAINT(0,2..3)_M2S_BAR1_START1[BARSIZE].
943
944                                                                                  Become
945                                                                                  L2/DRAM
946                                                                                  Address  Entry
947                                                          BARSIZE   LA Bits Used   Bits    Size
948                                                             0        LA[21:0]    [37:16]   64KB
949                                                             1        LA[21:1]    [37:17]  128KB
950                                                             2        LA[21:2]    [37:18]  256KB
951                                                             3        LA[21:3]    [37:19]  512KB
952                                                             4        LA[21:4]    [37:20]    1MB
953                                                             5        LA[21:5]    [37:21]    2MB
954                                                             6        LA[21:6]    [37:22]    4MB
955                                                             7        LA[21:7]    [37:23]    8MB
956                                                             8        LA[21:8]    [37:24]   16MB
957                                                             9        LA[21:9]    [37:25]   32MB
958                                                            10        LA[21:10]   [37:26]   64MB
959                                                            11        LA[21:11]   [37:27]  128MB
960                                                            12        LA[21:12]   [37:28]  256MB
961                                                            13        LA[21:13]   [37:29]  512MB */
962         uint32_t reserved_6_7                 : 2;
963         uint32_t es                           : 2;  /**< Endian Swap Mode.
964                                                          0 = No Swap
965                                                          1 = 64-bit Swap Bytes [ABCD_EFGH] -> [HGFE_DCBA]
966                                                          2 = 32-bit Swap Words [ABCD_EFGH] -> [DCBA_HGFE]
967                                                          3 = 32-bit Word Exch  [ABCD_EFGH] -> [EFGH_ABCD] */
968         uint32_t nca                          : 1;  /**< Non-Cacheable Access Mode.  When set, transfers
969                                                          through this window are not cacheable. */
970         uint32_t reserved_1_2                 : 2;
971         uint32_t enable                       : 1;  /**< When set the selected index address is valid. */
972 #else
973         uint32_t enable                       : 1;
974         uint32_t reserved_1_2                 : 2;
975         uint32_t nca                          : 1;
976         uint32_t es                           : 2;
977         uint32_t reserved_6_7                 : 2;
978         uint32_t la                           : 22;
979         uint32_t reserved_30_31               : 2;
980 #endif
981         } s;
982         struct cvmx_sriomaintx_bar1_idxx_s    cn63xx;
983         struct cvmx_sriomaintx_bar1_idxx_s    cn63xxp1;
984         struct cvmx_sriomaintx_bar1_idxx_s    cn66xx;
985 };
986 typedef union cvmx_sriomaintx_bar1_idxx cvmx_sriomaintx_bar1_idxx_t;
987
988 /**
989  * cvmx_sriomaint#_bell_status
990  *
991  * SRIOMAINT_BELL_STATUS = SRIO Incoming Doorbell Status
992  *
993  * The SRIO Incoming (RX) Doorbell Status
994  *
995  * Notes:
996  * This register displays the status of the doorbells received.  If FULL is set the SRIO device will
997  *  retry incoming transactions.
998  *
999  * Clk_Rst:        SRIOMAINT(0,2..3)_BELL_STATUS   hclk    hrst_n
1000  */
1001 union cvmx_sriomaintx_bell_status {
1002         uint32_t u32;
1003         struct cvmx_sriomaintx_bell_status_s {
1004 #ifdef __BIG_ENDIAN_BITFIELD
1005         uint32_t reserved_1_31                : 31;
1006         uint32_t full                         : 1;  /**< Not able to receive Doorbell Transactions */
1007 #else
1008         uint32_t full                         : 1;
1009         uint32_t reserved_1_31                : 31;
1010 #endif
1011         } s;
1012         struct cvmx_sriomaintx_bell_status_s  cn63xx;
1013         struct cvmx_sriomaintx_bell_status_s  cn63xxp1;
1014         struct cvmx_sriomaintx_bell_status_s  cn66xx;
1015 };
1016 typedef union cvmx_sriomaintx_bell_status cvmx_sriomaintx_bell_status_t;
1017
1018 /**
1019  * cvmx_sriomaint#_comp_tag
1020  *
1021  * SRIOMAINT_COMP_TAG = SRIO Component Tag
1022  *
1023  * Component Tag
1024  *
1025  * Notes:
1026  * This register contains a component tag value for the processing element and the value can be
1027  *  assigned by software when the device is initialized.
1028  *
1029  * Clk_Rst:        SRIOMAINT(0,2..3)_COMP_TAG      hclk    hrst_n
1030  */
1031 union cvmx_sriomaintx_comp_tag {
1032         uint32_t u32;
1033         struct cvmx_sriomaintx_comp_tag_s {
1034 #ifdef __BIG_ENDIAN_BITFIELD
1035         uint32_t comp_tag                     : 32; /**< Component Tag for Firmware Use */
1036 #else
1037         uint32_t comp_tag                     : 32;
1038 #endif
1039         } s;
1040         struct cvmx_sriomaintx_comp_tag_s     cn63xx;
1041         struct cvmx_sriomaintx_comp_tag_s     cn63xxp1;
1042         struct cvmx_sriomaintx_comp_tag_s     cn66xx;
1043 };
1044 typedef union cvmx_sriomaintx_comp_tag cvmx_sriomaintx_comp_tag_t;
1045
1046 /**
1047  * cvmx_sriomaint#_core_enables
1048  *
1049  * SRIOMAINT_CORE_ENABLES = SRIO Core Control
1050  *
1051  * Core Control
1052  *
1053  * Notes:
1054  * This register displays the reset state of the Octeon Core Logic while the SRIO Link is running.
1055  *  The bit should be set after the software has initialized the chip to allow memory operations.
1056  *
1057  * Clk_Rst:        SRIOMAINT(0,2..3)_CORE_ENABLES  hclk    hrst_n, srst_n
1058  */
1059 union cvmx_sriomaintx_core_enables {
1060         uint32_t u32;
1061         struct cvmx_sriomaintx_core_enables_s {
1062 #ifdef __BIG_ENDIAN_BITFIELD
1063         uint32_t reserved_5_31                : 27;
1064         uint32_t halt                         : 1;  /**< OCTEON currently in Reset
1065                                                          0 = All OCTEON resources are available.
1066                                                          1 = The OCTEON is in reset. When this bit is set,
1067                                                              SRIO maintenance registers can be accessed,
1068                                                              but BAR0, BAR1, and BAR2 cannot be. */
1069         uint32_t imsg1                        : 1;  /**< Allow Incoming Message Unit 1 Operations
1070                                                          Note: This bit is cleared when the C63XX is reset
1071                                                           0 = SRIO Incoming Messages to Unit 1 ignored and
1072                                                               return error response
1073                                                           1 = SRIO Incoming Messages to Unit 1 */
1074         uint32_t imsg0                        : 1;  /**< Allow Incoming Message Unit 0 Operations
1075                                                          Note: This bit is cleared when the C63XX is reset
1076                                                           0 = SRIO Incoming Messages to Unit 0 ignored and
1077                                                               return error response
1078                                                           1 = SRIO Incoming Messages to Unit 0 */
1079         uint32_t doorbell                     : 1;  /**< Allow Inbound Doorbell Operations
1080                                                          Note: This bit is cleared when the C63XX is reset
1081                                                           0 = SRIO Doorbell OPs ignored and return error
1082                                                               response
1083                                                           1 = SRIO Doorbell OPs Allowed */
1084         uint32_t memory                       : 1;  /**< Allow Inbound/Outbound Memory Operations
1085                                                          Note: This bit is cleared when the C63XX is reset
1086                                                           0 = SRIO Incoming Nwrites and Swrites are
1087                                                               dropped.  Incoming Nreads, Atomics and
1088                                                               NwriteRs return responses with ERROR status.
1089                                                               SRIO Incoming Maintenance BAR Memory Accesses
1090                                                               are processed normally.
1091                                                               Outgoing Store Operations are Dropped
1092                                                               Outgoing Load Operations are not issued and
1093                                                               return all 1's with an ERROR status.
1094                                                               In Flight Operations started while the bit is
1095                                                               set in both directions will complete normally.
1096                                                           1 = SRIO Memory Read/Write OPs Allowed */
1097 #else
1098         uint32_t memory                       : 1;
1099         uint32_t doorbell                     : 1;
1100         uint32_t imsg0                        : 1;
1101         uint32_t imsg1                        : 1;
1102         uint32_t halt                         : 1;
1103         uint32_t reserved_5_31                : 27;
1104 #endif
1105         } s;
1106         struct cvmx_sriomaintx_core_enables_s cn63xx;
1107         struct cvmx_sriomaintx_core_enables_s cn63xxp1;
1108         struct cvmx_sriomaintx_core_enables_s cn66xx;
1109 };
1110 typedef union cvmx_sriomaintx_core_enables cvmx_sriomaintx_core_enables_t;
1111
1112 /**
1113  * cvmx_sriomaint#_dev_id
1114  *
1115  * SRIOMAINT_DEV_ID = SRIO Device ID
1116  *
1117  * The DeviceVendor Identity field identifies the vendor that manufactured the device
1118  *
1119  * Notes:
1120  * This register identifies Cavium Inc. and the Product ID.
1121  *
1122  * Clk_Rst:        SRIOMAINT(0,2..3)_DEV_ID        hclk    hrst_n
1123  */
1124 union cvmx_sriomaintx_dev_id {
1125         uint32_t u32;
1126         struct cvmx_sriomaintx_dev_id_s {
1127 #ifdef __BIG_ENDIAN_BITFIELD
1128         uint32_t device                       : 16; /**< Product Identity */
1129         uint32_t vendor                       : 16; /**< Cavium Vendor Identity */
1130 #else
1131         uint32_t vendor                       : 16;
1132         uint32_t device                       : 16;
1133 #endif
1134         } s;
1135         struct cvmx_sriomaintx_dev_id_s       cn63xx;
1136         struct cvmx_sriomaintx_dev_id_s       cn63xxp1;
1137         struct cvmx_sriomaintx_dev_id_s       cn66xx;
1138 };
1139 typedef union cvmx_sriomaintx_dev_id cvmx_sriomaintx_dev_id_t;
1140
1141 /**
1142  * cvmx_sriomaint#_dev_rev
1143  *
1144  * SRIOMAINT_DEV_REV = SRIO Device Revision
1145  *
1146  * The Device Revision register identifies the chip pass and revision
1147  *
1148  * Notes:
1149  * This register identifies the chip pass and revision derived from the fuses.
1150  *
1151  * Clk_Rst:        SRIOMAINT(0,2..3)_DEV_REV       hclk    hrst_n
1152  */
1153 union cvmx_sriomaintx_dev_rev {
1154         uint32_t u32;
1155         struct cvmx_sriomaintx_dev_rev_s {
1156 #ifdef __BIG_ENDIAN_BITFIELD
1157         uint32_t reserved_8_31                : 24;
1158         uint32_t revision                     : 8;  /**< Chip Pass/Revision */
1159 #else
1160         uint32_t revision                     : 8;
1161         uint32_t reserved_8_31                : 24;
1162 #endif
1163         } s;
1164         struct cvmx_sriomaintx_dev_rev_s      cn63xx;
1165         struct cvmx_sriomaintx_dev_rev_s      cn63xxp1;
1166         struct cvmx_sriomaintx_dev_rev_s      cn66xx;
1167 };
1168 typedef union cvmx_sriomaintx_dev_rev cvmx_sriomaintx_dev_rev_t;
1169
1170 /**
1171  * cvmx_sriomaint#_dst_ops
1172  *
1173  * SRIOMAINT_DST_OPS = SRIO Source Operations
1174  *
1175  * The logical operations supported from external devices.
1176  *
1177  * Notes:
1178  * The logical operations supported from external devices.   The Destination OPs register shows the
1179  *  operations specified in the SRIO(0,2..3)_IP_FEATURE.OPS register.
1180  *
1181  * Clk_Rst:        SRIOMAINT(0,2..3)_DST_OPS       hclk    hrst_n
1182  */
1183 union cvmx_sriomaintx_dst_ops {
1184         uint32_t u32;
1185         struct cvmx_sriomaintx_dst_ops_s {
1186 #ifdef __BIG_ENDIAN_BITFIELD
1187         uint32_t gsm_read                     : 1;  /**< PE does not support Read Home operations.
1188                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<31>] */
1189         uint32_t i_read                       : 1;  /**< PE does not support Instruction Read.
1190                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<30>] */
1191         uint32_t rd_own                       : 1;  /**< PE does not support Read for Ownership.
1192                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<29>] */
1193         uint32_t d_invald                     : 1;  /**< PE does not support Data Cache Invalidate.
1194                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<28>] */
1195         uint32_t castout                      : 1;  /**< PE does not support Castout Operations.
1196                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<27>] */
1197         uint32_t d_flush                      : 1;  /**< PE does not support Data Cache Flush.
1198                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<26>] */
1199         uint32_t io_read                      : 1;  /**< PE does not support IO Read.
1200                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<25>] */
1201         uint32_t i_invald                     : 1;  /**< PE does not support Instruction Cache Invalidate.
1202                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<24>] */
1203         uint32_t tlb_inv                      : 1;  /**< PE does not support TLB Entry Invalidate.
1204                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<23>] */
1205         uint32_t tlb_invs                     : 1;  /**< PE does not support TLB Entry Invalidate Sync.
1206                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<22>] */
1207         uint32_t reserved_16_21               : 6;
1208         uint32_t read                         : 1;  /**< PE can support Nread operations.
1209                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<15>] */
1210         uint32_t write                        : 1;  /**< PE can support Nwrite operations.
1211                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<14>] */
1212         uint32_t swrite                       : 1;  /**< PE can support Swrite operations.
1213                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<13>] */
1214         uint32_t write_r                      : 1;  /**< PE can support Write with Response operations.
1215                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<12>] */
1216         uint32_t msg                          : 1;  /**< PE can support Data Message operations.
1217                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<11>] */
1218         uint32_t doorbell                     : 1;  /**< PE can support Doorbell operations.
1219                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<10>] */
1220         uint32_t compswap                     : 1;  /**< PE does not support Atomic Compare and Swap.
1221                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<9>] */
1222         uint32_t testswap                     : 1;  /**< PE does not support Atomic Test and Swap.
1223                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<8>] */
1224         uint32_t atom_inc                     : 1;  /**< PE can support Atomic increment operations.
1225                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<7>] */
1226         uint32_t atom_dec                     : 1;  /**< PE can support Atomic decrement operations.
1227                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<6>] */
1228         uint32_t atom_set                     : 1;  /**< PE can support Atomic set operations.
1229                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<5>] */
1230         uint32_t atom_clr                     : 1;  /**< PE can support Atomic clear operations.
1231                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<4>] */
1232         uint32_t atom_swp                     : 1;  /**< PE does not support Atomic Swap.
1233                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<3>] */
1234         uint32_t port_wr                      : 1;  /**< PE can Port Write operations.
1235                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<2>] */
1236         uint32_t reserved_0_1                 : 2;
1237 #else
1238         uint32_t reserved_0_1                 : 2;
1239         uint32_t port_wr                      : 1;
1240         uint32_t atom_swp                     : 1;
1241         uint32_t atom_clr                     : 1;
1242         uint32_t atom_set                     : 1;
1243         uint32_t atom_dec                     : 1;
1244         uint32_t atom_inc                     : 1;
1245         uint32_t testswap                     : 1;
1246         uint32_t compswap                     : 1;
1247         uint32_t doorbell                     : 1;
1248         uint32_t msg                          : 1;
1249         uint32_t write_r                      : 1;
1250         uint32_t swrite                       : 1;
1251         uint32_t write                        : 1;
1252         uint32_t read                         : 1;
1253         uint32_t reserved_16_21               : 6;
1254         uint32_t tlb_invs                     : 1;
1255         uint32_t tlb_inv                      : 1;
1256         uint32_t i_invald                     : 1;
1257         uint32_t io_read                      : 1;
1258         uint32_t d_flush                      : 1;
1259         uint32_t castout                      : 1;
1260         uint32_t d_invald                     : 1;
1261         uint32_t rd_own                       : 1;
1262         uint32_t i_read                       : 1;
1263         uint32_t gsm_read                     : 1;
1264 #endif
1265         } s;
1266         struct cvmx_sriomaintx_dst_ops_s      cn63xx;
1267         struct cvmx_sriomaintx_dst_ops_s      cn63xxp1;
1268         struct cvmx_sriomaintx_dst_ops_s      cn66xx;
1269 };
1270 typedef union cvmx_sriomaintx_dst_ops cvmx_sriomaintx_dst_ops_t;
1271
1272 /**
1273  * cvmx_sriomaint#_erb_attr_capt
1274  *
1275  * SRIOMAINT_ERB_ATTR_CAPT = SRIO Attributes Capture
1276  *
1277  * Attributes Capture
1278  *
1279  * Notes:
1280  * This register contains the information captured during the error.
1281  *  The HW will not update this register (i.e. this register is locked) while
1282  *  VALID is set in this CSR.
1283  *  The HW sets SRIO_INT_REG[PHY_ERB] every time it sets VALID in this CSR.
1284  *  To handle the interrupt, the following procedure may be best:
1285  *       (1) clear SRIO_INT_REG[PHY_ERB],
1286  *       (2) read this CSR, corresponding SRIOMAINT*_ERB_ERR_DET, SRIOMAINT*_ERB_PACK_SYM_CAPT,
1287  *           SRIOMAINT*_ERB_PACK_CAPT_1, SRIOMAINT*_ERB_PACK_CAPT_2, and SRIOMAINT*_ERB_PACK_CAPT_3
1288  *       (3) Write VALID in this CSR to 0.
1289  *
1290  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_ATTR_CAPT hclk    hrst_n
1291  */
1292 union cvmx_sriomaintx_erb_attr_capt {
1293         uint32_t u32;
1294         struct cvmx_sriomaintx_erb_attr_capt_s {
1295 #ifdef __BIG_ENDIAN_BITFIELD
1296         uint32_t inf_type                     : 3;  /**< Type of Information Logged.
1297                                                          000 - Packet
1298                                                          010 - Short Control Symbol
1299                                                                (use only first capture register)
1300                                                          100 - Implementation Specific Error Reporting
1301                                                          All Others Reserved */
1302         uint32_t err_type                     : 5;  /**< The encoded value of the 31 minus the bit in
1303                                                          SRIOMAINT(0,2..3)_ERB_ERR_DET that describes the error
1304                                                          captured in SRIOMAINT(0,2..3)_ERB_*CAPT Registers.
1305                                                          (For example a value of 5 indicates 31-5 = bit 26) */
1306         uint32_t err_info                     : 20; /**< Error Info.
1307                                                          ERR_TYPE Bits   Description
1308                                                             0     23     TX Protocol Error
1309                                                                   22     RX Protocol Error
1310                                                                   21     TX Link Response Timeout
1311                                                                   20     TX ACKID Timeout
1312                                                                   - 19:16  Reserved
1313                                                                   - 15:12  TX Protocol ID
1314                                                                          1 = Rcvd Unexpected Link Response
1315                                                                          2 = Rcvd Link Response before Req
1316                                                                          3 = Rcvd NACK servicing NACK
1317                                                                          4 = Rcvd NACK
1318                                                                          5 = Rcvd RETRY servicing RETRY
1319                                                                          6 = Rcvd RETRY servicing NACK
1320                                                                          7 = Rcvd ACK servicing RETRY
1321                                                                          8 = Rcvd ACK servicing NACK
1322                                                                          9 = Unexp ACKID on ACK or RETRY
1323                                                                         10 = Unexp ACK or RETRY
1324                                                                   - 11:8   Reserved
1325                                                                   - 7:4   RX Protocol ID
1326                                                                          1 = Rcvd EOP w/o Prev SOP
1327                                                                          2 = Rcvd STOMP w/o Prev SOP
1328                                                                          3 = Unexp RESTART
1329                                                                          4 = Redundant Status from LinkReq
1330                                                           9-16    23:20  RX K Bits
1331                                                                   - 19:0   Reserved
1332                                                            26     23:20  RX K Bits
1333                                                                   - 19:0   Reserved
1334                                                            27     23:12  Type
1335                                                                            0x000 TX
1336                                                                            0x010 RX
1337                                                                   - 11:8   RX or TX Protocol ID (see above)
1338                                                                   - 7:4   Reserved
1339                                                            30     23:20  RX K Bits
1340                                                                   - 19:0   Reserved
1341                                                            31     23:16  ACKID Timeout 0x2
1342                                                                   - 15:14  Reserved
1343                                                                   - 13:8   AckID
1344                                                                   - 7:4   Reserved
1345                                                            All others ERR_TYPEs are reserved. */
1346         uint32_t reserved_1_3                 : 3;
1347         uint32_t valid                        : 1;  /**< This bit is set by hardware to indicate that the
1348                                                          Packet/control symbol capture registers contain
1349                                                          valid information. For control symbols, only
1350                                                          capture register 0 will contain meaningful
1351                                                          information.  This bit must be cleared by software
1352                                                          to allow capture of other errors. */
1353 #else
1354         uint32_t valid                        : 1;
1355         uint32_t reserved_1_3                 : 3;
1356         uint32_t err_info                     : 20;
1357         uint32_t err_type                     : 5;
1358         uint32_t inf_type                     : 3;
1359 #endif
1360         } s;
1361         struct cvmx_sriomaintx_erb_attr_capt_s cn63xx;
1362         struct cvmx_sriomaintx_erb_attr_capt_cn63xxp1 {
1363 #ifdef __BIG_ENDIAN_BITFIELD
1364         uint32_t inf_type                     : 3;  /**< Type of Information Logged.
1365                                                          000 - Packet
1366                                                          010 - Short Control Symbol
1367                                                                (use only first capture register)
1368                                                          All Others Reserved */
1369         uint32_t err_type                     : 5;  /**< The encoded value of the 31 minus the bit in
1370                                                          SRIOMAINT(0..1)_ERB_ERR_DET that describes the error
1371                                                          captured in SRIOMAINT(0..1)_ERB_*CAPT Registers.
1372                                                          (For example a value of 5 indicates 31-5 = bit 26) */
1373         uint32_t reserved_1_23                : 23;
1374         uint32_t valid                        : 1;  /**< This bit is set by hardware to indicate that the
1375                                                          Packet/control symbol capture registers contain
1376                                                          valid information. For control symbols, only
1377                                                          capture register 0 will contain meaningful
1378                                                          information.  This bit must be cleared by software
1379                                                          to allow capture of other errors. */
1380 #else
1381         uint32_t valid                        : 1;
1382         uint32_t reserved_1_23                : 23;
1383         uint32_t err_type                     : 5;
1384         uint32_t inf_type                     : 3;
1385 #endif
1386         } cn63xxp1;
1387         struct cvmx_sriomaintx_erb_attr_capt_s cn66xx;
1388 };
1389 typedef union cvmx_sriomaintx_erb_attr_capt cvmx_sriomaintx_erb_attr_capt_t;
1390
1391 /**
1392  * cvmx_sriomaint#_erb_err_det
1393  *
1394  * SRIOMAINT_ERB_ERR_DET = SRIO Error Detect
1395  *
1396  * Error Detect
1397  *
1398  * Notes:
1399  * The Error Detect Register indicates physical layer transmission errors detected by the hardware.
1400  *  The HW will not update this register (i.e. this register is locked) while
1401  *  SRIOMAINT*_ERB_ATTR_CAPT[VALID] is set.
1402  *
1403  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_ERR_DET   hclk    hrst_n
1404  */
1405 union cvmx_sriomaintx_erb_err_det {
1406         uint32_t u32;
1407         struct cvmx_sriomaintx_erb_err_det_s {
1408 #ifdef __BIG_ENDIAN_BITFIELD
1409         uint32_t imp_err                      : 1;  /**< Implementation Specific Error. */
1410         uint32_t reserved_23_30               : 8;
1411         uint32_t ctl_crc                      : 1;  /**< Received a control symbol with a bad CRC value
1412                                                          Complete Symbol in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1413         uint32_t uns_id                       : 1;  /**< Received an acknowledge control symbol with an
1414                                                          unexpected ackID (packet-accepted or packet_retry)
1415                                                          Partial Symbol in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1416         uint32_t nack                         : 1;  /**< Received packet-not-accepted acknowledge control
1417                                                          symbols.
1418                                                          Partial Symbol in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1419         uint32_t out_ack                      : 1;  /**< Received packet with unexpected ackID value
1420                                                          Header in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1421         uint32_t pkt_crc                      : 1;  /**< Received a packet with a bad CRC value
1422                                                          Header in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1423         uint32_t size                         : 1;  /**< Received packet which exceeds the maximum allowed
1424                                                          size of 276 bytes.
1425                                                          Header in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1426         uint32_t inv_char                     : 1;  /**< Received illegal, 8B/10B error  or undefined
1427                                                          codegroup within a packet.
1428                                                          Header in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1429         uint32_t inv_data                     : 1;  /**< Received data codegroup or 8B/10B error within an
1430                                                          IDLE sequence.
1431                                                          Header in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1432         uint32_t reserved_6_14                : 9;
1433         uint32_t bad_ack                      : 1;  /**< Link_response received with an ackID that is not
1434                                                          outstanding.
1435                                                          Partial Symbol in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1436         uint32_t proterr                      : 1;  /**< An unexpected packet or control symbol was
1437                                                          received.
1438                                                          Partial Symbol in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1439         uint32_t f_toggle                     : 1;  /**< Reserved. */
1440         uint32_t del_err                      : 1;  /**< Received illegal or undefined codegroup.
1441                                                          (either INV_DATA or INV_CHAR)
1442                                                          Complete Symbol in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1443         uint32_t uns_ack                      : 1;  /**< An unexpected acknowledge control symbol was
1444                                                          received.
1445                                                          Partial Symbol in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1446         uint32_t lnk_tout                     : 1;  /**< An acknowledge or link-response control symbol is
1447                                                          not received within the specified timeout interval
1448                                                          Partial Header in SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT */
1449 #else
1450         uint32_t lnk_tout                     : 1;
1451         uint32_t uns_ack                      : 1;
1452         uint32_t del_err                      : 1;
1453         uint32_t f_toggle                     : 1;
1454         uint32_t proterr                      : 1;
1455         uint32_t bad_ack                      : 1;
1456         uint32_t reserved_6_14                : 9;
1457         uint32_t inv_data                     : 1;
1458         uint32_t inv_char                     : 1;
1459         uint32_t size                         : 1;
1460         uint32_t pkt_crc                      : 1;
1461         uint32_t out_ack                      : 1;
1462         uint32_t nack                         : 1;
1463         uint32_t uns_id                       : 1;
1464         uint32_t ctl_crc                      : 1;
1465         uint32_t reserved_23_30               : 8;
1466         uint32_t imp_err                      : 1;
1467 #endif
1468         } s;
1469         struct cvmx_sriomaintx_erb_err_det_s  cn63xx;
1470         struct cvmx_sriomaintx_erb_err_det_cn63xxp1 {
1471 #ifdef __BIG_ENDIAN_BITFIELD
1472         uint32_t reserved_23_31               : 9;
1473         uint32_t ctl_crc                      : 1;  /**< Received a control symbol with a bad CRC value
1474                                                          Complete Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1475         uint32_t uns_id                       : 1;  /**< Received an acknowledge control symbol with an
1476                                                          unexpected ackID (packet-accepted or packet_retry)
1477                                                          Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1478         uint32_t nack                         : 1;  /**< Received packet-not-accepted acknowledge control
1479                                                          symbols.
1480                                                          Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1481         uint32_t out_ack                      : 1;  /**< Received packet with unexpected ackID value
1482                                                          Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1483         uint32_t pkt_crc                      : 1;  /**< Received a packet with a bad CRC value
1484                                                          Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1485         uint32_t size                         : 1;  /**< Received packet which exceeds the maximum allowed
1486                                                          size of 276 bytes.
1487                                                          Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1488         uint32_t reserved_6_16                : 11;
1489         uint32_t bad_ack                      : 1;  /**< Link_response received with an ackID that is not
1490                                                          outstanding.
1491                                                          Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1492         uint32_t proterr                      : 1;  /**< An unexpected packet or control symbol was
1493                                                          received.
1494                                                          Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1495         uint32_t f_toggle                     : 1;  /**< Reserved. */
1496         uint32_t del_err                      : 1;  /**< Received illegal or undefined codegroup.
1497                                                          (either INV_DATA or INV_CHAR) (Pass 2)
1498                                                          Complete Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1499         uint32_t uns_ack                      : 1;  /**< An unexpected acknowledge control symbol was
1500                                                          received.
1501                                                          Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1502         uint32_t lnk_tout                     : 1;  /**< An acknowledge or link-response control symbol is
1503                                                          not received within the specified timeout interval
1504                                                          Partial Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
1505 #else
1506         uint32_t lnk_tout                     : 1;
1507         uint32_t uns_ack                      : 1;
1508         uint32_t del_err                      : 1;
1509         uint32_t f_toggle                     : 1;
1510         uint32_t proterr                      : 1;
1511         uint32_t bad_ack                      : 1;
1512         uint32_t reserved_6_16                : 11;
1513         uint32_t size                         : 1;
1514         uint32_t pkt_crc                      : 1;
1515         uint32_t out_ack                      : 1;
1516         uint32_t nack                         : 1;
1517         uint32_t uns_id                       : 1;
1518         uint32_t ctl_crc                      : 1;
1519         uint32_t reserved_23_31               : 9;
1520 #endif
1521         } cn63xxp1;
1522         struct cvmx_sriomaintx_erb_err_det_s  cn66xx;
1523 };
1524 typedef union cvmx_sriomaintx_erb_err_det cvmx_sriomaintx_erb_err_det_t;
1525
1526 /**
1527  * cvmx_sriomaint#_erb_err_rate
1528  *
1529  * SRIOMAINT_ERB_ERR_RATE = SRIO Error Rate
1530  *
1531  * Error Rate
1532  *
1533  * Notes:
1534  * The Error Rate register is used with the Error Rate Threshold register to monitor and control the
1535  *  reporting of transmission errors.
1536  *
1537  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_ERR_RATE  hclk    hrst_n
1538  */
1539 union cvmx_sriomaintx_erb_err_rate {
1540         uint32_t u32;
1541         struct cvmx_sriomaintx_erb_err_rate_s {
1542 #ifdef __BIG_ENDIAN_BITFIELD
1543         uint32_t err_bias                     : 8;  /**< These bits provide the error rate bias value.
1544                                                          0x00 - do not decrement the error rate counter
1545                                                          0x01 - decrement every 1ms (+/-34%)
1546                                                          0x02 - decrement every 10ms (+/-34%)
1547                                                          0x04 - decrement every 100ms (+/-34%)
1548                                                          0x08 - decrement every 1s (+/-34%)
1549                                                          0x10 - decrement every 10s (+/-34%)
1550                                                          0x20 - decrement every 100s (+/-34%)
1551                                                          0x40 - decrement every 1000s (+/-34%)
1552                                                          0x80 - decrement every 10000s (+/-34%)
1553                                                          All other values are reserved */
1554         uint32_t reserved_18_23               : 6;
1555         uint32_t rate_lim                     : 2;  /**< These bits limit the incrementing of the error
1556                                                          rate counter above the failed threshold trigger.
1557                                                            00 - only count 2 errors above
1558                                                            01 - only count 4 errors above
1559                                                            10 - only count 16 error above
1560                                                            11 - do not limit incrementing the error rate ct */
1561         uint32_t pk_rate                      : 8;  /**< Peak Value attainted by the error rate counter */
1562         uint32_t rate_cnt                     : 8;  /**< These bits maintain a count of the number of
1563                                                          transmission errors that have been detected by the
1564                                                          port, decremented by the Error Rate Bias
1565                                                          mechanism, to create an indication of the link
1566                                                          error rate. */
1567 #else
1568         uint32_t rate_cnt                     : 8;
1569         uint32_t pk_rate                      : 8;
1570         uint32_t rate_lim                     : 2;
1571         uint32_t reserved_18_23               : 6;
1572         uint32_t err_bias                     : 8;
1573 #endif
1574         } s;
1575         struct cvmx_sriomaintx_erb_err_rate_s cn63xx;
1576         struct cvmx_sriomaintx_erb_err_rate_s cn63xxp1;
1577         struct cvmx_sriomaintx_erb_err_rate_s cn66xx;
1578 };
1579 typedef union cvmx_sriomaintx_erb_err_rate cvmx_sriomaintx_erb_err_rate_t;
1580
1581 /**
1582  * cvmx_sriomaint#_erb_err_rate_en
1583  *
1584  * SRIOMAINT_ERB_ERR_RATE_EN = SRIO Error Rate Enable
1585  *
1586  * Error Rate Enable
1587  *
1588  * Notes:
1589  * This register contains the bits that control when an error condition is allowed to increment the
1590  *  error rate counter in the Error Rate Threshold Register and lock the Error Capture registers.
1591  *
1592  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_ERR_RATE_EN       hclk    hrst_n
1593  */
1594 union cvmx_sriomaintx_erb_err_rate_en {
1595         uint32_t u32;
1596         struct cvmx_sriomaintx_erb_err_rate_en_s {
1597 #ifdef __BIG_ENDIAN_BITFIELD
1598         uint32_t imp_err                      : 1;  /**< Enable Implementation Specific Error. */
1599         uint32_t reserved_23_30               : 8;
1600         uint32_t ctl_crc                      : 1;  /**< Enable error rate counting of control symbols with
1601                                                          bad CRC values */
1602         uint32_t uns_id                       : 1;  /**< Enable error rate counting of acknowledge control
1603                                                          symbol with unexpected ackIDs
1604                                                          (packet-accepted or packet_retry) */
1605         uint32_t nack                         : 1;  /**< Enable error rate counting of packet-not-accepted
1606                                                          acknowledge control symbols. */
1607         uint32_t out_ack                      : 1;  /**< Enable error rate counting of received packet with
1608                                                          unexpected ackID value */
1609         uint32_t pkt_crc                      : 1;  /**< Enable error rate counting of received a packet
1610                                                          with a bad CRC value */
1611         uint32_t size                         : 1;  /**< Enable error rate counting of received packet
1612                                                          which exceeds the maximum size of 276 bytes. */
1613         uint32_t inv_char                     : 1;  /**< Enable error rate counting of received illegal
1614                                                          illegal, 8B/10B error or undefined codegroup
1615                                                          within a packet. */
1616         uint32_t inv_data                     : 1;  /**< Enable error rate counting of received data
1617                                                          codegroup or 8B/10B error within IDLE sequence. */
1618         uint32_t reserved_6_14                : 9;
1619         uint32_t bad_ack                      : 1;  /**< Enable error rate counting of link_responses with
1620                                                          an ackID that is not outstanding. */
1621         uint32_t proterr                      : 1;  /**< Enable error rate counting of unexpected packet or
1622                                                          control symbols received. */
1623         uint32_t f_toggle                     : 1;  /**< Reserved. */
1624         uint32_t del_err                      : 1;  /**< Enable error rate counting of illegal or undefined
1625                                                          codegroups (either INV_DATA or INV_CHAR). */
1626         uint32_t uns_ack                      : 1;  /**< Enable error rate counting of unexpected
1627                                                          acknowledge control symbols received. */
1628         uint32_t lnk_tout                     : 1;  /**< Enable error rate counting of acknowledge or
1629                                                          link-response control symbols not received within
1630                                                          the specified timeout interval */
1631 #else
1632         uint32_t lnk_tout                     : 1;
1633         uint32_t uns_ack                      : 1;
1634         uint32_t del_err                      : 1;
1635         uint32_t f_toggle                     : 1;
1636         uint32_t proterr                      : 1;
1637         uint32_t bad_ack                      : 1;
1638         uint32_t reserved_6_14                : 9;
1639         uint32_t inv_data                     : 1;
1640         uint32_t inv_char                     : 1;
1641         uint32_t size                         : 1;
1642         uint32_t pkt_crc                      : 1;
1643         uint32_t out_ack                      : 1;
1644         uint32_t nack                         : 1;
1645         uint32_t uns_id                       : 1;
1646         uint32_t ctl_crc                      : 1;
1647         uint32_t reserved_23_30               : 8;
1648         uint32_t imp_err                      : 1;
1649 #endif
1650         } s;
1651         struct cvmx_sriomaintx_erb_err_rate_en_s cn63xx;
1652         struct cvmx_sriomaintx_erb_err_rate_en_cn63xxp1 {
1653 #ifdef __BIG_ENDIAN_BITFIELD
1654         uint32_t reserved_23_31               : 9;
1655         uint32_t ctl_crc                      : 1;  /**< Enable error rate counting of control symbols with
1656                                                          bad CRC values */
1657         uint32_t uns_id                       : 1;  /**< Enable error rate counting of acknowledge control
1658                                                          symbol with unexpected ackIDs
1659                                                          (packet-accepted or packet_retry) */
1660         uint32_t nack                         : 1;  /**< Enable error rate counting of packet-not-accepted
1661                                                          acknowledge control symbols. */
1662         uint32_t out_ack                      : 1;  /**< Enable error rate counting of received packet with
1663                                                          unexpected ackID value */
1664         uint32_t pkt_crc                      : 1;  /**< Enable error rate counting of received a packet
1665                                                          with a bad CRC value */
1666         uint32_t size                         : 1;  /**< Enable error rate counting of received packet
1667                                                          which exceeds the maximum size of 276 bytes. */
1668         uint32_t reserved_6_16                : 11;
1669         uint32_t bad_ack                      : 1;  /**< Enable error rate counting of link_responses with
1670                                                          an ackID that is not outstanding. */
1671         uint32_t proterr                      : 1;  /**< Enable error rate counting of unexpected packet or
1672                                                          control symbols received. */
1673         uint32_t f_toggle                     : 1;  /**< Reserved. */
1674         uint32_t del_err                      : 1;  /**< Enable error rate counting of illegal or undefined
1675                                                          codegroups (either INV_DATA or INV_CHAR). (Pass 2) */
1676         uint32_t uns_ack                      : 1;  /**< Enable error rate counting of unexpected
1677                                                          acknowledge control symbols received. */
1678         uint32_t lnk_tout                     : 1;  /**< Enable error rate counting of acknowledge or
1679                                                          link-response control symbols not received within
1680                                                          the specified timeout interval */
1681 #else
1682         uint32_t lnk_tout                     : 1;
1683         uint32_t uns_ack                      : 1;
1684         uint32_t del_err                      : 1;
1685         uint32_t f_toggle                     : 1;
1686         uint32_t proterr                      : 1;
1687         uint32_t bad_ack                      : 1;
1688         uint32_t reserved_6_16                : 11;
1689         uint32_t size                         : 1;
1690         uint32_t pkt_crc                      : 1;
1691         uint32_t out_ack                      : 1;
1692         uint32_t nack                         : 1;
1693         uint32_t uns_id                       : 1;
1694         uint32_t ctl_crc                      : 1;
1695         uint32_t reserved_23_31               : 9;
1696 #endif
1697         } cn63xxp1;
1698         struct cvmx_sriomaintx_erb_err_rate_en_s cn66xx;
1699 };
1700 typedef union cvmx_sriomaintx_erb_err_rate_en cvmx_sriomaintx_erb_err_rate_en_t;
1701
1702 /**
1703  * cvmx_sriomaint#_erb_err_rate_thr
1704  *
1705  * SRIOMAINT_ERB_ERR_RATE_THR = SRIO Error Rate Threshold
1706  *
1707  * Error Rate Threshold
1708  *
1709  * Notes:
1710  * The Error Rate Threshold register is used to control the reporting of errors to the link status.
1711  *  Typically the Degraded Threshold is less than the Fail Threshold.
1712  *
1713  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_ERR_RATE_THR      hclk    hrst_n
1714  */
1715 union cvmx_sriomaintx_erb_err_rate_thr {
1716         uint32_t u32;
1717         struct cvmx_sriomaintx_erb_err_rate_thr_s {
1718 #ifdef __BIG_ENDIAN_BITFIELD
1719         uint32_t fail_th                      : 8;  /**< These bits provide the threshold value for
1720                                                          reporting an error condition due to a possibly
1721                                                          broken link.
1722                                                            0x00 - Disable the Error Rate Failed Threshold
1723                                                                   Trigger
1724                                                            0x01 - Set the error reporting threshold to 1
1725                                                            0x02 - Set the error reporting threshold to 2
1726                                                            - ...
1727                                                            0xFF - Set the error reporting threshold to 255 */
1728         uint32_t dgrad_th                     : 8;  /**< These bits provide the threshold value for
1729                                                          reporting an error condition due to a possibly
1730                                                          degrading link.
1731                                                            0x00 - Disable the Degrade Rate Failed Threshold
1732                                                                   Trigger
1733                                                            0x01 - Set the error reporting threshold to 1
1734                                                            0x02 - Set the error reporting threshold to 2
1735                                                            - ...
1736                                                            0xFF - Set the error reporting threshold to 255 */
1737         uint32_t reserved_0_15                : 16;
1738 #else
1739         uint32_t reserved_0_15                : 16;
1740         uint32_t dgrad_th                     : 8;
1741         uint32_t fail_th                      : 8;
1742 #endif
1743         } s;
1744         struct cvmx_sriomaintx_erb_err_rate_thr_s cn63xx;
1745         struct cvmx_sriomaintx_erb_err_rate_thr_s cn63xxp1;
1746         struct cvmx_sriomaintx_erb_err_rate_thr_s cn66xx;
1747 };
1748 typedef union cvmx_sriomaintx_erb_err_rate_thr cvmx_sriomaintx_erb_err_rate_thr_t;
1749
1750 /**
1751  * cvmx_sriomaint#_erb_hdr
1752  *
1753  * SRIOMAINT_ERB_HDR = SRIO Error Reporting Block Header
1754  *
1755  * Error Reporting Block Header
1756  *
1757  * Notes:
1758  * The error management extensions block header register contains the EF_PTR to the next EF_BLK and
1759  *  the EF_ID that identifies this as the error management extensions block header. In this
1760  *  implementation this is the last block and therefore the EF_PTR is a NULL pointer.
1761  *
1762  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_HDR       hclk    hrst_n
1763  */
1764 union cvmx_sriomaintx_erb_hdr {
1765         uint32_t u32;
1766         struct cvmx_sriomaintx_erb_hdr_s {
1767 #ifdef __BIG_ENDIAN_BITFIELD
1768         uint32_t ef_ptr                       : 16; /**< Pointer to the next block in the extended features
1769                                                          data structure. */
1770         uint32_t ef_id                        : 16; /**< Single Port ID */
1771 #else
1772         uint32_t ef_id                        : 16;
1773         uint32_t ef_ptr                       : 16;
1774 #endif
1775         } s;
1776         struct cvmx_sriomaintx_erb_hdr_s      cn63xx;
1777         struct cvmx_sriomaintx_erb_hdr_s      cn63xxp1;
1778         struct cvmx_sriomaintx_erb_hdr_s      cn66xx;
1779 };
1780 typedef union cvmx_sriomaintx_erb_hdr cvmx_sriomaintx_erb_hdr_t;
1781
1782 /**
1783  * cvmx_sriomaint#_erb_lt_addr_capt_h
1784  *
1785  * SRIOMAINT_ERB_LT_ADDR_CAPT_H = SRIO Logical/Transport Layer High Address Capture
1786  *
1787  * Logical/Transport Layer High Address Capture
1788  *
1789  * Notes:
1790  * This register contains error information. It is locked when a Logical/Transport error is detected
1791  *  and unlocked when the SRIOMAINT(0,2..3)_ERB_LT_ERR_DET is written to zero. This register should be
1792  *  written only when error detection is disabled.  This register is only required for end point
1793  *  transactions of 50 or 66 bits.
1794  *
1795  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_LT_ADDR_CAPT_H    hclk    hrst_n
1796  */
1797 union cvmx_sriomaintx_erb_lt_addr_capt_h {
1798         uint32_t u32;
1799         struct cvmx_sriomaintx_erb_lt_addr_capt_h_s {
1800 #ifdef __BIG_ENDIAN_BITFIELD
1801         uint32_t addr                         : 32; /**< Most significant 32 bits of the address associated
1802                                                          with the error. Information supplied for requests
1803                                                          and responses if available. */
1804 #else
1805         uint32_t addr                         : 32;
1806 #endif
1807         } s;
1808         struct cvmx_sriomaintx_erb_lt_addr_capt_h_s cn63xx;
1809         struct cvmx_sriomaintx_erb_lt_addr_capt_h_s cn63xxp1;
1810         struct cvmx_sriomaintx_erb_lt_addr_capt_h_s cn66xx;
1811 };
1812 typedef union cvmx_sriomaintx_erb_lt_addr_capt_h cvmx_sriomaintx_erb_lt_addr_capt_h_t;
1813
1814 /**
1815  * cvmx_sriomaint#_erb_lt_addr_capt_l
1816  *
1817  * SRIOMAINT_ERB_LT_ADDR_CAPT_L = SRIO Logical/Transport Layer Low Address Capture
1818  *
1819  * Logical/Transport Layer Low Address Capture
1820  *
1821  * Notes:
1822  * This register contains error information. It is locked when a Logical/Transport error is detected
1823  *  and unlocked when the SRIOMAINT(0,2..3)_ERB_LT_ERR_DET is written to zero.  This register should be
1824  *  written only when error detection is disabled.
1825  *
1826  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_LT_ADDR_CAPT_L    hclk    hrst_n
1827  */
1828 union cvmx_sriomaintx_erb_lt_addr_capt_l {
1829         uint32_t u32;
1830         struct cvmx_sriomaintx_erb_lt_addr_capt_l_s {
1831 #ifdef __BIG_ENDIAN_BITFIELD
1832         uint32_t addr                         : 29; /**< Least significant 29 bits of the address
1833                                                          associated with the error.  Bits 31:24 specify the
1834                                                          request HOP count for Maintenance Operations.
1835                                                          Information supplied for requests and responses if
1836                                                          available. */
1837         uint32_t reserved_2_2                 : 1;
1838         uint32_t xaddr                        : 2;  /**< Extended address bits of the address associated
1839                                                          with the error.  Information supplied for requests
1840                                                          and responses if available. */
1841 #else
1842         uint32_t xaddr                        : 2;
1843         uint32_t reserved_2_2                 : 1;
1844         uint32_t addr                         : 29;
1845 #endif
1846         } s;
1847         struct cvmx_sriomaintx_erb_lt_addr_capt_l_s cn63xx;
1848         struct cvmx_sriomaintx_erb_lt_addr_capt_l_s cn63xxp1;
1849         struct cvmx_sriomaintx_erb_lt_addr_capt_l_s cn66xx;
1850 };
1851 typedef union cvmx_sriomaintx_erb_lt_addr_capt_l cvmx_sriomaintx_erb_lt_addr_capt_l_t;
1852
1853 /**
1854  * cvmx_sriomaint#_erb_lt_ctrl_capt
1855  *
1856  * SRIOMAINT_ERB_LT_CTRL_CAPT = SRIO Logical/Transport Layer Control Capture
1857  *
1858  * Logical/Transport Layer Control Capture
1859  *
1860  * Notes:
1861  * This register contains error information. It is locked when a Logical/Transport error is detected
1862  *  and unlocked when the SRIOMAINT(0,2..3)_ERB_LT_ERR_DET is written to zero.  This register should be
1863  *  written only when error detection is disabled.
1864  *
1865  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_LT_CTRL_CAPT      hclk    hrst_n
1866  */
1867 union cvmx_sriomaintx_erb_lt_ctrl_capt {
1868         uint32_t u32;
1869         struct cvmx_sriomaintx_erb_lt_ctrl_capt_s {
1870 #ifdef __BIG_ENDIAN_BITFIELD
1871         uint32_t ftype                        : 4;  /**< Format Type associated with the error */
1872         uint32_t ttype                        : 4;  /**< Transaction Type associated with the error
1873                                                          (For Messages)
1874                                                          Message Length */
1875         uint32_t extra                        : 8;  /**< Additional Information
1876                                                          (For Messages)
1877                                                          - 23:22 Letter
1878                                                          - 21:20 Mbox
1879                                                          - 19:16 Msgseg/xmbox
1880                                                          Information for the last message request sent
1881                                                          for the mailbox that had an error
1882                                                          (For Responses)
1883                                                          - 23:20 Response Request FTYPE
1884                                                          - 19:16 Response Request TTYPE
1885                                                          (For all other types)
1886                                                          Reserved. */
1887         uint32_t status                       : 4;  /**< Response Status.
1888                                                          (For all other Requests)
1889                                                          Reserved. */
1890         uint32_t size                         : 4;  /**< Size associated with the transaction. */
1891         uint32_t tt                           : 1;  /**< Transfer Type 0=ID8, 1=ID16. */
1892         uint32_t wdptr                        : 1;  /**< Word Pointer associated with the error. */
1893         uint32_t reserved_5_5                 : 1;
1894         uint32_t capt_idx                     : 5;  /**< Capture Index. 31 - Bit set in
1895                                                          SRIOMAINT(0,2..3)_ERB_LT_ERR_DET. */
1896 #else
1897         uint32_t capt_idx                     : 5;
1898         uint32_t reserved_5_5                 : 1;
1899         uint32_t wdptr                        : 1;
1900         uint32_t tt                           : 1;
1901         uint32_t size                         : 4;
1902         uint32_t status                       : 4;
1903         uint32_t extra                        : 8;
1904         uint32_t ttype                        : 4;
1905         uint32_t ftype                        : 4;
1906 #endif
1907         } s;
1908         struct cvmx_sriomaintx_erb_lt_ctrl_capt_s cn63xx;
1909         struct cvmx_sriomaintx_erb_lt_ctrl_capt_s cn63xxp1;
1910         struct cvmx_sriomaintx_erb_lt_ctrl_capt_s cn66xx;
1911 };
1912 typedef union cvmx_sriomaintx_erb_lt_ctrl_capt cvmx_sriomaintx_erb_lt_ctrl_capt_t;
1913
1914 /**
1915  * cvmx_sriomaint#_erb_lt_dev_id
1916  *
1917  * SRIOMAINT_ERB_LT_DEV_ID = SRIO Port-write Target deviceID
1918  *
1919  * Port-write Target deviceID
1920  *
1921  * Notes:
1922  * This SRIO interface does not support generating Port-Writes based on ERB Errors.  This register is
1923  *  currently unused and should be treated as reserved.
1924  *
1925  * Clk_Rst:        SRIOMAINT_ERB_LT_DEV_ID hclk    hrst_n
1926  */
1927 union cvmx_sriomaintx_erb_lt_dev_id {
1928         uint32_t u32;
1929         struct cvmx_sriomaintx_erb_lt_dev_id_s {
1930 #ifdef __BIG_ENDIAN_BITFIELD
1931         uint32_t id16                         : 8;  /**< This is the most significant byte of the
1932                                                          port-write destination deviceID (large transport
1933                                                          systems only)
1934                                                          destination ID used for Port Write errors */
1935         uint32_t id8                          : 8;  /**< This is the port-write destination deviceID */
1936         uint32_t tt                           : 1;  /**< Transport Type used for Port Write
1937                                                          0 = Small Transport, ID8 Only
1938                                                          1 = Large Transport, ID16 and ID8 */
1939         uint32_t reserved_0_14                : 15;
1940 #else
1941         uint32_t reserved_0_14                : 15;
1942         uint32_t tt                           : 1;
1943         uint32_t id8                          : 8;
1944         uint32_t id16                         : 8;
1945 #endif
1946         } s;
1947         struct cvmx_sriomaintx_erb_lt_dev_id_s cn63xx;
1948         struct cvmx_sriomaintx_erb_lt_dev_id_s cn63xxp1;
1949         struct cvmx_sriomaintx_erb_lt_dev_id_s cn66xx;
1950 };
1951 typedef union cvmx_sriomaintx_erb_lt_dev_id cvmx_sriomaintx_erb_lt_dev_id_t;
1952
1953 /**
1954  * cvmx_sriomaint#_erb_lt_dev_id_capt
1955  *
1956  * SRIOMAINT_ERB_LT_DEV_ID_CAPT = SRIO Logical/Transport Layer Device ID Capture
1957  *
1958  * Logical/Transport Layer Device ID Capture
1959  *
1960  * Notes:
1961  * This register contains error information. It is locked when a Logical/Transport error is detected
1962  *  and unlocked when the SRIOMAINT(0,2..3)_ERB_LT_ERR_DET is written to zero.  This register should be
1963  *  written only when error detection is disabled.
1964  *
1965  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_LT_DEV_ID_CAPT    hclk    hrst_n
1966  */
1967 union cvmx_sriomaintx_erb_lt_dev_id_capt {
1968         uint32_t u32;
1969         struct cvmx_sriomaintx_erb_lt_dev_id_capt_s {
1970 #ifdef __BIG_ENDIAN_BITFIELD
1971         uint32_t dst_id16                     : 8;  /**< Most significant byte of the large transport
1972                                                          destination ID associated with the error */
1973         uint32_t dst_id8                      : 8;  /**< Least significant byte of the large transport
1974                                                          destination ID or the 8-bit small transport
1975                                                          destination ID associated with the error */
1976         uint32_t src_id16                     : 8;  /**< Most significant byte of the large transport
1977                                                          source ID associated with the error */
1978         uint32_t src_id8                      : 8;  /**< Least significant byte of the large transport
1979                                                          source ID or the 8-bit small transport source ID
1980                                                          associated with the error */
1981 #else
1982         uint32_t src_id8                      : 8;
1983         uint32_t src_id16                     : 8;
1984         uint32_t dst_id8                      : 8;
1985         uint32_t dst_id16                     : 8;
1986 #endif
1987         } s;
1988         struct cvmx_sriomaintx_erb_lt_dev_id_capt_s cn63xx;
1989         struct cvmx_sriomaintx_erb_lt_dev_id_capt_s cn63xxp1;
1990         struct cvmx_sriomaintx_erb_lt_dev_id_capt_s cn66xx;
1991 };
1992 typedef union cvmx_sriomaintx_erb_lt_dev_id_capt cvmx_sriomaintx_erb_lt_dev_id_capt_t;
1993
1994 /**
1995  * cvmx_sriomaint#_erb_lt_err_det
1996  *
1997  * SRIOMAINT_ERB_LT_ERR_DET = SRIO Logical/Transport Layer Error Detect
1998  *
1999  * SRIO Logical/Transport Layer Error Detect
2000  *
2001  * Notes:
2002  * This register indicates the error that was detected by the Logical or Transport logic layer.
2003  *  Once a bit is set in this CSR, HW will lock the register until SW writes a zero to clear all the
2004  *  fields.  The HW sets SRIO_INT_REG[LOG_ERB] every time it sets one of the bits.
2005  *  To handle the interrupt, the following procedure may be best:
2006  *       (1) clear SRIO_INT_REG[LOG_ERB],
2007  *       (2) read this CSR, corresponding SRIOMAINT*_ERB_LT_ADDR_CAPT_H, SRIOMAINT*_ERB_LT_ADDR_CAPT_L,
2008  *           SRIOMAINT*_ERB_LT_DEV_ID_CAPT, and SRIOMAINT*_ERB_LT_CTRL_CAPT
2009  *       (3) Write this CSR to 0.
2010  *
2011  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_LT_ERR_DET        hclk    hrst_n
2012  */
2013 union cvmx_sriomaintx_erb_lt_err_det {
2014         uint32_t u32;
2015         struct cvmx_sriomaintx_erb_lt_err_det_s {
2016 #ifdef __BIG_ENDIAN_BITFIELD
2017         uint32_t io_err                       : 1;  /**< Received a response of ERROR for an IO Logical
2018                                                          Layer Request.  This includes all Maintenance and
2019                                                          Memory Responses not destined for the RX Soft
2020                                                          Packet FIFO. When SRIO receives an ERROR response
2021                                                          for a read, the issuing core or DPI DMA engine
2022                                                          receives result bytes with all bits set. In the
2023                                                          case of writes with response, this bit is the only
2024                                                          indication of failure. */
2025         uint32_t msg_err                      : 1;  /**< Received a response of ERROR for an outgoing
2026                                                          message segment. This bit is the only direct
2027                                                          indication of a MSG_ERR. When a MSG_ERR occurs,
2028                                                          SRIO drops the message segment and will not set
2029                                                          SRIO*_INT_REG[OMSG*] after the message
2030                                                          "transfer". NOTE: SRIO can continue to send or
2031                                                          retry other segments from the same message after
2032                                                          a MSG_ERR. */
2033         uint32_t gsm_err                      : 1;  /**< Received a response of ERROR for an GSM Logical
2034                                                          Request.  SRIO hardware never sets this bit. GSM
2035                                                          operations are not supported (outside of the Soft
2036                                                          Packet FIFO). */
2037         uint32_t msg_fmt                      : 1;  /**< Received an incoming Message Segment with a
2038                                                          formating error.  A MSG_FMT error occurs when SRIO
2039                                                          receives a message segment with a reserved SSIZE,
2040                                                          or a illegal data payload size, or a MSGSEG greater
2041                                                          than MSGLEN, or a MSGSEG that is the duplicate of
2042                                                          one already received by an inflight message.
2043                                                          When a non-duplicate MSG_FMT error occurs, SRIO
2044                                                          drops the segment and sends an ERROR response.
2045                                                          When a duplicate MSG_FMT error occurs, SRIO
2046                                                          (internally) terminates the currently-inflight
2047                                                          message with an error and processes the duplicate,
2048                                                          which may result in a new message being generated
2049                                                          internally for the duplicate. */
2050         uint32_t ill_tran                     : 1;  /**< Received illegal fields in the request/response
2051                                                          packet for a supported transaction or any packet
2052                                                          with a reserved transaction type. When an ILL_TRAN
2053                                                          error occurs, SRIO ignores the packet. ILL_TRAN
2054                                                          errors are 2nd priority after ILL_TGT and may mask
2055                                                          other problems. Packets with ILL_TRAN errors cannot
2056                                                          enter the RX Soft Packet FIFO.
2057                                                          There are two things that can set ILL_TRAN:
2058                                                          (1) SRIO received a packet with a tt value is not
2059                                                          0 or 1, or (2) SRIO received a response to an
2060                                                          outstanding message segment whose status was not
2061                                                          DONE, RETRY, or ERROR. */
2062         uint32_t ill_tgt                      : 1;  /**< Received a packet that contained a destination ID
2063                                                          other than SRIOMAINT*_PRI_DEV_ID or
2064                                                          SRIOMAINT*_SEC_DEV_ID. When an ILL_TGT error
2065                                                          occurs, SRIO drops the packet. ILL_TGT errors are
2066                                                          highest priority, so may mask other problems.
2067                                                          Packets with ILL_TGT errors cannot enter the RX
2068                                                          soft packet fifo. */
2069         uint32_t msg_tout                     : 1;  /**< An expected incoming message request has not been
2070                                                          received within the time-out interval specified in
2071                                                          SRIOMAINT(0,2..3)_PORT_RT_CTL. When a MSG_TOUT occurs,
2072                                                          SRIO (internally) terminates the inflight message
2073                                                          with an error. */
2074         uint32_t pkt_tout                     : 1;  /**< A required response has not been received to an
2075                                                          outgoing memory, maintenance or message request
2076                                                          before the time-out interval specified in
2077                                                          SRIOMAINT(0,2..3)_PORT_RT_CTL.  When an IO or maintenance
2078                                                          read request operation has a PKT_TOUT, the issuing
2079                                                          core load or DPI DMA engine receive all ones for
2080                                                          the result. When an IO NWRITE_R has a PKT_TOUT,
2081                                                          this bit is the only indication of failure. When a
2082                                                          message request operation has a PKT_TOUT, SRIO
2083                                                          discards the the outgoing message segment,  and
2084                                                          this bit is the only direct indication of failure.
2085                                                          NOTE: SRIO may continue to send or retry other
2086                                                          segments from the same message. When one or more of
2087                                                          the segments in an outgoing message have a
2088                                                          PKT_TOUT, SRIO will not set SRIO*_INT_REG[OMSG*]
2089                                                          after the message "transfer". */
2090         uint32_t uns_resp                     : 1;  /**< An unsolicited/unexpected memory, maintenance or
2091                                                          message response packet was received that was not
2092                                                          destined for the RX Soft Packet FIFO.  When this
2093                                                          condition is detected, the packet is dropped. */
2094         uint32_t uns_tran                     : 1;  /**< A transaction is received that is not supported.
2095                                                          SRIO HW will never set this bit - SRIO routes all
2096                                                          unsupported transactions to the RX soft packet
2097                                                          FIFO. */
2098         uint32_t reserved_1_21                : 21;
2099         uint32_t resp_sz                      : 1;  /**< Received an incoming Memory or Maintenance
2100                                                          Read response packet with a DONE status and less
2101                                                          data then expected.  This condition causes the
2102                                                          Read to be completed and an error response to be
2103                                                          returned with all the data bits set to the issuing
2104                                                          Core or DMA Engine. */
2105 #else
2106         uint32_t resp_sz                      : 1;
2107         uint32_t reserved_1_21                : 21;
2108         uint32_t uns_tran                     : 1;
2109         uint32_t uns_resp                     : 1;
2110         uint32_t pkt_tout                     : 1;
2111         uint32_t msg_tout                     : 1;
2112         uint32_t ill_tgt                      : 1;
2113         uint32_t ill_tran                     : 1;
2114         uint32_t msg_fmt                      : 1;
2115         uint32_t gsm_err                      : 1;
2116         uint32_t msg_err                      : 1;
2117         uint32_t io_err                       : 1;
2118 #endif
2119         } s;
2120         struct cvmx_sriomaintx_erb_lt_err_det_s cn63xx;
2121         struct cvmx_sriomaintx_erb_lt_err_det_s cn63xxp1;
2122         struct cvmx_sriomaintx_erb_lt_err_det_s cn66xx;
2123 };
2124 typedef union cvmx_sriomaintx_erb_lt_err_det cvmx_sriomaintx_erb_lt_err_det_t;
2125
2126 /**
2127  * cvmx_sriomaint#_erb_lt_err_en
2128  *
2129  * SRIOMAINT_ERB_LT_ERR_EN = SRIO Logical/Transport Layer Error Enable
2130  *
2131  * SRIO Logical/Transport Layer Error Enable
2132  *
2133  * Notes:
2134  * This register contains the bits that control if an error condition locks the Logical/Transport
2135  *  Layer Error Detect and Capture registers and is reported to the system host.
2136  *
2137  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_LT_ERR_EN hclk    hrst_n
2138  */
2139 union cvmx_sriomaintx_erb_lt_err_en {
2140         uint32_t u32;
2141         struct cvmx_sriomaintx_erb_lt_err_en_s {
2142 #ifdef __BIG_ENDIAN_BITFIELD
2143         uint32_t io_err                       : 1;  /**< Enable reporting of an IO error response. Save and
2144                                                          lock original request transaction information in
2145                                                          all Logical/Transport Layer Capture CSRs. */
2146         uint32_t msg_err                      : 1;  /**< Enable reporting of a Message error response. Save
2147                                                          and lock original request transaction information
2148                                                          in all Logical/Transport Layer Capture CSRs. */
2149         uint32_t gsm_err                      : 1;  /**< Enable reporting of a GSM error response. Save and
2150                                                          lock original request transaction capture
2151                                                          information in all Logical/Transport Layer Capture
2152                                                          CSRs. */
2153         uint32_t msg_fmt                      : 1;  /**< Enable reporting of a message format error. Save
2154                                                          and lock transaction capture information in
2155                                                          Logical/Transport Layer Device ID and Control
2156                                                          Capture CSRs. */
2157         uint32_t ill_tran                     : 1;  /**< Enable reporting of an illegal transaction decode
2158                                                          error Save and lock transaction capture
2159                                                          information in Logical/Transport Layer Device ID
2160                                                          and Control Capture CSRs. */
2161         uint32_t ill_tgt                      : 1;  /**< Enable reporting of an illegal transaction target
2162                                                          error. Save and lock transaction capture
2163                                                          information in Logical/Transport Layer Device ID
2164                                                          and Control Capture CSRs. */
2165         uint32_t msg_tout                     : 1;  /**< Enable reporting of a Message Request time-out
2166                                                          error. Save and lock transaction capture
2167                                                          information in Logical/Transport Layer Device ID
2168                                                          and Control Capture CSRs for the last Message
2169                                                          request segment packet received. */
2170         uint32_t pkt_tout                     : 1;  /**< Enable reporting of a packet response time-out
2171                                                          error.  Save and lock original request address in
2172                                                          Logical/Transport Layer Address Capture CSRs.
2173                                                          Save and lock original request Destination ID in
2174                                                          Logical/Transport Layer Device ID Capture CSR. */
2175         uint32_t uns_resp                     : 1;  /**< Enable reporting of an unsolicited response error.
2176                                                          Save and lock transaction capture information in
2177                                                          Logical/Transport Layer Device ID and Control
2178                                                          Capture CSRs. */
2179         uint32_t uns_tran                     : 1;  /**< Enable reporting of an unsupported transaction
2180                                                          error.  Save and lock transaction capture
2181                                                          information in Logical/Transport Layer Device ID
2182                                                          and Control Capture CSRs. */
2183         uint32_t reserved_1_21                : 21;
2184         uint32_t resp_sz                      : 1;  /**< Enable reporting of an incoming response with
2185                                                          unexpected data size */
2186 #else
2187         uint32_t resp_sz                      : 1;
2188         uint32_t reserved_1_21                : 21;
2189         uint32_t uns_tran                     : 1;
2190         uint32_t uns_resp                     : 1;
2191         uint32_t pkt_tout                     : 1;
2192         uint32_t msg_tout                     : 1;
2193         uint32_t ill_tgt                      : 1;
2194         uint32_t ill_tran                     : 1;
2195         uint32_t msg_fmt                      : 1;
2196         uint32_t gsm_err                      : 1;
2197         uint32_t msg_err                      : 1;
2198         uint32_t io_err                       : 1;
2199 #endif
2200         } s;
2201         struct cvmx_sriomaintx_erb_lt_err_en_s cn63xx;
2202         struct cvmx_sriomaintx_erb_lt_err_en_s cn63xxp1;
2203         struct cvmx_sriomaintx_erb_lt_err_en_s cn66xx;
2204 };
2205 typedef union cvmx_sriomaintx_erb_lt_err_en cvmx_sriomaintx_erb_lt_err_en_t;
2206
2207 /**
2208  * cvmx_sriomaint#_erb_pack_capt_1
2209  *
2210  * SRIOMAINT_ERB_PACK_CAPT_1 = SRIO Packet Capture 1
2211  *
2212  * Packet Capture 1
2213  *
2214  * Notes:
2215  * Error capture register 1 contains either long symbol capture information or bytes 4 through 7 of
2216  *  the packet header.
2217  *  The HW will not update this register (i.e. this register is locked) while
2218  *  SRIOMAINT*_ERB_ATTR_CAPT[VALID] is set.  This register should only be read while this bit is set.
2219  *
2220  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_PACK_CAPT_1       hclk    hrst_n
2221  */
2222 union cvmx_sriomaintx_erb_pack_capt_1 {
2223         uint32_t u32;
2224         struct cvmx_sriomaintx_erb_pack_capt_1_s {
2225 #ifdef __BIG_ENDIAN_BITFIELD
2226         uint32_t capture                      : 32; /**< Bytes 4 thru 7 of the packet header. */
2227 #else
2228         uint32_t capture                      : 32;
2229 #endif
2230         } s;
2231         struct cvmx_sriomaintx_erb_pack_capt_1_s cn63xx;
2232         struct cvmx_sriomaintx_erb_pack_capt_1_s cn63xxp1;
2233         struct cvmx_sriomaintx_erb_pack_capt_1_s cn66xx;
2234 };
2235 typedef union cvmx_sriomaintx_erb_pack_capt_1 cvmx_sriomaintx_erb_pack_capt_1_t;
2236
2237 /**
2238  * cvmx_sriomaint#_erb_pack_capt_2
2239  *
2240  * SRIOMAINT_ERB_PACK_CAPT_2 = SRIO Packet Capture 2
2241  *
2242  * Packet Capture 2
2243  *
2244  * Notes:
2245  * Error capture register 2 contains bytes 8 through 11 of the packet header.
2246  *  The HW will not update this register (i.e. this register is locked) while
2247  *  SRIOMAINT*_ERB_ATTR_CAPT[VALID] is set.  This register should only be read while this bit is set.
2248  *
2249  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_PACK_CAPT_2       hclk    hrst_n
2250  */
2251 union cvmx_sriomaintx_erb_pack_capt_2 {
2252         uint32_t u32;
2253         struct cvmx_sriomaintx_erb_pack_capt_2_s {
2254 #ifdef __BIG_ENDIAN_BITFIELD
2255         uint32_t capture                      : 32; /**< Bytes 8 thru 11 of the packet header. */
2256 #else
2257         uint32_t capture                      : 32;
2258 #endif
2259         } s;
2260         struct cvmx_sriomaintx_erb_pack_capt_2_s cn63xx;
2261         struct cvmx_sriomaintx_erb_pack_capt_2_s cn63xxp1;
2262         struct cvmx_sriomaintx_erb_pack_capt_2_s cn66xx;
2263 };
2264 typedef union cvmx_sriomaintx_erb_pack_capt_2 cvmx_sriomaintx_erb_pack_capt_2_t;
2265
2266 /**
2267  * cvmx_sriomaint#_erb_pack_capt_3
2268  *
2269  * SRIOMAINT_ERB_PACK_CAPT_3 = SRIO Packet Capture 3
2270  *
2271  * Packet Capture 3
2272  *
2273  * Notes:
2274  * Error capture register 3 contains bytes 12 through 15 of the packet header.
2275  *  The HW will not update this register (i.e. this register is locked) while
2276  *  SRIOMAINT*_ERB_ATTR_CAPT[VALID] is set.  This register should only be read while this bit is set.
2277  *
2278  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_PACK_CAPT_3       hclk    hrst_n
2279  */
2280 union cvmx_sriomaintx_erb_pack_capt_3 {
2281         uint32_t u32;
2282         struct cvmx_sriomaintx_erb_pack_capt_3_s {
2283 #ifdef __BIG_ENDIAN_BITFIELD
2284         uint32_t capture                      : 32; /**< Bytes 12 thru 15 of the packet header. */
2285 #else
2286         uint32_t capture                      : 32;
2287 #endif
2288         } s;
2289         struct cvmx_sriomaintx_erb_pack_capt_3_s cn63xx;
2290         struct cvmx_sriomaintx_erb_pack_capt_3_s cn63xxp1;
2291         struct cvmx_sriomaintx_erb_pack_capt_3_s cn66xx;
2292 };
2293 typedef union cvmx_sriomaintx_erb_pack_capt_3 cvmx_sriomaintx_erb_pack_capt_3_t;
2294
2295 /**
2296  * cvmx_sriomaint#_erb_pack_sym_capt
2297  *
2298  * SRIOMAINT_ERB_PACK_SYM_CAPT = SRIO Packet/Control Symbol Capture
2299  *
2300  * Packet/Control Symbol Capture
2301  *
2302  * Notes:
2303  * This register contains either captured control symbol information or the first 4 bytes of captured
2304  *  packet information.  The Errors that generate Partial Control Symbols can be found in
2305  *  SRIOMAINT*_ERB_ERR_DET.  The HW will not update this register (i.e. this register is locked) while
2306  *  SRIOMAINT*_ERB_ATTR_CAPT[VALID] is set.  This register should only be read while this bit is set.
2307  *
2308  * Clk_Rst:        SRIOMAINT(0,2..3)_ERB_PACK_SYM_CAPT     hclk    hrst_n
2309  */
2310 union cvmx_sriomaintx_erb_pack_sym_capt {
2311         uint32_t u32;
2312         struct cvmx_sriomaintx_erb_pack_sym_capt_s {
2313 #ifdef __BIG_ENDIAN_BITFIELD
2314         uint32_t capture                      : 32; /**< Control Character and Control Symbol or Bytes 0 to
2315                                                          3 of Packet Header
2316                                                          The Control Symbol consists of
2317                                                            - 31:24 - SC Character (0 in Partial Symbol)
2318                                                            - 23:21 - Stype 0
2319                                                            - 20:16 - Parameter 0
2320                                                            - 15:11 - Parameter 1
2321                                                            - 10: 8 - Stype 1 (0 in Partial Symbol)
2322                                                            - 7: 5 - Command (0 in Partial Symbol)
2323                                                            - 4: 0 - CRC5    (0 in Partial Symbol) */
2324 #else
2325         uint32_t capture                      : 32;
2326 #endif
2327         } s;
2328         struct cvmx_sriomaintx_erb_pack_sym_capt_s cn63xx;
2329         struct cvmx_sriomaintx_erb_pack_sym_capt_s cn63xxp1;
2330         struct cvmx_sriomaintx_erb_pack_sym_capt_s cn66xx;
2331 };
2332 typedef union cvmx_sriomaintx_erb_pack_sym_capt cvmx_sriomaintx_erb_pack_sym_capt_t;
2333
2334 /**
2335  * cvmx_sriomaint#_hb_dev_id_lock
2336  *
2337  * SRIOMAINT_HB_DEV_ID_LOCK = SRIO Host Device ID Lock
2338  *
2339  * The Host Base Device ID
2340  *
2341  * Notes:
2342  * This register contains the Device ID of the Host responsible for initializing this SRIO device.
2343  *  The register contains a special write once function that captures the first HOSTID written to it
2344  *  after reset.  The function allows several potential hosts to write to this register and then read
2345  *  it to see if they have responsibility for initialization.  The register can be unlocked by
2346  *  rewriting the current host value.  This will reset the lock and restore the value to 0xFFFF.
2347  *
2348  * Clk_Rst:        SRIOMAINT(0,2..3)_HB_DEV_ID_LOCK        hclk    hrst_n
2349  */
2350 union cvmx_sriomaintx_hb_dev_id_lock {
2351         uint32_t u32;
2352         struct cvmx_sriomaintx_hb_dev_id_lock_s {
2353 #ifdef __BIG_ENDIAN_BITFIELD
2354         uint32_t reserved_16_31               : 16;
2355         uint32_t hostid                       : 16; /**< Primary 16-bit Device ID */
2356 #else
2357         uint32_t hostid                       : 16;
2358         uint32_t reserved_16_31               : 16;
2359 #endif
2360         } s;
2361         struct cvmx_sriomaintx_hb_dev_id_lock_s cn63xx;
2362         struct cvmx_sriomaintx_hb_dev_id_lock_s cn63xxp1;
2363         struct cvmx_sriomaintx_hb_dev_id_lock_s cn66xx;
2364 };
2365 typedef union cvmx_sriomaintx_hb_dev_id_lock cvmx_sriomaintx_hb_dev_id_lock_t;
2366
2367 /**
2368  * cvmx_sriomaint#_ir_buffer_config
2369  *
2370  * SRIOMAINT_IR_BUFFER_CONFIG = SRIO Buffer Configuration
2371  *
2372  * Buffer Configuration
2373  *
2374  * Notes:
2375  * This register controls the operation of the SRIO Core buffer mux logic.
2376  *
2377  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_BUFFER_CONFIG      hclk    hrst_n
2378  */
2379 union cvmx_sriomaintx_ir_buffer_config {
2380         uint32_t u32;
2381         struct cvmx_sriomaintx_ir_buffer_config_s {
2382 #ifdef __BIG_ENDIAN_BITFIELD
2383         uint32_t tx_wm0                       : 4;  /**< Reserved. (See SRIOMAINT(0,2..3)_IR_BUFFER_CONFIG2) */
2384         uint32_t tx_wm1                       : 4;  /**< Reserved. (See SRIOMAINT(0,2..3)_IR_BUFFER_CONFIG2) */
2385         uint32_t tx_wm2                       : 4;  /**< Reserved. (See SRIOMAINT(0,2..3)_IR_BUFFER_CONFIG2) */
2386         uint32_t reserved_3_19                : 17;
2387         uint32_t tx_flow                      : 1;  /**< Controls whether Transmitter Flow Control is
2388                                                          permitted on this device.
2389                                                            0 - Disabled
2390                                                            1 - Permitted
2391                                                          The reset value of this field is
2392                                                          SRIO*_IP_FEATURE[TX_FLOW]. */
2393         uint32_t tx_sync                      : 1;  /**< Reserved. */
2394         uint32_t rx_sync                      : 1;  /**< Reserved. */
2395 #else
2396         uint32_t rx_sync                      : 1;
2397         uint32_t tx_sync                      : 1;
2398         uint32_t tx_flow                      : 1;
2399         uint32_t reserved_3_19                : 17;
2400         uint32_t tx_wm2                       : 4;
2401         uint32_t tx_wm1                       : 4;
2402         uint32_t tx_wm0                       : 4;
2403 #endif
2404         } s;
2405         struct cvmx_sriomaintx_ir_buffer_config_s cn63xx;
2406         struct cvmx_sriomaintx_ir_buffer_config_s cn63xxp1;
2407         struct cvmx_sriomaintx_ir_buffer_config_s cn66xx;
2408 };
2409 typedef union cvmx_sriomaintx_ir_buffer_config cvmx_sriomaintx_ir_buffer_config_t;
2410
2411 /**
2412  * cvmx_sriomaint#_ir_buffer_config2
2413  *
2414  * SRIOMAINT_IR_BUFFER_CONFIG2 = SRIO Buffer Configuration 2
2415  *
2416  * Buffer Configuration 2
2417  *
2418  * Notes:
2419  * This register controls the RX and TX Buffer availablility by priority.  The typical values are
2420  *  optimized for normal operation.  Care must be taken when changing these values to avoid values
2421  *  which can result in deadlocks.  Disabling a priority is not recommended and can result in system
2422  *  level failures.
2423  *
2424  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_BUFFER_CONFIG2     hclk    hrst_n
2425  */
2426 union cvmx_sriomaintx_ir_buffer_config2 {
2427         uint32_t u32;
2428         struct cvmx_sriomaintx_ir_buffer_config2_s {
2429 #ifdef __BIG_ENDIAN_BITFIELD
2430         uint32_t tx_wm3                       : 4;  /**< Number of buffers free before a priority 3 packet
2431                                                          will be transmitted.  A value of 9 will disable
2432                                                          this priority. */
2433         uint32_t tx_wm2                       : 4;  /**< Number of buffers free before a priority 2 packet
2434                                                          will be transmitted.  A value of 9 will disable
2435                                                          this priority. */
2436         uint32_t tx_wm1                       : 4;  /**< Number of buffers free before a priority 1 packet
2437                                                          will be transmitted.  A value of 9 will disable
2438                                                          this priority. */
2439         uint32_t tx_wm0                       : 4;  /**< Number of buffers free before a priority 0 packet
2440                                                          will be transmitted.  A value of 9 will disable
2441                                                          this priority. */
2442         uint32_t rx_wm3                       : 4;  /**< Number of buffers free before a priority 3 packet
2443                                                          will be accepted.  A value of 9 will disable this
2444                                                          priority and always cause a physical layer RETRY. */
2445         uint32_t rx_wm2                       : 4;  /**< Number of buffers free before a priority 2 packet
2446                                                          will be accepted.  A value of 9 will disable this
2447                                                          priority and always cause a physical layer RETRY. */
2448         uint32_t rx_wm1                       : 4;  /**< Number of buffers free before a priority 1 packet
2449                                                          will be accepted.  A value of 9 will disable this
2450                                                          priority and always cause a physical layer RETRY. */
2451         uint32_t rx_wm0                       : 4;  /**< Number of buffers free before a priority 0 packet
2452                                                          will be accepted.  A value of 9 will disable this
2453                                                          priority and always cause a physical layer RETRY. */
2454 #else
2455         uint32_t rx_wm0                       : 4;
2456         uint32_t rx_wm1                       : 4;
2457         uint32_t rx_wm2                       : 4;
2458         uint32_t rx_wm3                       : 4;
2459         uint32_t tx_wm0                       : 4;
2460         uint32_t tx_wm1                       : 4;
2461         uint32_t tx_wm2                       : 4;
2462         uint32_t tx_wm3                       : 4;
2463 #endif
2464         } s;
2465         struct cvmx_sriomaintx_ir_buffer_config2_s cn63xx;
2466         struct cvmx_sriomaintx_ir_buffer_config2_s cn66xx;
2467 };
2468 typedef union cvmx_sriomaintx_ir_buffer_config2 cvmx_sriomaintx_ir_buffer_config2_t;
2469
2470 /**
2471  * cvmx_sriomaint#_ir_pd_phy_ctrl
2472  *
2473  * SRIOMAINT_IR_PD_PHY_CTRL = SRIO Platform Dependent PHY Control
2474  *
2475  * Platform Dependent PHY Control
2476  *
2477  * Notes:
2478  * This register can be used for testing.  The register is otherwise unused by the hardware.
2479  *
2480  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_PD_PHY_CTRL        hclk    hrst_n
2481  */
2482 union cvmx_sriomaintx_ir_pd_phy_ctrl {
2483         uint32_t u32;
2484         struct cvmx_sriomaintx_ir_pd_phy_ctrl_s {
2485 #ifdef __BIG_ENDIAN_BITFIELD
2486         uint32_t pd_ctrl                      : 32; /**< Unused Register available for testing */
2487 #else
2488         uint32_t pd_ctrl                      : 32;
2489 #endif
2490         } s;
2491         struct cvmx_sriomaintx_ir_pd_phy_ctrl_s cn63xx;
2492         struct cvmx_sriomaintx_ir_pd_phy_ctrl_s cn63xxp1;
2493         struct cvmx_sriomaintx_ir_pd_phy_ctrl_s cn66xx;
2494 };
2495 typedef union cvmx_sriomaintx_ir_pd_phy_ctrl cvmx_sriomaintx_ir_pd_phy_ctrl_t;
2496
2497 /**
2498  * cvmx_sriomaint#_ir_pd_phy_stat
2499  *
2500  * SRIOMAINT_IR_PD_PHY_STAT = SRIO Platform Dependent PHY Status
2501  *
2502  * Platform Dependent PHY Status
2503  *
2504  * Notes:
2505  * This register is used to monitor PHY status on each lane.  They are documented here to assist in
2506  *  debugging only.  The lane numbers take into account the lane swap pin.
2507  *
2508  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_PD_PHY_STAT        hclk    hrst_n
2509  */
2510 union cvmx_sriomaintx_ir_pd_phy_stat {
2511         uint32_t u32;
2512         struct cvmx_sriomaintx_ir_pd_phy_stat_s {
2513 #ifdef __BIG_ENDIAN_BITFIELD
2514         uint32_t reserved_16_31               : 16;
2515         uint32_t ln3_rx                       : 3;  /**< Phy Lane 3 RX Status
2516                                                          0XX = Normal Operation
2517                                                          100 = 8B/10B Error
2518                                                          101 = Elastic Buffer Overflow (Data Lost)
2519                                                          110 = Elastic Buffer Underflow (Data Corrupted)
2520                                                          111 = Disparity Error */
2521         uint32_t ln3_dis                      : 1;  /**< Lane 3 Phy Clock Disabled
2522                                                          0 = Phy Clock Valid
2523                                                          1 = Phy Clock InValid */
2524         uint32_t ln2_rx                       : 3;  /**< Phy Lane 2 RX Status
2525                                                          0XX = Normal Operation
2526                                                          100 = 8B/10B Error
2527                                                          101 = Elastic Buffer Overflow (Data Lost)
2528                                                          110 = Elastic Buffer Underflow (Data Corrupted)
2529                                                          111 = Disparity Error */
2530         uint32_t ln2_dis                      : 1;  /**< Lane 2 Phy Clock Disabled
2531                                                          0 = Phy Clock Valid
2532                                                          1 = Phy Clock InValid */
2533         uint32_t ln1_rx                       : 3;  /**< Phy Lane 1 RX Status
2534                                                          0XX = Normal Operation
2535                                                          100 = 8B/10B Error
2536                                                          101 = Elastic Buffer Overflow (Data Lost)
2537                                                          110 = Elastic Buffer Underflow (Data Corrupted)
2538                                                          111 = Disparity Error */
2539         uint32_t ln1_dis                      : 1;  /**< Lane 1 Phy Clock Disabled
2540                                                          0 = Phy Clock Valid
2541                                                          1 = Phy Clock InValid */
2542         uint32_t ln0_rx                       : 3;  /**< Phy Lane 0 RX Status
2543                                                          0XX = Normal Operation
2544                                                          100 = 8B/10B Error
2545                                                          101 = Elastic Buffer Overflow (Data Lost)
2546                                                          110 = Elastic Buffer Underflow (Data Corrupted)
2547                                                          111 = Disparity Error */
2548         uint32_t ln0_dis                      : 1;  /**< Lane 0 Phy Clock Disabled
2549                                                          0 = Phy Clock Valid
2550                                                          1 = Phy Clock InValid */
2551 #else
2552         uint32_t ln0_dis                      : 1;
2553         uint32_t ln0_rx                       : 3;
2554         uint32_t ln1_dis                      : 1;
2555         uint32_t ln1_rx                       : 3;
2556         uint32_t ln2_dis                      : 1;
2557         uint32_t ln2_rx                       : 3;
2558         uint32_t ln3_dis                      : 1;
2559         uint32_t ln3_rx                       : 3;
2560         uint32_t reserved_16_31               : 16;
2561 #endif
2562         } s;
2563         struct cvmx_sriomaintx_ir_pd_phy_stat_s cn63xx;
2564         struct cvmx_sriomaintx_ir_pd_phy_stat_s cn63xxp1;
2565         struct cvmx_sriomaintx_ir_pd_phy_stat_s cn66xx;
2566 };
2567 typedef union cvmx_sriomaintx_ir_pd_phy_stat cvmx_sriomaintx_ir_pd_phy_stat_t;
2568
2569 /**
2570  * cvmx_sriomaint#_ir_pi_phy_ctrl
2571  *
2572  * SRIOMAINT_IR_PI_PHY_CTRL = SRIO Platform Independent PHY Control
2573  *
2574  * Platform Independent PHY Control
2575  *
2576  * Notes:
2577  * This register is used to control platform independent operating modes of the transceivers. These
2578  *  control bits are uniform across all platforms.
2579  *
2580  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_PI_PHY_CTRL        hclk    hrst_n
2581  */
2582 union cvmx_sriomaintx_ir_pi_phy_ctrl {
2583         uint32_t u32;
2584         struct cvmx_sriomaintx_ir_pi_phy_ctrl_s {
2585 #ifdef __BIG_ENDIAN_BITFIELD
2586         uint32_t tx_reset                     : 1;  /**< Outgoing PHY Logic Reset.  0=Reset, 1=Normal Op */
2587         uint32_t rx_reset                     : 1;  /**< Incoming PHY Logic Reset.  0=Reset, 1=Normal Op */
2588         uint32_t reserved_29_29               : 1;
2589         uint32_t loopback                     : 2;  /**< These bits control the state of the loopback
2590                                                          control vector on the transceiver interface.  The
2591                                                          loopback modes are enumerated as follows:
2592                                                            00 - No Loopback
2593                                                            01 - Near End PCS Loopback
2594                                                            10 - Far End PCS Loopback
2595                                                            11 - Both Near and Far End PCS Loopback */
2596         uint32_t reserved_0_26                : 27;
2597 #else
2598         uint32_t reserved_0_26                : 27;
2599         uint32_t loopback                     : 2;
2600         uint32_t reserved_29_29               : 1;
2601         uint32_t rx_reset                     : 1;
2602         uint32_t tx_reset                     : 1;
2603 #endif
2604         } s;
2605         struct cvmx_sriomaintx_ir_pi_phy_ctrl_s cn63xx;
2606         struct cvmx_sriomaintx_ir_pi_phy_ctrl_s cn63xxp1;
2607         struct cvmx_sriomaintx_ir_pi_phy_ctrl_s cn66xx;
2608 };
2609 typedef union cvmx_sriomaintx_ir_pi_phy_ctrl cvmx_sriomaintx_ir_pi_phy_ctrl_t;
2610
2611 /**
2612  * cvmx_sriomaint#_ir_pi_phy_stat
2613  *
2614  * SRIOMAINT_IR_PI_PHY_STAT = SRIO Platform Independent PHY Status
2615  *
2616  * Platform Independent PHY Status
2617  *
2618  * Notes:
2619  * This register displays the status of the link initialization state machine.  Changes to this state
2620  *  cause the SRIO(0,2..3)_INT_REG.LINK_UP or SRIO(0,2..3)_INT_REG.LINK_DOWN interrupts.
2621  *
2622  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_PI_PHY_STAT        hclk    hrst_n
2623  */
2624 union cvmx_sriomaintx_ir_pi_phy_stat {
2625         uint32_t u32;
2626         struct cvmx_sriomaintx_ir_pi_phy_stat_s {
2627 #ifdef __BIG_ENDIAN_BITFIELD
2628         uint32_t reserved_12_31               : 20;
2629         uint32_t tx_rdy                       : 1;  /**< Minimum number of Status Transmitted */
2630         uint32_t rx_rdy                       : 1;  /**< Minimum number of Good Status Received */
2631         uint32_t init_sm                      : 10; /**< Initialization State Machine
2632                                                          001 - Silent
2633                                                          002 - Seek
2634                                                          004 - Discovery
2635                                                          008 - 1x_Mode_Lane0
2636                                                          010 - 1x_Mode_Lane1
2637                                                          020 - 1x_Mode_Lane2
2638                                                          040 - 1x_Recovery
2639                                                          080 - 2x_Mode
2640                                                          100 - 2x_Recovery
2641                                                          200 - 4x_Mode
2642                                                          All others are reserved */
2643 #else
2644         uint32_t init_sm                      : 10;
2645         uint32_t rx_rdy                       : 1;
2646         uint32_t tx_rdy                       : 1;
2647         uint32_t reserved_12_31               : 20;
2648 #endif
2649         } s;
2650         struct cvmx_sriomaintx_ir_pi_phy_stat_s cn63xx;
2651         struct cvmx_sriomaintx_ir_pi_phy_stat_cn63xxp1 {
2652 #ifdef __BIG_ENDIAN_BITFIELD
2653         uint32_t reserved_10_31               : 22;
2654         uint32_t init_sm                      : 10; /**< Initialization State Machine
2655                                                          001 - Silent
2656                                                          002 - Seek
2657                                                          004 - Discovery
2658                                                          008 - 1x_Mode_Lane0
2659                                                          010 - 1x_Mode_Lane1
2660                                                          020 - 1x_Mode_Lane2
2661                                                          040 - 1x_Recovery
2662                                                          080 - 2x_Mode
2663                                                          100 - 2x_Recovery
2664                                                          200 - 4x_Mode
2665                                                          All others are reserved */
2666 #else
2667         uint32_t init_sm                      : 10;
2668         uint32_t reserved_10_31               : 22;
2669 #endif
2670         } cn63xxp1;
2671         struct cvmx_sriomaintx_ir_pi_phy_stat_s cn66xx;
2672 };
2673 typedef union cvmx_sriomaintx_ir_pi_phy_stat cvmx_sriomaintx_ir_pi_phy_stat_t;
2674
2675 /**
2676  * cvmx_sriomaint#_ir_sp_rx_ctrl
2677  *
2678  * SRIOMAINT_IR_SP_RX_CTRL = SRIO Soft Packet FIFO Receive Control
2679  *
2680  * Soft Packet FIFO Receive Control
2681  *
2682  * Notes:
2683  * This register is used to configure events generated by the reception of packets using the soft
2684  * packet FIFO.
2685  *
2686  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_SP_RX_CTRL hclk    hrst_n
2687  */
2688 union cvmx_sriomaintx_ir_sp_rx_ctrl {
2689         uint32_t u32;
2690         struct cvmx_sriomaintx_ir_sp_rx_ctrl_s {
2691 #ifdef __BIG_ENDIAN_BITFIELD
2692         uint32_t reserved_1_31                : 31;
2693         uint32_t overwrt                      : 1;  /**< When clear, SRIO drops received packets that should
2694                                                          enter the soft packet FIFO when the FIFO is full.
2695                                                          In this case, SRIO also increments
2696                                                          SRIOMAINT(0,2..3)_IR_SP_RX_STAT.DROP_CNT. When set, SRIO
2697                                                          stalls received packets that should enter the soft
2698                                                          packet FIFO when the FIFO is full. SRIO may stop
2699                                                          receiving any packets in this stall case if
2700                                                          software does not drain the receive soft packet
2701                                                          FIFO. */
2702 #else
2703         uint32_t overwrt                      : 1;
2704         uint32_t reserved_1_31                : 31;
2705 #endif
2706         } s;
2707         struct cvmx_sriomaintx_ir_sp_rx_ctrl_s cn63xx;
2708         struct cvmx_sriomaintx_ir_sp_rx_ctrl_s cn63xxp1;
2709         struct cvmx_sriomaintx_ir_sp_rx_ctrl_s cn66xx;
2710 };
2711 typedef union cvmx_sriomaintx_ir_sp_rx_ctrl cvmx_sriomaintx_ir_sp_rx_ctrl_t;
2712
2713 /**
2714  * cvmx_sriomaint#_ir_sp_rx_data
2715  *
2716  * SRIOMAINT_IR_SP_RX_DATA = SRIO Soft Packet FIFO Receive Data
2717  *
2718  * Soft Packet FIFO Receive Data
2719  *
2720  * Notes:
2721  * This register is used to read data from the soft packet FIFO.  The Soft Packet FIFO contains the
2722  *  majority of the packet data received from the SRIO link.  The packet does not include the Control
2723  *  Symbols or the initial byte containing AckId, 2 Reserved Bits and the CRF.  In the case of packets
2724  *  with less than 80 bytes (including AckId byte) both the trailing CRC and Pad (if present) are
2725  *  included in the FIFO and Octet Count.  In the case of a packet with exactly 80 bytes (including
2726  *  the AckId byte) the CRC is removed and the Pad is maintained so the Octet Count will read 81 bytes
2727  *  instead of the expected 83.  In cases over 80 bytes the CRC at 80 bytes is removed but the
2728  *  trailing CRC and Pad (if necessary) are present.
2729  *
2730  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_SP_RX_DATA hclk    hrst_n
2731  */
2732 union cvmx_sriomaintx_ir_sp_rx_data {
2733         uint32_t u32;
2734         struct cvmx_sriomaintx_ir_sp_rx_data_s {
2735 #ifdef __BIG_ENDIAN_BITFIELD
2736         uint32_t pkt_data                     : 32; /**< This register is used to read packet data from the
2737                                                          RX FIFO. */
2738 #else
2739         uint32_t pkt_data                     : 32;
2740 #endif
2741         } s;
2742         struct cvmx_sriomaintx_ir_sp_rx_data_s cn63xx;
2743         struct cvmx_sriomaintx_ir_sp_rx_data_s cn63xxp1;
2744         struct cvmx_sriomaintx_ir_sp_rx_data_s cn66xx;
2745 };
2746 typedef union cvmx_sriomaintx_ir_sp_rx_data cvmx_sriomaintx_ir_sp_rx_data_t;
2747
2748 /**
2749  * cvmx_sriomaint#_ir_sp_rx_stat
2750  *
2751  * SRIOMAINT_IR_SP_RX_STAT = SRIO Soft Packet FIFO Receive Status
2752  *
2753  * Soft Packet FIFO Receive Status
2754  *
2755  * Notes:
2756  * This register is used to monitor the reception of packets using the soft packet FIFO.
2757  *  The HW sets SRIO_INT_REG[SOFT_RX] every time a packet arrives in the soft packet FIFO. To read
2758  *  out (one or more) packets, the following procedure may be best:
2759  *       (1) clear SRIO_INT_REG[SOFT_RX],
2760  *       (2) read this CSR to determine how many packets there are,
2761  *       (3) read the packets out (via SRIOMAINT*_IR_SP_RX_DATA).
2762  *  This procedure could lead to situations where SOFT_RX will be set even though there are currently
2763  *  no packets - the SW interrupt handler would need to properly handle this case
2764  *
2765  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_SP_RX_STAT hclk    hrst_n
2766  */
2767 union cvmx_sriomaintx_ir_sp_rx_stat {
2768         uint32_t u32;
2769         struct cvmx_sriomaintx_ir_sp_rx_stat_s {
2770 #ifdef __BIG_ENDIAN_BITFIELD
2771         uint32_t octets                       : 16; /**< This field shows how many octets are remaining
2772                                                          in the current packet in the RX FIFO. */
2773         uint32_t buffers                      : 4;  /**< This field indicates how many complete packets are
2774                                                          stored in the Rx FIFO. */
2775         uint32_t drop_cnt                     : 7;  /**< Number of Packets Received when the RX FIFO was
2776                                                          full and then discarded. */
2777         uint32_t full                         : 1;  /**< This bit is set when the value of Buffers Filled
2778                                                          equals the number of available reception buffers. */
2779         uint32_t fifo_st                      : 4;  /**< These bits display the state of the state machine
2780                                                          that controls loading of packet data into the RX
2781                                                          FIFO. The enumeration of states are as follows:
2782                                                            0000 - Idle
2783                                                            0001 - Armed
2784                                                            0010 - Active
2785                                                            All other states are reserved. */
2786 #else
2787         uint32_t fifo_st                      : 4;
2788         uint32_t full                         : 1;
2789         uint32_t drop_cnt                     : 7;
2790         uint32_t buffers                      : 4;
2791         uint32_t octets                       : 16;
2792 #endif
2793         } s;
2794         struct cvmx_sriomaintx_ir_sp_rx_stat_s cn63xx;
2795         struct cvmx_sriomaintx_ir_sp_rx_stat_cn63xxp1 {
2796 #ifdef __BIG_ENDIAN_BITFIELD
2797         uint32_t octets                       : 16; /**< This field shows how many octets are remaining
2798                                                          in the current packet in the RX FIFO. */
2799         uint32_t buffers                      : 4;  /**< This field indicates how many complete packets are
2800                                                          stored in the Rx FIFO. */
2801         uint32_t reserved_5_11                : 7;
2802         uint32_t full                         : 1;  /**< This bit is set when the value of Buffers Filled
2803                                                          equals the number of available reception buffers.
2804                                                          This bit always reads zero in Pass 1 */
2805         uint32_t fifo_st                      : 4;  /**< These bits display the state of the state machine
2806                                                          that controls loading of packet data into the RX
2807                                                          FIFO. The enumeration of states are as follows:
2808                                                            0000 - Idle
2809                                                            0001 - Armed
2810                                                            0010 - Active
2811                                                            All other states are reserved. */
2812 #else
2813         uint32_t fifo_st                      : 4;
2814         uint32_t full                         : 1;
2815         uint32_t reserved_5_11                : 7;
2816         uint32_t buffers                      : 4;
2817         uint32_t octets                       : 16;
2818 #endif
2819         } cn63xxp1;
2820         struct cvmx_sriomaintx_ir_sp_rx_stat_s cn66xx;
2821 };
2822 typedef union cvmx_sriomaintx_ir_sp_rx_stat cvmx_sriomaintx_ir_sp_rx_stat_t;
2823
2824 /**
2825  * cvmx_sriomaint#_ir_sp_tx_ctrl
2826  *
2827  * SRIOMAINT_IR_SP_TX_CTRL = SRIO Soft Packet FIFO Transmit Control
2828  *
2829  * Soft Packet FIFO Transmit Control
2830  *
2831  * Notes:
2832  * This register is used to configure and control the transmission of packets using the soft packet
2833  *  FIFO.
2834  *
2835  * Clk_Rst:        SRIOMAINT_IR_SP_TX_CTRL hclk    hrst_n
2836  */
2837 union cvmx_sriomaintx_ir_sp_tx_ctrl {
2838         uint32_t u32;
2839         struct cvmx_sriomaintx_ir_sp_tx_ctrl_s {
2840 #ifdef __BIG_ENDIAN_BITFIELD
2841         uint32_t octets                       : 16; /**< Writing a non-zero value (N) to this field arms
2842                                                          the packet FIFO for packet transmission. The FIFO
2843                                                          control logic will transmit the next N bytes
2844                                                          written 4-bytes at a time to the
2845                                                          SRIOMAINT(0,2..3)_IR_SP_TX_DATA Register and create a
2846                                                          single RapidIO packet. */
2847         uint32_t reserved_0_15                : 16;
2848 #else
2849         uint32_t reserved_0_15                : 16;
2850         uint32_t octets                       : 16;
2851 #endif
2852         } s;
2853         struct cvmx_sriomaintx_ir_sp_tx_ctrl_s cn63xx;
2854         struct cvmx_sriomaintx_ir_sp_tx_ctrl_s cn63xxp1;
2855         struct cvmx_sriomaintx_ir_sp_tx_ctrl_s cn66xx;
2856 };
2857 typedef union cvmx_sriomaintx_ir_sp_tx_ctrl cvmx_sriomaintx_ir_sp_tx_ctrl_t;
2858
2859 /**
2860  * cvmx_sriomaint#_ir_sp_tx_data
2861  *
2862  * SRIOMAINT_IR_SP_TX_DATA = SRIO Soft Packet FIFO Transmit Data
2863  *
2864  * Soft Packet FIFO Transmit Data
2865  *
2866  * Notes:
2867  * This register is used to write data to the soft packet FIFO.  The format of the packet follows the
2868  * Internal Packet Format (add link here).  Care must be taken on creating TIDs for the packets which
2869  * generate a response.  Bits [7:6] of the 8 bit TID must be set for all Soft Packet FIFO generated
2870  * packets.  TID values of 0x00 - 0xBF are reserved for hardware generated Tags.  The remainer of the
2871  * TID[5:0] must be unique for each packet in flight and cannot be reused until a response is received
2872  * in the SRIOMAINT(0,2..3)_IR_SP_RX_DATA register.
2873  *
2874  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_SP_TX_DATA hclk    hrst_n
2875  */
2876 union cvmx_sriomaintx_ir_sp_tx_data {
2877         uint32_t u32;
2878         struct cvmx_sriomaintx_ir_sp_tx_data_s {
2879 #ifdef __BIG_ENDIAN_BITFIELD
2880         uint32_t pkt_data                     : 32; /**< This register is used to write packet data to the
2881                                                          Tx FIFO. Reads of this register will return zero. */
2882 #else
2883         uint32_t pkt_data                     : 32;
2884 #endif
2885         } s;
2886         struct cvmx_sriomaintx_ir_sp_tx_data_s cn63xx;
2887         struct cvmx_sriomaintx_ir_sp_tx_data_s cn63xxp1;
2888         struct cvmx_sriomaintx_ir_sp_tx_data_s cn66xx;
2889 };
2890 typedef union cvmx_sriomaintx_ir_sp_tx_data cvmx_sriomaintx_ir_sp_tx_data_t;
2891
2892 /**
2893  * cvmx_sriomaint#_ir_sp_tx_stat
2894  *
2895  * SRIOMAINT_IR_SP_TX_STAT = SRIO Soft Packet FIFO Transmit Status
2896  *
2897  * Soft Packet FIFO Transmit Status
2898  *
2899  * Notes:
2900  * This register is used to monitor the transmission of packets using the soft packet FIFO.
2901  *
2902  * Clk_Rst:        SRIOMAINT(0,2..3)_IR_SP_TX_STAT hclk    hrst_n
2903  */
2904 union cvmx_sriomaintx_ir_sp_tx_stat {
2905         uint32_t u32;
2906         struct cvmx_sriomaintx_ir_sp_tx_stat_s {
2907 #ifdef __BIG_ENDIAN_BITFIELD
2908         uint32_t octets                       : 16; /**< This field shows how many octets are still to be
2909                                                          loaded in the current packet. */
2910         uint32_t buffers                      : 4;  /**< This field indicates how many complete packets are
2911                                                          stored in the Tx FIFO.  The field always reads
2912                                                          zero in the current hardware. */
2913         uint32_t reserved_5_11                : 7;
2914         uint32_t full                         : 1;  /**< This bit is set when the value of Buffers Filled
2915                                                          equals the number of available transmission
2916                                                          buffers. */
2917         uint32_t fifo_st                      : 4;  /**< These bits display the state of the state machine
2918                                                          that controls loading of packet data into the TX
2919                                                          FIFO. The enumeration of states are as follows:
2920                                                            0000 - Idle
2921                                                            0001 - Armed
2922                                                            0010 - Active
2923                                                            All other states are reserved. */
2924 #else
2925         uint32_t fifo_st                      : 4;
2926         uint32_t full                         : 1;
2927         uint32_t reserved_5_11                : 7;
2928         uint32_t buffers                      : 4;
2929         uint32_t octets                       : 16;
2930 #endif
2931         } s;
2932         struct cvmx_sriomaintx_ir_sp_tx_stat_s cn63xx;
2933         struct cvmx_sriomaintx_ir_sp_tx_stat_s cn63xxp1;
2934         struct cvmx_sriomaintx_ir_sp_tx_stat_s cn66xx;
2935 };
2936 typedef union cvmx_sriomaintx_ir_sp_tx_stat cvmx_sriomaintx_ir_sp_tx_stat_t;
2937
2938 /**
2939  * cvmx_sriomaint#_lane_#_status_0
2940  *
2941  * SRIOMAINT_LANE_X_STATUS_0 = SRIO Lane X Status 0
2942  *
2943  * SRIO Lane Status 0
2944  *
2945  * Notes:
2946  * This register contains status information about the local lane transceiver.
2947  *
2948  * Clk_Rst:        SRIOMAINT(0,2..3)_LANE_[0:3]_STATUS_0   hclk    hrst_n
2949  */
2950 union cvmx_sriomaintx_lane_x_status_0 {
2951         uint32_t u32;
2952         struct cvmx_sriomaintx_lane_x_status_0_s {
2953 #ifdef __BIG_ENDIAN_BITFIELD
2954         uint32_t port                         : 8;  /**< The number of the port within the device to which
2955                                                          the lane is assigned. */
2956         uint32_t lane                         : 4;  /**< Lane Number within the port. */
2957         uint32_t tx_type                      : 1;  /**< Transmitter Type
2958                                                          0 = Short Run
2959                                                          1 = Long Run */
2960         uint32_t tx_mode                      : 1;  /**< Transmitter Operating Mode
2961                                                          0 = Short Run
2962                                                          1 = Long Run */
2963         uint32_t rx_type                      : 2;  /**< Receiver Type
2964                                                          0 = Short Run
2965                                                          1 = Medium Run
2966                                                          2 = Long Run
2967                                                          3 = Reserved */
2968         uint32_t rx_inv                       : 1;  /**< Receiver Input Inverted
2969                                                          0 = No Inversion
2970                                                          1 = Input Inverted */
2971         uint32_t rx_adapt                     : 1;  /**< Receiver Trained
2972                                                          0 = One or more adaptive equalizers are
2973                                                              controlled by the lane receiver and at least
2974                                                              one is not trained.
2975                                                          1 = The lane receiver controls no adaptive
2976                                                              equalizers or all the equalizers are trained. */
2977         uint32_t rx_sync                      : 1;  /**< Receiver Lane Sync'd */
2978         uint32_t rx_train                     : 1;  /**< Receiver Lane Trained */
2979         uint32_t dec_err                      : 4;  /**< 8Bit/10Bit Decoding Errors
2980                                                          0    = No Errors since last read
2981                                                          1-14 = Number of Errors since last read
2982                                                          15   = Fifteen or more Errors since last read */
2983         uint32_t xsync                        : 1;  /**< Receiver Lane Sync Change
2984                                                          0 = Lane Sync has not changed since last read
2985                                                          1 = Lane Sync has changed since last read */
2986         uint32_t xtrain                       : 1;  /**< Receiver Training Change
2987                                                          0 = Training has not changed since last read
2988                                                          1 = Training has changed since last read */
2989         uint32_t reserved_4_5                 : 2;
2990         uint32_t status1                      : 1;  /**< Status 1 CSR Implemented */
2991         uint32_t statusn                      : 3;  /**< Status 2-7 Not Implemented */
2992 #else
2993         uint32_t statusn                      : 3;
2994         uint32_t status1                      : 1;
2995         uint32_t reserved_4_5                 : 2;
2996         uint32_t xtrain                       : 1;
2997         uint32_t xsync                        : 1;
2998         uint32_t dec_err                      : 4;
2999         uint32_t rx_train                     : 1;
3000         uint32_t rx_sync                      : 1;
3001         uint32_t rx_adapt                     : 1;
3002         uint32_t rx_inv                       : 1;
3003         uint32_t rx_type                      : 2;
3004         uint32_t tx_mode                      : 1;
3005         uint32_t tx_type                      : 1;
3006         uint32_t lane                         : 4;
3007         uint32_t port                         : 8;
3008 #endif
3009         } s;
3010         struct cvmx_sriomaintx_lane_x_status_0_s cn63xx;
3011         struct cvmx_sriomaintx_lane_x_status_0_s cn63xxp1;
3012         struct cvmx_sriomaintx_lane_x_status_0_s cn66xx;
3013 };
3014 typedef union cvmx_sriomaintx_lane_x_status_0 cvmx_sriomaintx_lane_x_status_0_t;
3015
3016 /**
3017  * cvmx_sriomaint#_lcs_ba0
3018  *
3019  * SRIOMAINT_LCS_BA0 = SRIO Local Configuration Space MSB Base Address
3020  *
3021  * MSBs of SRIO Address Space mapped to Maintenance BAR.
3022  *
3023  * Notes:
3024  * The double word aligned SRIO address window mapped to the SRIO Maintenance BAR.  This window has
3025  *  the highest priority and eclipses matches to the BAR0, BAR1 and BAR2 windows.  Note:  Address bits
3026  *  not supplied in the transfer are considered zero.  For example, SRIO Address 65:35 must be set to
3027  *  zero to match in a 34-bit access.  SRIO Address 65:50 must be set to zero to match in a 50-bit
3028  *  access.  This coding allows the Maintenance Bar window to appear in specific address spaces. The
3029  *  remaining bits are located in SRIOMAINT(0,2..3)_LCS_BA1. This SRIO maintenance BAR is effectively
3030  *  disabled when LCSBA[30] is set with 34 or 50-bit addressing.
3031  *
3032  * Clk_Rst:        SRIOMAINT(0,2..3)_LCS_BA0       hclk    hrst_n
3033  */
3034 union cvmx_sriomaintx_lcs_ba0 {
3035         uint32_t u32;
3036         struct cvmx_sriomaintx_lcs_ba0_s {
3037 #ifdef __BIG_ENDIAN_BITFIELD
3038         uint32_t reserved_31_31               : 1;
3039         uint32_t lcsba                        : 31; /**< SRIO Address 65:35 */
3040 #else
3041         uint32_t lcsba                        : 31;
3042         uint32_t reserved_31_31               : 1;
3043 #endif
3044         } s;
3045         struct cvmx_sriomaintx_lcs_ba0_s      cn63xx;
3046         struct cvmx_sriomaintx_lcs_ba0_s      cn63xxp1;
3047         struct cvmx_sriomaintx_lcs_ba0_s      cn66xx;
3048 };
3049 typedef union cvmx_sriomaintx_lcs_ba0 cvmx_sriomaintx_lcs_ba0_t;
3050
3051 /**
3052  * cvmx_sriomaint#_lcs_ba1
3053  *
3054  * SRIOMAINT_LCS_BA1 = SRIO Local Configuration Space LSB Base Address
3055  *
3056  * LSBs of SRIO Address Space mapped to Maintenance BAR.
3057  *
3058  * Notes:
3059  * The double word aligned SRIO address window mapped to the SRIO Maintenance BAR.  This window has
3060  *  the highest priority and eclipses matches to the BAR0, BAR1 and BAR2 windows. Address bits not
3061  *  supplied in the transfer are considered zero.  For example, SRIO Address 65:35 must be set to zero
3062  *  to match in a 34-bit access and SRIO Address 65:50 must be set to zero to match in a 50-bit access.
3063  *  This coding allows the Maintenance Bar window to appear in specific address spaces. Accesses
3064  *  through this BAR are limited to single word (32-bit) aligned transfers of one to four bytes.
3065  *  Accesses which violate this rule will return an error response if possible and be otherwise
3066  *  ignored.  The remaining bits are located in SRIOMAINT(0,2..3)_LCS_BA0.
3067  *
3068  * Clk_Rst:        SRIOMAINT(0,2..3)_LCS_BA1       hclk    hrst_n
3069  */
3070 union cvmx_sriomaintx_lcs_ba1 {
3071         uint32_t u32;
3072         struct cvmx_sriomaintx_lcs_ba1_s {
3073 #ifdef __BIG_ENDIAN_BITFIELD
3074         uint32_t lcsba                        : 11; /**< SRIO Address 34:24 */
3075         uint32_t reserved_0_20                : 21;
3076 #else
3077         uint32_t reserved_0_20                : 21;
3078         uint32_t lcsba                        : 11;
3079 #endif
3080         } s;
3081         struct cvmx_sriomaintx_lcs_ba1_s      cn63xx;
3082         struct cvmx_sriomaintx_lcs_ba1_s      cn63xxp1;
3083         struct cvmx_sriomaintx_lcs_ba1_s      cn66xx;
3084 };
3085 typedef union cvmx_sriomaintx_lcs_ba1 cvmx_sriomaintx_lcs_ba1_t;
3086
3087 /**
3088  * cvmx_sriomaint#_m2s_bar0_start0
3089  *
3090  * SRIOMAINT_M2S_BAR0_START0 = SRIO Device Access BAR0 MSB Start
3091  *
3092  * The starting SRIO address to forwarded to the NPEI Configuration Space.
3093  *
3094  * Notes:
3095  * This register specifies the 50-bit and 66-bit SRIO Address mapped to the BAR0 Space.  See
3096  *  SRIOMAINT(0,2..3)_M2S_BAR0_START1 for more details. This register is only writeable over SRIO if the
3097  *  SRIO(0,2..3)_ACC_CTRL.DENY_BAR0 bit is zero.
3098  *
3099  * Clk_Rst:        SRIOMAINT(0,2..3)_M2S_BAR0_START0       hclk    hrst_n
3100  */
3101 union cvmx_sriomaintx_m2s_bar0_start0 {
3102         uint32_t u32;
3103         struct cvmx_sriomaintx_m2s_bar0_start0_s {
3104 #ifdef __BIG_ENDIAN_BITFIELD
3105         uint32_t addr64                       : 16; /**< SRIO Address 63:48 */
3106         uint32_t addr48                       : 16; /**< SRIO Address 47:32 */
3107 #else
3108         uint32_t addr48                       : 16;
3109         uint32_t addr64                       : 16;
3110 #endif
3111         } s;
3112         struct cvmx_sriomaintx_m2s_bar0_start0_s cn63xx;
3113         struct cvmx_sriomaintx_m2s_bar0_start0_s cn63xxp1;
3114         struct cvmx_sriomaintx_m2s_bar0_start0_s cn66xx;
3115 };
3116 typedef union cvmx_sriomaintx_m2s_bar0_start0 cvmx_sriomaintx_m2s_bar0_start0_t;
3117
3118 /**
3119  * cvmx_sriomaint#_m2s_bar0_start1
3120  *
3121  * SRIOMAINT_M2S_BAR0_START1 = SRIO Device Access BAR0 LSB Start
3122  *
3123  * The starting SRIO address to forwarded to the NPEI Configuration Space.
3124  *
3125  * Notes:
3126  * This register specifies the SRIO Address mapped to the BAR0 RSL Space.  If the transaction has not
3127  *  already been mapped to SRIO Maintenance Space through the SRIOMAINT_LCS_BA[1:0] registers, if
3128  *  ENABLE is set and the address bits match then the SRIO Memory transactions will map to Octeon SLI
3129  *  Registers.  34-bit address transactions require a match in SRIO Address 33:14 and require all the
3130  *  other bits in ADDR48, ADDR64 and ADDR66 fields to be zero.  50-bit address transactions a match of
3131  *  SRIO Address 49:14 and require all the other bits of ADDR64 and ADDR66 to be zero.  66-bit address
3132  *  transactions require matches of all valid address field bits.  Reads and  Writes through Bar0
3133  *  have a size limit of 8 bytes and cannot cross a 64-bit boundry.  All accesses with sizes greater
3134  *  than this limit will be ignored and return an error on any SRIO responses.  Note: ADDR48 and
3135  *  ADDR64 fields are located in SRIOMAINT(0,2..3)_M2S_BAR0_START0.  The ADDR32/66 fields of this register
3136  *  are writeable over SRIO if the SRIO(0,2..3)_ACC_CTRL.DENY_ADR0 bit is zero.  The ENABLE field is
3137  *  writeable over SRIO if the SRIO(0,2..3)_ACC_CTRL.DENY_BAR0 bit is zero.
3138  *
3139  * Clk_Rst:        SRIOMAINT(0,2..3)_M2S_BAR0_START1       hclk    hrst_n
3140  */
3141 union cvmx_sriomaintx_m2s_bar0_start1 {
3142         uint32_t u32;
3143         struct cvmx_sriomaintx_m2s_bar0_start1_s {
3144 #ifdef __BIG_ENDIAN_BITFIELD
3145         uint32_t addr32                       : 18; /**< SRIO Address 31:14 */
3146         uint32_t reserved_3_13                : 11;
3147         uint32_t addr66                       : 2;  /**< SRIO Address 65:64 */
3148         uint32_t enable                       : 1;  /**< Enable BAR0 Access */
3149 #else
3150         uint32_t enable                       : 1;
3151         uint32_t addr66                       : 2;
3152         uint32_t reserved_3_13                : 11;
3153         uint32_t addr32                       : 18;
3154 #endif
3155         } s;
3156         struct cvmx_sriomaintx_m2s_bar0_start1_s cn63xx;
3157         struct cvmx_sriomaintx_m2s_bar0_start1_s cn63xxp1;
3158         struct cvmx_sriomaintx_m2s_bar0_start1_s cn66xx;
3159 };
3160 typedef union cvmx_sriomaintx_m2s_bar0_start1 cvmx_sriomaintx_m2s_bar0_start1_t;
3161
3162 /**
3163  * cvmx_sriomaint#_m2s_bar1_start0
3164  *
3165  * SRIOMAINT_M2S_BAR1_START0 = SRIO Device Access BAR1 MSB Start
3166  *
3167  * The starting SRIO address to forwarded to the BAR1 Memory Space.
3168  *
3169  * Notes:
3170  * This register specifies the 50-bit and 66-bit SRIO Address mapped to the BAR1 Space.  See
3171  *  SRIOMAINT(0,2..3)_M2S_BAR1_START1 for more details.  This register is only writeable over SRIO if the
3172  *  SRIO(0,2..3)_ACC_CTRL.DENY_ADR1 bit is zero.
3173  *
3174  * Clk_Rst:        SRIOMAINT(0,2..3)_M2S_BAR1_START0       hclk    hrst_n
3175  */
3176 union cvmx_sriomaintx_m2s_bar1_start0 {
3177         uint32_t u32;
3178         struct cvmx_sriomaintx_m2s_bar1_start0_s {
3179 #ifdef __BIG_ENDIAN_BITFIELD
3180         uint32_t addr64                       : 16; /**< SRIO Address 63:48 */
3181         uint32_t addr48                       : 16; /**< SRIO Address 47:32
3182                                                          The SRIO hardware does not use the low order
3183                                                          one or two bits of this field when BARSIZE is 12
3184                                                          or 13, respectively.
3185                                                          (BARSIZE is SRIOMAINT(0,2..3)_M2S_BAR1_START1[BARSIZE].) */
3186 #else
3187         uint32_t addr48                       : 16;
3188         uint32_t addr64                       : 16;
3189 #endif
3190         } s;
3191         struct cvmx_sriomaintx_m2s_bar1_start0_s cn63xx;
3192         struct cvmx_sriomaintx_m2s_bar1_start0_s cn63xxp1;
3193         struct cvmx_sriomaintx_m2s_bar1_start0_s cn66xx;
3194 };
3195 typedef union cvmx_sriomaintx_m2s_bar1_start0 cvmx_sriomaintx_m2s_bar1_start0_t;
3196
3197 /**
3198  * cvmx_sriomaint#_m2s_bar1_start1
3199  *
3200  * SRIOMAINT_M2S_BAR1_START1 = SRIO Device to BAR1 Start
3201  *
3202  * The starting SRIO address to forwarded to the BAR1 Memory Space.
3203  *
3204  * Notes:
3205  * This register specifies the SRIO Address mapped to the BAR1 Space.  If the transaction has not
3206  *  already been mapped to SRIO Maintenance Space through the SRIOMAINT_LCS_BA[1:0] registers and the
3207  *  address bits do not match enabled BAR0 addresses and if ENABLE is set and the addresses match the
3208  *  BAR1 addresses then SRIO Memory transactions will map to Octeon Memory Space specified by
3209  *  SRIOMAINT(0,2..3)_BAR1_IDX[31:0] registers.  The BARSIZE field determines the size of BAR1, the entry
3210  *  select bits, and the size of each entry. A 34-bit address matches BAR1 when it matches
3211  *  SRIO_Address[33:20+BARSIZE] while all the other bits in ADDR48, ADDR64 and ADDR66 are zero.
3212  *  A 50-bit address matches BAR1 when it matches SRIO_Address[49:20+BARSIZE] while all the
3213  *  other bits of ADDR64 and ADDR66 are zero.  A 66-bit address matches BAR1 when all of
3214  *  SRIO_Address[65:20+BARSIZE] match all corresponding address CSR field bits.  Note: ADDR48 and
3215  *  ADDR64 fields are located in SRIOMAINT(0,2..3)_M2S_BAR1_START0. The ADDR32/66 fields of this register
3216  *  are writeable over SRIO if the SRIO(0,2..3)_ACC_CTRL.DENY_ADR1 bit is zero.  The remaining fields are
3217  *  writeable over SRIO if the SRIO(0,2..3)_ACC_CTRL.DENY_BAR1 bit is zero.
3218  *
3219  * Clk_Rst:        SRIOMAINT(0,2..3)_M2S_BAR1_START1       hclk    hrst_n
3220  */
3221 union cvmx_sriomaintx_m2s_bar1_start1 {
3222         uint32_t u32;
3223         struct cvmx_sriomaintx_m2s_bar1_start1_s {
3224 #ifdef __BIG_ENDIAN_BITFIELD
3225         uint32_t addr32                       : 12; /**< SRIO Address 31:20
3226                                                          This field is not used by the SRIO hardware for
3227                                                          BARSIZE values 12 or 13.
3228                                                          With BARSIZE < 12, the upper 12-BARSIZE
3229                                                          bits of this field are used, and the lower BARSIZE
3230                                                          bits of this field are unused by the SRIO hardware. */
3231         uint32_t reserved_7_19                : 13;
3232         uint32_t barsize                      : 4;  /**< Bar Size.
3233                                                                               SRIO_Address*
3234                                                                          ---------------------
3235                                                                         /                     \
3236                                                          BARSIZE         BAR     Entry   Entry    Entry
3237                                                          Value   BAR    compare  Select  Offset   Size
3238                                                                  Size    bits    bits    bits
3239                                                           0       1MB    65:20   19:16   15:0     64KB
3240                                                           1       2MB    65:21   20:17   16:0    128KB
3241                                                           2       4MB    65:22   21:18   17:0    256KB
3242                                                           3       8MB    65:23   22:19   18:0    512KB
3243                                                           4      16MB    65:24   23:20   19:0      1MB
3244                                                           5      32MB    65:25   24:21   20:0      2MB
3245                                                           6      64MB    65:26   25:22   21:0      4MB
3246                                                           7     128MB    65:27   26:23   22:0      8MB
3247                                                           8     256MB    65:28   27:24   23:0     16MB
3248                                                           9     512MB    65:29   28:25   24:0     32MB
3249                                                          10    1024MB    65:30   29:26   25:0     64MB
3250                                                          11    2048MB    65:31   30:27   26:0    128MB
3251                                                          12    4096MB    65:32   31:28   27:0    256MB
3252                                                          13    8192MB    65:33   32:29   28:0    512MB
3253
3254                                                          *The SRIO Transaction Address
3255                                                          The entry select bits is the X that  select an
3256                                                          SRIOMAINT(0,2..3)_BAR1_IDXX entry. */
3257         uint32_t addr66                       : 2;  /**< SRIO Address 65:64 */
3258         uint32_t enable                       : 1;  /**< Enable BAR1 Access */
3259 #else
3260         uint32_t enable                       : 1;
3261         uint32_t addr66                       : 2;
3262         uint32_t barsize                      : 4;
3263         uint32_t reserved_7_19                : 13;
3264         uint32_t addr32                       : 12;
3265 #endif
3266         } s;
3267         struct cvmx_sriomaintx_m2s_bar1_start1_s cn63xx;
3268         struct cvmx_sriomaintx_m2s_bar1_start1_cn63xxp1 {
3269 #ifdef __BIG_ENDIAN_BITFIELD
3270         uint32_t addr32                       : 12; /**< SRIO Address 31:20
3271                                                          With BARSIZE < 12, the upper 12-BARSIZE
3272                                                          bits of this field are used, and the lower BARSIZE
3273                                                          bits of this field are unused by the SRIO hardware. */
3274         uint32_t reserved_6_19                : 14;
3275         uint32_t barsize                      : 3;  /**< Bar Size.
3276                                                                               SRIO_Address*
3277                                                                          ---------------------
3278                                                                         /                     \
3279                                                          BARSIZE         BAR     Entry   Entry    Entry
3280                                                          Value   BAR    compare  Select  Offset   Size
3281                                                                  Size    bits    bits    bits
3282                                                           0       1MB    65:20   19:16   15:0     64KB
3283                                                           1       2MB    65:21   20:17   16:0    128KB
3284                                                           2       4MB    65:22   21:18   17:0    256KB
3285                                                           3       8MB    65:23   22:19   18:0    512KB
3286                                                           4      16MB    65:24   23:20   19:0      1MB
3287                                                           5      32MB    65:25   24:21   20:0      2MB
3288                                                           6      64MB    65:26   25:22   21:0      4MB
3289                                                           7     128MB    65:27   26:23   22:0      8MB
3290                                                           8     256MB  ** not in pass 1
3291                                                           9     512MB  ** not in pass 1
3292                                                          10       1GB  ** not in pass 1
3293                                                          11       2GB  ** not in pass 1
3294                                                          12       4GB  ** not in pass 1
3295                                                          13       8GB  ** not in pass 1
3296
3297                                                          *The SRIO Transaction Address
3298                                                          The entry select bits is the X that  select an
3299                                                          SRIOMAINT(0..1)_BAR1_IDXX entry.
3300
3301                                                          In O63 pass 2, BARSIZE is 4 bits (6:3 in this
3302                                                          CSR), and BARSIZE values 8-13 are implemented,
3303                                                          providing a total possible BAR1 size range from
3304                                                          1MB up to 8GB. */
3305         uint32_t addr66                       : 2;  /**< SRIO Address 65:64 */
3306         uint32_t enable                       : 1;  /**< Enable BAR1 Access */
3307 #else
3308         uint32_t enable                       : 1;
3309         uint32_t addr66                       : 2;
3310         uint32_t barsize                      : 3;
3311         uint32_t reserved_6_19                : 14;
3312         uint32_t addr32                       : 12;
3313 #endif
3314         } cn63xxp1;
3315         struct cvmx_sriomaintx_m2s_bar1_start1_s cn66xx;
3316 };
3317 typedef union cvmx_sriomaintx_m2s_bar1_start1 cvmx_sriomaintx_m2s_bar1_start1_t;
3318
3319 /**
3320  * cvmx_sriomaint#_m2s_bar2_start
3321  *
3322  * SRIOMAINT_M2S_BAR2_START = SRIO Device to BAR2 Start
3323  *
3324  * The starting SRIO address to forwarded to the BAR2 Memory Space.
3325  *
3326  * Notes:
3327  * This register specifies the SRIO Address mapped to the BAR2 Space.  If ENABLE is set and the
3328  *  address bits do not match and other enabled BAR address and match the BAR2 addresses then the SRIO
3329  *  Memory transactions will map to Octeon BAR2 Memory Space.  34-bit address transactions require
3330  *  ADDR66, ADDR64 and ADDR48 fields set to zero and supplies zeros for unused addresses 40:34.
3331  *  50-bit address transactions a match of SRIO Address 49:41 and require all the other bits of ADDR64
3332  *  and ADDR66 to be zero.  66-bit address transactions require matches of all valid address field
3333  *  bits.  The ADDR32/48/64/66 fields of this register are writeable over SRIO if the
3334  *  SRIO(0,2..3)_ACC_CTRL.DENY_ADR2 bit is zero.  The remaining fields are writeable over SRIO if the
3335  *  SRIO(0,2..3)_ACC_CTRL.DENY_BAR2 bit is zero.
3336  *
3337  * Clk_Rst:        SRIOMAINT(0,2..3)_M2S_BAR2_START        hclk    hrst_n
3338  */
3339 union cvmx_sriomaintx_m2s_bar2_start {
3340         uint32_t u32;
3341         struct cvmx_sriomaintx_m2s_bar2_start_s {
3342 #ifdef __BIG_ENDIAN_BITFIELD
3343         uint32_t addr64                       : 16; /**< SRIO Address 63:48 */
3344         uint32_t addr48                       : 7;  /**< SRIO Address 47:41 */
3345         uint32_t reserved_6_8                 : 3;
3346         uint32_t esx                          : 2;  /**< Endian Swap Mode used for SRIO 34-bit access.
3347                                                          For 50/66-bit assesses Endian Swap is determine
3348                                                          by ESX XOR'd with SRIO Addr 39:38.
3349                                                          0 = No Swap
3350                                                          1 = 64-bit Swap Bytes [ABCD_EFGH] -> [HGFE_DCBA]
3351                                                          2 = 32-bit Swap Words [ABCD_EFGH] -> [DCBA_HGFE]
3352                                                          3 = 32-bit Word Exch  [ABCD_EFGH] -> [EFGH_ABCD] */
3353         uint32_t cax                          : 1;  /**< Cacheable Access Mode.  When set transfer is
3354                                                          cached.  This bit is used for SRIO 34-bit access.
3355                                                          For 50/66-bit accessas NCA is determine by CAX
3356                                                          XOR'd with SRIO Addr 40. */
3357         uint32_t addr66                       : 2;  /**< SRIO Address 65:64 */
3358         uint32_t enable                       : 1;  /**< Enable BAR2 Access */
3359 #else
3360         uint32_t enable                       : 1;
3361         uint32_t addr66                       : 2;
3362         uint32_t cax                          : 1;
3363         uint32_t esx                          : 2;
3364         uint32_t reserved_6_8                 : 3;
3365         uint32_t addr48                       : 7;
3366         uint32_t addr64                       : 16;
3367 #endif
3368         } s;
3369         struct cvmx_sriomaintx_m2s_bar2_start_s cn63xx;
3370         struct cvmx_sriomaintx_m2s_bar2_start_s cn63xxp1;
3371         struct cvmx_sriomaintx_m2s_bar2_start_s cn66xx;
3372 };
3373 typedef union cvmx_sriomaintx_m2s_bar2_start cvmx_sriomaintx_m2s_bar2_start_t;
3374
3375 /**
3376  * cvmx_sriomaint#_mac_ctrl
3377  *
3378  * SRIOMAINT_MAC_CTRL = SRIO MAC Control
3379  *
3380  * Control for MAC Features
3381  *
3382  * Notes:
3383  * This register enables MAC optimizations that may not be supported by all SRIO devices.  The
3384  *  default values should be supported.  This register can be changed at any time while the MAC is
3385  *  out of reset.
3386  *
3387  * Clk_Rst:        SRIOMAINT(0,2..3)_MAC_CTRL      hclk    hrst_n
3388  */
3389 union cvmx_sriomaintx_mac_ctrl {
3390         uint32_t u32;
3391         struct cvmx_sriomaintx_mac_ctrl_s {
3392 #ifdef __BIG_ENDIAN_BITFIELD
3393         uint32_t reserved_21_31               : 11;
3394         uint32_t sec_spf                      : 1;  /**< Send all Incoming Packets matching Secondary ID to
3395                                                          RX Soft Packet FIFO.  This bit is ignored if
3396                                                          RX_SPF is set. */
3397         uint32_t ack_zero                     : 1;  /**< Generate ACKs for all incoming Zero Byte packets.
3398                                                          Default behavior is to issue a NACK.  Regardless
3399                                                          of this setting the SRIO(0,2..3)_INT_REG.ZERO_PKT
3400                                                          interrupt is generated.
3401                                                          SRIO(0,2..3)_INT_REG. */
3402         uint32_t rx_spf                       : 1;  /**< Route all received packets to RX Soft Packet FIFO.
3403                                                          No logical layer ERB Errors will be reported.
3404                                                          Used for Diagnostics Only. */
3405         uint32_t eop_mrg                      : 1;  /**< Transmitted Packets can eliminate EOP Symbol on
3406                                                          back to back packets. */
3407         uint32_t type_mrg                     : 1;  /**< Allow STYPE Merging on Transmit. */
3408         uint32_t lnk_rtry                     : 16; /**< Number of times MAC will reissue Link Request
3409                                                          after timeout.  If retry count is exceeded Fatal
3410                                                          Port Error will occur (see SRIO(0,2..3)_INT_REG.F_ERROR) */
3411 #else
3412         uint32_t lnk_rtry                     : 16;
3413         uint32_t type_mrg                     : 1;
3414         uint32_t eop_mrg                      : 1;
3415         uint32_t rx_spf                       : 1;
3416         uint32_t ack_zero                     : 1;
3417         uint32_t sec_spf                      : 1;
3418         uint32_t reserved_21_31               : 11;
3419 #endif
3420         } s;
3421         struct cvmx_sriomaintx_mac_ctrl_cn63xx {
3422 #ifdef __BIG_ENDIAN_BITFIELD
3423         uint32_t reserved_20_31               : 12;
3424         uint32_t ack_zero                     : 1;  /**< Generate ACKs for all incoming Zero Byte packets.
3425                                                          Default behavior is to issue a NACK.  Regardless
3426                                                          of this setting the SRIO(0..1)_INT_REG.ZERO_PKT
3427                                                          interrupt is generated.
3428                                                          SRIO(0..1)_INT_REG. */
3429         uint32_t rx_spf                       : 1;  /**< Route all received packets to RX Soft Packet FIFO.
3430                                                          No logical layer ERB Errors will be reported.
3431                                                          Used for Diagnostics Only. */
3432         uint32_t eop_mrg                      : 1;  /**< Transmitted Packets can eliminate EOP Symbol on
3433                                                          back to back packets. */
3434         uint32_t type_mrg                     : 1;  /**< Allow STYPE Merging on Transmit. */
3435         uint32_t lnk_rtry                     : 16; /**< Number of times MAC will reissue Link Request
3436                                                          after timeout.  If retry count is exceeded Fatal
3437                                                          Port Error will occur (see SRIO(0..1)_INT_REG.F_ERROR) */
3438 #else
3439         uint32_t lnk_rtry                     : 16;
3440         uint32_t type_mrg                     : 1;
3441         uint32_t eop_mrg                      : 1;
3442         uint32_t rx_spf                       : 1;
3443         uint32_t ack_zero                     : 1;
3444         uint32_t reserved_20_31               : 12;
3445 #endif
3446         } cn63xx;
3447         struct cvmx_sriomaintx_mac_ctrl_s     cn66xx;
3448 };
3449 typedef union cvmx_sriomaintx_mac_ctrl cvmx_sriomaintx_mac_ctrl_t;
3450
3451 /**
3452  * cvmx_sriomaint#_pe_feat
3453  *
3454  * SRIOMAINT_PE_FEAT = SRIO Processing Element Features
3455  *
3456  * The Supported Processing Element Features.
3457  *
3458  * Notes:
3459  * The Processing Element Feature register describes the major functionality provided by the SRIO
3460  *  device.
3461  *
3462  * Clk_Rst:        SRIOMAINT(0,2..3)_PE_FEAT       hclk    hrst_n
3463  */
3464 union cvmx_sriomaintx_pe_feat {
3465         uint32_t u32;
3466         struct cvmx_sriomaintx_pe_feat_s {
3467 #ifdef __BIG_ENDIAN_BITFIELD
3468         uint32_t bridge                       : 1;  /**< Bridge Functions not supported. */
3469         uint32_t memory                       : 1;  /**< PE contains addressable memory. */
3470         uint32_t proc                         : 1;  /**< PE contains a local processor. */
3471         uint32_t switchf                      : 1;  /**< Switch Functions not supported. */
3472         uint32_t mult_prt                     : 1;  /**< Multiport Functions not supported. */
3473         uint32_t reserved_7_26                : 20;
3474         uint32_t suppress                     : 1;  /**< Error Recovery Suppression not supported. */
3475         uint32_t crf                          : 1;  /**< Critical Request Flow not supported. */
3476         uint32_t lg_tran                      : 1;  /**< Large Transport (16-bit Device IDs) supported. */
3477         uint32_t ex_feat                      : 1;  /**< Extended Feature Pointer is valid. */
3478         uint32_t ex_addr                      : 3;  /**< PE supports 66, 50 and 34-bit addresses.
3479                                                          [2:1] are a RO copy of SRIO*_IP_FEATURE[A66,A50]. */
3480 #else
3481         uint32_t ex_addr                      : 3;
3482         uint32_t ex_feat                      : 1;
3483         uint32_t lg_tran                      : 1;
3484         uint32_t crf                          : 1;
3485         uint32_t suppress                     : 1;
3486         uint32_t reserved_7_26                : 20;
3487         uint32_t mult_prt                     : 1;
3488         uint32_t switchf                      : 1;
3489         uint32_t proc                         : 1;
3490         uint32_t memory                       : 1;
3491         uint32_t bridge                       : 1;
3492 #endif
3493         } s;
3494         struct cvmx_sriomaintx_pe_feat_s      cn63xx;
3495         struct cvmx_sriomaintx_pe_feat_s      cn63xxp1;
3496         struct cvmx_sriomaintx_pe_feat_s      cn66xx;
3497 };
3498 typedef union cvmx_sriomaintx_pe_feat cvmx_sriomaintx_pe_feat_t;
3499
3500 /**
3501  * cvmx_sriomaint#_pe_llc
3502  *
3503  * SRIOMAINT_PE_LLC = SRIO Processing Element Logical Layer Control
3504  *
3505  * Addresses supported by the SRIO Device.
3506  *
3507  * Notes:
3508  * The Processing Element Logical Layer is used for general configuration for the logical interface.
3509  *
3510  * Clk_Rst:        SRIOMAINT(0,2..3)_PE_LLC        hclk    hrst_n
3511  */
3512 union cvmx_sriomaintx_pe_llc {
3513         uint32_t u32;
3514         struct cvmx_sriomaintx_pe_llc_s {
3515 #ifdef __BIG_ENDIAN_BITFIELD
3516         uint32_t reserved_3_31                : 29;
3517         uint32_t ex_addr                      : 3;  /**< Controls the number of address bits generated by
3518                                                          PE as a source and processed by the PE as a
3519                                                          target of an operation.
3520                                                           001 = 34-bit Addresses
3521                                                           010 = 50-bit Addresses
3522                                                           100 = 66-bit Addresses
3523                                                           All other encodings are reserved. */
3524 #else
3525         uint32_t ex_addr                      : 3;
3526         uint32_t reserved_3_31                : 29;
3527 #endif
3528         } s;
3529         struct cvmx_sriomaintx_pe_llc_s       cn63xx;
3530         struct cvmx_sriomaintx_pe_llc_s       cn63xxp1;
3531         struct cvmx_sriomaintx_pe_llc_s       cn66xx;
3532 };
3533 typedef union cvmx_sriomaintx_pe_llc cvmx_sriomaintx_pe_llc_t;
3534
3535 /**
3536  * cvmx_sriomaint#_port_0_ctl
3537  *
3538  * SRIOMAINT_PORT_0_CTL = SRIO Port 0 Control
3539  *
3540  * Port 0 Control
3541  *
3542  * Notes:
3543  * This register contains assorted control bits.
3544  *
3545  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_0_CTL    hclk    hrst_n
3546  */
3547 union cvmx_sriomaintx_port_0_ctl {
3548         uint32_t u32;
3549         struct cvmx_sriomaintx_port_0_ctl_s {
3550 #ifdef __BIG_ENDIAN_BITFIELD
3551         uint32_t pt_width                     : 2;  /**< Hardware Port Width.
3552                                                          00 = One Lane supported.
3553                                                          01 = One/Four Lanes supported.
3554                                                          10 = One/Two Lanes supported.
3555                                                          11 = One/Two/Four Lanes supported.
3556                                                          This value is a copy of SRIO*_IP_FEATURE[PT_WIDTH]
3557                                                          limited by the number of lanes the MAC has. */
3558         uint32_t it_width                     : 3;  /**< Initialized Port Width
3559                                                          000 = Single-lane, Lane 0
3560                                                          001 = Single-lane, Lane 1 or 2
3561                                                          010 = Four-lane
3562                                                          011 = Two-lane
3563                                                          111 = Link Uninitialized
3564                                                          Others = Reserved */
3565         uint32_t ov_width                     : 3;  /**< Override Port Width.  Writing this register causes
3566                                                          the port to reinitialize.
3567                                                          000 = No Override all lanes possible
3568                                                          001 = Reserved
3569                                                          010 = Force Single-lane, Lane 0
3570                                                                If Ln 0 is unavailable try Ln 2 then Ln 1
3571                                                          011 = Force Single-lane, Lane 2
3572                                                                If Ln 2 is unavailable try Ln 1 then Ln 0
3573                                                          100 = Reserved
3574                                                          101 = Enable Two-lane, Disable Four-Lane
3575                                                          110 = Enable Four-lane, Disable Two-Lane
3576                                                          111 = All lanes sizes enabled */
3577         uint32_t disable                      : 1;  /**< Port Disable.  Setting this bit disables both
3578                                                          drivers and receivers. */
3579         uint32_t o_enable                     : 1;  /**< Port Output Enable.  When cleared, port will
3580                                                          generate control symbols and respond to
3581                                                          maintenance transactions only.  When set, all
3582                                                          transactions are allowed. */
3583         uint32_t i_enable                     : 1;  /**< Port Input Enable.  When cleared, port will
3584                                                          generate control symbols and respond to
3585                                                          maintenance packets only.  All other packets will
3586                                                          not be accepted. */
3587         uint32_t dis_err                      : 1;  /**< Disable Error Checking.  Diagnostic Only. */
3588         uint32_t mcast                        : 1;  /**< Reserved. */
3589         uint32_t reserved_18_18               : 1;
3590         uint32_t enumb                        : 1;  /**< Enumeration Boundry. SW can use this bit to
3591                                                          determine port enumeration. */
3592         uint32_t reserved_16_16               : 1;
3593         uint32_t ex_width                     : 2;  /**< Extended Port Width not supported. */
3594         uint32_t ex_stat                      : 2;  /**< Extended Port Width Status. 00 = not supported */
3595         uint32_t suppress                     : 8;  /**< Retransmit Suppression Mask.  CRF not Supported. */
3596         uint32_t stp_port                     : 1;  /**< Stop on Failed Port.  This bit is used with the
3597                                                          DROP_PKT bit to force certain behavior when the
3598                                                          Error Rate Failed Threshold has been met or
3599                                                          exceeded. */
3600         uint32_t drop_pkt                     : 1;  /**< Drop on Failed Port.  This bit is used with the
3601                                                          STP_PORT bit to force certain behavior when the
3602                                                          Error Rate Failed Threshold has been met or
3603                                                          exceeded. */
3604         uint32_t prt_lock                     : 1;  /**< When this bit is cleared, the packets that may be
3605                                                          received and issued are controlled by the state of
3606                                                          the O_ENABLE and I_ENABLE bits.  When this bit is
3607                                                          set, this port is stopped and is not enabled to
3608                                                          issue or receive any packets; the input port can
3609                                                          still follow the training procedure and can still
3610                                                          send and respond to link-requests; all received
3611                                                          packets return packet-not-accepted control symbols
3612                                                          to force an error condition to be signaled by the
3613                                                          sending device. */
3614         uint32_t pt_type                      : 1;  /**< Port Type.  1 = Serial port. */
3615 #else
3616         uint32_t pt_type                      : 1;
3617         uint32_t prt_lock                     : 1;
3618         uint32_t drop_pkt                     : 1;
3619         uint32_t stp_port                     : 1;
3620         uint32_t suppress                     : 8;
3621         uint32_t ex_stat                      : 2;
3622         uint32_t ex_width                     : 2;
3623         uint32_t reserved_16_16               : 1;
3624         uint32_t enumb                        : 1;
3625         uint32_t reserved_18_18               : 1;
3626         uint32_t mcast                        : 1;
3627         uint32_t dis_err                      : 1;
3628         uint32_t i_enable                     : 1;
3629         uint32_t o_enable                     : 1;
3630         uint32_t disable                      : 1;
3631         uint32_t ov_width                     : 3;
3632         uint32_t it_width                     : 3;
3633         uint32_t pt_width                     : 2;
3634 #endif
3635         } s;
3636         struct cvmx_sriomaintx_port_0_ctl_s   cn63xx;
3637         struct cvmx_sriomaintx_port_0_ctl_s   cn63xxp1;
3638         struct cvmx_sriomaintx_port_0_ctl_s   cn66xx;
3639 };
3640 typedef union cvmx_sriomaintx_port_0_ctl cvmx_sriomaintx_port_0_ctl_t;
3641
3642 /**
3643  * cvmx_sriomaint#_port_0_ctl2
3644  *
3645  * SRIOMAINT_PORT_0_CTL2 = SRIO Port 0 Control 2
3646  *
3647  * Port 0 Control 2
3648  *
3649  * Notes:
3650  * These registers are accessed when a local processor or an external device wishes to examine the
3651  *  port baudrate information.  The Automatic Baud Rate Feature is not available on this device.  The
3652  *  SUP_* and ENB_* fields are set directly by the QLM_SPD bits as a reference but otherwise have
3653  *  no effect.  WARNING:  Writes to this register will reinitialize the SRIO link.
3654  *
3655  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_0_CTL2   hclk    hrst_n
3656  */
3657 union cvmx_sriomaintx_port_0_ctl2 {
3658         uint32_t u32;
3659         struct cvmx_sriomaintx_port_0_ctl2_s {
3660 #ifdef __BIG_ENDIAN_BITFIELD
3661         uint32_t sel_baud                     : 4;  /**< Link Baud Rate Selected.
3662                                                            0000 - No rate selected
3663                                                            0001 - 1.25 GBaud
3664                                                            0010 - 2.5 GBaud
3665                                                            0011 - 3.125 GBaud
3666                                                            0100 - 5.0 GBaud
3667                                                            0101 - 6.25 GBaud (reserved)
3668                                                            0110 - 0b1111 - Reserved
3669                                                          Indicates the speed of the interface SERDES lanes
3670                                                          (selected by the QLM*_SPD straps). */
3671         uint32_t baud_sup                     : 1;  /**< Automatic Baud Rate Discovery not supported. */
3672         uint32_t baud_enb                     : 1;  /**< Auto Baud Rate Discovery Enable. */
3673         uint32_t sup_125g                     : 1;  /**< 1.25GB Rate Operation supported.
3674                                                          Set when the interface SERDES lanes are operating
3675                                                          at 1.25 Gbaud (as selected by QLM*_SPD straps). */
3676         uint32_t enb_125g                     : 1;  /**< 1.25GB Rate Operation enable.
3677                                                          Reset to 1 when the interface SERDES lanes are
3678                                                          operating at 1.25 Gbaud (as selected by QLM*_SPD
3679                                                          straps). Reset to 0 otherwise. */
3680         uint32_t sup_250g                     : 1;  /**< 2.50GB Rate Operation supported.
3681                                                          Set when the interface SERDES lanes are operating
3682                                                          at 2.5 Gbaud (as selected by QLM*_SPD straps). */
3683         uint32_t enb_250g                     : 1;  /**< 2.50GB Rate Operation enable.
3684                                                          Reset to 1 when the interface SERDES lanes are
3685                                                          operating at 2.5 Gbaud (as selected by QLM*_SPD
3686                                                          straps). Reset to 0 otherwise. */
3687         uint32_t sup_312g                     : 1;  /**< 3.125GB Rate Operation supported.
3688                                                          Set when the interface SERDES lanes are operating
3689                                                          at 3.125 Gbaud (as selected by QLM*_SPD straps). */
3690         uint32_t enb_312g                     : 1;  /**< 3.125GB Rate Operation enable.
3691                                                          Reset to 1 when the interface SERDES lanes are
3692                                                          operating at 3.125 Gbaud (as selected by QLM*_SPD
3693                                                          straps). Reset to 0 otherwise. */
3694         uint32_t sub_500g                     : 1;  /**< 5.0GB Rate Operation supported.
3695                                                          Set when the interface SERDES lanes are operating
3696                                                          at 5.0 Gbaud (as selected by QLM*_SPD straps). */
3697         uint32_t enb_500g                     : 1;  /**< 5.0GB Rate Operation enable.
3698                                                          Reset to 1 when the interface SERDES lanes are
3699                                                          operating at 5.0 Gbaud (as selected by QLM*_SPD
3700                                                          straps). Reset to 0 otherwise. */
3701         uint32_t sup_625g                     : 1;  /**< 6.25GB Rate Operation (not supported). */
3702         uint32_t enb_625g                     : 1;  /**< 6.25GB Rate Operation enable. */
3703         uint32_t reserved_2_15                : 14;
3704         uint32_t tx_emph                      : 1;  /**< Indicates whether is port is able to transmit
3705                                                          commands to control the transmit emphasis in the
3706                                                          connected port. */
3707         uint32_t emph_en                      : 1;  /**< Controls whether a port may adjust the
3708                                                          transmit emphasis in the connected port.  This bit
3709                                                          should be cleared for normal operation. */
3710 #else
3711         uint32_t emph_en                      : 1;
3712         uint32_t tx_emph                      : 1;
3713         uint32_t reserved_2_15                : 14;
3714         uint32_t enb_625g                     : 1;
3715         uint32_t sup_625g                     : 1;
3716         uint32_t enb_500g                     : 1;
3717         uint32_t sub_500g                     : 1;
3718         uint32_t enb_312g                     : 1;
3719         uint32_t sup_312g                     : 1;
3720         uint32_t enb_250g                     : 1;
3721         uint32_t sup_250g                     : 1;
3722         uint32_t enb_125g                     : 1;
3723         uint32_t sup_125g                     : 1;
3724         uint32_t baud_enb                     : 1;
3725         uint32_t baud_sup                     : 1;
3726         uint32_t sel_baud                     : 4;
3727 #endif
3728         } s;
3729         struct cvmx_sriomaintx_port_0_ctl2_s  cn63xx;
3730         struct cvmx_sriomaintx_port_0_ctl2_s  cn63xxp1;
3731         struct cvmx_sriomaintx_port_0_ctl2_s  cn66xx;
3732 };
3733 typedef union cvmx_sriomaintx_port_0_ctl2 cvmx_sriomaintx_port_0_ctl2_t;
3734
3735 /**
3736  * cvmx_sriomaint#_port_0_err_stat
3737  *
3738  * SRIOMAINT_PORT_0_ERR_STAT = SRIO Port 0 Error and Status
3739  *
3740  * Port 0 Error and Status
3741  *
3742  * Notes:
3743  * This register displays port error and status information.  Several port error conditions are
3744  *  captured here and must be cleared by writing 1's to the individual bits.
3745  *  Bits are R/W on 65/66xx pass 1 and R/W1C on pass 1.2
3746  *
3747  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_0_ERR_STAT       hclk    hrst_n
3748  */
3749 union cvmx_sriomaintx_port_0_err_stat {
3750         uint32_t u32;
3751         struct cvmx_sriomaintx_port_0_err_stat_s {
3752 #ifdef __BIG_ENDIAN_BITFIELD
3753         uint32_t reserved_27_31               : 5;
3754         uint32_t pkt_drop                     : 1;  /**< Output Packet Dropped. */
3755         uint32_t o_fail                       : 1;  /**< Output Port has encountered a failure condition,
3756                                                          meaning the port's failed error threshold has
3757                                                          reached SRIOMAINT(0,2..3)_ERB_ERR_RATE_THR.ER_FAIL value. */
3758         uint32_t o_dgrad                      : 1;  /**< Output Port has encountered a degraded condition,
3759                                                          meaning the port's degraded threshold has
3760                                                          reached SRIOMAINT(0,2..3)_ERB_ERR_RATE_THR.ER_DGRAD
3761                                                          value. */
3762         uint32_t reserved_21_23               : 3;
3763         uint32_t o_retry                      : 1;  /**< Output Retry Encountered.  This bit is set when
3764                                                          bit 18 is set. */
3765         uint32_t o_rtried                     : 1;  /**< Output Port has received a packet-retry condition
3766                                                          and cannot make forward progress.  This bit is set
3767                                                          when  bit 18 is set and is cleared when a packet-
3768                                                          accepted or a packet-not-accepted control symbol
3769                                                          is received. */
3770         uint32_t o_sm_ret                     : 1;  /**< Output Port State Machine has received a
3771                                                          packet-retry control symbol and is retrying the
3772                                                          packet. */
3773         uint32_t o_error                      : 1;  /**< Output Error Encountered and possibly recovered
3774                                                          from.  This sticky bit is set with bit 16. */
3775         uint32_t o_sm_err                     : 1;  /**< Output Port State Machine has encountered an
3776                                                          error. */
3777         uint32_t reserved_11_15               : 5;
3778         uint32_t i_sm_ret                     : 1;  /**< Input Port State Machine has received a
3779                                                          packet-retry control symbol and is retrying the
3780                                                          packet. */
3781         uint32_t i_error                      : 1;  /**< Input Error Encountered and possibly recovered
3782                                                          from.  This sticky bit is set with bit 8. */
3783         uint32_t i_sm_err                     : 1;  /**< Input Port State Machine has encountered an
3784                                                          error. */
3785         uint32_t reserved_5_7                 : 3;
3786         uint32_t pt_write                     : 1;  /**< Port has encountered a condition which required it
3787                                                          initiate a Maintenance Port-Write Operation.
3788                                                          Never set by hardware. */
3789         uint32_t reserved_3_3                 : 1;
3790         uint32_t pt_error                     : 1;  /**< Input or Output Port has encountered an
3791                                                          unrecoverable error condition. */
3792         uint32_t pt_ok                        : 1;  /**< Input or Output Port are intitialized and the port
3793                                                          is exchanging error free control symbols with
3794                                                          attached device. */
3795         uint32_t pt_uinit                     : 1;  /**< Port is uninitialized.  This bit and bit 1 are
3796                                                          mutually exclusive. */
3797 #else
3798         uint32_t pt_uinit                     : 1;
3799         uint32_t pt_ok                        : 1;
3800         uint32_t pt_error                     : 1;
3801         uint32_t reserved_3_3                 : 1;
3802         uint32_t pt_write                     : 1;
3803         uint32_t reserved_5_7                 : 3;
3804         uint32_t i_sm_err                     : 1;
3805         uint32_t i_error                      : 1;
3806         uint32_t i_sm_ret                     : 1;
3807         uint32_t reserved_11_15               : 5;
3808         uint32_t o_sm_err                     : 1;
3809         uint32_t o_error                      : 1;
3810         uint32_t o_sm_ret                     : 1;
3811         uint32_t o_rtried                     : 1;
3812         uint32_t o_retry                      : 1;
3813         uint32_t reserved_21_23               : 3;
3814         uint32_t o_dgrad                      : 1;
3815         uint32_t o_fail                       : 1;
3816         uint32_t pkt_drop                     : 1;
3817         uint32_t reserved_27_31               : 5;
3818 #endif
3819         } s;
3820         struct cvmx_sriomaintx_port_0_err_stat_s cn63xx;
3821         struct cvmx_sriomaintx_port_0_err_stat_s cn63xxp1;
3822         struct cvmx_sriomaintx_port_0_err_stat_s cn66xx;
3823 };
3824 typedef union cvmx_sriomaintx_port_0_err_stat cvmx_sriomaintx_port_0_err_stat_t;
3825
3826 /**
3827  * cvmx_sriomaint#_port_0_link_req
3828  *
3829  * SRIOMAINT_PORT_0_LINK_REQ = SRIO Port 0 Link Request
3830  *
3831  * Port 0 Manual Link Request
3832  *
3833  * Notes:
3834  * Writing this register generates the link request symbol or eight device reset symbols.   The
3835  *  progress of the request can be determined by reading SRIOMAINT(0,2..3)_PORT_0_LINK_RESP.  Only a single
3836  *  request should be generated at a time.
3837  *
3838  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_0_LINK_REQ       hclk    hrst_n
3839  */
3840 union cvmx_sriomaintx_port_0_link_req {
3841         uint32_t u32;
3842         struct cvmx_sriomaintx_port_0_link_req_s {
3843 #ifdef __BIG_ENDIAN_BITFIELD
3844         uint32_t reserved_3_31                : 29;
3845         uint32_t cmd                          : 3;  /**< Link Request Command.
3846                                                          011 - Reset Device
3847                                                          100 - Link Request
3848                                                          All other values reserved. */
3849 #else
3850         uint32_t cmd                          : 3;
3851         uint32_t reserved_3_31                : 29;
3852 #endif
3853         } s;
3854         struct cvmx_sriomaintx_port_0_link_req_s cn63xx;
3855         struct cvmx_sriomaintx_port_0_link_req_s cn66xx;
3856 };
3857 typedef union cvmx_sriomaintx_port_0_link_req cvmx_sriomaintx_port_0_link_req_t;
3858
3859 /**
3860  * cvmx_sriomaint#_port_0_link_resp
3861  *
3862  * SRIOMAINT_PORT_0_LINK_RESP = SRIO Port 0 Link Response
3863  *
3864  * Port 0 Manual Link Response
3865  *
3866  * Notes:
3867  * This register only returns responses generated by writes to SRIOMAINT(0,2..3)_PORT_0_LINK_REQ.
3868  *
3869  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_0_LINK_RESP      hclk    hrst_n
3870  */
3871 union cvmx_sriomaintx_port_0_link_resp {
3872         uint32_t u32;
3873         struct cvmx_sriomaintx_port_0_link_resp_s {
3874 #ifdef __BIG_ENDIAN_BITFIELD
3875         uint32_t valid                        : 1;  /**< Link Response Valid.
3876                                                          1 = Link Response Received or Reset Device
3877                                                              Symbols Transmitted.  Value cleared on read.
3878                                                          0 = No response received. */
3879         uint32_t reserved_11_30               : 20;
3880         uint32_t ackid                        : 6;  /**< AckID received from link response.
3881                                                          Reset Device symbol response is always zero.
3882                                                          Bit 10 is used for IDLE2 and always reads zero. */
3883         uint32_t status                       : 5;  /**< Link Response Status.
3884                                                          Status supplied by link response.
3885                                                          Reset Device symbol response is always zero. */
3886 #else
3887         uint32_t status                       : 5;
3888         uint32_t ackid                        : 6;
3889         uint32_t reserved_11_30               : 20;
3890         uint32_t valid                        : 1;
3891 #endif
3892         } s;
3893         struct cvmx_sriomaintx_port_0_link_resp_s cn63xx;
3894         struct cvmx_sriomaintx_port_0_link_resp_s cn66xx;
3895 };
3896 typedef union cvmx_sriomaintx_port_0_link_resp cvmx_sriomaintx_port_0_link_resp_t;
3897
3898 /**
3899  * cvmx_sriomaint#_port_0_local_ackid
3900  *
3901  * SRIOMAINT_PORT_0_LOCAL_ACKID = SRIO Port 0 Local AckID
3902  *
3903  * Port 0 Local AckID Control
3904  *
3905  * Notes:
3906  * This register is typically only written when recovering from a failed link.  It may be read at any
3907  *  time the MAC is out of reset.  Writes to the O_ACKID field will be used for both the O_ACKID and
3908  *  E_ACKID.  Care must be taken to ensure that no packets are pending at the time of a write.  The
3909  *  number of pending packets can be read in the TX_INUSE field of SRIO(0,2..3)_MAC_BUFFERS.
3910  *
3911  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_0_LOCAL_ACKID    hclk    hrst_n
3912  */
3913 union cvmx_sriomaintx_port_0_local_ackid {
3914         uint32_t u32;
3915         struct cvmx_sriomaintx_port_0_local_ackid_s {
3916 #ifdef __BIG_ENDIAN_BITFIELD
3917         uint32_t reserved_30_31               : 2;
3918         uint32_t i_ackid                      : 6;  /**< Next Expected Inbound AckID.
3919                                                          Bit 29 is used for IDLE2 and should be zero. */
3920         uint32_t reserved_14_23               : 10;
3921         uint32_t e_ackid                      : 6;  /**< Next Expected Unacknowledged AckID.
3922                                                          Bit 13 is used for IDLE2 and should be zero. */
3923         uint32_t reserved_6_7                 : 2;
3924         uint32_t o_ackid                      : 6;  /**< Next Outgoing Packet AckID.
3925                                                          Bit 5 is used for IDLE2 and should be zero. */
3926 #else
3927         uint32_t o_ackid                      : 6;
3928         uint32_t reserved_6_7                 : 2;
3929         uint32_t e_ackid                      : 6;
3930         uint32_t reserved_14_23               : 10;
3931         uint32_t i_ackid                      : 6;
3932         uint32_t reserved_30_31               : 2;
3933 #endif
3934         } s;
3935         struct cvmx_sriomaintx_port_0_local_ackid_s cn63xx;
3936         struct cvmx_sriomaintx_port_0_local_ackid_s cn66xx;
3937 };
3938 typedef union cvmx_sriomaintx_port_0_local_ackid cvmx_sriomaintx_port_0_local_ackid_t;
3939
3940 /**
3941  * cvmx_sriomaint#_port_gen_ctl
3942  *
3943  * SRIOMAINT_PORT_GEN_CTL = SRIO Port General Control
3944  *
3945  * Port General Control
3946  *
3947  * Notes:
3948  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_GEN_CTL  hclk    hrst_n
3949  *
3950  */
3951 union cvmx_sriomaintx_port_gen_ctl {
3952         uint32_t u32;
3953         struct cvmx_sriomaintx_port_gen_ctl_s {
3954 #ifdef __BIG_ENDIAN_BITFIELD
3955         uint32_t host                         : 1;  /**< Host Device.
3956                                                          The HOST reset value is based on corresponding
3957                                                          MIO_RST_CTL*[PRTMODE].  HOST resets to 1 when
3958                                                          this field selects RC (i.e. host) mode, else 0. */
3959         uint32_t menable                      : 1;  /**< Master Enable.  Must be set for device to issue
3960                                                          read, write, doorbell, message requests. */
3961         uint32_t discover                     : 1;  /**< Discovered. The device has been discovered by the
3962                                                          host responsible for initialization. */
3963         uint32_t reserved_0_28                : 29;
3964 #else
3965         uint32_t reserved_0_28                : 29;
3966         uint32_t discover                     : 1;
3967         uint32_t menable                      : 1;
3968         uint32_t host                         : 1;
3969 #endif
3970         } s;
3971         struct cvmx_sriomaintx_port_gen_ctl_s cn63xx;
3972         struct cvmx_sriomaintx_port_gen_ctl_s cn63xxp1;
3973         struct cvmx_sriomaintx_port_gen_ctl_s cn66xx;
3974 };
3975 typedef union cvmx_sriomaintx_port_gen_ctl cvmx_sriomaintx_port_gen_ctl_t;
3976
3977 /**
3978  * cvmx_sriomaint#_port_lt_ctl
3979  *
3980  * SRIOMAINT_PORT_LT_CTL = SRIO Link Layer Timeout Control
3981  *
3982  * Link Layer Timeout Control
3983  *
3984  * Notes:
3985  * This register controls the timeout for link layer transactions.  It is used as the timeout between
3986  *  sending a packet (of any type) or link request to receiving the corresponding link acknowledge or
3987  *  link-response.  Each count represents 200ns.  The minimum timeout period is the TIMEOUT x 200nS
3988  *  and the maximum is twice that number.  A value less than 32 may not guarantee that all timeout
3989  *  errors will be reported correctly.  When the timeout period expires the packet or link request is
3990  *  dropped and the error is logged in the LNK_TOUT field of the SRIOMAINT(0,2..3)_ERB_ERR_DET register.  A
3991  *  value of 0 in this register will allow the packet or link request to be issued but it will timeout
3992  *  immediately.  This value is not recommended for normal operation.
3993  *
3994  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_LT_CTL   hclk    hrst_n
3995  */
3996 union cvmx_sriomaintx_port_lt_ctl {
3997         uint32_t u32;
3998         struct cvmx_sriomaintx_port_lt_ctl_s {
3999 #ifdef __BIG_ENDIAN_BITFIELD
4000         uint32_t timeout                      : 24; /**< Timeout Value */
4001         uint32_t reserved_0_7                 : 8;
4002 #else
4003         uint32_t reserved_0_7                 : 8;
4004         uint32_t timeout                      : 24;
4005 #endif
4006         } s;
4007         struct cvmx_sriomaintx_port_lt_ctl_s  cn63xx;
4008         struct cvmx_sriomaintx_port_lt_ctl_s  cn63xxp1;
4009         struct cvmx_sriomaintx_port_lt_ctl_s  cn66xx;
4010 };
4011 typedef union cvmx_sriomaintx_port_lt_ctl cvmx_sriomaintx_port_lt_ctl_t;
4012
4013 /**
4014  * cvmx_sriomaint#_port_mbh0
4015  *
4016  * SRIOMAINT_PORT_MBH0 = SRIO Port Maintenance Block Header 0
4017  *
4018  * Port Maintenance Block Header 0
4019  *
4020  * Notes:
4021  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_MBH0     hclk    hrst_n
4022  *
4023  */
4024 union cvmx_sriomaintx_port_mbh0 {
4025         uint32_t u32;
4026         struct cvmx_sriomaintx_port_mbh0_s {
4027 #ifdef __BIG_ENDIAN_BITFIELD
4028         uint32_t ef_ptr                       : 16; /**< Pointer to Error Management Block. */
4029         uint32_t ef_id                        : 16; /**< Extended Feature ID (Generic Endpoint Device) */
4030 #else
4031         uint32_t ef_id                        : 16;
4032         uint32_t ef_ptr                       : 16;
4033 #endif
4034         } s;
4035         struct cvmx_sriomaintx_port_mbh0_s    cn63xx;
4036         struct cvmx_sriomaintx_port_mbh0_s    cn63xxp1;
4037         struct cvmx_sriomaintx_port_mbh0_s    cn66xx;
4038 };
4039 typedef union cvmx_sriomaintx_port_mbh0 cvmx_sriomaintx_port_mbh0_t;
4040
4041 /**
4042  * cvmx_sriomaint#_port_rt_ctl
4043  *
4044  * SRIOMAINT_PORT_RT_CTL = SRIO Logical Layer Timeout Control
4045  *
4046  * Logical Layer Timeout Control
4047  *
4048  * Notes:
4049  * This register controls the timeout for logical layer transactions.  It is used under two
4050  *  conditions.  First, it is used as the timeout period between sending a packet requiring a packet
4051  *  response being sent to receiving the corresponding response.  This is used for all outgoing packet
4052  *  types including memory, maintenance, doorbells and message operations.  When the timeout period
4053  *  expires the packet is disgarded and the error is logged in the PKT_TOUT field of the
4054  *  SRIOMAINT(0,2..3)_ERB_LT_ERR_DET register.  The second use of this register is as a timeout period
4055  *  between incoming message segments of the same message.  If a message segment is received then the
4056  *  MSG_TOUT field of the SRIOMAINT(0,2..3)_ERB_LT_ERR_DET register is set if the next segment has not been
4057  *  received before the time expires.  In both cases, each count represents 200ns.  The minimum
4058  *  timeout period is the TIMEOUT x 200nS and the maximum is twice that number.  A value less than 32
4059  *  may not guarantee that all timeout errors will be reported correctly.  A value of 0 disables the
4060  *  logical layer timeouts and is not recommended for normal operation.
4061  *
4062  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_RT_CTL   hclk    hrst_n
4063  */
4064 union cvmx_sriomaintx_port_rt_ctl {
4065         uint32_t u32;
4066         struct cvmx_sriomaintx_port_rt_ctl_s {
4067 #ifdef __BIG_ENDIAN_BITFIELD
4068         uint32_t timeout                      : 24; /**< Timeout Value */
4069         uint32_t reserved_0_7                 : 8;
4070 #else
4071         uint32_t reserved_0_7                 : 8;
4072         uint32_t timeout                      : 24;
4073 #endif
4074         } s;
4075         struct cvmx_sriomaintx_port_rt_ctl_s  cn63xx;
4076         struct cvmx_sriomaintx_port_rt_ctl_s  cn63xxp1;
4077         struct cvmx_sriomaintx_port_rt_ctl_s  cn66xx;
4078 };
4079 typedef union cvmx_sriomaintx_port_rt_ctl cvmx_sriomaintx_port_rt_ctl_t;
4080
4081 /**
4082  * cvmx_sriomaint#_port_ttl_ctl
4083  *
4084  * SRIOMAINT_PORT_TTL_CTL = SRIO Packet Time to Live Control
4085  *
4086  * Packet Time to Live
4087  *
4088  * Notes:
4089  * This register controls the timeout for outgoing packets.  It is used to make sure packets are
4090  *  being transmitted and acknowledged within a reasonable period of time.   The timeout value
4091  *  corresponds to TIMEOUT x 200ns and a value of 0 disables the timer.  The actualy value of the
4092  *  should be greater than the physical layer timout specified in SRIOMAINT(0,2..3)_PORT_LT_CTL and is
4093  *  typically a less SRIOMAINT(0,2..3)_PORT_LT_CTL timeout than the response timeout specified in
4094  *  SRIOMAINT(0,2..3)_PORT_RT_CTL.  A second application of this timer is to remove all the packets waiting
4095  *  to be transmitted including those already in flight.  This may necessary in the case of a link
4096  *  going down (see SRIO(0,2..3)_INT_REG.LINK_DWN).  This can accomplished by setting the TIMEOUT to small
4097  *  value all so that all TX packets can be dropped.  In either case, when the timeout expires the TTL
4098  *  interrupt is asserted, any packets currently being transmitted are dropped, the
4099  *  SRIOMAINT(0,2..3)_TX_DROP.DROP bit is set (causing any scheduled packets to be dropped), the
4100  *  SRIOMAINT(0,2..3)_TX_DROP.DROP_CNT is incremented for each packet and the SRIO output state is set to
4101  *  IDLE (all errors are cleared).  Software must clear the SRIOMAINT(0,2..3)_TX_DROP.DROP bit to resume
4102  *  transmitting packets.
4103  *
4104  * Clk_Rst:        SRIOMAINT(0,2..3)_PORT_RT_CTL   hclk    hrst_n
4105  */
4106 union cvmx_sriomaintx_port_ttl_ctl {
4107         uint32_t u32;
4108         struct cvmx_sriomaintx_port_ttl_ctl_s {
4109 #ifdef __BIG_ENDIAN_BITFIELD
4110         uint32_t timeout                      : 24; /**< Timeout Value */
4111         uint32_t reserved_0_7                 : 8;
4112 #else
4113         uint32_t reserved_0_7                 : 8;
4114         uint32_t timeout                      : 24;
4115 #endif
4116         } s;
4117         struct cvmx_sriomaintx_port_ttl_ctl_s cn63xx;
4118         struct cvmx_sriomaintx_port_ttl_ctl_s cn66xx;
4119 };
4120 typedef union cvmx_sriomaintx_port_ttl_ctl cvmx_sriomaintx_port_ttl_ctl_t;
4121
4122 /**
4123  * cvmx_sriomaint#_pri_dev_id
4124  *
4125  * SRIOMAINT_PRI_DEV_ID = SRIO Primary Device ID
4126  *
4127  * Primary 8 and 16 bit Device IDs
4128  *
4129  * Notes:
4130  * This register defines the primary 8 and 16 bit device IDs used for large and small transport.  An
4131  *  optional secondary set of device IDs are located in SRIOMAINT(0,2..3)_SEC_DEV_ID.
4132  *
4133  * Clk_Rst:        SRIOMAINT(0,2..3)_PRI_DEV_ID    hclk    hrst_n
4134  */
4135 union cvmx_sriomaintx_pri_dev_id {
4136         uint32_t u32;
4137         struct cvmx_sriomaintx_pri_dev_id_s {
4138 #ifdef __BIG_ENDIAN_BITFIELD
4139         uint32_t reserved_24_31               : 8;
4140         uint32_t id8                          : 8;  /**< Primary 8-bit Device ID */
4141         uint32_t id16                         : 16; /**< Primary 16-bit Device ID */
4142 #else
4143         uint32_t id16                         : 16;
4144         uint32_t id8                          : 8;
4145         uint32_t reserved_24_31               : 8;
4146 #endif
4147         } s;
4148         struct cvmx_sriomaintx_pri_dev_id_s   cn63xx;
4149         struct cvmx_sriomaintx_pri_dev_id_s   cn63xxp1;
4150         struct cvmx_sriomaintx_pri_dev_id_s   cn66xx;
4151 };
4152 typedef union cvmx_sriomaintx_pri_dev_id cvmx_sriomaintx_pri_dev_id_t;
4153
4154 /**
4155  * cvmx_sriomaint#_sec_dev_ctrl
4156  *
4157  * SRIOMAINT_SEC_DEV_CTRL = SRIO Secondary Device ID Control
4158  *
4159  * Control for Secondary Device IDs
4160  *
4161  * Notes:
4162  * This register enables the secondary 8 and 16 bit device IDs used for large and small transport.
4163  *  The corresponding secondary ID must be written before the ID is enabled.  The secondary IDs should
4164  *  not be enabled if the values of the primary and secondary IDs are identical.
4165  *
4166  * Clk_Rst:        SRIOMAINT(0,2..3)_SEC_DEV_CTRL  hclk    hrst_n
4167  */
4168 union cvmx_sriomaintx_sec_dev_ctrl {
4169         uint32_t u32;
4170         struct cvmx_sriomaintx_sec_dev_ctrl_s {
4171 #ifdef __BIG_ENDIAN_BITFIELD
4172         uint32_t reserved_2_31                : 30;
4173         uint32_t enable8                      : 1;  /**< Enable matches to secondary 8-bit Device ID */
4174         uint32_t enable16                     : 1;  /**< Enable matches to secondary 16-bit Device ID */
4175 #else
4176         uint32_t enable16                     : 1;
4177         uint32_t enable8                      : 1;
4178         uint32_t reserved_2_31                : 30;
4179 #endif
4180         } s;
4181         struct cvmx_sriomaintx_sec_dev_ctrl_s cn63xx;
4182         struct cvmx_sriomaintx_sec_dev_ctrl_s cn63xxp1;
4183         struct cvmx_sriomaintx_sec_dev_ctrl_s cn66xx;
4184 };
4185 typedef union cvmx_sriomaintx_sec_dev_ctrl cvmx_sriomaintx_sec_dev_ctrl_t;
4186
4187 /**
4188  * cvmx_sriomaint#_sec_dev_id
4189  *
4190  * SRIOMAINT_SEC_DEV_ID = SRIO Secondary Device ID
4191  *
4192  * Secondary 8 and 16 bit Device IDs
4193  *
4194  * Notes:
4195  * This register defines the secondary 8 and 16 bit device IDs used for large and small transport.
4196  *  The corresponding secondary ID must be written before the ID is enabled in the
4197  *  SRIOMAINT(0,2..3)_SEC_DEV_CTRL register.  The primary set of device IDs are located in
4198  *  SRIOMAINT(0,2..3)_PRI_DEV_ID register.  The secondary IDs should not be written to the same values as the
4199  *  corresponding primary IDs.
4200  *
4201  * Clk_Rst:        SRIOMAINT(0,2..3)_SEC_DEV_ID    hclk    hrst_n
4202  */
4203 union cvmx_sriomaintx_sec_dev_id {
4204         uint32_t u32;
4205         struct cvmx_sriomaintx_sec_dev_id_s {
4206 #ifdef __BIG_ENDIAN_BITFIELD
4207         uint32_t reserved_24_31               : 8;
4208         uint32_t id8                          : 8;  /**< Secondary 8-bit Device ID */
4209         uint32_t id16                         : 16; /**< Secondary 16-bit Device ID */
4210 #else
4211         uint32_t id16                         : 16;
4212         uint32_t id8                          : 8;
4213         uint32_t reserved_24_31               : 8;
4214 #endif
4215         } s;
4216         struct cvmx_sriomaintx_sec_dev_id_s   cn63xx;
4217         struct cvmx_sriomaintx_sec_dev_id_s   cn63xxp1;
4218         struct cvmx_sriomaintx_sec_dev_id_s   cn66xx;
4219 };
4220 typedef union cvmx_sriomaintx_sec_dev_id cvmx_sriomaintx_sec_dev_id_t;
4221
4222 /**
4223  * cvmx_sriomaint#_serial_lane_hdr
4224  *
4225  * SRIOMAINT_SERIAL_LANE_HDR = SRIO Serial Lane Header
4226  *
4227  * SRIO Serial Lane Header
4228  *
4229  * Notes:
4230  * The error management extensions block header register contains the EF_PTR to the next EF_BLK and
4231  *  the EF_ID that identifies this as the Serial Lane Status Block.
4232  *
4233  * Clk_Rst:        SRIOMAINT(0,2..3)_SERIAL_LANE_HDR       hclk    hrst_n
4234  */
4235 union cvmx_sriomaintx_serial_lane_hdr {
4236         uint32_t u32;
4237         struct cvmx_sriomaintx_serial_lane_hdr_s {
4238 #ifdef __BIG_ENDIAN_BITFIELD
4239         uint32_t ef_ptr                       : 16; /**< Pointer to the next block in the extended features
4240                                                          data structure. */
4241         uint32_t ef_id                        : 16;
4242 #else
4243         uint32_t ef_id                        : 16;
4244         uint32_t ef_ptr                       : 16;
4245 #endif
4246         } s;
4247         struct cvmx_sriomaintx_serial_lane_hdr_s cn63xx;
4248         struct cvmx_sriomaintx_serial_lane_hdr_s cn63xxp1;
4249         struct cvmx_sriomaintx_serial_lane_hdr_s cn66xx;
4250 };
4251 typedef union cvmx_sriomaintx_serial_lane_hdr cvmx_sriomaintx_serial_lane_hdr_t;
4252
4253 /**
4254  * cvmx_sriomaint#_src_ops
4255  *
4256  * SRIOMAINT_SRC_OPS = SRIO Source Operations
4257  *
4258  * The logical operations initiated by the Octeon.
4259  *
4260  * Notes:
4261  * The logical operations initiated by the Cores.   The Source OPs register shows the operations
4262  *  specified in the SRIO(0,2..3)_IP_FEATURE.OPS register.
4263  *
4264  * Clk_Rst:        SRIOMAINT(0,2..3)_SRC_OPS       hclk    hrst_n
4265  */
4266 union cvmx_sriomaintx_src_ops {
4267         uint32_t u32;
4268         struct cvmx_sriomaintx_src_ops_s {
4269 #ifdef __BIG_ENDIAN_BITFIELD
4270         uint32_t gsm_read                     : 1;  /**< PE does not support Read Home operations.
4271                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<31>] */
4272         uint32_t i_read                       : 1;  /**< PE does not support Instruction Read.
4273                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<30>] */
4274         uint32_t rd_own                       : 1;  /**< PE does not support Read for Ownership.
4275                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<29>] */
4276         uint32_t d_invald                     : 1;  /**< PE does not support Data Cache Invalidate.
4277                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<28>] */
4278         uint32_t castout                      : 1;  /**< PE does not support Castout Operations.
4279                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<27>] */
4280         uint32_t d_flush                      : 1;  /**< PE does not support Data Cache Flush.
4281                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<26>] */
4282         uint32_t io_read                      : 1;  /**< PE does not support IO Read.
4283                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<25>] */
4284         uint32_t i_invald                     : 1;  /**< PE does not support Instruction Cache Invalidate.
4285                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<24>] */
4286         uint32_t tlb_inv                      : 1;  /**< PE does not support TLB Entry Invalidate.
4287                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<23>] */
4288         uint32_t tlb_invs                     : 1;  /**< PE does not support TLB Entry Invalidate Sync.
4289                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<22>] */
4290         uint32_t reserved_16_21               : 6;
4291         uint32_t read                         : 1;  /**< PE can support Nread operations.
4292                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<15>] */
4293         uint32_t write                        : 1;  /**< PE can support Nwrite operations.
4294                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<14>] */
4295         uint32_t swrite                       : 1;  /**< PE can support Swrite operations.
4296                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<13>] */
4297         uint32_t write_r                      : 1;  /**< PE can support Write with Response operations.
4298                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<12>] */
4299         uint32_t msg                          : 1;  /**< PE can support Data Message operations.
4300                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<11>] */
4301         uint32_t doorbell                     : 1;  /**< PE can support Doorbell operations.
4302                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<10>] */
4303         uint32_t compswap                     : 1;  /**< PE does not support Atomic Compare and Swap.
4304                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<9>] */
4305         uint32_t testswap                     : 1;  /**< PE does not support Atomic Test and Swap.
4306                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<8>] */
4307         uint32_t atom_inc                     : 1;  /**< PE can support Atomic increment operations.
4308                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<7>] */
4309         uint32_t atom_dec                     : 1;  /**< PE can support Atomic decrement operations.
4310                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<6>] */
4311         uint32_t atom_set                     : 1;  /**< PE can support Atomic set operations.
4312                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<5>] */
4313         uint32_t atom_clr                     : 1;  /**< PE can support Atomic clear operations.
4314                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<4>] */
4315         uint32_t atom_swp                     : 1;  /**< PE does not support Atomic Swap.
4316                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<3>] */
4317         uint32_t port_wr                      : 1;  /**< PE can Port Write operations.
4318                                                          This is a RO copy of SRIO*_IP_FEATURE[OPS<2>] */
4319         uint32_t reserved_0_1                 : 2;
4320 #else
4321         uint32_t reserved_0_1                 : 2;
4322         uint32_t port_wr                      : 1;
4323         uint32_t atom_swp                     : 1;
4324         uint32_t atom_clr                     : 1;
4325         uint32_t atom_set                     : 1;
4326         uint32_t atom_dec                     : 1;
4327         uint32_t atom_inc                     : 1;
4328         uint32_t testswap                     : 1;
4329         uint32_t compswap                     : 1;
4330         uint32_t doorbell                     : 1;
4331         uint32_t msg                          : 1;
4332         uint32_t write_r                      : 1;
4333         uint32_t swrite                       : 1;
4334         uint32_t write                        : 1;
4335         uint32_t read                         : 1;
4336         uint32_t reserved_16_21               : 6;
4337         uint32_t tlb_invs                     : 1;
4338         uint32_t tlb_inv                      : 1;
4339         uint32_t i_invald                     : 1;
4340         uint32_t io_read                      : 1;
4341         uint32_t d_flush                      : 1;
4342         uint32_t castout                      : 1;
4343         uint32_t d_invald                     : 1;
4344         uint32_t rd_own                       : 1;
4345         uint32_t i_read                       : 1;
4346         uint32_t gsm_read                     : 1;
4347 #endif
4348         } s;
4349         struct cvmx_sriomaintx_src_ops_s      cn63xx;
4350         struct cvmx_sriomaintx_src_ops_s      cn63xxp1;
4351         struct cvmx_sriomaintx_src_ops_s      cn66xx;
4352 };
4353 typedef union cvmx_sriomaintx_src_ops cvmx_sriomaintx_src_ops_t;
4354
4355 /**
4356  * cvmx_sriomaint#_tx_drop
4357  *
4358  * SRIOMAINT_TX_DROP = SRIO MAC Outgoing Packet Drop
4359  *
4360  * Outging SRIO Packet Drop Control/Status
4361  *
4362  * Notes:
4363  * This register controls and provides status for dropping outgoing SRIO packets.  The DROP bit
4364  *  should only be cleared when no packets are currently being dropped.  This can be guaranteed by
4365  *  clearing the SRIOMAINT(0,2..3)_PORT_0_CTL.O_ENABLE bit before changing the DROP bit and restoring the
4366  *  O_ENABLE afterwards.
4367  *
4368  * Clk_Rst:        SRIOMAINT(0,2..3)_MAC_CTRL      hclk    hrst_n
4369  */
4370 union cvmx_sriomaintx_tx_drop {
4371         uint32_t u32;
4372         struct cvmx_sriomaintx_tx_drop_s {
4373 #ifdef __BIG_ENDIAN_BITFIELD
4374         uint32_t reserved_17_31               : 15;
4375         uint32_t drop                         : 1;  /**< All outgoing packets are dropped.  Any packets
4376                                                          requiring a response will return 1's after the
4377                                                          SRIOMAINT(0,2..3)_PORT_RT_CTL Timeout expires.  This bit
4378                                                          is set automatically when the TTL Timeout occurs
4379                                                          or can be set by software and must always be
4380                                                          cleared by software. */
4381         uint32_t drop_cnt                     : 16; /**< Number of packets dropped by transmit logic.
4382                                                          Packets are dropped whenever a packet is ready to
4383                                                          be transmitted and a TTL Timeouts occur, the  DROP
4384                                                          bit is set or the SRIOMAINT(0,2..3)_ERB_ERR_RATE_THR
4385                                                          FAIL_TH has been reached and the DROP_PKT bit is
4386                                                          set in SRIOMAINT(0,2..3)_PORT_0_CTL.  This counter wraps
4387                                                          on overflow and is cleared only on reset. */
4388 #else
4389         uint32_t drop_cnt                     : 16;
4390         uint32_t drop                         : 1;
4391         uint32_t reserved_17_31               : 15;
4392 #endif
4393         } s;
4394         struct cvmx_sriomaintx_tx_drop_s      cn63xx;
4395         struct cvmx_sriomaintx_tx_drop_s      cn66xx;
4396 };
4397 typedef union cvmx_sriomaintx_tx_drop cvmx_sriomaintx_tx_drop_t;
4398
4399 #endif