1 /***********************license start***************
2  * Copyright (c) 2003-2012  Cavium Inc. ([email protected]). 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-sli-defs.h
43  *
44  * Configuration and status register (CSR) type definitions for
45  * Octeon sli.
46  *
47  * This file is auto generated. Do not edit.
48  *
49  * <hr>$Revision$<hr>
50  *
51  */
52 #ifndef __CVMX_SLI_DEFS_H__
53 #define __CVMX_SLI_DEFS_H__
54 
55 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56 #define CVMX_SLI_BIST_STATUS CVMX_SLI_BIST_STATUS_FUNC()
CVMX_SLI_BIST_STATUS_FUNC(void)57 static inline uint64_t CVMX_SLI_BIST_STATUS_FUNC(void)
58 {
59 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
60 		cvmx_warn("CVMX_SLI_BIST_STATUS not supported on this chip\n");
61 	return 0x0000000000000580ull;
62 }
63 #else
64 #define CVMX_SLI_BIST_STATUS (0x0000000000000580ull)
65 #endif
66 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_CTL_PORTX(unsigned long offset)67 static inline uint64_t CVMX_SLI_CTL_PORTX(unsigned long offset)
68 {
69 	if (!(
70 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 1))) ||
71 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1))) ||
72 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 3))) ||
73 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1))) ||
74 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 1)))))
75 		cvmx_warn("CVMX_SLI_CTL_PORTX(%lu) is invalid on this chip\n", offset);
76 	return 0x0000000000000050ull + ((offset) & 3) * 16;
77 }
78 #else
79 #define CVMX_SLI_CTL_PORTX(offset) (0x0000000000000050ull + ((offset) & 3) * 16)
80 #endif
81 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
82 #define CVMX_SLI_CTL_STATUS CVMX_SLI_CTL_STATUS_FUNC()
CVMX_SLI_CTL_STATUS_FUNC(void)83 static inline uint64_t CVMX_SLI_CTL_STATUS_FUNC(void)
84 {
85 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
86 		cvmx_warn("CVMX_SLI_CTL_STATUS not supported on this chip\n");
87 	return 0x0000000000000570ull;
88 }
89 #else
90 #define CVMX_SLI_CTL_STATUS (0x0000000000000570ull)
91 #endif
92 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
93 #define CVMX_SLI_DATA_OUT_CNT CVMX_SLI_DATA_OUT_CNT_FUNC()
CVMX_SLI_DATA_OUT_CNT_FUNC(void)94 static inline uint64_t CVMX_SLI_DATA_OUT_CNT_FUNC(void)
95 {
96 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
97 		cvmx_warn("CVMX_SLI_DATA_OUT_CNT not supported on this chip\n");
98 	return 0x00000000000005F0ull;
99 }
100 #else
101 #define CVMX_SLI_DATA_OUT_CNT (0x00000000000005F0ull)
102 #endif
103 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
104 #define CVMX_SLI_DBG_DATA CVMX_SLI_DBG_DATA_FUNC()
CVMX_SLI_DBG_DATA_FUNC(void)105 static inline uint64_t CVMX_SLI_DBG_DATA_FUNC(void)
106 {
107 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
108 		cvmx_warn("CVMX_SLI_DBG_DATA not supported on this chip\n");
109 	return 0x0000000000000310ull;
110 }
111 #else
112 #define CVMX_SLI_DBG_DATA (0x0000000000000310ull)
113 #endif
114 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
115 #define CVMX_SLI_DBG_SELECT CVMX_SLI_DBG_SELECT_FUNC()
CVMX_SLI_DBG_SELECT_FUNC(void)116 static inline uint64_t CVMX_SLI_DBG_SELECT_FUNC(void)
117 {
118 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
119 		cvmx_warn("CVMX_SLI_DBG_SELECT not supported on this chip\n");
120 	return 0x0000000000000300ull;
121 }
122 #else
123 #define CVMX_SLI_DBG_SELECT (0x0000000000000300ull)
124 #endif
125 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_DMAX_CNT(unsigned long offset)126 static inline uint64_t CVMX_SLI_DMAX_CNT(unsigned long offset)
127 {
128 	if (!(
129 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 1))) ||
130 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1))) ||
131 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 1))) ||
132 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1))) ||
133 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 1)))))
134 		cvmx_warn("CVMX_SLI_DMAX_CNT(%lu) is invalid on this chip\n", offset);
135 	return 0x0000000000000400ull + ((offset) & 1) * 16;
136 }
137 #else
138 #define CVMX_SLI_DMAX_CNT(offset) (0x0000000000000400ull + ((offset) & 1) * 16)
139 #endif
140 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_DMAX_INT_LEVEL(unsigned long offset)141 static inline uint64_t CVMX_SLI_DMAX_INT_LEVEL(unsigned long offset)
142 {
143 	if (!(
144 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 1))) ||
145 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1))) ||
146 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 1))) ||
147 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1))) ||
148 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 1)))))
149 		cvmx_warn("CVMX_SLI_DMAX_INT_LEVEL(%lu) is invalid on this chip\n", offset);
150 	return 0x00000000000003E0ull + ((offset) & 1) * 16;
151 }
152 #else
153 #define CVMX_SLI_DMAX_INT_LEVEL(offset) (0x00000000000003E0ull + ((offset) & 1) * 16)
154 #endif
155 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_DMAX_TIM(unsigned long offset)156 static inline uint64_t CVMX_SLI_DMAX_TIM(unsigned long offset)
157 {
158 	if (!(
159 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 1))) ||
160 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1))) ||
161 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 1))) ||
162 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1))) ||
163 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 1)))))
164 		cvmx_warn("CVMX_SLI_DMAX_TIM(%lu) is invalid on this chip\n", offset);
165 	return 0x0000000000000420ull + ((offset) & 1) * 16;
166 }
167 #else
168 #define CVMX_SLI_DMAX_TIM(offset) (0x0000000000000420ull + ((offset) & 1) * 16)
169 #endif
170 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
171 #define CVMX_SLI_INT_ENB_CIU CVMX_SLI_INT_ENB_CIU_FUNC()
CVMX_SLI_INT_ENB_CIU_FUNC(void)172 static inline uint64_t CVMX_SLI_INT_ENB_CIU_FUNC(void)
173 {
174 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
175 		cvmx_warn("CVMX_SLI_INT_ENB_CIU not supported on this chip\n");
176 	return 0x0000000000003CD0ull;
177 }
178 #else
179 #define CVMX_SLI_INT_ENB_CIU (0x0000000000003CD0ull)
180 #endif
181 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_INT_ENB_PORTX(unsigned long offset)182 static inline uint64_t CVMX_SLI_INT_ENB_PORTX(unsigned long offset)
183 {
184 	if (!(
185 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 1))) ||
186 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1))) ||
187 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 1))) ||
188 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1))) ||
189 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 1)))))
190 		cvmx_warn("CVMX_SLI_INT_ENB_PORTX(%lu) is invalid on this chip\n", offset);
191 	return 0x0000000000000340ull + ((offset) & 1) * 16;
192 }
193 #else
194 #define CVMX_SLI_INT_ENB_PORTX(offset) (0x0000000000000340ull + ((offset) & 1) * 16)
195 #endif
196 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
197 #define CVMX_SLI_INT_SUM CVMX_SLI_INT_SUM_FUNC()
CVMX_SLI_INT_SUM_FUNC(void)198 static inline uint64_t CVMX_SLI_INT_SUM_FUNC(void)
199 {
200 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
201 		cvmx_warn("CVMX_SLI_INT_SUM not supported on this chip\n");
202 	return 0x0000000000000330ull;
203 }
204 #else
205 #define CVMX_SLI_INT_SUM (0x0000000000000330ull)
206 #endif
207 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
208 #define CVMX_SLI_LAST_WIN_RDATA0 CVMX_SLI_LAST_WIN_RDATA0_FUNC()
CVMX_SLI_LAST_WIN_RDATA0_FUNC(void)209 static inline uint64_t CVMX_SLI_LAST_WIN_RDATA0_FUNC(void)
210 {
211 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
212 		cvmx_warn("CVMX_SLI_LAST_WIN_RDATA0 not supported on this chip\n");
213 	return 0x0000000000000600ull;
214 }
215 #else
216 #define CVMX_SLI_LAST_WIN_RDATA0 (0x0000000000000600ull)
217 #endif
218 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
219 #define CVMX_SLI_LAST_WIN_RDATA1 CVMX_SLI_LAST_WIN_RDATA1_FUNC()
CVMX_SLI_LAST_WIN_RDATA1_FUNC(void)220 static inline uint64_t CVMX_SLI_LAST_WIN_RDATA1_FUNC(void)
221 {
222 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
223 		cvmx_warn("CVMX_SLI_LAST_WIN_RDATA1 not supported on this chip\n");
224 	return 0x0000000000000610ull;
225 }
226 #else
227 #define CVMX_SLI_LAST_WIN_RDATA1 (0x0000000000000610ull)
228 #endif
229 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
230 #define CVMX_SLI_LAST_WIN_RDATA2 CVMX_SLI_LAST_WIN_RDATA2_FUNC()
CVMX_SLI_LAST_WIN_RDATA2_FUNC(void)231 static inline uint64_t CVMX_SLI_LAST_WIN_RDATA2_FUNC(void)
232 {
233 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
234 		cvmx_warn("CVMX_SLI_LAST_WIN_RDATA2 not supported on this chip\n");
235 	return 0x00000000000006C0ull;
236 }
237 #else
238 #define CVMX_SLI_LAST_WIN_RDATA2 (0x00000000000006C0ull)
239 #endif
240 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
241 #define CVMX_SLI_LAST_WIN_RDATA3 CVMX_SLI_LAST_WIN_RDATA3_FUNC()
CVMX_SLI_LAST_WIN_RDATA3_FUNC(void)242 static inline uint64_t CVMX_SLI_LAST_WIN_RDATA3_FUNC(void)
243 {
244 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
245 		cvmx_warn("CVMX_SLI_LAST_WIN_RDATA3 not supported on this chip\n");
246 	return 0x00000000000006D0ull;
247 }
248 #else
249 #define CVMX_SLI_LAST_WIN_RDATA3 (0x00000000000006D0ull)
250 #endif
251 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
252 #define CVMX_SLI_MAC_CREDIT_CNT CVMX_SLI_MAC_CREDIT_CNT_FUNC()
CVMX_SLI_MAC_CREDIT_CNT_FUNC(void)253 static inline uint64_t CVMX_SLI_MAC_CREDIT_CNT_FUNC(void)
254 {
255 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
256 		cvmx_warn("CVMX_SLI_MAC_CREDIT_CNT not supported on this chip\n");
257 	return 0x0000000000003D70ull;
258 }
259 #else
260 #define CVMX_SLI_MAC_CREDIT_CNT (0x0000000000003D70ull)
261 #endif
262 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
263 #define CVMX_SLI_MAC_CREDIT_CNT2 CVMX_SLI_MAC_CREDIT_CNT2_FUNC()
CVMX_SLI_MAC_CREDIT_CNT2_FUNC(void)264 static inline uint64_t CVMX_SLI_MAC_CREDIT_CNT2_FUNC(void)
265 {
266 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
267 		cvmx_warn("CVMX_SLI_MAC_CREDIT_CNT2 not supported on this chip\n");
268 	return 0x0000000000003E10ull;
269 }
270 #else
271 #define CVMX_SLI_MAC_CREDIT_CNT2 (0x0000000000003E10ull)
272 #endif
273 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
274 #define CVMX_SLI_MAC_NUMBER CVMX_SLI_MAC_NUMBER_FUNC()
CVMX_SLI_MAC_NUMBER_FUNC(void)275 static inline uint64_t CVMX_SLI_MAC_NUMBER_FUNC(void)
276 {
277 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
278 		cvmx_warn("CVMX_SLI_MAC_NUMBER not supported on this chip\n");
279 	return 0x0000000000003E00ull;
280 }
281 #else
282 #define CVMX_SLI_MAC_NUMBER (0x0000000000003E00ull)
283 #endif
284 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
285 #define CVMX_SLI_MEM_ACCESS_CTL CVMX_SLI_MEM_ACCESS_CTL_FUNC()
CVMX_SLI_MEM_ACCESS_CTL_FUNC(void)286 static inline uint64_t CVMX_SLI_MEM_ACCESS_CTL_FUNC(void)
287 {
288 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
289 		cvmx_warn("CVMX_SLI_MEM_ACCESS_CTL not supported on this chip\n");
290 	return 0x00000000000002F0ull;
291 }
292 #else
293 #define CVMX_SLI_MEM_ACCESS_CTL (0x00000000000002F0ull)
294 #endif
295 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_MEM_ACCESS_SUBIDX(unsigned long offset)296 static inline uint64_t CVMX_SLI_MEM_ACCESS_SUBIDX(unsigned long offset)
297 {
298 	if (!(
299 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && (((offset >= 12) && (offset <= 27)))) ||
300 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset >= 12) && (offset <= 27)))) ||
301 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset >= 12) && (offset <= 27)))) ||
302 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && (((offset >= 12) && (offset <= 27)))) ||
303 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && (((offset >= 12) && (offset <= 27))))))
304 		cvmx_warn("CVMX_SLI_MEM_ACCESS_SUBIDX(%lu) is invalid on this chip\n", offset);
305 	return 0x00000000000000E0ull + ((offset) & 31) * 16 - 16*12;
306 }
307 #else
308 #define CVMX_SLI_MEM_ACCESS_SUBIDX(offset) (0x00000000000000E0ull + ((offset) & 31) * 16 - 16*12)
309 #endif
310 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
311 #define CVMX_SLI_MSI_ENB0 CVMX_SLI_MSI_ENB0_FUNC()
CVMX_SLI_MSI_ENB0_FUNC(void)312 static inline uint64_t CVMX_SLI_MSI_ENB0_FUNC(void)
313 {
314 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
315 		cvmx_warn("CVMX_SLI_MSI_ENB0 not supported on this chip\n");
316 	return 0x0000000000003C50ull;
317 }
318 #else
319 #define CVMX_SLI_MSI_ENB0 (0x0000000000003C50ull)
320 #endif
321 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
322 #define CVMX_SLI_MSI_ENB1 CVMX_SLI_MSI_ENB1_FUNC()
CVMX_SLI_MSI_ENB1_FUNC(void)323 static inline uint64_t CVMX_SLI_MSI_ENB1_FUNC(void)
324 {
325 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
326 		cvmx_warn("CVMX_SLI_MSI_ENB1 not supported on this chip\n");
327 	return 0x0000000000003C60ull;
328 }
329 #else
330 #define CVMX_SLI_MSI_ENB1 (0x0000000000003C60ull)
331 #endif
332 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
333 #define CVMX_SLI_MSI_ENB2 CVMX_SLI_MSI_ENB2_FUNC()
CVMX_SLI_MSI_ENB2_FUNC(void)334 static inline uint64_t CVMX_SLI_MSI_ENB2_FUNC(void)
335 {
336 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
337 		cvmx_warn("CVMX_SLI_MSI_ENB2 not supported on this chip\n");
338 	return 0x0000000000003C70ull;
339 }
340 #else
341 #define CVMX_SLI_MSI_ENB2 (0x0000000000003C70ull)
342 #endif
343 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
344 #define CVMX_SLI_MSI_ENB3 CVMX_SLI_MSI_ENB3_FUNC()
CVMX_SLI_MSI_ENB3_FUNC(void)345 static inline uint64_t CVMX_SLI_MSI_ENB3_FUNC(void)
346 {
347 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
348 		cvmx_warn("CVMX_SLI_MSI_ENB3 not supported on this chip\n");
349 	return 0x0000000000003C80ull;
350 }
351 #else
352 #define CVMX_SLI_MSI_ENB3 (0x0000000000003C80ull)
353 #endif
354 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
355 #define CVMX_SLI_MSI_RCV0 CVMX_SLI_MSI_RCV0_FUNC()
CVMX_SLI_MSI_RCV0_FUNC(void)356 static inline uint64_t CVMX_SLI_MSI_RCV0_FUNC(void)
357 {
358 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
359 		cvmx_warn("CVMX_SLI_MSI_RCV0 not supported on this chip\n");
360 	return 0x0000000000003C10ull;
361 }
362 #else
363 #define CVMX_SLI_MSI_RCV0 (0x0000000000003C10ull)
364 #endif
365 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
366 #define CVMX_SLI_MSI_RCV1 CVMX_SLI_MSI_RCV1_FUNC()
CVMX_SLI_MSI_RCV1_FUNC(void)367 static inline uint64_t CVMX_SLI_MSI_RCV1_FUNC(void)
368 {
369 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
370 		cvmx_warn("CVMX_SLI_MSI_RCV1 not supported on this chip\n");
371 	return 0x0000000000003C20ull;
372 }
373 #else
374 #define CVMX_SLI_MSI_RCV1 (0x0000000000003C20ull)
375 #endif
376 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
377 #define CVMX_SLI_MSI_RCV2 CVMX_SLI_MSI_RCV2_FUNC()
CVMX_SLI_MSI_RCV2_FUNC(void)378 static inline uint64_t CVMX_SLI_MSI_RCV2_FUNC(void)
379 {
380 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
381 		cvmx_warn("CVMX_SLI_MSI_RCV2 not supported on this chip\n");
382 	return 0x0000000000003C30ull;
383 }
384 #else
385 #define CVMX_SLI_MSI_RCV2 (0x0000000000003C30ull)
386 #endif
387 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
388 #define CVMX_SLI_MSI_RCV3 CVMX_SLI_MSI_RCV3_FUNC()
CVMX_SLI_MSI_RCV3_FUNC(void)389 static inline uint64_t CVMX_SLI_MSI_RCV3_FUNC(void)
390 {
391 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
392 		cvmx_warn("CVMX_SLI_MSI_RCV3 not supported on this chip\n");
393 	return 0x0000000000003C40ull;
394 }
395 #else
396 #define CVMX_SLI_MSI_RCV3 (0x0000000000003C40ull)
397 #endif
398 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
399 #define CVMX_SLI_MSI_RD_MAP CVMX_SLI_MSI_RD_MAP_FUNC()
CVMX_SLI_MSI_RD_MAP_FUNC(void)400 static inline uint64_t CVMX_SLI_MSI_RD_MAP_FUNC(void)
401 {
402 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
403 		cvmx_warn("CVMX_SLI_MSI_RD_MAP not supported on this chip\n");
404 	return 0x0000000000003CA0ull;
405 }
406 #else
407 #define CVMX_SLI_MSI_RD_MAP (0x0000000000003CA0ull)
408 #endif
409 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
410 #define CVMX_SLI_MSI_W1C_ENB0 CVMX_SLI_MSI_W1C_ENB0_FUNC()
CVMX_SLI_MSI_W1C_ENB0_FUNC(void)411 static inline uint64_t CVMX_SLI_MSI_W1C_ENB0_FUNC(void)
412 {
413 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
414 		cvmx_warn("CVMX_SLI_MSI_W1C_ENB0 not supported on this chip\n");
415 	return 0x0000000000003CF0ull;
416 }
417 #else
418 #define CVMX_SLI_MSI_W1C_ENB0 (0x0000000000003CF0ull)
419 #endif
420 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
421 #define CVMX_SLI_MSI_W1C_ENB1 CVMX_SLI_MSI_W1C_ENB1_FUNC()
CVMX_SLI_MSI_W1C_ENB1_FUNC(void)422 static inline uint64_t CVMX_SLI_MSI_W1C_ENB1_FUNC(void)
423 {
424 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
425 		cvmx_warn("CVMX_SLI_MSI_W1C_ENB1 not supported on this chip\n");
426 	return 0x0000000000003D00ull;
427 }
428 #else
429 #define CVMX_SLI_MSI_W1C_ENB1 (0x0000000000003D00ull)
430 #endif
431 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
432 #define CVMX_SLI_MSI_W1C_ENB2 CVMX_SLI_MSI_W1C_ENB2_FUNC()
CVMX_SLI_MSI_W1C_ENB2_FUNC(void)433 static inline uint64_t CVMX_SLI_MSI_W1C_ENB2_FUNC(void)
434 {
435 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
436 		cvmx_warn("CVMX_SLI_MSI_W1C_ENB2 not supported on this chip\n");
437 	return 0x0000000000003D10ull;
438 }
439 #else
440 #define CVMX_SLI_MSI_W1C_ENB2 (0x0000000000003D10ull)
441 #endif
442 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
443 #define CVMX_SLI_MSI_W1C_ENB3 CVMX_SLI_MSI_W1C_ENB3_FUNC()
CVMX_SLI_MSI_W1C_ENB3_FUNC(void)444 static inline uint64_t CVMX_SLI_MSI_W1C_ENB3_FUNC(void)
445 {
446 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
447 		cvmx_warn("CVMX_SLI_MSI_W1C_ENB3 not supported on this chip\n");
448 	return 0x0000000000003D20ull;
449 }
450 #else
451 #define CVMX_SLI_MSI_W1C_ENB3 (0x0000000000003D20ull)
452 #endif
453 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
454 #define CVMX_SLI_MSI_W1S_ENB0 CVMX_SLI_MSI_W1S_ENB0_FUNC()
CVMX_SLI_MSI_W1S_ENB0_FUNC(void)455 static inline uint64_t CVMX_SLI_MSI_W1S_ENB0_FUNC(void)
456 {
457 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
458 		cvmx_warn("CVMX_SLI_MSI_W1S_ENB0 not supported on this chip\n");
459 	return 0x0000000000003D30ull;
460 }
461 #else
462 #define CVMX_SLI_MSI_W1S_ENB0 (0x0000000000003D30ull)
463 #endif
464 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
465 #define CVMX_SLI_MSI_W1S_ENB1 CVMX_SLI_MSI_W1S_ENB1_FUNC()
CVMX_SLI_MSI_W1S_ENB1_FUNC(void)466 static inline uint64_t CVMX_SLI_MSI_W1S_ENB1_FUNC(void)
467 {
468 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
469 		cvmx_warn("CVMX_SLI_MSI_W1S_ENB1 not supported on this chip\n");
470 	return 0x0000000000003D40ull;
471 }
472 #else
473 #define CVMX_SLI_MSI_W1S_ENB1 (0x0000000000003D40ull)
474 #endif
475 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
476 #define CVMX_SLI_MSI_W1S_ENB2 CVMX_SLI_MSI_W1S_ENB2_FUNC()
CVMX_SLI_MSI_W1S_ENB2_FUNC(void)477 static inline uint64_t CVMX_SLI_MSI_W1S_ENB2_FUNC(void)
478 {
479 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
480 		cvmx_warn("CVMX_SLI_MSI_W1S_ENB2 not supported on this chip\n");
481 	return 0x0000000000003D50ull;
482 }
483 #else
484 #define CVMX_SLI_MSI_W1S_ENB2 (0x0000000000003D50ull)
485 #endif
486 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
487 #define CVMX_SLI_MSI_W1S_ENB3 CVMX_SLI_MSI_W1S_ENB3_FUNC()
CVMX_SLI_MSI_W1S_ENB3_FUNC(void)488 static inline uint64_t CVMX_SLI_MSI_W1S_ENB3_FUNC(void)
489 {
490 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
491 		cvmx_warn("CVMX_SLI_MSI_W1S_ENB3 not supported on this chip\n");
492 	return 0x0000000000003D60ull;
493 }
494 #else
495 #define CVMX_SLI_MSI_W1S_ENB3 (0x0000000000003D60ull)
496 #endif
497 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
498 #define CVMX_SLI_MSI_WR_MAP CVMX_SLI_MSI_WR_MAP_FUNC()
CVMX_SLI_MSI_WR_MAP_FUNC(void)499 static inline uint64_t CVMX_SLI_MSI_WR_MAP_FUNC(void)
500 {
501 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
502 		cvmx_warn("CVMX_SLI_MSI_WR_MAP not supported on this chip\n");
503 	return 0x0000000000003C90ull;
504 }
505 #else
506 #define CVMX_SLI_MSI_WR_MAP (0x0000000000003C90ull)
507 #endif
508 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
509 #define CVMX_SLI_PCIE_MSI_RCV CVMX_SLI_PCIE_MSI_RCV_FUNC()
CVMX_SLI_PCIE_MSI_RCV_FUNC(void)510 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_FUNC(void)
511 {
512 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
513 		cvmx_warn("CVMX_SLI_PCIE_MSI_RCV not supported on this chip\n");
514 	return 0x0000000000003CB0ull;
515 }
516 #else
517 #define CVMX_SLI_PCIE_MSI_RCV (0x0000000000003CB0ull)
518 #endif
519 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
520 #define CVMX_SLI_PCIE_MSI_RCV_B1 CVMX_SLI_PCIE_MSI_RCV_B1_FUNC()
CVMX_SLI_PCIE_MSI_RCV_B1_FUNC(void)521 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_B1_FUNC(void)
522 {
523 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
524 		cvmx_warn("CVMX_SLI_PCIE_MSI_RCV_B1 not supported on this chip\n");
525 	return 0x0000000000000650ull;
526 }
527 #else
528 #define CVMX_SLI_PCIE_MSI_RCV_B1 (0x0000000000000650ull)
529 #endif
530 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
531 #define CVMX_SLI_PCIE_MSI_RCV_B2 CVMX_SLI_PCIE_MSI_RCV_B2_FUNC()
CVMX_SLI_PCIE_MSI_RCV_B2_FUNC(void)532 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_B2_FUNC(void)
533 {
534 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
535 		cvmx_warn("CVMX_SLI_PCIE_MSI_RCV_B2 not supported on this chip\n");
536 	return 0x0000000000000660ull;
537 }
538 #else
539 #define CVMX_SLI_PCIE_MSI_RCV_B2 (0x0000000000000660ull)
540 #endif
541 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
542 #define CVMX_SLI_PCIE_MSI_RCV_B3 CVMX_SLI_PCIE_MSI_RCV_B3_FUNC()
CVMX_SLI_PCIE_MSI_RCV_B3_FUNC(void)543 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_B3_FUNC(void)
544 {
545 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
546 		cvmx_warn("CVMX_SLI_PCIE_MSI_RCV_B3 not supported on this chip\n");
547 	return 0x0000000000000670ull;
548 }
549 #else
550 #define CVMX_SLI_PCIE_MSI_RCV_B3 (0x0000000000000670ull)
551 #endif
552 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKTX_CNTS(unsigned long offset)553 static inline uint64_t CVMX_SLI_PKTX_CNTS(unsigned long offset)
554 {
555 	if (!(
556 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
557 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
558 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
559 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
560 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
561 		cvmx_warn("CVMX_SLI_PKTX_CNTS(%lu) is invalid on this chip\n", offset);
562 	return 0x0000000000002400ull + ((offset) & 31) * 16;
563 }
564 #else
565 #define CVMX_SLI_PKTX_CNTS(offset) (0x0000000000002400ull + ((offset) & 31) * 16)
566 #endif
567 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKTX_INSTR_BADDR(unsigned long offset)568 static inline uint64_t CVMX_SLI_PKTX_INSTR_BADDR(unsigned long offset)
569 {
570 	if (!(
571 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
572 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
573 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
574 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
575 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
576 		cvmx_warn("CVMX_SLI_PKTX_INSTR_BADDR(%lu) is invalid on this chip\n", offset);
577 	return 0x0000000000002800ull + ((offset) & 31) * 16;
578 }
579 #else
580 #define CVMX_SLI_PKTX_INSTR_BADDR(offset) (0x0000000000002800ull + ((offset) & 31) * 16)
581 #endif
582 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKTX_INSTR_BAOFF_DBELL(unsigned long offset)583 static inline uint64_t CVMX_SLI_PKTX_INSTR_BAOFF_DBELL(unsigned long offset)
584 {
585 	if (!(
586 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
587 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
588 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
589 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
590 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
591 		cvmx_warn("CVMX_SLI_PKTX_INSTR_BAOFF_DBELL(%lu) is invalid on this chip\n", offset);
592 	return 0x0000000000002C00ull + ((offset) & 31) * 16;
593 }
594 #else
595 #define CVMX_SLI_PKTX_INSTR_BAOFF_DBELL(offset) (0x0000000000002C00ull + ((offset) & 31) * 16)
596 #endif
597 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKTX_INSTR_FIFO_RSIZE(unsigned long offset)598 static inline uint64_t CVMX_SLI_PKTX_INSTR_FIFO_RSIZE(unsigned long offset)
599 {
600 	if (!(
601 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
602 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
603 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
604 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
605 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
606 		cvmx_warn("CVMX_SLI_PKTX_INSTR_FIFO_RSIZE(%lu) is invalid on this chip\n", offset);
607 	return 0x0000000000003000ull + ((offset) & 31) * 16;
608 }
609 #else
610 #define CVMX_SLI_PKTX_INSTR_FIFO_RSIZE(offset) (0x0000000000003000ull + ((offset) & 31) * 16)
611 #endif
612 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKTX_INSTR_HEADER(unsigned long offset)613 static inline uint64_t CVMX_SLI_PKTX_INSTR_HEADER(unsigned long offset)
614 {
615 	if (!(
616 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
617 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
618 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
619 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
620 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
621 		cvmx_warn("CVMX_SLI_PKTX_INSTR_HEADER(%lu) is invalid on this chip\n", offset);
622 	return 0x0000000000003400ull + ((offset) & 31) * 16;
623 }
624 #else
625 #define CVMX_SLI_PKTX_INSTR_HEADER(offset) (0x0000000000003400ull + ((offset) & 31) * 16)
626 #endif
627 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKTX_IN_BP(unsigned long offset)628 static inline uint64_t CVMX_SLI_PKTX_IN_BP(unsigned long offset)
629 {
630 	if (!(
631 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
632 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
633 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
634 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
635 		cvmx_warn("CVMX_SLI_PKTX_IN_BP(%lu) is invalid on this chip\n", offset);
636 	return 0x0000000000003800ull + ((offset) & 31) * 16;
637 }
638 #else
639 #define CVMX_SLI_PKTX_IN_BP(offset) (0x0000000000003800ull + ((offset) & 31) * 16)
640 #endif
641 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKTX_OUT_SIZE(unsigned long offset)642 static inline uint64_t CVMX_SLI_PKTX_OUT_SIZE(unsigned long offset)
643 {
644 	if (!(
645 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
646 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
647 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
648 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
649 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
650 		cvmx_warn("CVMX_SLI_PKTX_OUT_SIZE(%lu) is invalid on this chip\n", offset);
651 	return 0x0000000000000C00ull + ((offset) & 31) * 16;
652 }
653 #else
654 #define CVMX_SLI_PKTX_OUT_SIZE(offset) (0x0000000000000C00ull + ((offset) & 31) * 16)
655 #endif
656 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKTX_SLIST_BADDR(unsigned long offset)657 static inline uint64_t CVMX_SLI_PKTX_SLIST_BADDR(unsigned long offset)
658 {
659 	if (!(
660 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
661 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
662 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
663 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
664 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
665 		cvmx_warn("CVMX_SLI_PKTX_SLIST_BADDR(%lu) is invalid on this chip\n", offset);
666 	return 0x0000000000001400ull + ((offset) & 31) * 16;
667 }
668 #else
669 #define CVMX_SLI_PKTX_SLIST_BADDR(offset) (0x0000000000001400ull + ((offset) & 31) * 16)
670 #endif
671 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKTX_SLIST_BAOFF_DBELL(unsigned long offset)672 static inline uint64_t CVMX_SLI_PKTX_SLIST_BAOFF_DBELL(unsigned long offset)
673 {
674 	if (!(
675 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
676 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
677 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
678 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
679 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
680 		cvmx_warn("CVMX_SLI_PKTX_SLIST_BAOFF_DBELL(%lu) is invalid on this chip\n", offset);
681 	return 0x0000000000001800ull + ((offset) & 31) * 16;
682 }
683 #else
684 #define CVMX_SLI_PKTX_SLIST_BAOFF_DBELL(offset) (0x0000000000001800ull + ((offset) & 31) * 16)
685 #endif
686 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKTX_SLIST_FIFO_RSIZE(unsigned long offset)687 static inline uint64_t CVMX_SLI_PKTX_SLIST_FIFO_RSIZE(unsigned long offset)
688 {
689 	if (!(
690 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
691 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
692 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
693 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
694 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
695 		cvmx_warn("CVMX_SLI_PKTX_SLIST_FIFO_RSIZE(%lu) is invalid on this chip\n", offset);
696 	return 0x0000000000001C00ull + ((offset) & 31) * 16;
697 }
698 #else
699 #define CVMX_SLI_PKTX_SLIST_FIFO_RSIZE(offset) (0x0000000000001C00ull + ((offset) & 31) * 16)
700 #endif
701 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
702 #define CVMX_SLI_PKT_CNT_INT CVMX_SLI_PKT_CNT_INT_FUNC()
CVMX_SLI_PKT_CNT_INT_FUNC(void)703 static inline uint64_t CVMX_SLI_PKT_CNT_INT_FUNC(void)
704 {
705 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
706 		cvmx_warn("CVMX_SLI_PKT_CNT_INT not supported on this chip\n");
707 	return 0x0000000000001130ull;
708 }
709 #else
710 #define CVMX_SLI_PKT_CNT_INT (0x0000000000001130ull)
711 #endif
712 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
713 #define CVMX_SLI_PKT_CNT_INT_ENB CVMX_SLI_PKT_CNT_INT_ENB_FUNC()
CVMX_SLI_PKT_CNT_INT_ENB_FUNC(void)714 static inline uint64_t CVMX_SLI_PKT_CNT_INT_ENB_FUNC(void)
715 {
716 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
717 		cvmx_warn("CVMX_SLI_PKT_CNT_INT_ENB not supported on this chip\n");
718 	return 0x0000000000001150ull;
719 }
720 #else
721 #define CVMX_SLI_PKT_CNT_INT_ENB (0x0000000000001150ull)
722 #endif
723 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
724 #define CVMX_SLI_PKT_CTL CVMX_SLI_PKT_CTL_FUNC()
CVMX_SLI_PKT_CTL_FUNC(void)725 static inline uint64_t CVMX_SLI_PKT_CTL_FUNC(void)
726 {
727 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
728 		cvmx_warn("CVMX_SLI_PKT_CTL not supported on this chip\n");
729 	return 0x0000000000001220ull;
730 }
731 #else
732 #define CVMX_SLI_PKT_CTL (0x0000000000001220ull)
733 #endif
734 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
735 #define CVMX_SLI_PKT_DATA_OUT_ES CVMX_SLI_PKT_DATA_OUT_ES_FUNC()
CVMX_SLI_PKT_DATA_OUT_ES_FUNC(void)736 static inline uint64_t CVMX_SLI_PKT_DATA_OUT_ES_FUNC(void)
737 {
738 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
739 		cvmx_warn("CVMX_SLI_PKT_DATA_OUT_ES not supported on this chip\n");
740 	return 0x00000000000010B0ull;
741 }
742 #else
743 #define CVMX_SLI_PKT_DATA_OUT_ES (0x00000000000010B0ull)
744 #endif
745 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
746 #define CVMX_SLI_PKT_DATA_OUT_NS CVMX_SLI_PKT_DATA_OUT_NS_FUNC()
CVMX_SLI_PKT_DATA_OUT_NS_FUNC(void)747 static inline uint64_t CVMX_SLI_PKT_DATA_OUT_NS_FUNC(void)
748 {
749 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
750 		cvmx_warn("CVMX_SLI_PKT_DATA_OUT_NS not supported on this chip\n");
751 	return 0x00000000000010A0ull;
752 }
753 #else
754 #define CVMX_SLI_PKT_DATA_OUT_NS (0x00000000000010A0ull)
755 #endif
756 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
757 #define CVMX_SLI_PKT_DATA_OUT_ROR CVMX_SLI_PKT_DATA_OUT_ROR_FUNC()
CVMX_SLI_PKT_DATA_OUT_ROR_FUNC(void)758 static inline uint64_t CVMX_SLI_PKT_DATA_OUT_ROR_FUNC(void)
759 {
760 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
761 		cvmx_warn("CVMX_SLI_PKT_DATA_OUT_ROR not supported on this chip\n");
762 	return 0x0000000000001090ull;
763 }
764 #else
765 #define CVMX_SLI_PKT_DATA_OUT_ROR (0x0000000000001090ull)
766 #endif
767 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
768 #define CVMX_SLI_PKT_DPADDR CVMX_SLI_PKT_DPADDR_FUNC()
CVMX_SLI_PKT_DPADDR_FUNC(void)769 static inline uint64_t CVMX_SLI_PKT_DPADDR_FUNC(void)
770 {
771 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
772 		cvmx_warn("CVMX_SLI_PKT_DPADDR not supported on this chip\n");
773 	return 0x0000000000001080ull;
774 }
775 #else
776 #define CVMX_SLI_PKT_DPADDR (0x0000000000001080ull)
777 #endif
778 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
779 #define CVMX_SLI_PKT_INPUT_CONTROL CVMX_SLI_PKT_INPUT_CONTROL_FUNC()
CVMX_SLI_PKT_INPUT_CONTROL_FUNC(void)780 static inline uint64_t CVMX_SLI_PKT_INPUT_CONTROL_FUNC(void)
781 {
782 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
783 		cvmx_warn("CVMX_SLI_PKT_INPUT_CONTROL not supported on this chip\n");
784 	return 0x0000000000001170ull;
785 }
786 #else
787 #define CVMX_SLI_PKT_INPUT_CONTROL (0x0000000000001170ull)
788 #endif
789 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
790 #define CVMX_SLI_PKT_INSTR_ENB CVMX_SLI_PKT_INSTR_ENB_FUNC()
CVMX_SLI_PKT_INSTR_ENB_FUNC(void)791 static inline uint64_t CVMX_SLI_PKT_INSTR_ENB_FUNC(void)
792 {
793 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
794 		cvmx_warn("CVMX_SLI_PKT_INSTR_ENB not supported on this chip\n");
795 	return 0x0000000000001000ull;
796 }
797 #else
798 #define CVMX_SLI_PKT_INSTR_ENB (0x0000000000001000ull)
799 #endif
800 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
801 #define CVMX_SLI_PKT_INSTR_RD_SIZE CVMX_SLI_PKT_INSTR_RD_SIZE_FUNC()
CVMX_SLI_PKT_INSTR_RD_SIZE_FUNC(void)802 static inline uint64_t CVMX_SLI_PKT_INSTR_RD_SIZE_FUNC(void)
803 {
804 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
805 		cvmx_warn("CVMX_SLI_PKT_INSTR_RD_SIZE not supported on this chip\n");
806 	return 0x00000000000011A0ull;
807 }
808 #else
809 #define CVMX_SLI_PKT_INSTR_RD_SIZE (0x00000000000011A0ull)
810 #endif
811 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
812 #define CVMX_SLI_PKT_INSTR_SIZE CVMX_SLI_PKT_INSTR_SIZE_FUNC()
CVMX_SLI_PKT_INSTR_SIZE_FUNC(void)813 static inline uint64_t CVMX_SLI_PKT_INSTR_SIZE_FUNC(void)
814 {
815 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
816 		cvmx_warn("CVMX_SLI_PKT_INSTR_SIZE not supported on this chip\n");
817 	return 0x0000000000001020ull;
818 }
819 #else
820 #define CVMX_SLI_PKT_INSTR_SIZE (0x0000000000001020ull)
821 #endif
822 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
823 #define CVMX_SLI_PKT_INT_LEVELS CVMX_SLI_PKT_INT_LEVELS_FUNC()
CVMX_SLI_PKT_INT_LEVELS_FUNC(void)824 static inline uint64_t CVMX_SLI_PKT_INT_LEVELS_FUNC(void)
825 {
826 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
827 		cvmx_warn("CVMX_SLI_PKT_INT_LEVELS not supported on this chip\n");
828 	return 0x0000000000001120ull;
829 }
830 #else
831 #define CVMX_SLI_PKT_INT_LEVELS (0x0000000000001120ull)
832 #endif
833 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
834 #define CVMX_SLI_PKT_IN_BP CVMX_SLI_PKT_IN_BP_FUNC()
CVMX_SLI_PKT_IN_BP_FUNC(void)835 static inline uint64_t CVMX_SLI_PKT_IN_BP_FUNC(void)
836 {
837 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
838 		cvmx_warn("CVMX_SLI_PKT_IN_BP not supported on this chip\n");
839 	return 0x0000000000001210ull;
840 }
841 #else
842 #define CVMX_SLI_PKT_IN_BP (0x0000000000001210ull)
843 #endif
844 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PKT_IN_DONEX_CNTS(unsigned long offset)845 static inline uint64_t CVMX_SLI_PKT_IN_DONEX_CNTS(unsigned long offset)
846 {
847 	if (!(
848 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31))) ||
849 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31))) ||
850 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31))) ||
851 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
852 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31)))))
853 		cvmx_warn("CVMX_SLI_PKT_IN_DONEX_CNTS(%lu) is invalid on this chip\n", offset);
854 	return 0x0000000000002000ull + ((offset) & 31) * 16;
855 }
856 #else
857 #define CVMX_SLI_PKT_IN_DONEX_CNTS(offset) (0x0000000000002000ull + ((offset) & 31) * 16)
858 #endif
859 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
860 #define CVMX_SLI_PKT_IN_INSTR_COUNTS CVMX_SLI_PKT_IN_INSTR_COUNTS_FUNC()
CVMX_SLI_PKT_IN_INSTR_COUNTS_FUNC(void)861 static inline uint64_t CVMX_SLI_PKT_IN_INSTR_COUNTS_FUNC(void)
862 {
863 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
864 		cvmx_warn("CVMX_SLI_PKT_IN_INSTR_COUNTS not supported on this chip\n");
865 	return 0x0000000000001200ull;
866 }
867 #else
868 #define CVMX_SLI_PKT_IN_INSTR_COUNTS (0x0000000000001200ull)
869 #endif
870 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
871 #define CVMX_SLI_PKT_IN_PCIE_PORT CVMX_SLI_PKT_IN_PCIE_PORT_FUNC()
CVMX_SLI_PKT_IN_PCIE_PORT_FUNC(void)872 static inline uint64_t CVMX_SLI_PKT_IN_PCIE_PORT_FUNC(void)
873 {
874 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
875 		cvmx_warn("CVMX_SLI_PKT_IN_PCIE_PORT not supported on this chip\n");
876 	return 0x00000000000011B0ull;
877 }
878 #else
879 #define CVMX_SLI_PKT_IN_PCIE_PORT (0x00000000000011B0ull)
880 #endif
881 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
882 #define CVMX_SLI_PKT_IPTR CVMX_SLI_PKT_IPTR_FUNC()
CVMX_SLI_PKT_IPTR_FUNC(void)883 static inline uint64_t CVMX_SLI_PKT_IPTR_FUNC(void)
884 {
885 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
886 		cvmx_warn("CVMX_SLI_PKT_IPTR not supported on this chip\n");
887 	return 0x0000000000001070ull;
888 }
889 #else
890 #define CVMX_SLI_PKT_IPTR (0x0000000000001070ull)
891 #endif
892 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
893 #define CVMX_SLI_PKT_OUTPUT_WMARK CVMX_SLI_PKT_OUTPUT_WMARK_FUNC()
CVMX_SLI_PKT_OUTPUT_WMARK_FUNC(void)894 static inline uint64_t CVMX_SLI_PKT_OUTPUT_WMARK_FUNC(void)
895 {
896 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
897 		cvmx_warn("CVMX_SLI_PKT_OUTPUT_WMARK not supported on this chip\n");
898 	return 0x0000000000001180ull;
899 }
900 #else
901 #define CVMX_SLI_PKT_OUTPUT_WMARK (0x0000000000001180ull)
902 #endif
903 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
904 #define CVMX_SLI_PKT_OUT_BMODE CVMX_SLI_PKT_OUT_BMODE_FUNC()
CVMX_SLI_PKT_OUT_BMODE_FUNC(void)905 static inline uint64_t CVMX_SLI_PKT_OUT_BMODE_FUNC(void)
906 {
907 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
908 		cvmx_warn("CVMX_SLI_PKT_OUT_BMODE not supported on this chip\n");
909 	return 0x00000000000010D0ull;
910 }
911 #else
912 #define CVMX_SLI_PKT_OUT_BMODE (0x00000000000010D0ull)
913 #endif
914 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
915 #define CVMX_SLI_PKT_OUT_BP_EN CVMX_SLI_PKT_OUT_BP_EN_FUNC()
CVMX_SLI_PKT_OUT_BP_EN_FUNC(void)916 static inline uint64_t CVMX_SLI_PKT_OUT_BP_EN_FUNC(void)
917 {
918 	if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
919 		cvmx_warn("CVMX_SLI_PKT_OUT_BP_EN not supported on this chip\n");
920 	return 0x0000000000001240ull;
921 }
922 #else
923 #define CVMX_SLI_PKT_OUT_BP_EN (0x0000000000001240ull)
924 #endif
925 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
926 #define CVMX_SLI_PKT_OUT_ENB CVMX_SLI_PKT_OUT_ENB_FUNC()
CVMX_SLI_PKT_OUT_ENB_FUNC(void)927 static inline uint64_t CVMX_SLI_PKT_OUT_ENB_FUNC(void)
928 {
929 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
930 		cvmx_warn("CVMX_SLI_PKT_OUT_ENB not supported on this chip\n");
931 	return 0x0000000000001010ull;
932 }
933 #else
934 #define CVMX_SLI_PKT_OUT_ENB (0x0000000000001010ull)
935 #endif
936 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
937 #define CVMX_SLI_PKT_PCIE_PORT CVMX_SLI_PKT_PCIE_PORT_FUNC()
CVMX_SLI_PKT_PCIE_PORT_FUNC(void)938 static inline uint64_t CVMX_SLI_PKT_PCIE_PORT_FUNC(void)
939 {
940 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
941 		cvmx_warn("CVMX_SLI_PKT_PCIE_PORT not supported on this chip\n");
942 	return 0x00000000000010E0ull;
943 }
944 #else
945 #define CVMX_SLI_PKT_PCIE_PORT (0x00000000000010E0ull)
946 #endif
947 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
948 #define CVMX_SLI_PKT_PORT_IN_RST CVMX_SLI_PKT_PORT_IN_RST_FUNC()
CVMX_SLI_PKT_PORT_IN_RST_FUNC(void)949 static inline uint64_t CVMX_SLI_PKT_PORT_IN_RST_FUNC(void)
950 {
951 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
952 		cvmx_warn("CVMX_SLI_PKT_PORT_IN_RST not supported on this chip\n");
953 	return 0x00000000000011F0ull;
954 }
955 #else
956 #define CVMX_SLI_PKT_PORT_IN_RST (0x00000000000011F0ull)
957 #endif
958 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
959 #define CVMX_SLI_PKT_SLIST_ES CVMX_SLI_PKT_SLIST_ES_FUNC()
CVMX_SLI_PKT_SLIST_ES_FUNC(void)960 static inline uint64_t CVMX_SLI_PKT_SLIST_ES_FUNC(void)
961 {
962 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
963 		cvmx_warn("CVMX_SLI_PKT_SLIST_ES not supported on this chip\n");
964 	return 0x0000000000001050ull;
965 }
966 #else
967 #define CVMX_SLI_PKT_SLIST_ES (0x0000000000001050ull)
968 #endif
969 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
970 #define CVMX_SLI_PKT_SLIST_NS CVMX_SLI_PKT_SLIST_NS_FUNC()
CVMX_SLI_PKT_SLIST_NS_FUNC(void)971 static inline uint64_t CVMX_SLI_PKT_SLIST_NS_FUNC(void)
972 {
973 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
974 		cvmx_warn("CVMX_SLI_PKT_SLIST_NS not supported on this chip\n");
975 	return 0x0000000000001040ull;
976 }
977 #else
978 #define CVMX_SLI_PKT_SLIST_NS (0x0000000000001040ull)
979 #endif
980 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
981 #define CVMX_SLI_PKT_SLIST_ROR CVMX_SLI_PKT_SLIST_ROR_FUNC()
CVMX_SLI_PKT_SLIST_ROR_FUNC(void)982 static inline uint64_t CVMX_SLI_PKT_SLIST_ROR_FUNC(void)
983 {
984 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
985 		cvmx_warn("CVMX_SLI_PKT_SLIST_ROR not supported on this chip\n");
986 	return 0x0000000000001030ull;
987 }
988 #else
989 #define CVMX_SLI_PKT_SLIST_ROR (0x0000000000001030ull)
990 #endif
991 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
992 #define CVMX_SLI_PKT_TIME_INT CVMX_SLI_PKT_TIME_INT_FUNC()
CVMX_SLI_PKT_TIME_INT_FUNC(void)993 static inline uint64_t CVMX_SLI_PKT_TIME_INT_FUNC(void)
994 {
995 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
996 		cvmx_warn("CVMX_SLI_PKT_TIME_INT not supported on this chip\n");
997 	return 0x0000000000001140ull;
998 }
999 #else
1000 #define CVMX_SLI_PKT_TIME_INT (0x0000000000001140ull)
1001 #endif
1002 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1003 #define CVMX_SLI_PKT_TIME_INT_ENB CVMX_SLI_PKT_TIME_INT_ENB_FUNC()
CVMX_SLI_PKT_TIME_INT_ENB_FUNC(void)1004 static inline uint64_t CVMX_SLI_PKT_TIME_INT_ENB_FUNC(void)
1005 {
1006 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1007 		cvmx_warn("CVMX_SLI_PKT_TIME_INT_ENB not supported on this chip\n");
1008 	return 0x0000000000001160ull;
1009 }
1010 #else
1011 #define CVMX_SLI_PKT_TIME_INT_ENB (0x0000000000001160ull)
1012 #endif
1013 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_PORTX_PKIND(unsigned long offset)1014 static inline uint64_t CVMX_SLI_PORTX_PKIND(unsigned long offset)
1015 {
1016 	if (!(
1017 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31)))))
1018 		cvmx_warn("CVMX_SLI_PORTX_PKIND(%lu) is invalid on this chip\n", offset);
1019 	return 0x0000000000000800ull + ((offset) & 31) * 16;
1020 }
1021 #else
1022 #define CVMX_SLI_PORTX_PKIND(offset) (0x0000000000000800ull + ((offset) & 31) * 16)
1023 #endif
1024 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_SLI_S2M_PORTX_CTL(unsigned long offset)1025 static inline uint64_t CVMX_SLI_S2M_PORTX_CTL(unsigned long offset)
1026 {
1027 	if (!(
1028 	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 1))) ||
1029 	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1))) ||
1030 	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 3))) ||
1031 	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1))) ||
1032 	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 1)))))
1033 		cvmx_warn("CVMX_SLI_S2M_PORTX_CTL(%lu) is invalid on this chip\n", offset);
1034 	return 0x0000000000003D80ull + ((offset) & 3) * 16;
1035 }
1036 #else
1037 #define CVMX_SLI_S2M_PORTX_CTL(offset) (0x0000000000003D80ull + ((offset) & 3) * 16)
1038 #endif
1039 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1040 #define CVMX_SLI_SCRATCH_1 CVMX_SLI_SCRATCH_1_FUNC()
CVMX_SLI_SCRATCH_1_FUNC(void)1041 static inline uint64_t CVMX_SLI_SCRATCH_1_FUNC(void)
1042 {
1043 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1044 		cvmx_warn("CVMX_SLI_SCRATCH_1 not supported on this chip\n");
1045 	return 0x00000000000003C0ull;
1046 }
1047 #else
1048 #define CVMX_SLI_SCRATCH_1 (0x00000000000003C0ull)
1049 #endif
1050 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1051 #define CVMX_SLI_SCRATCH_2 CVMX_SLI_SCRATCH_2_FUNC()
CVMX_SLI_SCRATCH_2_FUNC(void)1052 static inline uint64_t CVMX_SLI_SCRATCH_2_FUNC(void)
1053 {
1054 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1055 		cvmx_warn("CVMX_SLI_SCRATCH_2 not supported on this chip\n");
1056 	return 0x00000000000003D0ull;
1057 }
1058 #else
1059 #define CVMX_SLI_SCRATCH_2 (0x00000000000003D0ull)
1060 #endif
1061 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1062 #define CVMX_SLI_STATE1 CVMX_SLI_STATE1_FUNC()
CVMX_SLI_STATE1_FUNC(void)1063 static inline uint64_t CVMX_SLI_STATE1_FUNC(void)
1064 {
1065 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1066 		cvmx_warn("CVMX_SLI_STATE1 not supported on this chip\n");
1067 	return 0x0000000000000620ull;
1068 }
1069 #else
1070 #define CVMX_SLI_STATE1 (0x0000000000000620ull)
1071 #endif
1072 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1073 #define CVMX_SLI_STATE2 CVMX_SLI_STATE2_FUNC()
CVMX_SLI_STATE2_FUNC(void)1074 static inline uint64_t CVMX_SLI_STATE2_FUNC(void)
1075 {
1076 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1077 		cvmx_warn("CVMX_SLI_STATE2 not supported on this chip\n");
1078 	return 0x0000000000000630ull;
1079 }
1080 #else
1081 #define CVMX_SLI_STATE2 (0x0000000000000630ull)
1082 #endif
1083 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1084 #define CVMX_SLI_STATE3 CVMX_SLI_STATE3_FUNC()
CVMX_SLI_STATE3_FUNC(void)1085 static inline uint64_t CVMX_SLI_STATE3_FUNC(void)
1086 {
1087 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1088 		cvmx_warn("CVMX_SLI_STATE3 not supported on this chip\n");
1089 	return 0x0000000000000640ull;
1090 }
1091 #else
1092 #define CVMX_SLI_STATE3 (0x0000000000000640ull)
1093 #endif
1094 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1095 #define CVMX_SLI_TX_PIPE CVMX_SLI_TX_PIPE_FUNC()
CVMX_SLI_TX_PIPE_FUNC(void)1096 static inline uint64_t CVMX_SLI_TX_PIPE_FUNC(void)
1097 {
1098 	if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
1099 		cvmx_warn("CVMX_SLI_TX_PIPE not supported on this chip\n");
1100 	return 0x0000000000001230ull;
1101 }
1102 #else
1103 #define CVMX_SLI_TX_PIPE (0x0000000000001230ull)
1104 #endif
1105 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1106 #define CVMX_SLI_WINDOW_CTL CVMX_SLI_WINDOW_CTL_FUNC()
CVMX_SLI_WINDOW_CTL_FUNC(void)1107 static inline uint64_t CVMX_SLI_WINDOW_CTL_FUNC(void)
1108 {
1109 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1110 		cvmx_warn("CVMX_SLI_WINDOW_CTL not supported on this chip\n");
1111 	return 0x00000000000002E0ull;
1112 }
1113 #else
1114 #define CVMX_SLI_WINDOW_CTL (0x00000000000002E0ull)
1115 #endif
1116 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1117 #define CVMX_SLI_WIN_RD_ADDR CVMX_SLI_WIN_RD_ADDR_FUNC()
CVMX_SLI_WIN_RD_ADDR_FUNC(void)1118 static inline uint64_t CVMX_SLI_WIN_RD_ADDR_FUNC(void)
1119 {
1120 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1121 		cvmx_warn("CVMX_SLI_WIN_RD_ADDR not supported on this chip\n");
1122 	return 0x0000000000000010ull;
1123 }
1124 #else
1125 #define CVMX_SLI_WIN_RD_ADDR (0x0000000000000010ull)
1126 #endif
1127 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1128 #define CVMX_SLI_WIN_RD_DATA CVMX_SLI_WIN_RD_DATA_FUNC()
CVMX_SLI_WIN_RD_DATA_FUNC(void)1129 static inline uint64_t CVMX_SLI_WIN_RD_DATA_FUNC(void)
1130 {
1131 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1132 		cvmx_warn("CVMX_SLI_WIN_RD_DATA not supported on this chip\n");
1133 	return 0x0000000000000040ull;
1134 }
1135 #else
1136 #define CVMX_SLI_WIN_RD_DATA (0x0000000000000040ull)
1137 #endif
1138 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1139 #define CVMX_SLI_WIN_WR_ADDR CVMX_SLI_WIN_WR_ADDR_FUNC()
CVMX_SLI_WIN_WR_ADDR_FUNC(void)1140 static inline uint64_t CVMX_SLI_WIN_WR_ADDR_FUNC(void)
1141 {
1142 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1143 		cvmx_warn("CVMX_SLI_WIN_WR_ADDR not supported on this chip\n");
1144 	return 0x0000000000000000ull;
1145 }
1146 #else
1147 #define CVMX_SLI_WIN_WR_ADDR (0x0000000000000000ull)
1148 #endif
1149 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1150 #define CVMX_SLI_WIN_WR_DATA CVMX_SLI_WIN_WR_DATA_FUNC()
CVMX_SLI_WIN_WR_DATA_FUNC(void)1151 static inline uint64_t CVMX_SLI_WIN_WR_DATA_FUNC(void)
1152 {
1153 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1154 		cvmx_warn("CVMX_SLI_WIN_WR_DATA not supported on this chip\n");
1155 	return 0x0000000000000020ull;
1156 }
1157 #else
1158 #define CVMX_SLI_WIN_WR_DATA (0x0000000000000020ull)
1159 #endif
1160 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1161 #define CVMX_SLI_WIN_WR_MASK CVMX_SLI_WIN_WR_MASK_FUNC()
CVMX_SLI_WIN_WR_MASK_FUNC(void)1162 static inline uint64_t CVMX_SLI_WIN_WR_MASK_FUNC(void)
1163 {
1164 	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
1165 		cvmx_warn("CVMX_SLI_WIN_WR_MASK not supported on this chip\n");
1166 	return 0x0000000000000030ull;
1167 }
1168 #else
1169 #define CVMX_SLI_WIN_WR_MASK (0x0000000000000030ull)
1170 #endif
1171 
1172 /**
1173  * cvmx_sli_bist_status
1174  *
1175  * SLI_BIST_STATUS = SLI's BIST Status Register
1176  *
1177  * Results from BIST runs of SLI's memories.
1178  */
1179 union cvmx_sli_bist_status {
1180 	uint64_t u64;
1181 	struct cvmx_sli_bist_status_s {
1182 #ifdef __BIG_ENDIAN_BITFIELD
1183 	uint64_t reserved_32_63               : 32;
1184 	uint64_t ncb_req                      : 1;  /**< BIST Status for NCB Request FIFO */
1185 	uint64_t n2p0_c                       : 1;  /**< BIST Status for N2P Port0 Cmd */
1186 	uint64_t n2p0_o                       : 1;  /**< BIST Status for N2P Port0 Data */
1187 	uint64_t n2p1_c                       : 1;  /**< BIST Status for N2P Port1 Cmd */
1188 	uint64_t n2p1_o                       : 1;  /**< BIST Status for N2P Port1 Data */
1189 	uint64_t cpl_p0                       : 1;  /**< BIST Status for CPL Port 0 */
1190 	uint64_t cpl_p1                       : 1;  /**< BIST Status for CPL Port 1 */
1191 	uint64_t reserved_19_24               : 6;
1192 	uint64_t p2n0_c0                      : 1;  /**< BIST Status for P2N Port0 C0 */
1193 	uint64_t p2n0_c1                      : 1;  /**< BIST Status for P2N Port0 C1 */
1194 	uint64_t p2n0_n                       : 1;  /**< BIST Status for P2N Port0 N */
1195 	uint64_t p2n0_p0                      : 1;  /**< BIST Status for P2N Port0 P0 */
1196 	uint64_t p2n0_p1                      : 1;  /**< BIST Status for P2N Port0 P1 */
1197 	uint64_t p2n1_c0                      : 1;  /**< BIST Status for P2N Port1 C0 */
1198 	uint64_t p2n1_c1                      : 1;  /**< BIST Status for P2N Port1 C1 */
1199 	uint64_t p2n1_n                       : 1;  /**< BIST Status for P2N Port1 N */
1200 	uint64_t p2n1_p0                      : 1;  /**< BIST Status for P2N Port1 P0 */
1201 	uint64_t p2n1_p1                      : 1;  /**< BIST Status for P2N Port1 P1 */
1202 	uint64_t reserved_6_8                 : 3;
1203 	uint64_t dsi1_1                       : 1;  /**< BIST Status for DSI1 Memory 1 */
1204 	uint64_t dsi1_0                       : 1;  /**< BIST Status for DSI1 Memory 0 */
1205 	uint64_t dsi0_1                       : 1;  /**< BIST Status for DSI0 Memory 1 */
1206 	uint64_t dsi0_0                       : 1;  /**< BIST Status for DSI0 Memory 0 */
1207 	uint64_t msi                          : 1;  /**< BIST Status for MSI Memory Map */
1208 	uint64_t ncb_cmd                      : 1;  /**< BIST Status for NCB Outbound Commands */
1209 #else
1210 	uint64_t ncb_cmd                      : 1;
1211 	uint64_t msi                          : 1;
1212 	uint64_t dsi0_0                       : 1;
1213 	uint64_t dsi0_1                       : 1;
1214 	uint64_t dsi1_0                       : 1;
1215 	uint64_t dsi1_1                       : 1;
1216 	uint64_t reserved_6_8                 : 3;
1217 	uint64_t p2n1_p1                      : 1;
1218 	uint64_t p2n1_p0                      : 1;
1219 	uint64_t p2n1_n                       : 1;
1220 	uint64_t p2n1_c1                      : 1;
1221 	uint64_t p2n1_c0                      : 1;
1222 	uint64_t p2n0_p1                      : 1;
1223 	uint64_t p2n0_p0                      : 1;
1224 	uint64_t p2n0_n                       : 1;
1225 	uint64_t p2n0_c1                      : 1;
1226 	uint64_t p2n0_c0                      : 1;
1227 	uint64_t reserved_19_24               : 6;
1228 	uint64_t cpl_p1                       : 1;
1229 	uint64_t cpl_p0                       : 1;
1230 	uint64_t n2p1_o                       : 1;
1231 	uint64_t n2p1_c                       : 1;
1232 	uint64_t n2p0_o                       : 1;
1233 	uint64_t n2p0_c                       : 1;
1234 	uint64_t ncb_req                      : 1;
1235 	uint64_t reserved_32_63               : 32;
1236 #endif
1237 	} s;
1238 	struct cvmx_sli_bist_status_cn61xx {
1239 #ifdef __BIG_ENDIAN_BITFIELD
1240 	uint64_t reserved_31_63               : 33;
1241 	uint64_t n2p0_c                       : 1;  /**< BIST Status for N2P Port0 Cmd */
1242 	uint64_t n2p0_o                       : 1;  /**< BIST Status for N2P Port0 Data */
1243 	uint64_t reserved_27_28               : 2;
1244 	uint64_t cpl_p0                       : 1;  /**< BIST Status for CPL Port 0 */
1245 	uint64_t cpl_p1                       : 1;  /**< BIST Status for CPL Port 1 */
1246 	uint64_t reserved_19_24               : 6;
1247 	uint64_t p2n0_c0                      : 1;  /**< BIST Status for P2N Port0 C0 */
1248 	uint64_t p2n0_c1                      : 1;  /**< BIST Status for P2N Port0 C1 */
1249 	uint64_t p2n0_n                       : 1;  /**< BIST Status for P2N Port0 N */
1250 	uint64_t p2n0_p0                      : 1;  /**< BIST Status for P2N Port0 P0 */
1251 	uint64_t p2n0_p1                      : 1;  /**< BIST Status for P2N Port0 P1 */
1252 	uint64_t p2n1_c0                      : 1;  /**< BIST Status for P2N Port1 C0 */
1253 	uint64_t p2n1_c1                      : 1;  /**< BIST Status for P2N Port1 C1 */
1254 	uint64_t p2n1_n                       : 1;  /**< BIST Status for P2N Port1 N */
1255 	uint64_t p2n1_p0                      : 1;  /**< BIST Status for P2N Port1 P0 */
1256 	uint64_t p2n1_p1                      : 1;  /**< BIST Status for P2N Port1 P1 */
1257 	uint64_t reserved_6_8                 : 3;
1258 	uint64_t dsi1_1                       : 1;  /**< BIST Status for DSI1 Memory 1 */
1259 	uint64_t dsi1_0                       : 1;  /**< BIST Status for DSI1 Memory 0 */
1260 	uint64_t dsi0_1                       : 1;  /**< BIST Status for DSI0 Memory 1 */
1261 	uint64_t dsi0_0                       : 1;  /**< BIST Status for DSI0 Memory 0 */
1262 	uint64_t msi                          : 1;  /**< BIST Status for MSI Memory Map */
1263 	uint64_t ncb_cmd                      : 1;  /**< BIST Status for NCB Outbound Commands */
1264 #else
1265 	uint64_t ncb_cmd                      : 1;
1266 	uint64_t msi                          : 1;
1267 	uint64_t dsi0_0                       : 1;
1268 	uint64_t dsi0_1                       : 1;
1269 	uint64_t dsi1_0                       : 1;
1270 	uint64_t dsi1_1                       : 1;
1271 	uint64_t reserved_6_8                 : 3;
1272 	uint64_t p2n1_p1                      : 1;
1273 	uint64_t p2n1_p0                      : 1;
1274 	uint64_t p2n1_n                       : 1;
1275 	uint64_t p2n1_c1                      : 1;
1276 	uint64_t p2n1_c0                      : 1;
1277 	uint64_t p2n0_p1                      : 1;
1278 	uint64_t p2n0_p0                      : 1;
1279 	uint64_t p2n0_n                       : 1;
1280 	uint64_t p2n0_c1                      : 1;
1281 	uint64_t p2n0_c0                      : 1;
1282 	uint64_t reserved_19_24               : 6;
1283 	uint64_t cpl_p1                       : 1;
1284 	uint64_t cpl_p0                       : 1;
1285 	uint64_t reserved_27_28               : 2;
1286 	uint64_t n2p0_o                       : 1;
1287 	uint64_t n2p0_c                       : 1;
1288 	uint64_t reserved_31_63               : 33;
1289 #endif
1290 	} cn61xx;
1291 	struct cvmx_sli_bist_status_cn63xx {
1292 #ifdef __BIG_ENDIAN_BITFIELD
1293 	uint64_t reserved_31_63               : 33;
1294 	uint64_t n2p0_c                       : 1;  /**< BIST Status for N2P Port0 Cmd */
1295 	uint64_t n2p0_o                       : 1;  /**< BIST Status for N2P Port0 Data */
1296 	uint64_t n2p1_c                       : 1;  /**< BIST Status for N2P Port1 Cmd */
1297 	uint64_t n2p1_o                       : 1;  /**< BIST Status for N2P Port1 Data */
1298 	uint64_t cpl_p0                       : 1;  /**< BIST Status for CPL Port 0 */
1299 	uint64_t cpl_p1                       : 1;  /**< BIST Status for CPL Port 1 */
1300 	uint64_t reserved_19_24               : 6;
1301 	uint64_t p2n0_c0                      : 1;  /**< BIST Status for P2N Port0 C0 */
1302 	uint64_t p2n0_c1                      : 1;  /**< BIST Status for P2N Port0 C1 */
1303 	uint64_t p2n0_n                       : 1;  /**< BIST Status for P2N Port0 N */
1304 	uint64_t p2n0_p0                      : 1;  /**< BIST Status for P2N Port0 P0 */
1305 	uint64_t p2n0_p1                      : 1;  /**< BIST Status for P2N Port0 P1 */
1306 	uint64_t p2n1_c0                      : 1;  /**< BIST Status for P2N Port1 C0 */
1307 	uint64_t p2n1_c1                      : 1;  /**< BIST Status for P2N Port1 C1 */
1308 	uint64_t p2n1_n                       : 1;  /**< BIST Status for P2N Port1 N */
1309 	uint64_t p2n1_p0                      : 1;  /**< BIST Status for P2N Port1 P0 */
1310 	uint64_t p2n1_p1                      : 1;  /**< BIST Status for P2N Port1 P1 */
1311 	uint64_t reserved_6_8                 : 3;
1312 	uint64_t dsi1_1                       : 1;  /**< BIST Status for DSI1 Memory 1 */
1313 	uint64_t dsi1_0                       : 1;  /**< BIST Status for DSI1 Memory 0 */
1314 	uint64_t dsi0_1                       : 1;  /**< BIST Status for DSI0 Memory 1 */
1315 	uint64_t dsi0_0                       : 1;  /**< BIST Status for DSI0 Memory 0 */
1316 	uint64_t msi                          : 1;  /**< BIST Status for MSI Memory Map */
1317 	uint64_t ncb_cmd                      : 1;  /**< BIST Status for NCB Outbound Commands */
1318 #else
1319 	uint64_t ncb_cmd                      : 1;
1320 	uint64_t msi                          : 1;
1321 	uint64_t dsi0_0                       : 1;
1322 	uint64_t dsi0_1                       : 1;
1323 	uint64_t dsi1_0                       : 1;
1324 	uint64_t dsi1_1                       : 1;
1325 	uint64_t reserved_6_8                 : 3;
1326 	uint64_t p2n1_p1                      : 1;
1327 	uint64_t p2n1_p0                      : 1;
1328 	uint64_t p2n1_n                       : 1;
1329 	uint64_t p2n1_c1                      : 1;
1330 	uint64_t p2n1_c0                      : 1;
1331 	uint64_t p2n0_p1                      : 1;
1332 	uint64_t p2n0_p0                      : 1;
1333 	uint64_t p2n0_n                       : 1;
1334 	uint64_t p2n0_c1                      : 1;
1335 	uint64_t p2n0_c0                      : 1;
1336 	uint64_t reserved_19_24               : 6;
1337 	uint64_t cpl_p1                       : 1;
1338 	uint64_t cpl_p0                       : 1;
1339 	uint64_t n2p1_o                       : 1;
1340 	uint64_t n2p1_c                       : 1;
1341 	uint64_t n2p0_o                       : 1;
1342 	uint64_t n2p0_c                       : 1;
1343 	uint64_t reserved_31_63               : 33;
1344 #endif
1345 	} cn63xx;
1346 	struct cvmx_sli_bist_status_cn63xx    cn63xxp1;
1347 	struct cvmx_sli_bist_status_cn61xx    cn66xx;
1348 	struct cvmx_sli_bist_status_s         cn68xx;
1349 	struct cvmx_sli_bist_status_s         cn68xxp1;
1350 	struct cvmx_sli_bist_status_cn61xx    cnf71xx;
1351 };
1352 typedef union cvmx_sli_bist_status cvmx_sli_bist_status_t;
1353 
1354 /**
1355  * cvmx_sli_ctl_port#
1356  *
1357  * SLI_CTL_PORTX = SLI's Control Port X
1358  *
1359  * Contains control for access for Port0
1360  */
1361 union cvmx_sli_ctl_portx {
1362 	uint64_t u64;
1363 	struct cvmx_sli_ctl_portx_s {
1364 #ifdef __BIG_ENDIAN_BITFIELD
1365 	uint64_t reserved_22_63               : 42;
1366 	uint64_t intd                         : 1;  /**< When '0' Intd wire asserted. Before mapping. */
1367 	uint64_t intc                         : 1;  /**< When '0' Intc wire asserted. Before mapping. */
1368 	uint64_t intb                         : 1;  /**< When '0' Intb wire asserted. Before mapping. */
1369 	uint64_t inta                         : 1;  /**< When '0' Inta wire asserted. Before mapping. */
1370 	uint64_t dis_port                     : 1;  /**< When set the output to the MAC is disabled. This
1371                                                          occurs when the MAC reset line transitions from
1372                                                          de-asserted to asserted. Writing a '1' to this
1373                                                          location will clear this condition when the MAC is
1374                                                          no longer in reset and the output to the MAC is at
1375                                                          the begining of a transfer. */
1376 	uint64_t waitl_com                    : 1;  /**< When set '1' casues the SLI to wait for a commit
1377                                                          from the L2C before sending additional completions
1378                                                          to the L2C from a MAC.
1379                                                          Set this for more conservative behavior. Clear
1380                                                          this for more aggressive, higher-performance
1381                                                          behavior */
1382 	uint64_t intd_map                     : 2;  /**< Maps INTD to INTA(00), INTB(01), INTC(10) or
1383                                                          INTD (11). */
1384 	uint64_t intc_map                     : 2;  /**< Maps INTC to INTA(00), INTB(01), INTC(10) or
1385                                                          INTD (11). */
1386 	uint64_t intb_map                     : 2;  /**< Maps INTB to INTA(00), INTB(01), INTC(10) or
1387                                                          INTD (11). */
1388 	uint64_t inta_map                     : 2;  /**< Maps INTA to INTA(00), INTB(01), INTC(10) or
1389                                                          INTD (11). */
1390 	uint64_t ctlp_ro                      : 1;  /**< Relaxed ordering enable for Completion TLPS. */
1391 	uint64_t reserved_6_6                 : 1;
1392 	uint64_t ptlp_ro                      : 1;  /**< Relaxed ordering enable for Posted TLPS. */
1393 	uint64_t reserved_1_4                 : 4;
1394 	uint64_t wait_com                     : 1;  /**< When set '1' casues the SLI to wait for a commit
1395                                                          from the L2C before sending additional stores to
1396                                                          the L2C from a MAC.
1397                                                          The SLI will request a commit on the last store
1398                                                          if more than one STORE operation is required on
1399                                                          the NCB.
1400                                                          Most applications will not notice a difference, so
1401                                                          should not set this bit. Setting the bit is more
1402                                                          conservative on ordering, lower performance */
1403 #else
1404 	uint64_t wait_com                     : 1;
1405 	uint64_t reserved_1_4                 : 4;
1406 	uint64_t ptlp_ro                      : 1;
1407 	uint64_t reserved_6_6                 : 1;
1408 	uint64_t ctlp_ro                      : 1;
1409 	uint64_t inta_map                     : 2;
1410 	uint64_t intb_map                     : 2;
1411 	uint64_t intc_map                     : 2;
1412 	uint64_t intd_map                     : 2;
1413 	uint64_t waitl_com                    : 1;
1414 	uint64_t dis_port                     : 1;
1415 	uint64_t inta                         : 1;
1416 	uint64_t intb                         : 1;
1417 	uint64_t intc                         : 1;
1418 	uint64_t intd                         : 1;
1419 	uint64_t reserved_22_63               : 42;
1420 #endif
1421 	} s;
1422 	struct cvmx_sli_ctl_portx_s           cn61xx;
1423 	struct cvmx_sli_ctl_portx_s           cn63xx;
1424 	struct cvmx_sli_ctl_portx_s           cn63xxp1;
1425 	struct cvmx_sli_ctl_portx_s           cn66xx;
1426 	struct cvmx_sli_ctl_portx_s           cn68xx;
1427 	struct cvmx_sli_ctl_portx_s           cn68xxp1;
1428 	struct cvmx_sli_ctl_portx_s           cnf71xx;
1429 };
1430 typedef union cvmx_sli_ctl_portx cvmx_sli_ctl_portx_t;
1431 
1432 /**
1433  * cvmx_sli_ctl_status
1434  *
1435  * SLI_CTL_STATUS = SLI Control Status Register
1436  *
1437  * Contains control and status for SLI. Writes to this register are not ordered with writes/reads to the MAC Memory space.
1438  * To ensure that a write has completed the user must read the register before making an access(i.e. MAC memory space)
1439  * that requires the value of this register to be updated.
1440  */
1441 union cvmx_sli_ctl_status {
1442 	uint64_t u64;
1443 	struct cvmx_sli_ctl_status_s {
1444 #ifdef __BIG_ENDIAN_BITFIELD
1445 	uint64_t reserved_20_63               : 44;
1446 	uint64_t p1_ntags                     : 6;  /**< Number of tags available for MAC Port1.
1447                                                          In RC mode 1 tag is needed for each outbound TLP
1448                                                          that requires a CPL TLP. In Endpoint mode the
1449                                                          number of tags required for a TLP request is
1450                                                          1 per 64-bytes of CPL data + 1.
1451                                                          This field should only be written as part of
1452                                                          reset sequence, before issuing any reads, CFGs, or
1453                                                          IO transactions from the core(s). */
1454 	uint64_t p0_ntags                     : 6;  /**< Number of tags available for outbound TLPs to the
1455                                                          MACS. One tag is needed for each outbound TLP that
1456                                                          requires a CPL TLP.
1457                                                          This field should only be written as part of
1458                                                          reset sequence, before issuing any reads, CFGs, or
1459                                                          IO transactions from the core(s). */
1460 	uint64_t chip_rev                     : 8;  /**< The chip revision. */
1461 #else
1462 	uint64_t chip_rev                     : 8;
1463 	uint64_t p0_ntags                     : 6;
1464 	uint64_t p1_ntags                     : 6;
1465 	uint64_t reserved_20_63               : 44;
1466 #endif
1467 	} s;
1468 	struct cvmx_sli_ctl_status_cn61xx {
1469 #ifdef __BIG_ENDIAN_BITFIELD
1470 	uint64_t reserved_14_63               : 50;
1471 	uint64_t p0_ntags                     : 6;  /**< Number of tags available for outbound TLPs to the
1472                                                          MACS. One tag is needed for each outbound TLP that
1473                                                          requires a CPL TLP.
1474                                                          This field should only be written as part of
1475                                                          reset sequence, before issuing any reads, CFGs, or
1476                                                          IO transactions from the core(s). */
1477 	uint64_t chip_rev                     : 8;  /**< The chip revision. */
1478 #else
1479 	uint64_t chip_rev                     : 8;
1480 	uint64_t p0_ntags                     : 6;
1481 	uint64_t reserved_14_63               : 50;
1482 #endif
1483 	} cn61xx;
1484 	struct cvmx_sli_ctl_status_s          cn63xx;
1485 	struct cvmx_sli_ctl_status_s          cn63xxp1;
1486 	struct cvmx_sli_ctl_status_cn61xx     cn66xx;
1487 	struct cvmx_sli_ctl_status_s          cn68xx;
1488 	struct cvmx_sli_ctl_status_s          cn68xxp1;
1489 	struct cvmx_sli_ctl_status_cn61xx     cnf71xx;
1490 };
1491 typedef union cvmx_sli_ctl_status cvmx_sli_ctl_status_t;
1492 
1493 /**
1494  * cvmx_sli_data_out_cnt
1495  *
1496  * SLI_DATA_OUT_CNT = SLI DATA OUT COUNT
1497  *
1498  * The EXEC data out fifo-count and the data unload counter.
1499  */
1500 union cvmx_sli_data_out_cnt {
1501 	uint64_t u64;
1502 	struct cvmx_sli_data_out_cnt_s {
1503 #ifdef __BIG_ENDIAN_BITFIELD
1504 	uint64_t reserved_44_63               : 20;
1505 	uint64_t p1_ucnt                      : 16; /**< SLI Order-FIFO1 Fifo Unload Count. This counter is
1506                                                          incremented by '1' every time a word is removed
1507                                                          from the Data Out FIFO, whose count is shown in
1508                                                          P1_FCNT. */
1509 	uint64_t p1_fcnt                      : 6;  /**< SLI Order-FIFO1 Data Out Fifo Count. Number of
1510                                                          address data words to be sent out the Order-FIFO
1511                                                          presently buffered in the FIFO. */
1512 	uint64_t p0_ucnt                      : 16; /**< SLI Order-FIFO0 Fifo Unload Count. This counter is
1513                                                          incremented by '1' every time a word is removed
1514                                                          from the Data Out FIFO, whose count is shown in
1515                                                          P0_FCNT. */
1516 	uint64_t p0_fcnt                      : 6;  /**< SLI Order-FIFO0 Data Out Fifo Count. Number of
1517                                                          address data words to be sent out the Order-FIFO
1518                                                          presently buffered in the FIFO. */
1519 #else
1520 	uint64_t p0_fcnt                      : 6;
1521 	uint64_t p0_ucnt                      : 16;
1522 	uint64_t p1_fcnt                      : 6;
1523 	uint64_t p1_ucnt                      : 16;
1524 	uint64_t reserved_44_63               : 20;
1525 #endif
1526 	} s;
1527 	struct cvmx_sli_data_out_cnt_s        cn61xx;
1528 	struct cvmx_sli_data_out_cnt_s        cn63xx;
1529 	struct cvmx_sli_data_out_cnt_s        cn63xxp1;
1530 	struct cvmx_sli_data_out_cnt_s        cn66xx;
1531 	struct cvmx_sli_data_out_cnt_s        cn68xx;
1532 	struct cvmx_sli_data_out_cnt_s        cn68xxp1;
1533 	struct cvmx_sli_data_out_cnt_s        cnf71xx;
1534 };
1535 typedef union cvmx_sli_data_out_cnt cvmx_sli_data_out_cnt_t;
1536 
1537 /**
1538  * cvmx_sli_dbg_data
1539  *
1540  * SLI_DBG_DATA = SLI Debug Data Register
1541  *
1542  * Value returned on the debug-data lines from the RSLs
1543  */
1544 union cvmx_sli_dbg_data {
1545 	uint64_t u64;
1546 	struct cvmx_sli_dbg_data_s {
1547 #ifdef __BIG_ENDIAN_BITFIELD
1548 	uint64_t reserved_18_63               : 46;
1549 	uint64_t dsel_ext                     : 1;  /**< Allows changes in the external pins to set the
1550                                                          debug select value. */
1551 	uint64_t data                         : 17; /**< Value on the debug data lines. */
1552 #else
1553 	uint64_t data                         : 17;
1554 	uint64_t dsel_ext                     : 1;
1555 	uint64_t reserved_18_63               : 46;
1556 #endif
1557 	} s;
1558 	struct cvmx_sli_dbg_data_s            cn61xx;
1559 	struct cvmx_sli_dbg_data_s            cn63xx;
1560 	struct cvmx_sli_dbg_data_s            cn63xxp1;
1561 	struct cvmx_sli_dbg_data_s            cn66xx;
1562 	struct cvmx_sli_dbg_data_s            cn68xx;
1563 	struct cvmx_sli_dbg_data_s            cn68xxp1;
1564 	struct cvmx_sli_dbg_data_s            cnf71xx;
1565 };
1566 typedef union cvmx_sli_dbg_data cvmx_sli_dbg_data_t;
1567 
1568 /**
1569  * cvmx_sli_dbg_select
1570  *
1571  * SLI_DBG_SELECT = Debug Select Register
1572  *
1573  * Contains the debug select value last written to the RSLs.
1574  */
1575 union cvmx_sli_dbg_select {
1576 	uint64_t u64;
1577 	struct cvmx_sli_dbg_select_s {
1578 #ifdef __BIG_ENDIAN_BITFIELD
1579 	uint64_t reserved_33_63               : 31;
1580 	uint64_t adbg_sel                     : 1;  /**< When set '1' the SLI_DBG_DATA[DATA] will only be
1581                                                          loaded when SLI_DBG_DATA[DATA] bit [16] is a '1'.
1582                                                          When the debug data comes from an Async-RSL bit
1583                                                          16 is used to tell that the data present is valid. */
1584 	uint64_t dbg_sel                      : 32; /**< When this register is written the RML will write
1585                                                          all "F"s to the previous RTL to disable it from
1586                                                          sending Debug-Data. The RML will then send a write
1587                                                          to the new RSL with the supplied Debug-Select
1588                                                          value. Because it takes time for the new Debug
1589                                                          Select value to take effect and the requested
1590                                                          Debug-Data to return, time is needed to the new
1591                                                          Debug-Data to arrive.  The inititator of the Debug
1592                                                          Select should issue a read to a CSR before reading
1593                                                          the Debug Data (this read could also be to the
1594                                                          SLI_DBG_DATA but the returned value for the first
1595                                                          read will return NS data. */
1596 #else
1597 	uint64_t dbg_sel                      : 32;
1598 	uint64_t adbg_sel                     : 1;
1599 	uint64_t reserved_33_63               : 31;
1600 #endif
1601 	} s;
1602 	struct cvmx_sli_dbg_select_s          cn61xx;
1603 	struct cvmx_sli_dbg_select_s          cn63xx;
1604 	struct cvmx_sli_dbg_select_s          cn63xxp1;
1605 	struct cvmx_sli_dbg_select_s          cn66xx;
1606 	struct cvmx_sli_dbg_select_s          cn68xx;
1607 	struct cvmx_sli_dbg_select_s          cn68xxp1;
1608 	struct cvmx_sli_dbg_select_s          cnf71xx;
1609 };
1610 typedef union cvmx_sli_dbg_select cvmx_sli_dbg_select_t;
1611 
1612 /**
1613  * cvmx_sli_dma#_cnt
1614  *
1615  * SLI_DMAx_CNT = SLI DMA Count
1616  *
1617  * The DMA Count value.
1618  */
1619 union cvmx_sli_dmax_cnt {
1620 	uint64_t u64;
1621 	struct cvmx_sli_dmax_cnt_s {
1622 #ifdef __BIG_ENDIAN_BITFIELD
1623 	uint64_t reserved_32_63               : 32;
1624 	uint64_t cnt                          : 32; /**< The DMA counter.
1625                                                          Writing this field will cause the written value
1626                                                          to be subtracted from DMA. HW will optionally
1627                                                          increment this field after it completes an
1628                                                          OUTBOUND or EXTERNAL-ONLY DMA instruction. These
1629                                                          increments may cause interrupts. Refer to
1630                                                          SLI_DMAx_INT_LEVEL and SLI_INT_SUM[DCNT,DTIME]. */
1631 #else
1632 	uint64_t cnt                          : 32;
1633 	uint64_t reserved_32_63               : 32;
1634 #endif
1635 	} s;
1636 	struct cvmx_sli_dmax_cnt_s            cn61xx;
1637 	struct cvmx_sli_dmax_cnt_s            cn63xx;
1638 	struct cvmx_sli_dmax_cnt_s            cn63xxp1;
1639 	struct cvmx_sli_dmax_cnt_s            cn66xx;
1640 	struct cvmx_sli_dmax_cnt_s            cn68xx;
1641 	struct cvmx_sli_dmax_cnt_s            cn68xxp1;
1642 	struct cvmx_sli_dmax_cnt_s            cnf71xx;
1643 };
1644 typedef union cvmx_sli_dmax_cnt cvmx_sli_dmax_cnt_t;
1645 
1646 /**
1647  * cvmx_sli_dma#_int_level
1648  *
1649  * SLI_DMAx_INT_LEVEL = SLI DMAx Interrupt Level
1650  *
1651  * Thresholds for DMA count and timer interrupts.
1652  */
1653 union cvmx_sli_dmax_int_level {
1654 	uint64_t u64;
1655 	struct cvmx_sli_dmax_int_level_s {
1656 #ifdef __BIG_ENDIAN_BITFIELD
1657 	uint64_t time                         : 32; /**< Whenever the SLI_DMAx_TIM[TIM] timer exceeds
1658                                                          this value, SLI_INT_SUM[DTIME<x>] is set.
1659                                                          The SLI_DMAx_TIM[TIM] timer increments every SLI
1660                                                          clock whenever SLI_DMAx_CNT[CNT]!=0, and is
1661                                                          cleared when SLI_INT_SUM[DTIME<x>] is written with
1662                                                          one. */
1663 	uint64_t cnt                          : 32; /**< Whenever SLI_DMAx_CNT[CNT] exceeds this value,
1664                                                          SLI_INT_SUM[DCNT<x>] is set. */
1665 #else
1666 	uint64_t cnt                          : 32;
1667 	uint64_t time                         : 32;
1668 #endif
1669 	} s;
1670 	struct cvmx_sli_dmax_int_level_s      cn61xx;
1671 	struct cvmx_sli_dmax_int_level_s      cn63xx;
1672 	struct cvmx_sli_dmax_int_level_s      cn63xxp1;
1673 	struct cvmx_sli_dmax_int_level_s      cn66xx;
1674 	struct cvmx_sli_dmax_int_level_s      cn68xx;
1675 	struct cvmx_sli_dmax_int_level_s      cn68xxp1;
1676 	struct cvmx_sli_dmax_int_level_s      cnf71xx;
1677 };
1678 typedef union cvmx_sli_dmax_int_level cvmx_sli_dmax_int_level_t;
1679 
1680 /**
1681  * cvmx_sli_dma#_tim
1682  *
1683  * SLI_DMAx_TIM = SLI DMA Timer
1684  *
1685  * The DMA Timer value.
1686  */
1687 union cvmx_sli_dmax_tim {
1688 	uint64_t u64;
1689 	struct cvmx_sli_dmax_tim_s {
1690 #ifdef __BIG_ENDIAN_BITFIELD
1691 	uint64_t reserved_32_63               : 32;
1692 	uint64_t tim                          : 32; /**< The DMA timer value.
1693                                                          The timer will increment when SLI_DMAx_CNT[CNT]!=0
1694                                                          and will clear when SLI_DMAx_CNT[CNT]==0 */
1695 #else
1696 	uint64_t tim                          : 32;
1697 	uint64_t reserved_32_63               : 32;
1698 #endif
1699 	} s;
1700 	struct cvmx_sli_dmax_tim_s            cn61xx;
1701 	struct cvmx_sli_dmax_tim_s            cn63xx;
1702 	struct cvmx_sli_dmax_tim_s            cn63xxp1;
1703 	struct cvmx_sli_dmax_tim_s            cn66xx;
1704 	struct cvmx_sli_dmax_tim_s            cn68xx;
1705 	struct cvmx_sli_dmax_tim_s            cn68xxp1;
1706 	struct cvmx_sli_dmax_tim_s            cnf71xx;
1707 };
1708 typedef union cvmx_sli_dmax_tim cvmx_sli_dmax_tim_t;
1709 
1710 /**
1711  * cvmx_sli_int_enb_ciu
1712  *
1713  * SLI_INT_ENB_CIU = SLI's Interrupt Enable CIU Register
1714  *
1715  * Used to enable the various interrupting conditions of SLI
1716  */
1717 union cvmx_sli_int_enb_ciu {
1718 	uint64_t u64;
1719 	struct cvmx_sli_int_enb_ciu_s {
1720 #ifdef __BIG_ENDIAN_BITFIELD
1721 	uint64_t reserved_62_63               : 2;
1722 	uint64_t pipe_err                     : 1;  /**< Illegal packet csr address. */
1723 	uint64_t ill_pad                      : 1;  /**< Illegal packet csr address. */
1724 	uint64_t sprt3_err                    : 1;  /**< Error Response received on SLI port 3. */
1725 	uint64_t sprt2_err                    : 1;  /**< Error Response received on SLI port 2. */
1726 	uint64_t sprt1_err                    : 1;  /**< Error Response received on SLI port 1. */
1727 	uint64_t sprt0_err                    : 1;  /**< Error Response received on SLI port 0. */
1728 	uint64_t pins_err                     : 1;  /**< Read Error during packet instruction fetch. */
1729 	uint64_t pop_err                      : 1;  /**< Read Error during packet scatter pointer fetch. */
1730 	uint64_t pdi_err                      : 1;  /**< Read Error during packet data fetch. */
1731 	uint64_t pgl_err                      : 1;  /**< Read Error during gather list fetch. */
1732 	uint64_t pin_bp                       : 1;  /**< Packet Input Count exceeded WMARK. */
1733 	uint64_t pout_err                     : 1;  /**< Packet Out Interrupt, Error From PKO. */
1734 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell Count Overflow. */
1735 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell Count Overflow. */
1736 	uint64_t reserved_38_47               : 10;
1737 	uint64_t dtime                        : 2;  /**< DMA Timer Interrupts */
1738 	uint64_t dcnt                         : 2;  /**< DMA Count Interrupts */
1739 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts */
1740 	uint64_t reserved_28_31               : 4;
1741 	uint64_t m3_un_wi                     : 1;  /**< Reserved. */
1742 	uint64_t m3_un_b0                     : 1;  /**< Reserved. */
1743 	uint64_t m3_up_wi                     : 1;  /**< Reserved. */
1744 	uint64_t m3_up_b0                     : 1;  /**< Reserved. */
1745 	uint64_t m2_un_wi                     : 1;  /**< Reserved. */
1746 	uint64_t m2_un_b0                     : 1;  /**< Reserved. */
1747 	uint64_t m2_up_wi                     : 1;  /**< Reserved. */
1748 	uint64_t m2_up_b0                     : 1;  /**< Reserved. */
1749 	uint64_t reserved_18_19               : 2;
1750 	uint64_t mio_int1                     : 1;  /**< Enables SLI_INT_SUM[17] to generate an
1751                                                          interrupt on the RSL.
1752                                                          THIS SHOULD NEVER BE SET */
1753 	uint64_t mio_int0                     : 1;  /**< Enables SLI_INT_SUM[16] to generate an
1754                                                          interrupt on the RSL.
1755                                                          THIS SHOULD NEVER BE SET */
1756 	uint64_t m1_un_wi                     : 1;  /**< Enables SLI_INT_SUM[15] to generate an
1757                                                          interrupt on the RSL. */
1758 	uint64_t m1_un_b0                     : 1;  /**< Enables SLI_INT_SUM[14] to generate an
1759                                                          interrupt on the RSL. */
1760 	uint64_t m1_up_wi                     : 1;  /**< Enables SLI_INT_SUM[13] to generate an
1761                                                          interrupt on the RSL. */
1762 	uint64_t m1_up_b0                     : 1;  /**< Enables SLI_INT_SUM[12] to generate an
1763                                                          interrupt on the RSL. */
1764 	uint64_t m0_un_wi                     : 1;  /**< Enables SLI_INT_SUM[11] to generate an
1765                                                          interrupt on the RSL. */
1766 	uint64_t m0_un_b0                     : 1;  /**< Enables SLI_INT_SUM[10] to generate an
1767                                                          interrupt on the RSL. */
1768 	uint64_t m0_up_wi                     : 1;  /**< Enables SLI_INT_SUM[9] to generate an
1769                                                          interrupt on the RSL. */
1770 	uint64_t m0_up_b0                     : 1;  /**< Enables SLI_INT_SUM[8] to generate an
1771                                                          interrupt on the RSL. */
1772 	uint64_t reserved_6_7                 : 2;
1773 	uint64_t ptime                        : 1;  /**< Enables SLI_INT_SUM[5] to generate an
1774                                                          interrupt on the RSL. */
1775 	uint64_t pcnt                         : 1;  /**< Enables SLI_INT_SUM[4] to generate an
1776                                                          interrupt on the RSL. */
1777 	uint64_t iob2big                      : 1;  /**< Enables SLI_INT_SUM[3] to generate an
1778                                                          interrupt on the RSL. */
1779 	uint64_t bar0_to                      : 1;  /**< Enables SLI_INT_SUM[2] to generate an
1780                                                          interrupt on the RSL. */
1781 	uint64_t reserved_1_1                 : 1;
1782 	uint64_t rml_to                       : 1;  /**< Enables SLI_INT_SUM[0] to generate an
1783                                                          interrupt on the RSL. */
1784 #else
1785 	uint64_t rml_to                       : 1;
1786 	uint64_t reserved_1_1                 : 1;
1787 	uint64_t bar0_to                      : 1;
1788 	uint64_t iob2big                      : 1;
1789 	uint64_t pcnt                         : 1;
1790 	uint64_t ptime                        : 1;
1791 	uint64_t reserved_6_7                 : 2;
1792 	uint64_t m0_up_b0                     : 1;
1793 	uint64_t m0_up_wi                     : 1;
1794 	uint64_t m0_un_b0                     : 1;
1795 	uint64_t m0_un_wi                     : 1;
1796 	uint64_t m1_up_b0                     : 1;
1797 	uint64_t m1_up_wi                     : 1;
1798 	uint64_t m1_un_b0                     : 1;
1799 	uint64_t m1_un_wi                     : 1;
1800 	uint64_t mio_int0                     : 1;
1801 	uint64_t mio_int1                     : 1;
1802 	uint64_t reserved_18_19               : 2;
1803 	uint64_t m2_up_b0                     : 1;
1804 	uint64_t m2_up_wi                     : 1;
1805 	uint64_t m2_un_b0                     : 1;
1806 	uint64_t m2_un_wi                     : 1;
1807 	uint64_t m3_up_b0                     : 1;
1808 	uint64_t m3_up_wi                     : 1;
1809 	uint64_t m3_un_b0                     : 1;
1810 	uint64_t m3_un_wi                     : 1;
1811 	uint64_t reserved_28_31               : 4;
1812 	uint64_t dmafi                        : 2;
1813 	uint64_t dcnt                         : 2;
1814 	uint64_t dtime                        : 2;
1815 	uint64_t reserved_38_47               : 10;
1816 	uint64_t pidbof                       : 1;
1817 	uint64_t psldbof                      : 1;
1818 	uint64_t pout_err                     : 1;
1819 	uint64_t pin_bp                       : 1;
1820 	uint64_t pgl_err                      : 1;
1821 	uint64_t pdi_err                      : 1;
1822 	uint64_t pop_err                      : 1;
1823 	uint64_t pins_err                     : 1;
1824 	uint64_t sprt0_err                    : 1;
1825 	uint64_t sprt1_err                    : 1;
1826 	uint64_t sprt2_err                    : 1;
1827 	uint64_t sprt3_err                    : 1;
1828 	uint64_t ill_pad                      : 1;
1829 	uint64_t pipe_err                     : 1;
1830 	uint64_t reserved_62_63               : 2;
1831 #endif
1832 	} s;
1833 	struct cvmx_sli_int_enb_ciu_cn61xx {
1834 #ifdef __BIG_ENDIAN_BITFIELD
1835 	uint64_t reserved_61_63               : 3;
1836 	uint64_t ill_pad                      : 1;  /**< Illegal packet csr address. */
1837 	uint64_t sprt3_err                    : 1;  /**< Error Response received on SLI port 3. */
1838 	uint64_t sprt2_err                    : 1;  /**< Error Response received on SLI port 2. */
1839 	uint64_t sprt1_err                    : 1;  /**< Error Response received on SLI port 1. */
1840 	uint64_t sprt0_err                    : 1;  /**< Error Response received on SLI port 0. */
1841 	uint64_t pins_err                     : 1;  /**< Read Error during packet instruction fetch. */
1842 	uint64_t pop_err                      : 1;  /**< Read Error during packet scatter pointer fetch. */
1843 	uint64_t pdi_err                      : 1;  /**< Read Error during packet data fetch. */
1844 	uint64_t pgl_err                      : 1;  /**< Read Error during gather list fetch. */
1845 	uint64_t pin_bp                       : 1;  /**< Packet Input Count exceeded WMARK. */
1846 	uint64_t pout_err                     : 1;  /**< Packet Out Interrupt, Error From PKO. */
1847 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell Count Overflow. */
1848 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell Count Overflow. */
1849 	uint64_t reserved_38_47               : 10;
1850 	uint64_t dtime                        : 2;  /**< DMA Timer Interrupts */
1851 	uint64_t dcnt                         : 2;  /**< DMA Count Interrupts */
1852 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts */
1853 	uint64_t reserved_28_31               : 4;
1854 	uint64_t m3_un_wi                     : 1;  /**< Reserved. */
1855 	uint64_t m3_un_b0                     : 1;  /**< Reserved. */
1856 	uint64_t m3_up_wi                     : 1;  /**< Reserved. */
1857 	uint64_t m3_up_b0                     : 1;  /**< Reserved. */
1858 	uint64_t m2_un_wi                     : 1;  /**< Reserved. */
1859 	uint64_t m2_un_b0                     : 1;  /**< Reserved. */
1860 	uint64_t m2_up_wi                     : 1;  /**< Reserved. */
1861 	uint64_t m2_up_b0                     : 1;  /**< Reserved. */
1862 	uint64_t reserved_18_19               : 2;
1863 	uint64_t mio_int1                     : 1;  /**< Enables SLI_INT_SUM[17] to generate an
1864                                                          interrupt on the RSL.
1865                                                          THIS SHOULD NEVER BE SET */
1866 	uint64_t mio_int0                     : 1;  /**< Enables SLI_INT_SUM[16] to generate an
1867                                                          interrupt on the RSL.
1868                                                          THIS SHOULD NEVER BE SET */
1869 	uint64_t m1_un_wi                     : 1;  /**< Enables SLI_INT_SUM[15] to generate an
1870                                                          interrupt on the RSL. */
1871 	uint64_t m1_un_b0                     : 1;  /**< Enables SLI_INT_SUM[14] to generate an
1872                                                          interrupt on the RSL. */
1873 	uint64_t m1_up_wi                     : 1;  /**< Enables SLI_INT_SUM[13] to generate an
1874                                                          interrupt on the RSL. */
1875 	uint64_t m1_up_b0                     : 1;  /**< Enables SLI_INT_SUM[12] to generate an
1876                                                          interrupt on the RSL. */
1877 	uint64_t m0_un_wi                     : 1;  /**< Enables SLI_INT_SUM[11] to generate an
1878                                                          interrupt on the RSL. */
1879 	uint64_t m0_un_b0                     : 1;  /**< Enables SLI_INT_SUM[10] to generate an
1880                                                          interrupt on the RSL. */
1881 	uint64_t m0_up_wi                     : 1;  /**< Enables SLI_INT_SUM[9] to generate an
1882                                                          interrupt on the RSL. */
1883 	uint64_t m0_up_b0                     : 1;  /**< Enables SLI_INT_SUM[8] to generate an
1884                                                          interrupt on the RSL. */
1885 	uint64_t reserved_6_7                 : 2;
1886 	uint64_t ptime                        : 1;  /**< Enables SLI_INT_SUM[5] to generate an
1887                                                          interrupt on the RSL. */
1888 	uint64_t pcnt                         : 1;  /**< Enables SLI_INT_SUM[4] to generate an
1889                                                          interrupt on the RSL. */
1890 	uint64_t iob2big                      : 1;  /**< Enables SLI_INT_SUM[3] to generate an
1891                                                          interrupt on the RSL. */
1892 	uint64_t bar0_to                      : 1;  /**< Enables SLI_INT_SUM[2] to generate an
1893                                                          interrupt on the RSL. */
1894 	uint64_t reserved_1_1                 : 1;
1895 	uint64_t rml_to                       : 1;  /**< Enables SLI_INT_SUM[0] to generate an
1896                                                          interrupt on the RSL. */
1897 #else
1898 	uint64_t rml_to                       : 1;
1899 	uint64_t reserved_1_1                 : 1;
1900 	uint64_t bar0_to                      : 1;
1901 	uint64_t iob2big                      : 1;
1902 	uint64_t pcnt                         : 1;
1903 	uint64_t ptime                        : 1;
1904 	uint64_t reserved_6_7                 : 2;
1905 	uint64_t m0_up_b0                     : 1;
1906 	uint64_t m0_up_wi                     : 1;
1907 	uint64_t m0_un_b0                     : 1;
1908 	uint64_t m0_un_wi                     : 1;
1909 	uint64_t m1_up_b0                     : 1;
1910 	uint64_t m1_up_wi                     : 1;
1911 	uint64_t m1_un_b0                     : 1;
1912 	uint64_t m1_un_wi                     : 1;
1913 	uint64_t mio_int0                     : 1;
1914 	uint64_t mio_int1                     : 1;
1915 	uint64_t reserved_18_19               : 2;
1916 	uint64_t m2_up_b0                     : 1;
1917 	uint64_t m2_up_wi                     : 1;
1918 	uint64_t m2_un_b0                     : 1;
1919 	uint64_t m2_un_wi                     : 1;
1920 	uint64_t m3_up_b0                     : 1;
1921 	uint64_t m3_up_wi                     : 1;
1922 	uint64_t m3_un_b0                     : 1;
1923 	uint64_t m3_un_wi                     : 1;
1924 	uint64_t reserved_28_31               : 4;
1925 	uint64_t dmafi                        : 2;
1926 	uint64_t dcnt                         : 2;
1927 	uint64_t dtime                        : 2;
1928 	uint64_t reserved_38_47               : 10;
1929 	uint64_t pidbof                       : 1;
1930 	uint64_t psldbof                      : 1;
1931 	uint64_t pout_err                     : 1;
1932 	uint64_t pin_bp                       : 1;
1933 	uint64_t pgl_err                      : 1;
1934 	uint64_t pdi_err                      : 1;
1935 	uint64_t pop_err                      : 1;
1936 	uint64_t pins_err                     : 1;
1937 	uint64_t sprt0_err                    : 1;
1938 	uint64_t sprt1_err                    : 1;
1939 	uint64_t sprt2_err                    : 1;
1940 	uint64_t sprt3_err                    : 1;
1941 	uint64_t ill_pad                      : 1;
1942 	uint64_t reserved_61_63               : 3;
1943 #endif
1944 	} cn61xx;
1945 	struct cvmx_sli_int_enb_ciu_cn63xx {
1946 #ifdef __BIG_ENDIAN_BITFIELD
1947 	uint64_t reserved_61_63               : 3;
1948 	uint64_t ill_pad                      : 1;  /**< Illegal packet csr address. */
1949 	uint64_t reserved_58_59               : 2;
1950 	uint64_t sprt1_err                    : 1;  /**< Error Response received on SLI port 1. */
1951 	uint64_t sprt0_err                    : 1;  /**< Error Response received on SLI port 0. */
1952 	uint64_t pins_err                     : 1;  /**< Read Error during packet instruction fetch. */
1953 	uint64_t pop_err                      : 1;  /**< Read Error during packet scatter pointer fetch. */
1954 	uint64_t pdi_err                      : 1;  /**< Read Error during packet data fetch. */
1955 	uint64_t pgl_err                      : 1;  /**< Read Error during gather list fetch. */
1956 	uint64_t pin_bp                       : 1;  /**< Packet Input Count exceeded WMARK. */
1957 	uint64_t pout_err                     : 1;  /**< Packet Out Interrupt, Error From PKO. */
1958 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell Count Overflow. */
1959 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell Count Overflow. */
1960 	uint64_t reserved_38_47               : 10;
1961 	uint64_t dtime                        : 2;  /**< DMA Timer Interrupts */
1962 	uint64_t dcnt                         : 2;  /**< DMA Count Interrupts */
1963 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts */
1964 	uint64_t reserved_18_31               : 14;
1965 	uint64_t mio_int1                     : 1;  /**< Enables SLI_INT_SUM[17] to generate an
1966                                                          interrupt on the RSL.
1967                                                          THIS SHOULD NEVER BE SET */
1968 	uint64_t mio_int0                     : 1;  /**< Enables SLI_INT_SUM[16] to generate an
1969                                                          interrupt on the RSL.
1970                                                          THIS SHOULD NEVER BE SET */
1971 	uint64_t m1_un_wi                     : 1;  /**< Enables SLI_INT_SUM[15] to generate an
1972                                                          interrupt on the RSL. */
1973 	uint64_t m1_un_b0                     : 1;  /**< Enables SLI_INT_SUM[14] to generate an
1974                                                          interrupt on the RSL. */
1975 	uint64_t m1_up_wi                     : 1;  /**< Enables SLI_INT_SUM[13] to generate an
1976                                                          interrupt on the RSL. */
1977 	uint64_t m1_up_b0                     : 1;  /**< Enables SLI_INT_SUM[12] to generate an
1978                                                          interrupt on the RSL. */
1979 	uint64_t m0_un_wi                     : 1;  /**< Enables SLI_INT_SUM[11] to generate an
1980                                                          interrupt on the RSL. */
1981 	uint64_t m0_un_b0                     : 1;  /**< Enables SLI_INT_SUM[10] to generate an
1982                                                          interrupt on the RSL. */
1983 	uint64_t m0_up_wi                     : 1;  /**< Enables SLI_INT_SUM[9] to generate an
1984                                                          interrupt on the RSL. */
1985 	uint64_t m0_up_b0                     : 1;  /**< Enables SLI_INT_SUM[8] to generate an
1986                                                          interrupt on the RSL. */
1987 	uint64_t reserved_6_7                 : 2;
1988 	uint64_t ptime                        : 1;  /**< Enables SLI_INT_SUM[5] to generate an
1989                                                          interrupt on the RSL. */
1990 	uint64_t pcnt                         : 1;  /**< Enables SLI_INT_SUM[4] to generate an
1991                                                          interrupt on the RSL. */
1992 	uint64_t iob2big                      : 1;  /**< Enables SLI_INT_SUM[3] to generate an
1993                                                          interrupt on the RSL. */
1994 	uint64_t bar0_to                      : 1;  /**< Enables SLI_INT_SUM[2] to generate an
1995                                                          interrupt on the RSL. */
1996 	uint64_t reserved_1_1                 : 1;
1997 	uint64_t rml_to                       : 1;  /**< Enables SLI_INT_SUM[0] to generate an
1998                                                          interrupt on the RSL. */
1999 #else
2000 	uint64_t rml_to                       : 1;
2001 	uint64_t reserved_1_1                 : 1;
2002 	uint64_t bar0_to                      : 1;
2003 	uint64_t iob2big                      : 1;
2004 	uint64_t pcnt                         : 1;
2005 	uint64_t ptime                        : 1;
2006 	uint64_t reserved_6_7                 : 2;
2007 	uint64_t m0_up_b0                     : 1;
2008 	uint64_t m0_up_wi                     : 1;
2009 	uint64_t m0_un_b0                     : 1;
2010 	uint64_t m0_un_wi                     : 1;
2011 	uint64_t m1_up_b0                     : 1;
2012 	uint64_t m1_up_wi                     : 1;
2013 	uint64_t m1_un_b0                     : 1;
2014 	uint64_t m1_un_wi                     : 1;
2015 	uint64_t mio_int0                     : 1;
2016 	uint64_t mio_int1                     : 1;
2017 	uint64_t reserved_18_31               : 14;
2018 	uint64_t dmafi                        : 2;
2019 	uint64_t dcnt                         : 2;
2020 	uint64_t dtime                        : 2;
2021 	uint64_t reserved_38_47               : 10;
2022 	uint64_t pidbof                       : 1;
2023 	uint64_t psldbof                      : 1;
2024 	uint64_t pout_err                     : 1;
2025 	uint64_t pin_bp                       : 1;
2026 	uint64_t pgl_err                      : 1;
2027 	uint64_t pdi_err                      : 1;
2028 	uint64_t pop_err                      : 1;
2029 	uint64_t pins_err                     : 1;
2030 	uint64_t sprt0_err                    : 1;
2031 	uint64_t sprt1_err                    : 1;
2032 	uint64_t reserved_58_59               : 2;
2033 	uint64_t ill_pad                      : 1;
2034 	uint64_t reserved_61_63               : 3;
2035 #endif
2036 	} cn63xx;
2037 	struct cvmx_sli_int_enb_ciu_cn63xx    cn63xxp1;
2038 	struct cvmx_sli_int_enb_ciu_cn61xx    cn66xx;
2039 	struct cvmx_sli_int_enb_ciu_cn68xx {
2040 #ifdef __BIG_ENDIAN_BITFIELD
2041 	uint64_t reserved_62_63               : 2;
2042 	uint64_t pipe_err                     : 1;  /**< Illegal packet csr address. */
2043 	uint64_t ill_pad                      : 1;  /**< Illegal packet csr address. */
2044 	uint64_t reserved_58_59               : 2;
2045 	uint64_t sprt1_err                    : 1;  /**< Error Response received on SLI port 1. */
2046 	uint64_t sprt0_err                    : 1;  /**< Error Response received on SLI port 0. */
2047 	uint64_t pins_err                     : 1;  /**< Read Error during packet instruction fetch. */
2048 	uint64_t pop_err                      : 1;  /**< Read Error during packet scatter pointer fetch. */
2049 	uint64_t pdi_err                      : 1;  /**< Read Error during packet data fetch. */
2050 	uint64_t pgl_err                      : 1;  /**< Read Error during gather list fetch. */
2051 	uint64_t reserved_51_51               : 1;
2052 	uint64_t pout_err                     : 1;  /**< Packet Out Interrupt, Error From PKO. */
2053 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell Count Overflow. */
2054 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell Count Overflow. */
2055 	uint64_t reserved_38_47               : 10;
2056 	uint64_t dtime                        : 2;  /**< DMA Timer Interrupts */
2057 	uint64_t dcnt                         : 2;  /**< DMA Count Interrupts */
2058 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts */
2059 	uint64_t reserved_18_31               : 14;
2060 	uint64_t mio_int1                     : 1;  /**< Enables SLI_INT_SUM[17] to generate an
2061                                                          interrupt on the RSL.
2062                                                          THIS SHOULD NEVER BE SET */
2063 	uint64_t mio_int0                     : 1;  /**< Enables SLI_INT_SUM[16] to generate an
2064                                                          interrupt on the RSL.
2065                                                          THIS SHOULD NEVER BE SET */
2066 	uint64_t m1_un_wi                     : 1;  /**< Enables SLI_INT_SUM[15] to generate an
2067                                                          interrupt on the RSL. */
2068 	uint64_t m1_un_b0                     : 1;  /**< Enables SLI_INT_SUM[14] to generate an
2069                                                          interrupt on the RSL. */
2070 	uint64_t m1_up_wi                     : 1;  /**< Enables SLI_INT_SUM[13] to generate an
2071                                                          interrupt on the RSL. */
2072 	uint64_t m1_up_b0                     : 1;  /**< Enables SLI_INT_SUM[12] to generate an
2073                                                          interrupt on the RSL. */
2074 	uint64_t m0_un_wi                     : 1;  /**< Enables SLI_INT_SUM[11] to generate an
2075                                                          interrupt on the RSL. */
2076 	uint64_t m0_un_b0                     : 1;  /**< Enables SLI_INT_SUM[10] to generate an
2077                                                          interrupt on the RSL. */
2078 	uint64_t m0_up_wi                     : 1;  /**< Enables SLI_INT_SUM[9] to generate an
2079                                                          interrupt on the RSL. */
2080 	uint64_t m0_up_b0                     : 1;  /**< Enables SLI_INT_SUM[8] to generate an
2081                                                          interrupt on the RSL. */
2082 	uint64_t reserved_6_7                 : 2;
2083 	uint64_t ptime                        : 1;  /**< Enables SLI_INT_SUM[5] to generate an
2084                                                          interrupt on the RSL. */
2085 	uint64_t pcnt                         : 1;  /**< Enables SLI_INT_SUM[4] to generate an
2086                                                          interrupt on the RSL. */
2087 	uint64_t iob2big                      : 1;  /**< Enables SLI_INT_SUM[3] to generate an
2088                                                          interrupt on the RSL. */
2089 	uint64_t bar0_to                      : 1;  /**< Enables SLI_INT_SUM[2] to generate an
2090                                                          interrupt on the RSL. */
2091 	uint64_t reserved_1_1                 : 1;
2092 	uint64_t rml_to                       : 1;  /**< Enables SLI_INT_SUM[0] to generate an
2093                                                          interrupt on the RSL. */
2094 #else
2095 	uint64_t rml_to                       : 1;
2096 	uint64_t reserved_1_1                 : 1;
2097 	uint64_t bar0_to                      : 1;
2098 	uint64_t iob2big                      : 1;
2099 	uint64_t pcnt                         : 1;
2100 	uint64_t ptime                        : 1;
2101 	uint64_t reserved_6_7                 : 2;
2102 	uint64_t m0_up_b0                     : 1;
2103 	uint64_t m0_up_wi                     : 1;
2104 	uint64_t m0_un_b0                     : 1;
2105 	uint64_t m0_un_wi                     : 1;
2106 	uint64_t m1_up_b0                     : 1;
2107 	uint64_t m1_up_wi                     : 1;
2108 	uint64_t m1_un_b0                     : 1;
2109 	uint64_t m1_un_wi                     : 1;
2110 	uint64_t mio_int0                     : 1;
2111 	uint64_t mio_int1                     : 1;
2112 	uint64_t reserved_18_31               : 14;
2113 	uint64_t dmafi                        : 2;
2114 	uint64_t dcnt                         : 2;
2115 	uint64_t dtime                        : 2;
2116 	uint64_t reserved_38_47               : 10;
2117 	uint64_t pidbof                       : 1;
2118 	uint64_t psldbof                      : 1;
2119 	uint64_t pout_err                     : 1;
2120 	uint64_t reserved_51_51               : 1;
2121 	uint64_t pgl_err                      : 1;
2122 	uint64_t pdi_err                      : 1;
2123 	uint64_t pop_err                      : 1;
2124 	uint64_t pins_err                     : 1;
2125 	uint64_t sprt0_err                    : 1;
2126 	uint64_t sprt1_err                    : 1;
2127 	uint64_t reserved_58_59               : 2;
2128 	uint64_t ill_pad                      : 1;
2129 	uint64_t pipe_err                     : 1;
2130 	uint64_t reserved_62_63               : 2;
2131 #endif
2132 	} cn68xx;
2133 	struct cvmx_sli_int_enb_ciu_cn68xx    cn68xxp1;
2134 	struct cvmx_sli_int_enb_ciu_cn61xx    cnf71xx;
2135 };
2136 typedef union cvmx_sli_int_enb_ciu cvmx_sli_int_enb_ciu_t;
2137 
2138 /**
2139  * cvmx_sli_int_enb_port#
2140  *
2141  * SLI_INT_ENB_PORTX = SLI's Interrupt Enable Register per mac port
2142  *
2143  * Used to allow the generation of interrupts (MSI/INTA) to the PORT X
2144  *
2145  * Notes:
2146  * This CSR is not used when the corresponding MAC is sRIO.
2147  *
2148  */
2149 union cvmx_sli_int_enb_portx {
2150 	uint64_t u64;
2151 	struct cvmx_sli_int_enb_portx_s {
2152 #ifdef __BIG_ENDIAN_BITFIELD
2153 	uint64_t reserved_62_63               : 2;
2154 	uint64_t pipe_err                     : 1;  /**< Out of range PIPE value. */
2155 	uint64_t ill_pad                      : 1;  /**< Illegal packet csr address. */
2156 	uint64_t sprt3_err                    : 1;  /**< Error Response received on SLI port 3. */
2157 	uint64_t sprt2_err                    : 1;  /**< Error Response received on SLI port 2. */
2158 	uint64_t sprt1_err                    : 1;  /**< Error Response received on SLI port 1. */
2159 	uint64_t sprt0_err                    : 1;  /**< Error Response received on SLI port 0. */
2160 	uint64_t pins_err                     : 1;  /**< Read Error during packet instruction fetch. */
2161 	uint64_t pop_err                      : 1;  /**< Read Error during packet scatter pointer fetch. */
2162 	uint64_t pdi_err                      : 1;  /**< Read Error during packet data fetch. */
2163 	uint64_t pgl_err                      : 1;  /**< Read Error during gather list fetch. */
2164 	uint64_t pin_bp                       : 1;  /**< Packet Input Count exceeded WMARK. */
2165 	uint64_t pout_err                     : 1;  /**< Packet Out Interrupt, Error From PKO. */
2166 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell Count Overflow. */
2167 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell Count Overflow. */
2168 	uint64_t reserved_38_47               : 10;
2169 	uint64_t dtime                        : 2;  /**< DMA Timer Interrupts */
2170 	uint64_t dcnt                         : 2;  /**< DMA Count Interrupts */
2171 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts */
2172 	uint64_t reserved_28_31               : 4;
2173 	uint64_t m3_un_wi                     : 1;  /**< Reserved. */
2174 	uint64_t m3_un_b0                     : 1;  /**< Reserved. */
2175 	uint64_t m3_up_wi                     : 1;  /**< Reserved. */
2176 	uint64_t m3_up_b0                     : 1;  /**< Reserved. */
2177 	uint64_t m2_un_wi                     : 1;  /**< Reserved. */
2178 	uint64_t m2_un_b0                     : 1;  /**< Reserved. */
2179 	uint64_t m2_up_wi                     : 1;  /**< Reserved. */
2180 	uint64_t m2_up_b0                     : 1;  /**< Reserved. */
2181 	uint64_t mac1_int                     : 1;  /**< Enables SLI_INT_SUM[19] to generate an
2182                                                          interrupt to the PCIE-Port1 for MSI/inta.
2183                                                          The valuse of this bit has NO effect on PCIE Port0.
2184                                                          SLI_INT_ENB_PORT0[MAC1_INT] sould NEVER be set. */
2185 	uint64_t mac0_int                     : 1;  /**< Enables SLI_INT_SUM[18] to generate an
2186                                                          interrupt to the PCIE-Port0 for MSI/inta.
2187                                                          The valus of this bit has NO effect on PCIE Port1.
2188                                                          SLI_INT_ENB_PORT1[MAC0_INT] sould NEVER be set. */
2189 	uint64_t mio_int1                     : 1;  /**< Enables SLI_INT_SUM[17] to generate an
2190                                                          interrupt to the PCIE core for MSI/inta.
2191                                                          SLI_INT_ENB_PORT0[MIO_INT1] should NEVER be set. */
2192 	uint64_t mio_int0                     : 1;  /**< Enables SLI_INT_SUM[16] to generate an
2193                                                          interrupt to the PCIE core for MSI/inta.
2194                                                          SLI_INT_ENB_PORT1[MIO_INT0] should NEVER be set. */
2195 	uint64_t m1_un_wi                     : 1;  /**< Enables SLI_INT_SUM[15] to generate an
2196                                                          interrupt to the PCIE core for MSI/inta. */
2197 	uint64_t m1_un_b0                     : 1;  /**< Enables SLI_INT_SUM[14] to generate an
2198                                                          interrupt to the PCIE core for MSI/inta. */
2199 	uint64_t m1_up_wi                     : 1;  /**< Enables SLI_INT_SUM[13] to generate an
2200                                                          interrupt to the PCIE core for MSI/inta. */
2201 	uint64_t m1_up_b0                     : 1;  /**< Enables SLI_INT_SUM[12] to generate an
2202                                                          interrupt to the PCIE core for MSI/inta. */
2203 	uint64_t m0_un_wi                     : 1;  /**< Enables SLI_INT_SUM[11] to generate an
2204                                                          interrupt to the PCIE core for MSI/inta. */
2205 	uint64_t m0_un_b0                     : 1;  /**< Enables SLI_INT_SUM[10] to generate an
2206                                                          interrupt to the PCIE core for MSI/inta. */
2207 	uint64_t m0_up_wi                     : 1;  /**< Enables SLI_INT_SUM[9] to generate an
2208                                                          interrupt to the PCIE core for MSI/inta. */
2209 	uint64_t m0_up_b0                     : 1;  /**< Enables SLI_INT_SUM[8] to generate an
2210                                                          interrupt to the PCIE core for MSI/inta. */
2211 	uint64_t reserved_6_7                 : 2;
2212 	uint64_t ptime                        : 1;  /**< Enables SLI_INT_SUM[5] to generate an
2213                                                          interrupt to the PCIE core for MSI/inta. */
2214 	uint64_t pcnt                         : 1;  /**< Enables SLI_INT_SUM[4] to generate an
2215                                                          interrupt to the PCIE core for MSI/inta. */
2216 	uint64_t iob2big                      : 1;  /**< Enables SLI_INT_SUM[3] to generate an
2217                                                          interrupt to the PCIE core for MSI/inta. */
2218 	uint64_t bar0_to                      : 1;  /**< Enables SLI_INT_SUM[2] to generate an
2219                                                          interrupt to the PCIE core for MSI/inta. */
2220 	uint64_t reserved_1_1                 : 1;
2221 	uint64_t rml_to                       : 1;  /**< Enables SLI_INT_SUM[0] to generate an
2222                                                          interrupt to the PCIE core for MSI/inta. */
2223 #else
2224 	uint64_t rml_to                       : 1;
2225 	uint64_t reserved_1_1                 : 1;
2226 	uint64_t bar0_to                      : 1;
2227 	uint64_t iob2big                      : 1;
2228 	uint64_t pcnt                         : 1;
2229 	uint64_t ptime                        : 1;
2230 	uint64_t reserved_6_7                 : 2;
2231 	uint64_t m0_up_b0                     : 1;
2232 	uint64_t m0_up_wi                     : 1;
2233 	uint64_t m0_un_b0                     : 1;
2234 	uint64_t m0_un_wi                     : 1;
2235 	uint64_t m1_up_b0                     : 1;
2236 	uint64_t m1_up_wi                     : 1;
2237 	uint64_t m1_un_b0                     : 1;
2238 	uint64_t m1_un_wi                     : 1;
2239 	uint64_t mio_int0                     : 1;
2240 	uint64_t mio_int1                     : 1;
2241 	uint64_t mac0_int                     : 1;
2242 	uint64_t mac1_int                     : 1;
2243 	uint64_t m2_up_b0                     : 1;
2244 	uint64_t m2_up_wi                     : 1;
2245 	uint64_t m2_un_b0                     : 1;
2246 	uint64_t m2_un_wi                     : 1;
2247 	uint64_t m3_up_b0                     : 1;
2248 	uint64_t m3_up_wi                     : 1;
2249 	uint64_t m3_un_b0                     : 1;
2250 	uint64_t m3_un_wi                     : 1;
2251 	uint64_t reserved_28_31               : 4;
2252 	uint64_t dmafi                        : 2;
2253 	uint64_t dcnt                         : 2;
2254 	uint64_t dtime                        : 2;
2255 	uint64_t reserved_38_47               : 10;
2256 	uint64_t pidbof                       : 1;
2257 	uint64_t psldbof                      : 1;
2258 	uint64_t pout_err                     : 1;
2259 	uint64_t pin_bp                       : 1;
2260 	uint64_t pgl_err                      : 1;
2261 	uint64_t pdi_err                      : 1;
2262 	uint64_t pop_err                      : 1;
2263 	uint64_t pins_err                     : 1;
2264 	uint64_t sprt0_err                    : 1;
2265 	uint64_t sprt1_err                    : 1;
2266 	uint64_t sprt2_err                    : 1;
2267 	uint64_t sprt3_err                    : 1;
2268 	uint64_t ill_pad                      : 1;
2269 	uint64_t pipe_err                     : 1;
2270 	uint64_t reserved_62_63               : 2;
2271 #endif
2272 	} s;
2273 	struct cvmx_sli_int_enb_portx_cn61xx {
2274 #ifdef __BIG_ENDIAN_BITFIELD
2275 	uint64_t reserved_61_63               : 3;
2276 	uint64_t ill_pad                      : 1;  /**< Illegal packet csr address. */
2277 	uint64_t sprt3_err                    : 1;  /**< Error Response received on SLI port 3. */
2278 	uint64_t sprt2_err                    : 1;  /**< Error Response received on SLI port 2. */
2279 	uint64_t sprt1_err                    : 1;  /**< Error Response received on SLI port 1. */
2280 	uint64_t sprt0_err                    : 1;  /**< Error Response received on SLI port 0. */
2281 	uint64_t pins_err                     : 1;  /**< Read Error during packet instruction fetch. */
2282 	uint64_t pop_err                      : 1;  /**< Read Error during packet scatter pointer fetch. */
2283 	uint64_t pdi_err                      : 1;  /**< Read Error during packet data fetch. */
2284 	uint64_t pgl_err                      : 1;  /**< Read Error during gather list fetch. */
2285 	uint64_t pin_bp                       : 1;  /**< Packet Input Count exceeded WMARK. */
2286 	uint64_t pout_err                     : 1;  /**< Packet Out Interrupt, Error From PKO. */
2287 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell Count Overflow. */
2288 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell Count Overflow. */
2289 	uint64_t reserved_38_47               : 10;
2290 	uint64_t dtime                        : 2;  /**< DMA Timer Interrupts */
2291 	uint64_t dcnt                         : 2;  /**< DMA Count Interrupts */
2292 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts */
2293 	uint64_t reserved_28_31               : 4;
2294 	uint64_t m3_un_wi                     : 1;  /**< Reserved. */
2295 	uint64_t m3_un_b0                     : 1;  /**< Reserved. */
2296 	uint64_t m3_up_wi                     : 1;  /**< Reserved. */
2297 	uint64_t m3_up_b0                     : 1;  /**< Reserved. */
2298 	uint64_t m2_un_wi                     : 1;  /**< Reserved. */
2299 	uint64_t m2_un_b0                     : 1;  /**< Reserved. */
2300 	uint64_t m2_up_wi                     : 1;  /**< Reserved. */
2301 	uint64_t m2_up_b0                     : 1;  /**< Reserved. */
2302 	uint64_t mac1_int                     : 1;  /**< Enables SLI_INT_SUM[19] to generate an
2303                                                          interrupt to the PCIE-Port1 for MSI/inta.
2304                                                          The valuse of this bit has NO effect on PCIE Port0.
2305                                                          SLI_INT_ENB_PORT0[MAC1_INT] sould NEVER be set. */
2306 	uint64_t mac0_int                     : 1;  /**< Enables SLI_INT_SUM[18] to generate an
2307                                                          interrupt to the PCIE-Port0 for MSI/inta.
2308                                                          The valus of this bit has NO effect on PCIE Port1.
2309                                                          SLI_INT_ENB_PORT1[MAC0_INT] sould NEVER be set. */
2310 	uint64_t mio_int1                     : 1;  /**< Enables SLI_INT_SUM[17] to generate an
2311                                                          interrupt to the PCIE core for MSI/inta.
2312                                                          SLI_INT_ENB_PORT0[MIO_INT1] should NEVER be set. */
2313 	uint64_t mio_int0                     : 1;  /**< Enables SLI_INT_SUM[16] to generate an
2314                                                          interrupt to the PCIE core for MSI/inta.
2315                                                          SLI_INT_ENB_PORT1[MIO_INT0] should NEVER be set. */
2316 	uint64_t m1_un_wi                     : 1;  /**< Enables SLI_INT_SUM[15] to generate an
2317                                                          interrupt to the PCIE core for MSI/inta. */
2318 	uint64_t m1_un_b0                     : 1;  /**< Enables SLI_INT_SUM[14] to generate an
2319                                                          interrupt to the PCIE core for MSI/inta. */
2320 	uint64_t m1_up_wi                     : 1;  /**< Enables SLI_INT_SUM[13] to generate an
2321                                                          interrupt to the PCIE core for MSI/inta. */
2322 	uint64_t m1_up_b0                     : 1;  /**< Enables SLI_INT_SUM[12] to generate an
2323                                                          interrupt to the PCIE core for MSI/inta. */
2324 	uint64_t m0_un_wi                     : 1;  /**< Enables SLI_INT_SUM[11] to generate an
2325                                                          interrupt to the PCIE core for MSI/inta. */
2326 	uint64_t m0_un_b0                     : 1;  /**< Enables SLI_INT_SUM[10] to generate an
2327                                                          interrupt to the PCIE core for MSI/inta. */
2328 	uint64_t m0_up_wi                     : 1;  /**< Enables SLI_INT_SUM[9] to generate an
2329                                                          interrupt to the PCIE core for MSI/inta. */
2330 	uint64_t m0_up_b0                     : 1;  /**< Enables SLI_INT_SUM[8] to generate an
2331                                                          interrupt to the PCIE core for MSI/inta. */
2332 	uint64_t reserved_6_7                 : 2;
2333 	uint64_t ptime                        : 1;  /**< Enables SLI_INT_SUM[5] to generate an
2334                                                          interrupt to the PCIE core for MSI/inta. */
2335 	uint64_t pcnt                         : 1;  /**< Enables SLI_INT_SUM[4] to generate an
2336                                                          interrupt to the PCIE core for MSI/inta. */
2337 	uint64_t iob2big                      : 1;  /**< Enables SLI_INT_SUM[3] to generate an
2338                                                          interrupt to the PCIE core for MSI/inta. */
2339 	uint64_t bar0_to                      : 1;  /**< Enables SLI_INT_SUM[2] to generate an
2340                                                          interrupt to the PCIE core for MSI/inta. */
2341 	uint64_t reserved_1_1                 : 1;
2342 	uint64_t rml_to                       : 1;  /**< Enables SLI_INT_SUM[0] to generate an
2343                                                          interrupt to the PCIE core for MSI/inta. */
2344 #else
2345 	uint64_t rml_to                       : 1;
2346 	uint64_t reserved_1_1                 : 1;
2347 	uint64_t bar0_to                      : 1;
2348 	uint64_t iob2big                      : 1;
2349 	uint64_t pcnt                         : 1;
2350 	uint64_t ptime                        : 1;
2351 	uint64_t reserved_6_7                 : 2;
2352 	uint64_t m0_up_b0                     : 1;
2353 	uint64_t m0_up_wi                     : 1;
2354 	uint64_t m0_un_b0                     : 1;
2355 	uint64_t m0_un_wi                     : 1;
2356 	uint64_t m1_up_b0                     : 1;
2357 	uint64_t m1_up_wi                     : 1;
2358 	uint64_t m1_un_b0                     : 1;
2359 	uint64_t m1_un_wi                     : 1;
2360 	uint64_t mio_int0                     : 1;
2361 	uint64_t mio_int1                     : 1;
2362 	uint64_t mac0_int                     : 1;
2363 	uint64_t mac1_int                     : 1;
2364 	uint64_t m2_up_b0                     : 1;
2365 	uint64_t m2_up_wi                     : 1;
2366 	uint64_t m2_un_b0                     : 1;
2367 	uint64_t m2_un_wi                     : 1;
2368 	uint64_t m3_up_b0                     : 1;
2369 	uint64_t m3_up_wi                     : 1;
2370 	uint64_t m3_un_b0                     : 1;
2371 	uint64_t m3_un_wi                     : 1;
2372 	uint64_t reserved_28_31               : 4;
2373 	uint64_t dmafi                        : 2;
2374 	uint64_t dcnt                         : 2;
2375 	uint64_t dtime                        : 2;
2376 	uint64_t reserved_38_47               : 10;
2377 	uint64_t pidbof                       : 1;
2378 	uint64_t psldbof                      : 1;
2379 	uint64_t pout_err                     : 1;
2380 	uint64_t pin_bp                       : 1;
2381 	uint64_t pgl_err                      : 1;
2382 	uint64_t pdi_err                      : 1;
2383 	uint64_t pop_err                      : 1;
2384 	uint64_t pins_err                     : 1;
2385 	uint64_t sprt0_err                    : 1;
2386 	uint64_t sprt1_err                    : 1;
2387 	uint64_t sprt2_err                    : 1;
2388 	uint64_t sprt3_err                    : 1;
2389 	uint64_t ill_pad                      : 1;
2390 	uint64_t reserved_61_63               : 3;
2391 #endif
2392 	} cn61xx;
2393 	struct cvmx_sli_int_enb_portx_cn63xx {
2394 #ifdef __BIG_ENDIAN_BITFIELD
2395 	uint64_t reserved_61_63               : 3;
2396 	uint64_t ill_pad                      : 1;  /**< Illegal packet csr address. */
2397 	uint64_t reserved_58_59               : 2;
2398 	uint64_t sprt1_err                    : 1;  /**< Error Response received on SLI port 1. */
2399 	uint64_t sprt0_err                    : 1;  /**< Error Response received on SLI port 0. */
2400 	uint64_t pins_err                     : 1;  /**< Read Error during packet instruction fetch. */
2401 	uint64_t pop_err                      : 1;  /**< Read Error during packet scatter pointer fetch. */
2402 	uint64_t pdi_err                      : 1;  /**< Read Error during packet data fetch. */
2403 	uint64_t pgl_err                      : 1;  /**< Read Error during gather list fetch. */
2404 	uint64_t pin_bp                       : 1;  /**< Packet Input Count exceeded WMARK. */
2405 	uint64_t pout_err                     : 1;  /**< Packet Out Interrupt, Error From PKO. */
2406 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell Count Overflow. */
2407 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell Count Overflow. */
2408 	uint64_t reserved_38_47               : 10;
2409 	uint64_t dtime                        : 2;  /**< DMA Timer Interrupts */
2410 	uint64_t dcnt                         : 2;  /**< DMA Count Interrupts */
2411 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts */
2412 	uint64_t reserved_20_31               : 12;
2413 	uint64_t mac1_int                     : 1;  /**< Enables SLI_INT_SUM[19] to generate an
2414                                                          interrupt to the PCIE-Port1 for MSI/inta.
2415                                                          The valuse of this bit has NO effect on PCIE Port0.
2416                                                          SLI_INT_ENB_PORT0[MAC1_INT] sould NEVER be set. */
2417 	uint64_t mac0_int                     : 1;  /**< Enables SLI_INT_SUM[18] to generate an
2418                                                          interrupt to the PCIE-Port0 for MSI/inta.
2419                                                          The valus of this bit has NO effect on PCIE Port1.
2420                                                          SLI_INT_ENB_PORT1[MAC0_INT] sould NEVER be set. */
2421 	uint64_t mio_int1                     : 1;  /**< Enables SLI_INT_SUM[17] to generate an
2422                                                          interrupt to the PCIE core for MSI/inta.
2423                                                          SLI_INT_ENB_PORT0[MIO_INT1] should NEVER be set. */
2424 	uint64_t mio_int0                     : 1;  /**< Enables SLI_INT_SUM[16] to generate an
2425                                                          interrupt to the PCIE core for MSI/inta.
2426                                                          SLI_INT_ENB_PORT1[MIO_INT0] should NEVER be set. */
2427 	uint64_t m1_un_wi                     : 1;  /**< Enables SLI_INT_SUM[15] to generate an
2428                                                          interrupt to the PCIE core for MSI/inta. */
2429 	uint64_t m1_un_b0                     : 1;  /**< Enables SLI_INT_SUM[14] to generate an
2430                                                          interrupt to the PCIE core for MSI/inta. */
2431 	uint64_t m1_up_wi                     : 1;  /**< Enables SLI_INT_SUM[13] to generate an
2432                                                          interrupt to the PCIE core for MSI/inta. */
2433 	uint64_t m1_up_b0                     : 1;  /**< Enables SLI_INT_SUM[12] to generate an
2434                                                          interrupt to the PCIE core for MSI/inta. */
2435 	uint64_t m0_un_wi                     : 1;  /**< Enables SLI_INT_SUM[11] to generate an
2436                                                          interrupt to the PCIE core for MSI/inta. */
2437 	uint64_t m0_un_b0                     : 1;  /**< Enables SLI_INT_SUM[10] to generate an
2438                                                          interrupt to the PCIE core for MSI/inta. */
2439 	uint64_t m0_up_wi                     : 1;  /**< Enables SLI_INT_SUM[9] to generate an
2440                                                          interrupt to the PCIE core for MSI/inta. */
2441 	uint64_t m0_up_b0                     : 1;  /**< Enables SLI_INT_SUM[8] to generate an
2442                                                          interrupt to the PCIE core for MSI/inta. */
2443 	uint64_t reserved_6_7                 : 2;
2444 	uint64_t ptime                        : 1;  /**< Enables SLI_INT_SUM[5] to generate an
2445                                                          interrupt to the PCIE core for MSI/inta. */
2446 	uint64_t pcnt                         : 1;  /**< Enables SLI_INT_SUM[4] to generate an
2447                                                          interrupt to the PCIE core for MSI/inta. */
2448 	uint64_t iob2big                      : 1;  /**< Enables SLI_INT_SUM[3] to generate an
2449                                                          interrupt to the PCIE core for MSI/inta. */
2450 	uint64_t bar0_to                      : 1;  /**< Enables SLI_INT_SUM[2] to generate an
2451                                                          interrupt to the PCIE core for MSI/inta. */
2452 	uint64_t reserved_1_1                 : 1;
2453 	uint64_t rml_to                       : 1;  /**< Enables SLI_INT_SUM[0] to generate an
2454                                                          interrupt to the PCIE core for MSI/inta. */
2455 #else
2456 	uint64_t rml_to                       : 1;
2457 	uint64_t reserved_1_1                 : 1;
2458 	uint64_t bar0_to                      : 1;
2459 	uint64_t iob2big                      : 1;
2460 	uint64_t pcnt                         : 1;
2461 	uint64_t ptime                        : 1;
2462 	uint64_t reserved_6_7                 : 2;
2463 	uint64_t m0_up_b0                     : 1;
2464 	uint64_t m0_up_wi                     : 1;
2465 	uint64_t m0_un_b0                     : 1;
2466 	uint64_t m0_un_wi                     : 1;
2467 	uint64_t m1_up_b0                     : 1;
2468 	uint64_t m1_up_wi                     : 1;
2469 	uint64_t m1_un_b0                     : 1;
2470 	uint64_t m1_un_wi                     : 1;
2471 	uint64_t mio_int0                     : 1;
2472 	uint64_t mio_int1                     : 1;
2473 	uint64_t mac0_int                     : 1;
2474 	uint64_t mac1_int                     : 1;
2475 	uint64_t reserved_20_31               : 12;
2476 	uint64_t dmafi                        : 2;
2477 	uint64_t dcnt                         : 2;
2478 	uint64_t dtime                        : 2;
2479 	uint64_t reserved_38_47               : 10;
2480 	uint64_t pidbof                       : 1;
2481 	uint64_t psldbof                      : 1;
2482 	uint64_t pout_err                     : 1;
2483 	uint64_t pin_bp                       : 1;
2484 	uint64_t pgl_err                      : 1;
2485 	uint64_t pdi_err                      : 1;
2486 	uint64_t pop_err                      : 1;
2487 	uint64_t pins_err                     : 1;
2488 	uint64_t sprt0_err                    : 1;
2489 	uint64_t sprt1_err                    : 1;
2490 	uint64_t reserved_58_59               : 2;
2491 	uint64_t ill_pad                      : 1;
2492 	uint64_t reserved_61_63               : 3;
2493 #endif
2494 	} cn63xx;
2495 	struct cvmx_sli_int_enb_portx_cn63xx  cn63xxp1;
2496 	struct cvmx_sli_int_enb_portx_cn61xx  cn66xx;
2497 	struct cvmx_sli_int_enb_portx_cn68xx {
2498 #ifdef __BIG_ENDIAN_BITFIELD
2499 	uint64_t reserved_62_63               : 2;
2500 	uint64_t pipe_err                     : 1;  /**< Out of range PIPE value. */
2501 	uint64_t ill_pad                      : 1;  /**< Illegal packet csr address. */
2502 	uint64_t reserved_58_59               : 2;
2503 	uint64_t sprt1_err                    : 1;  /**< Error Response received on SLI port 1. */
2504 	uint64_t sprt0_err                    : 1;  /**< Error Response received on SLI port 0. */
2505 	uint64_t pins_err                     : 1;  /**< Read Error during packet instruction fetch. */
2506 	uint64_t pop_err                      : 1;  /**< Read Error during packet scatter pointer fetch. */
2507 	uint64_t pdi_err                      : 1;  /**< Read Error during packet data fetch. */
2508 	uint64_t pgl_err                      : 1;  /**< Read Error during gather list fetch. */
2509 	uint64_t reserved_51_51               : 1;
2510 	uint64_t pout_err                     : 1;  /**< Packet Out Interrupt, Error From PKO. */
2511 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell Count Overflow. */
2512 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell Count Overflow. */
2513 	uint64_t reserved_38_47               : 10;
2514 	uint64_t dtime                        : 2;  /**< DMA Timer Interrupts */
2515 	uint64_t dcnt                         : 2;  /**< DMA Count Interrupts */
2516 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts */
2517 	uint64_t reserved_20_31               : 12;
2518 	uint64_t mac1_int                     : 1;  /**< Enables SLI_INT_SUM[19] to generate an
2519                                                          interrupt to the PCIE-Port1 for MSI/inta.
2520                                                          The valuse of this bit has NO effect on PCIE Port0.
2521                                                          SLI_INT_ENB_PORT0[MAC1_INT] sould NEVER be set. */
2522 	uint64_t mac0_int                     : 1;  /**< Enables SLI_INT_SUM[18] to generate an
2523                                                          interrupt to the PCIE-Port0 for MSI/inta.
2524                                                          The valus of this bit has NO effect on PCIE Port1.
2525                                                          SLI_INT_ENB_PORT1[MAC0_INT] sould NEVER be set. */
2526 	uint64_t mio_int1                     : 1;  /**< Enables SLI_INT_SUM[17] to generate an
2527                                                          interrupt to the PCIE core for MSI/inta.
2528                                                          SLI_INT_ENB_PORT0[MIO_INT1] should NEVER be set. */
2529 	uint64_t mio_int0                     : 1;  /**< Enables SLI_INT_SUM[16] to generate an
2530                                                          interrupt to the PCIE core for MSI/inta.
2531                                                          SLI_INT_ENB_PORT1[MIO_INT0] should NEVER be set. */
2532 	uint64_t m1_un_wi                     : 1;  /**< Enables SLI_INT_SUM[15] to generate an
2533                                                          interrupt to the PCIE core for MSI/inta. */
2534 	uint64_t m1_un_b0                     : 1;  /**< Enables SLI_INT_SUM[14] to generate an
2535                                                          interrupt to the PCIE core for MSI/inta. */
2536 	uint64_t m1_up_wi                     : 1;  /**< Enables SLI_INT_SUM[13] to generate an
2537                                                          interrupt to the PCIE core for MSI/inta. */
2538 	uint64_t m1_up_b0                     : 1;  /**< Enables SLI_INT_SUM[12] to generate an
2539                                                          interrupt to the PCIE core for MSI/inta. */
2540 	uint64_t m0_un_wi                     : 1;  /**< Enables SLI_INT_SUM[11] to generate an
2541                                                          interrupt to the PCIE core for MSI/inta. */
2542 	uint64_t m0_un_b0                     : 1;  /**< Enables SLI_INT_SUM[10] to generate an
2543                                                          interrupt to the PCIE core for MSI/inta. */
2544 	uint64_t m0_up_wi                     : 1;  /**< Enables SLI_INT_SUM[9] to generate an
2545                                                          interrupt to the PCIE core for MSI/inta. */
2546 	uint64_t m0_up_b0                     : 1;  /**< Enables SLI_INT_SUM[8] to generate an
2547                                                          interrupt to the PCIE core for MSI/inta. */
2548 	uint64_t reserved_6_7                 : 2;
2549 	uint64_t ptime                        : 1;  /**< Enables SLI_INT_SUM[5] to generate an
2550                                                          interrupt to the PCIE core for MSI/inta. */
2551 	uint64_t pcnt                         : 1;  /**< Enables SLI_INT_SUM[4] to generate an
2552                                                          interrupt to the PCIE core for MSI/inta. */
2553 	uint64_t iob2big                      : 1;  /**< Enables SLI_INT_SUM[3] to generate an
2554                                                          interrupt to the PCIE core for MSI/inta. */
2555 	uint64_t bar0_to                      : 1;  /**< Enables SLI_INT_SUM[2] to generate an
2556                                                          interrupt to the PCIE core for MSI/inta. */
2557 	uint64_t reserved_1_1                 : 1;
2558 	uint64_t rml_to                       : 1;  /**< Enables SLI_INT_SUM[0] to generate an
2559                                                          interrupt to the PCIE core for MSI/inta. */
2560 #else
2561 	uint64_t rml_to                       : 1;
2562 	uint64_t reserved_1_1                 : 1;
2563 	uint64_t bar0_to                      : 1;
2564 	uint64_t iob2big                      : 1;
2565 	uint64_t pcnt                         : 1;
2566 	uint64_t ptime                        : 1;
2567 	uint64_t reserved_6_7                 : 2;
2568 	uint64_t m0_up_b0                     : 1;
2569 	uint64_t m0_up_wi                     : 1;
2570 	uint64_t m0_un_b0                     : 1;
2571 	uint64_t m0_un_wi                     : 1;
2572 	uint64_t m1_up_b0                     : 1;
2573 	uint64_t m1_up_wi                     : 1;
2574 	uint64_t m1_un_b0                     : 1;
2575 	uint64_t m1_un_wi                     : 1;
2576 	uint64_t mio_int0                     : 1;
2577 	uint64_t mio_int1                     : 1;
2578 	uint64_t mac0_int                     : 1;
2579 	uint64_t mac1_int                     : 1;
2580 	uint64_t reserved_20_31               : 12;
2581 	uint64_t dmafi                        : 2;
2582 	uint64_t dcnt                         : 2;
2583 	uint64_t dtime                        : 2;
2584 	uint64_t reserved_38_47               : 10;
2585 	uint64_t pidbof                       : 1;
2586 	uint64_t psldbof                      : 1;
2587 	uint64_t pout_err                     : 1;
2588 	uint64_t reserved_51_51               : 1;
2589 	uint64_t pgl_err                      : 1;
2590 	uint64_t pdi_err                      : 1;
2591 	uint64_t pop_err                      : 1;
2592 	uint64_t pins_err                     : 1;
2593 	uint64_t sprt0_err                    : 1;
2594 	uint64_t sprt1_err                    : 1;
2595 	uint64_t reserved_58_59               : 2;
2596 	uint64_t ill_pad                      : 1;
2597 	uint64_t pipe_err                     : 1;
2598 	uint64_t reserved_62_63               : 2;
2599 #endif
2600 	} cn68xx;
2601 	struct cvmx_sli_int_enb_portx_cn68xx  cn68xxp1;
2602 	struct cvmx_sli_int_enb_portx_cn61xx  cnf71xx;
2603 };
2604 typedef union cvmx_sli_int_enb_portx cvmx_sli_int_enb_portx_t;
2605 
2606 /**
2607  * cvmx_sli_int_sum
2608  *
2609  * SLI_INT_SUM = SLI Interrupt Summary Register
2610  *
2611  * Set when an interrupt condition occurs, write '1' to clear.
2612  */
2613 union cvmx_sli_int_sum {
2614 	uint64_t u64;
2615 	struct cvmx_sli_int_sum_s {
2616 #ifdef __BIG_ENDIAN_BITFIELD
2617 	uint64_t reserved_62_63               : 2;
2618 	uint64_t pipe_err                     : 1;  /**< Set when a PIPE value outside range is received. */
2619 	uint64_t ill_pad                      : 1;  /**< Set when a BAR0 address R/W falls into theaddress
2620                                                          range of the Packet-CSR, but for an unused
2621                                                          address. */
2622 	uint64_t sprt3_err                    : 1;  /**< Reserved. */
2623 	uint64_t sprt2_err                    : 1;  /**< Reserved. */
2624 	uint64_t sprt1_err                    : 1;  /**< When an error response received on SLI port 1
2625                                                          this bit is set. */
2626 	uint64_t sprt0_err                    : 1;  /**< When an error response received on SLI port 0
2627                                                          this bit is set. */
2628 	uint64_t pins_err                     : 1;  /**< When a read error occurs on a packet instruction
2629                                                          this bit is set. */
2630 	uint64_t pop_err                      : 1;  /**< When a read error occurs on a packet scatter
2631                                                          pointer pair this bit is set. */
2632 	uint64_t pdi_err                      : 1;  /**< When a read error occurs on a packet data read
2633                                                          this bit is set. */
2634 	uint64_t pgl_err                      : 1;  /**< When a read error occurs on a packet gather list
2635                                                          read this bit is set. */
2636 	uint64_t pin_bp                       : 1;  /**< Packet input count has exceeded the WMARK.
2637                                                          See SLI_PKT_IN_BP */
2638 	uint64_t pout_err                     : 1;  /**< Set when PKO sends packet data with the error bit
2639                                                          set. */
2640 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell count overflowed. Which
2641                                                          doorbell can be found in DPI_PINT_INFO[PSLDBOF] */
2642 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell count overflowed. Which
2643                                                          doorbell can be found in DPI_PINT_INFO[PIDBOF] */
2644 	uint64_t reserved_38_47               : 10;
2645 	uint64_t dtime                        : 2;  /**< Whenever SLI_DMAx_CNT[CNT] is not 0, the
2646                                                          SLI_DMAx_TIM[TIM] timer increments every SLI
2647                                                          clock.
2648                                                          DTIME[x] is set whenever SLI_DMAx_TIM[TIM] >
2649                                                          SLI_DMAx_INT_LEVEL[TIME].
2650                                                          DTIME[x] is normally cleared by clearing
2651                                                          SLI_DMAx_CNT[CNT] (which also clears
2652                                                          SLI_DMAx_TIM[TIM]). */
2653 	uint64_t dcnt                         : 2;  /**< DCNT[x] is set whenever SLI_DMAx_CNT[CNT] >
2654                                                          SLI_DMAx_INT_LEVEL[CNT].
2655                                                          DCNT[x] is normally cleared by decreasing
2656                                                          SLI_DMAx_CNT[CNT]. */
2657 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts. */
2658 	uint64_t reserved_28_31               : 4;
2659 	uint64_t m3_un_wi                     : 1;  /**< Reserved. */
2660 	uint64_t m3_un_b0                     : 1;  /**< Reserved. */
2661 	uint64_t m3_up_wi                     : 1;  /**< Reserved. */
2662 	uint64_t m3_up_b0                     : 1;  /**< Reserved. */
2663 	uint64_t m2_un_wi                     : 1;  /**< Reserved. */
2664 	uint64_t m2_un_b0                     : 1;  /**< Reserved. */
2665 	uint64_t m2_up_wi                     : 1;  /**< Reserved. */
2666 	uint64_t m2_up_b0                     : 1;  /**< Reserved. */
2667 	uint64_t mac1_int                     : 1;  /**< Interrupt from MAC1.
2668                                                          See PEM1_INT_SUM (enabled by PEM1_INT_ENB_INT) */
2669 	uint64_t mac0_int                     : 1;  /**< Interrupt from MAC0.
2670                                                          See PEM0_INT_SUM (enabled by PEM0_INT_ENB_INT) */
2671 	uint64_t mio_int1                     : 1;  /**< Interrupt from MIO for PORT 1.
2672                                                          See CIU_INT33_SUM0, CIU_INT_SUM1
2673                                                          (enabled by CIU_INT33_EN0, CIU_INT33_EN1) */
2674 	uint64_t mio_int0                     : 1;  /**< Interrupt from MIO for PORT 0.
2675                                                          See CIU_INT32_SUM0, CIU_INT_SUM1
2676                                                          (enabled by CIU_INT32_EN0, CIU_INT32_EN1) */
2677 	uint64_t m1_un_wi                     : 1;  /**< Received Unsupported N-TLP for Window Register
2678                                                          from MAC 1. This occurs when the window registers
2679                                                          are disabeld and a window register access occurs. */
2680 	uint64_t m1_un_b0                     : 1;  /**< Received Unsupported N-TLP for Bar0 from MAC 1.
2681                                                          This occurs when the BAR 0 address space is
2682                                                          disabeled. */
2683 	uint64_t m1_up_wi                     : 1;  /**< Received Unsupported P-TLP for Window Register
2684                                                          from MAC 1. This occurs when the window registers
2685                                                          are disabeld and a window register access occurs. */
2686 	uint64_t m1_up_b0                     : 1;  /**< Received Unsupported P-TLP for Bar0 from MAC 1.
2687                                                          This occurs when the BAR 0 address space is
2688                                                          disabeled. */
2689 	uint64_t m0_un_wi                     : 1;  /**< Received Unsupported N-TLP for Window Register
2690                                                          from MAC 0. This occurs when the window registers
2691                                                          are disabeld and a window register access occurs. */
2692 	uint64_t m0_un_b0                     : 1;  /**< Received Unsupported N-TLP for Bar0 from MAC 0.
2693                                                          This occurs when the BAR 0 address space is
2694                                                          disabeled. */
2695 	uint64_t m0_up_wi                     : 1;  /**< Received Unsupported P-TLP for Window Register
2696                                                          from MAC 0. This occurs when the window registers
2697                                                          are disabeld and a window register access occurs. */
2698 	uint64_t m0_up_b0                     : 1;  /**< Received Unsupported P-TLP for Bar0 from MAC 0.
2699                                                          This occurs when the BAR 0 address space is
2700                                                          disabeled. */
2701 	uint64_t reserved_6_7                 : 2;
2702 	uint64_t ptime                        : 1;  /**< Packet Timer has an interrupt. Which rings can
2703                                                          be found in SLI_PKT_TIME_INT. */
2704 	uint64_t pcnt                         : 1;  /**< Packet Counter has an interrupt. Which rings can
2705                                                          be found in SLI_PKT_CNT_INT. */
2706 	uint64_t iob2big                      : 1;  /**< A requested IOBDMA is to large. */
2707 	uint64_t bar0_to                      : 1;  /**< BAR0 R/W to a NCB device did not receive
2708                                                          read-data/commit in 0xffff core clocks. */
2709 	uint64_t reserved_1_1                 : 1;
2710 	uint64_t rml_to                       : 1;  /**< A read or write transfer did not complete
2711                                                          within 0xffff core clocks. */
2712 #else
2713 	uint64_t rml_to                       : 1;
2714 	uint64_t reserved_1_1                 : 1;
2715 	uint64_t bar0_to                      : 1;
2716 	uint64_t iob2big                      : 1;
2717 	uint64_t pcnt                         : 1;
2718 	uint64_t ptime                        : 1;
2719 	uint64_t reserved_6_7                 : 2;
2720 	uint64_t m0_up_b0                     : 1;
2721 	uint64_t m0_up_wi                     : 1;
2722 	uint64_t m0_un_b0                     : 1;
2723 	uint64_t m0_un_wi                     : 1;
2724 	uint64_t m1_up_b0                     : 1;
2725 	uint64_t m1_up_wi                     : 1;
2726 	uint64_t m1_un_b0                     : 1;
2727 	uint64_t m1_un_wi                     : 1;
2728 	uint64_t mio_int0                     : 1;
2729 	uint64_t mio_int1                     : 1;
2730 	uint64_t mac0_int                     : 1;
2731 	uint64_t mac1_int                     : 1;
2732 	uint64_t m2_up_b0                     : 1;
2733 	uint64_t m2_up_wi                     : 1;
2734 	uint64_t m2_un_b0                     : 1;
2735 	uint64_t m2_un_wi                     : 1;
2736 	uint64_t m3_up_b0                     : 1;
2737 	uint64_t m3_up_wi                     : 1;
2738 	uint64_t m3_un_b0                     : 1;
2739 	uint64_t m3_un_wi                     : 1;
2740 	uint64_t reserved_28_31               : 4;
2741 	uint64_t dmafi                        : 2;
2742 	uint64_t dcnt                         : 2;
2743 	uint64_t dtime                        : 2;
2744 	uint64_t reserved_38_47               : 10;
2745 	uint64_t pidbof                       : 1;
2746 	uint64_t psldbof                      : 1;
2747 	uint64_t pout_err                     : 1;
2748 	uint64_t pin_bp                       : 1;
2749 	uint64_t pgl_err                      : 1;
2750 	uint64_t pdi_err                      : 1;
2751 	uint64_t pop_err                      : 1;
2752 	uint64_t pins_err                     : 1;
2753 	uint64_t sprt0_err                    : 1;
2754 	uint64_t sprt1_err                    : 1;
2755 	uint64_t sprt2_err                    : 1;
2756 	uint64_t sprt3_err                    : 1;
2757 	uint64_t ill_pad                      : 1;
2758 	uint64_t pipe_err                     : 1;
2759 	uint64_t reserved_62_63               : 2;
2760 #endif
2761 	} s;
2762 	struct cvmx_sli_int_sum_cn61xx {
2763 #ifdef __BIG_ENDIAN_BITFIELD
2764 	uint64_t reserved_61_63               : 3;
2765 	uint64_t ill_pad                      : 1;  /**< Set when a BAR0 address R/W falls into theaddress
2766                                                          range of the Packet-CSR, but for an unused
2767                                                          address. */
2768 	uint64_t sprt3_err                    : 1;  /**< Reserved. */
2769 	uint64_t sprt2_err                    : 1;  /**< Reserved. */
2770 	uint64_t sprt1_err                    : 1;  /**< When an error response received on SLI port 1
2771                                                          this bit is set. */
2772 	uint64_t sprt0_err                    : 1;  /**< When an error response received on SLI port 0
2773                                                          this bit is set. */
2774 	uint64_t pins_err                     : 1;  /**< When a read error occurs on a packet instruction
2775                                                          this bit is set. */
2776 	uint64_t pop_err                      : 1;  /**< When a read error occurs on a packet scatter
2777                                                          pointer pair this bit is set. */
2778 	uint64_t pdi_err                      : 1;  /**< When a read error occurs on a packet data read
2779                                                          this bit is set. */
2780 	uint64_t pgl_err                      : 1;  /**< When a read error occurs on a packet gather list
2781                                                          read this bit is set. */
2782 	uint64_t pin_bp                       : 1;  /**< Packet input count has exceeded the WMARK.
2783                                                          See SLI_PKT_IN_BP */
2784 	uint64_t pout_err                     : 1;  /**< Set when PKO sends packet data with the error bit
2785                                                          set. */
2786 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell count overflowed. Which
2787                                                          doorbell can be found in DPI_PINT_INFO[PSLDBOF] */
2788 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell count overflowed. Which
2789                                                          doorbell can be found in DPI_PINT_INFO[PIDBOF] */
2790 	uint64_t reserved_38_47               : 10;
2791 	uint64_t dtime                        : 2;  /**< Whenever SLI_DMAx_CNT[CNT] is not 0, the
2792                                                          SLI_DMAx_TIM[TIM] timer increments every SLI
2793                                                          clock.
2794                                                          DTIME[x] is set whenever SLI_DMAx_TIM[TIM] >
2795                                                          SLI_DMAx_INT_LEVEL[TIME].
2796                                                          DTIME[x] is normally cleared by clearing
2797                                                          SLI_DMAx_CNT[CNT] (which also clears
2798                                                          SLI_DMAx_TIM[TIM]). */
2799 	uint64_t dcnt                         : 2;  /**< DCNT[x] is set whenever SLI_DMAx_CNT[CNT] >
2800                                                          SLI_DMAx_INT_LEVEL[CNT].
2801                                                          DCNT[x] is normally cleared by decreasing
2802                                                          SLI_DMAx_CNT[CNT]. */
2803 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts. */
2804 	uint64_t reserved_28_31               : 4;
2805 	uint64_t m3_un_wi                     : 1;  /**< Reserved. */
2806 	uint64_t m3_un_b0                     : 1;  /**< Reserved. */
2807 	uint64_t m3_up_wi                     : 1;  /**< Reserved. */
2808 	uint64_t m3_up_b0                     : 1;  /**< Reserved. */
2809 	uint64_t m2_un_wi                     : 1;  /**< Reserved. */
2810 	uint64_t m2_un_b0                     : 1;  /**< Reserved. */
2811 	uint64_t m2_up_wi                     : 1;  /**< Reserved. */
2812 	uint64_t m2_up_b0                     : 1;  /**< Reserved. */
2813 	uint64_t mac1_int                     : 1;  /**< Interrupt from MAC1.
2814                                                          See PEM1_INT_SUM (enabled by PEM1_INT_ENB_INT) */
2815 	uint64_t mac0_int                     : 1;  /**< Interrupt from MAC0.
2816                                                          See PEM0_INT_SUM (enabled by PEM0_INT_ENB_INT) */
2817 	uint64_t mio_int1                     : 1;  /**< Interrupt from MIO for PORT 1.
2818                                                          See CIU_INT33_SUM0, CIU_INT_SUM1
2819                                                          (enabled by CIU_INT33_EN0, CIU_INT33_EN1) */
2820 	uint64_t mio_int0                     : 1;  /**< Interrupt from MIO for PORT 0.
2821                                                          See CIU_INT32_SUM0, CIU_INT_SUM1
2822                                                          (enabled by CIU_INT32_EN0, CIU_INT32_EN1) */
2823 	uint64_t m1_un_wi                     : 1;  /**< Received Unsupported N-TLP for Window Register
2824                                                          from MAC 1. This occurs when the window registers
2825                                                          are disabeld and a window register access occurs. */
2826 	uint64_t m1_un_b0                     : 1;  /**< Received Unsupported N-TLP for Bar0 from MAC 1.
2827                                                          This occurs when the BAR 0 address space is
2828                                                          disabeled. */
2829 	uint64_t m1_up_wi                     : 1;  /**< Received Unsupported P-TLP for Window Register
2830                                                          from MAC 1. This occurs when the window registers
2831                                                          are disabeld and a window register access occurs. */
2832 	uint64_t m1_up_b0                     : 1;  /**< Received Unsupported P-TLP for Bar0 from MAC 1.
2833                                                          This occurs when the BAR 0 address space is
2834                                                          disabeled. */
2835 	uint64_t m0_un_wi                     : 1;  /**< Received Unsupported N-TLP for Window Register
2836                                                          from MAC 0. This occurs when the window registers
2837                                                          are disabeld and a window register access occurs. */
2838 	uint64_t m0_un_b0                     : 1;  /**< Received Unsupported N-TLP for Bar0 from MAC 0.
2839                                                          This occurs when the BAR 0 address space is
2840                                                          disabeled. */
2841 	uint64_t m0_up_wi                     : 1;  /**< Received Unsupported P-TLP for Window Register
2842                                                          from MAC 0. This occurs when the window registers
2843                                                          are disabeld and a window register access occurs. */
2844 	uint64_t m0_up_b0                     : 1;  /**< Received Unsupported P-TLP for Bar0 from MAC 0.
2845                                                          This occurs when the BAR 0 address space is
2846                                                          disabeled. */
2847 	uint64_t reserved_6_7                 : 2;
2848 	uint64_t ptime                        : 1;  /**< Packet Timer has an interrupt. Which rings can
2849                                                          be found in SLI_PKT_TIME_INT. */
2850 	uint64_t pcnt                         : 1;  /**< Packet Counter has an interrupt. Which rings can
2851                                                          be found in SLI_PKT_CNT_INT. */
2852 	uint64_t iob2big                      : 1;  /**< A requested IOBDMA is to large. */
2853 	uint64_t bar0_to                      : 1;  /**< BAR0 R/W to a NCB device did not receive
2854                                                          read-data/commit in 0xffff core clocks. */
2855 	uint64_t reserved_1_1                 : 1;
2856 	uint64_t rml_to                       : 1;  /**< A read or write transfer did not complete
2857                                                          within 0xffff core clocks. */
2858 #else
2859 	uint64_t rml_to                       : 1;
2860 	uint64_t reserved_1_1                 : 1;
2861 	uint64_t bar0_to                      : 1;
2862 	uint64_t iob2big                      : 1;
2863 	uint64_t pcnt                         : 1;
2864 	uint64_t ptime                        : 1;
2865 	uint64_t reserved_6_7                 : 2;
2866 	uint64_t m0_up_b0                     : 1;
2867 	uint64_t m0_up_wi                     : 1;
2868 	uint64_t m0_un_b0                     : 1;
2869 	uint64_t m0_un_wi                     : 1;
2870 	uint64_t m1_up_b0                     : 1;
2871 	uint64_t m1_up_wi                     : 1;
2872 	uint64_t m1_un_b0                     : 1;
2873 	uint64_t m1_un_wi                     : 1;
2874 	uint64_t mio_int0                     : 1;
2875 	uint64_t mio_int1                     : 1;
2876 	uint64_t mac0_int                     : 1;
2877 	uint64_t mac1_int                     : 1;
2878 	uint64_t m2_up_b0                     : 1;
2879 	uint64_t m2_up_wi                     : 1;
2880 	uint64_t m2_un_b0                     : 1;
2881 	uint64_t m2_un_wi                     : 1;
2882 	uint64_t m3_up_b0                     : 1;
2883 	uint64_t m3_up_wi                     : 1;
2884 	uint64_t m3_un_b0                     : 1;
2885 	uint64_t m3_un_wi                     : 1;
2886 	uint64_t reserved_28_31               : 4;
2887 	uint64_t dmafi                        : 2;
2888 	uint64_t dcnt                         : 2;
2889 	uint64_t dtime                        : 2;
2890 	uint64_t reserved_38_47               : 10;
2891 	uint64_t pidbof                       : 1;
2892 	uint64_t psldbof                      : 1;
2893 	uint64_t pout_err                     : 1;
2894 	uint64_t pin_bp                       : 1;
2895 	uint64_t pgl_err                      : 1;
2896 	uint64_t pdi_err                      : 1;
2897 	uint64_t pop_err                      : 1;
2898 	uint64_t pins_err                     : 1;
2899 	uint64_t sprt0_err                    : 1;
2900 	uint64_t sprt1_err                    : 1;
2901 	uint64_t sprt2_err                    : 1;
2902 	uint64_t sprt3_err                    : 1;
2903 	uint64_t ill_pad                      : 1;
2904 	uint64_t reserved_61_63               : 3;
2905 #endif
2906 	} cn61xx;
2907 	struct cvmx_sli_int_sum_cn63xx {
2908 #ifdef __BIG_ENDIAN_BITFIELD
2909 	uint64_t reserved_61_63               : 3;
2910 	uint64_t ill_pad                      : 1;  /**< Set when a BAR0 address R/W falls into theaddress
2911                                                          range of the Packet-CSR, but for an unused
2912                                                          address. */
2913 	uint64_t reserved_58_59               : 2;
2914 	uint64_t sprt1_err                    : 1;  /**< When an error response received on SLI port 1
2915                                                          this bit is set. */
2916 	uint64_t sprt0_err                    : 1;  /**< When an error response received on SLI port 0
2917                                                          this bit is set. */
2918 	uint64_t pins_err                     : 1;  /**< When a read error occurs on a packet instruction
2919                                                          this bit is set. */
2920 	uint64_t pop_err                      : 1;  /**< When a read error occurs on a packet scatter
2921                                                          pointer pair this bit is set. */
2922 	uint64_t pdi_err                      : 1;  /**< When a read error occurs on a packet data read
2923                                                          this bit is set. */
2924 	uint64_t pgl_err                      : 1;  /**< When a read error occurs on a packet gather list
2925                                                          read this bit is set. */
2926 	uint64_t pin_bp                       : 1;  /**< Packet input count has exceeded the WMARK.
2927                                                          See SLI_PKT_IN_BP */
2928 	uint64_t pout_err                     : 1;  /**< Set when PKO sends packet data with the error bit
2929                                                          set. */
2930 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell count overflowed. Which
2931                                                          doorbell can be found in DPI_PINT_INFO[PSLDBOF] */
2932 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell count overflowed. Which
2933                                                          doorbell can be found in DPI_PINT_INFO[PIDBOF] */
2934 	uint64_t reserved_38_47               : 10;
2935 	uint64_t dtime                        : 2;  /**< Whenever SLI_DMAx_CNT[CNT] is not 0, the
2936                                                          SLI_DMAx_TIM[TIM] timer increments every SLI
2937                                                          clock.
2938                                                          DTIME[x] is set whenever SLI_DMAx_TIM[TIM] >
2939                                                          SLI_DMAx_INT_LEVEL[TIME].
2940                                                          DTIME[x] is normally cleared by clearing
2941                                                          SLI_DMAx_CNT[CNT] (which also clears
2942                                                          SLI_DMAx_TIM[TIM]). */
2943 	uint64_t dcnt                         : 2;  /**< DCNT[x] is set whenever SLI_DMAx_CNT[CNT] >
2944                                                          SLI_DMAx_INT_LEVEL[CNT].
2945                                                          DCNT[x] is normally cleared by decreasing
2946                                                          SLI_DMAx_CNT[CNT]. */
2947 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts. */
2948 	uint64_t reserved_20_31               : 12;
2949 	uint64_t mac1_int                     : 1;  /**< Interrupt from MAC1.
2950                                                          See PEM1_INT_SUM (enabled by PEM1_INT_ENB_INT) */
2951 	uint64_t mac0_int                     : 1;  /**< Interrupt from MAC0.
2952                                                          See PEM0_INT_SUM (enabled by PEM0_INT_ENB_INT) */
2953 	uint64_t mio_int1                     : 1;  /**< Interrupt from MIO for PORT 1.
2954                                                          See CIU_INT33_SUM0, CIU_INT_SUM1
2955                                                          (enabled by CIU_INT33_EN0, CIU_INT33_EN1) */
2956 	uint64_t mio_int0                     : 1;  /**< Interrupt from MIO for PORT 0.
2957                                                          See CIU_INT32_SUM0, CIU_INT_SUM1
2958                                                          (enabled by CIU_INT32_EN0, CIU_INT32_EN1) */
2959 	uint64_t m1_un_wi                     : 1;  /**< Received Unsupported N-TLP for Window Register
2960                                                          from MAC 1. This occurs when the window registers
2961                                                          are disabeld and a window register access occurs. */
2962 	uint64_t m1_un_b0                     : 1;  /**< Received Unsupported N-TLP for Bar0 from MAC 1.
2963                                                          This occurs when the BAR 0 address space is
2964                                                          disabeled. */
2965 	uint64_t m1_up_wi                     : 1;  /**< Received Unsupported P-TLP for Window Register
2966                                                          from MAC 1. This occurs when the window registers
2967                                                          are disabeld and a window register access occurs. */
2968 	uint64_t m1_up_b0                     : 1;  /**< Received Unsupported P-TLP for Bar0 from MAC 1.
2969                                                          This occurs when the BAR 0 address space is
2970                                                          disabeled. */
2971 	uint64_t m0_un_wi                     : 1;  /**< Received Unsupported N-TLP for Window Register
2972                                                          from MAC 0. This occurs when the window registers
2973                                                          are disabeld and a window register access occurs. */
2974 	uint64_t m0_un_b0                     : 1;  /**< Received Unsupported N-TLP for Bar0 from MAC 0.
2975                                                          This occurs when the BAR 0 address space is
2976                                                          disabeled. */
2977 	uint64_t m0_up_wi                     : 1;  /**< Received Unsupported P-TLP for Window Register
2978                                                          from MAC 0. This occurs when the window registers
2979                                                          are disabeld and a window register access occurs. */
2980 	uint64_t m0_up_b0                     : 1;  /**< Received Unsupported P-TLP for Bar0 from MAC 0.
2981                                                          This occurs when the BAR 0 address space is
2982                                                          disabeled. */
2983 	uint64_t reserved_6_7                 : 2;
2984 	uint64_t ptime                        : 1;  /**< Packet Timer has an interrupt. Which rings can
2985                                                          be found in SLI_PKT_TIME_INT. */
2986 	uint64_t pcnt                         : 1;  /**< Packet Counter has an interrupt. Which rings can
2987                                                          be found in SLI_PKT_CNT_INT. */
2988 	uint64_t iob2big                      : 1;  /**< A requested IOBDMA is to large. */
2989 	uint64_t bar0_to                      : 1;  /**< BAR0 R/W to a NCB device did not receive
2990                                                          read-data/commit in 0xffff core clocks. */
2991 	uint64_t reserved_1_1                 : 1;
2992 	uint64_t rml_to                       : 1;  /**< A read or write transfer did not complete
2993                                                          within 0xffff core clocks. */
2994 #else
2995 	uint64_t rml_to                       : 1;
2996 	uint64_t reserved_1_1                 : 1;
2997 	uint64_t bar0_to                      : 1;
2998 	uint64_t iob2big                      : 1;
2999 	uint64_t pcnt                         : 1;
3000 	uint64_t ptime                        : 1;
3001 	uint64_t reserved_6_7                 : 2;
3002 	uint64_t m0_up_b0                     : 1;
3003 	uint64_t m0_up_wi                     : 1;
3004 	uint64_t m0_un_b0                     : 1;
3005 	uint64_t m0_un_wi                     : 1;
3006 	uint64_t m1_up_b0                     : 1;
3007 	uint64_t m1_up_wi                     : 1;
3008 	uint64_t m1_un_b0                     : 1;
3009 	uint64_t m1_un_wi                     : 1;
3010 	uint64_t mio_int0                     : 1;
3011 	uint64_t mio_int1                     : 1;
3012 	uint64_t mac0_int                     : 1;
3013 	uint64_t mac1_int                     : 1;
3014 	uint64_t reserved_20_31               : 12;
3015 	uint64_t dmafi                        : 2;
3016 	uint64_t dcnt                         : 2;
3017 	uint64_t dtime                        : 2;
3018 	uint64_t reserved_38_47               : 10;
3019 	uint64_t pidbof                       : 1;
3020 	uint64_t psldbof                      : 1;
3021 	uint64_t pout_err                     : 1;
3022 	uint64_t pin_bp                       : 1;
3023 	uint64_t pgl_err                      : 1;
3024 	uint64_t pdi_err                      : 1;
3025 	uint64_t pop_err                      : 1;
3026 	uint64_t pins_err                     : 1;
3027 	uint64_t sprt0_err                    : 1;
3028 	uint64_t sprt1_err                    : 1;
3029 	uint64_t reserved_58_59               : 2;
3030 	uint64_t ill_pad                      : 1;
3031 	uint64_t reserved_61_63               : 3;
3032 #endif
3033 	} cn63xx;
3034 	struct cvmx_sli_int_sum_cn63xx        cn63xxp1;
3035 	struct cvmx_sli_int_sum_cn61xx        cn66xx;
3036 	struct cvmx_sli_int_sum_cn68xx {
3037 #ifdef __BIG_ENDIAN_BITFIELD
3038 	uint64_t reserved_62_63               : 2;
3039 	uint64_t pipe_err                     : 1;  /**< Set when a PIPE value outside range is received. */
3040 	uint64_t ill_pad                      : 1;  /**< Set when a BAR0 address R/W falls into theaddress
3041                                                          range of the Packet-CSR, but for an unused
3042                                                          address. */
3043 	uint64_t reserved_58_59               : 2;
3044 	uint64_t sprt1_err                    : 1;  /**< When an error response received on SLI port 1
3045                                                          this bit is set. */
3046 	uint64_t sprt0_err                    : 1;  /**< When an error response received on SLI port 0
3047                                                          this bit is set. */
3048 	uint64_t pins_err                     : 1;  /**< When a read error occurs on a packet instruction
3049                                                          this bit is set. */
3050 	uint64_t pop_err                      : 1;  /**< When a read error occurs on a packet scatter
3051                                                          pointer pair this bit is set. */
3052 	uint64_t pdi_err                      : 1;  /**< When a read error occurs on a packet data read
3053                                                          this bit is set. */
3054 	uint64_t pgl_err                      : 1;  /**< When a read error occurs on a packet gather list
3055                                                          read this bit is set. */
3056 	uint64_t reserved_51_51               : 1;
3057 	uint64_t pout_err                     : 1;  /**< Set when PKO sends packet data with the error bit
3058                                                          set. */
3059 	uint64_t psldbof                      : 1;  /**< Packet Scatterlist Doorbell count overflowed. Which
3060                                                          doorbell can be found in DPI_PINT_INFO[PSLDBOF] */
3061 	uint64_t pidbof                       : 1;  /**< Packet Instruction Doorbell count overflowed. Which
3062                                                          doorbell can be found in DPI_PINT_INFO[PIDBOF] */
3063 	uint64_t reserved_38_47               : 10;
3064 	uint64_t dtime                        : 2;  /**< Whenever SLI_DMAx_CNT[CNT] is not 0, the
3065                                                          SLI_DMAx_TIM[TIM] timer increments every SLI
3066                                                          clock.
3067                                                          DTIME[x] is set whenever SLI_DMAx_TIM[TIM] >
3068                                                          SLI_DMAx_INT_LEVEL[TIME].
3069                                                          DTIME[x] is normally cleared by clearing
3070                                                          SLI_DMAx_CNT[CNT] (which also clears
3071                                                          SLI_DMAx_TIM[TIM]). */
3072 	uint64_t dcnt                         : 2;  /**< DCNT[x] is set whenever SLI_DMAx_CNT[CNT] >
3073                                                          SLI_DMAx_INT_LEVEL[CNT].
3074                                                          DCNT[x] is normally cleared by decreasing
3075                                                          SLI_DMAx_CNT[CNT]. */
3076 	uint64_t dmafi                        : 2;  /**< DMA set Forced Interrupts. */
3077 	uint64_t reserved_20_31               : 12;
3078 	uint64_t mac1_int                     : 1;  /**< Interrupt from MAC1.
3079                                                          See PEM1_INT_SUM (enabled by PEM1_INT_ENB_INT) */
3080 	uint64_t mac0_int                     : 1;  /**< Interrupt from MAC0.
3081                                                          See PEM0_INT_SUM (enabled by PEM0_INT_ENB_INT) */
3082 	uint64_t mio_int1                     : 1;  /**< Interrupt from MIO for PORT 1.
3083                                                          See CIU_INT33_SUM0, CIU_INT_SUM1
3084                                                          (enabled by CIU_INT33_EN0, CIU_INT33_EN1) */
3085 	uint64_t mio_int0                     : 1;  /**< Interrupt from MIO for PORT 0.
3086                                                          See CIU_INT32_SUM0, CIU_INT_SUM1
3087                                                          (enabled by CIU_INT32_EN0, CIU_INT32_EN1) */
3088 	uint64_t m1_un_wi                     : 1;  /**< Received Unsupported N-TLP for Window Register
3089                                                          from MAC 1. This occurs when the window registers
3090                                                          are disabeld and a window register access occurs. */
3091 	uint64_t m1_un_b0                     : 1;  /**< Received Unsupported N-TLP for Bar0 from MAC 1.
3092                                                          This occurs when the BAR 0 address space is
3093                                                          disabeled. */
3094 	uint64_t m1_up_wi                     : 1;  /**< Received Unsupported P-TLP for Window Register
3095                                                          from MAC 1. This occurs when the window registers
3096                                                          are disabeld and a window register access occurs. */
3097 	uint64_t m1_up_b0                     : 1;  /**< Received Unsupported P-TLP for Bar0 from MAC 1.
3098                                                          This occurs when the BAR 0 address space is
3099                                                          disabeled. */
3100 	uint64_t m0_un_wi                     : 1;  /**< Received Unsupported N-TLP for Window Register
3101                                                          from MAC 0. This occurs when the window registers
3102                                                          are disabeld and a window register access occurs. */
3103 	uint64_t m0_un_b0                     : 1;  /**< Received Unsupported N-TLP for Bar0 from MAC 0.
3104                                                          This occurs when the BAR 0 address space is
3105                                                          disabeled. */
3106 	uint64_t m0_up_wi                     : 1;  /**< Received Unsupported P-TLP for Window Register
3107                                                          from MAC 0. This occurs when the window registers
3108                                                          are disabeld and a window register access occurs. */
3109 	uint64_t m0_up_b0                     : 1;  /**< Received Unsupported P-TLP for Bar0 from MAC 0.
3110                                                          This occurs when the BAR 0 address space is
3111                                                          disabeled. */
3112 	uint64_t reserved_6_7                 : 2;
3113 	uint64_t ptime                        : 1;  /**< Packet Timer has an interrupt. Which rings can
3114                                                          be found in SLI_PKT_TIME_INT. */
3115 	uint64_t pcnt                         : 1;  /**< Packet Counter has an interrupt. Which rings can
3116                                                          be found in SLI_PKT_CNT_INT. */
3117 	uint64_t iob2big                      : 1;  /**< A requested IOBDMA is to large. */
3118 	uint64_t bar0_to                      : 1;  /**< BAR0 R/W to a NCB device did not receive
3119                                                          read-data/commit in 0xffff core clocks. */
3120 	uint64_t reserved_1_1                 : 1;
3121 	uint64_t rml_to                       : 1;  /**< A read or write transfer did not complete
3122                                                          within 0xffff core clocks. */
3123 #else
3124 	uint64_t rml_to                       : 1;
3125 	uint64_t reserved_1_1                 : 1;
3126 	uint64_t bar0_to                      : 1;
3127 	uint64_t iob2big                      : 1;
3128 	uint64_t pcnt                         : 1;
3129 	uint64_t ptime                        : 1;
3130 	uint64_t reserved_6_7                 : 2;
3131 	uint64_t m0_up_b0                     : 1;
3132 	uint64_t m0_up_wi                     : 1;
3133 	uint64_t m0_un_b0                     : 1;
3134 	uint64_t m0_un_wi                     : 1;
3135 	uint64_t m1_up_b0                     : 1;
3136 	uint64_t m1_up_wi                     : 1;
3137 	uint64_t m1_un_b0                     : 1;
3138 	uint64_t m1_un_wi                     : 1;
3139 	uint64_t mio_int0                     : 1;
3140 	uint64_t mio_int1                     : 1;
3141 	uint64_t mac0_int                     : 1;
3142 	uint64_t mac1_int                     : 1;
3143 	uint64_t reserved_20_31               : 12;
3144 	uint64_t dmafi                        : 2;
3145 	uint64_t dcnt                         : 2;
3146 	uint64_t dtime                        : 2;
3147 	uint64_t reserved_38_47               : 10;
3148 	uint64_t pidbof                       : 1;
3149 	uint64_t psldbof                      : 1;
3150 	uint64_t pout_err                     : 1;
3151 	uint64_t reserved_51_51               : 1;
3152 	uint64_t pgl_err                      : 1;
3153 	uint64_t pdi_err                      : 1;
3154 	uint64_t pop_err                      : 1;
3155 	uint64_t pins_err                     : 1;
3156 	uint64_t sprt0_err                    : 1;
3157 	uint64_t sprt1_err                    : 1;
3158 	uint64_t reserved_58_59               : 2;
3159 	uint64_t ill_pad                      : 1;
3160 	uint64_t pipe_err                     : 1;
3161 	uint64_t reserved_62_63               : 2;
3162 #endif
3163 	} cn68xx;
3164 	struct cvmx_sli_int_sum_cn68xx        cn68xxp1;
3165 	struct cvmx_sli_int_sum_cn61xx        cnf71xx;
3166 };
3167 typedef union cvmx_sli_int_sum cvmx_sli_int_sum_t;
3168 
3169 /**
3170  * cvmx_sli_last_win_rdata0
3171  *
3172  * SLI_LAST_WIN_RDATA0 = SLI Last Window Read Data
3173  *
3174  * The data from the last initiated window read by MAC 0.
3175  */
3176 union cvmx_sli_last_win_rdata0 {
3177 	uint64_t u64;
3178 	struct cvmx_sli_last_win_rdata0_s {
3179 #ifdef __BIG_ENDIAN_BITFIELD
3180 	uint64_t data                         : 64; /**< Last window read data. */
3181 #else
3182 	uint64_t data                         : 64;
3183 #endif
3184 	} s;
3185 	struct cvmx_sli_last_win_rdata0_s     cn61xx;
3186 	struct cvmx_sli_last_win_rdata0_s     cn63xx;
3187 	struct cvmx_sli_last_win_rdata0_s     cn63xxp1;
3188 	struct cvmx_sli_last_win_rdata0_s     cn66xx;
3189 	struct cvmx_sli_last_win_rdata0_s     cn68xx;
3190 	struct cvmx_sli_last_win_rdata0_s     cn68xxp1;
3191 	struct cvmx_sli_last_win_rdata0_s     cnf71xx;
3192 };
3193 typedef union cvmx_sli_last_win_rdata0 cvmx_sli_last_win_rdata0_t;
3194 
3195 /**
3196  * cvmx_sli_last_win_rdata1
3197  *
3198  * SLI_LAST_WIN_RDATA1 = SLI Last Window Read Data
3199  *
3200  * The data from the last initiated window read by MAC 1.
3201  */
3202 union cvmx_sli_last_win_rdata1 {
3203 	uint64_t u64;
3204 	struct cvmx_sli_last_win_rdata1_s {
3205 #ifdef __BIG_ENDIAN_BITFIELD
3206 	uint64_t data                         : 64; /**< Last window read data. */
3207 #else
3208 	uint64_t data                         : 64;
3209 #endif
3210 	} s;
3211 	struct cvmx_sli_last_win_rdata1_s     cn61xx;
3212 	struct cvmx_sli_last_win_rdata1_s     cn63xx;
3213 	struct cvmx_sli_last_win_rdata1_s     cn63xxp1;
3214 	struct cvmx_sli_last_win_rdata1_s     cn66xx;
3215 	struct cvmx_sli_last_win_rdata1_s     cn68xx;
3216 	struct cvmx_sli_last_win_rdata1_s     cn68xxp1;
3217 	struct cvmx_sli_last_win_rdata1_s     cnf71xx;
3218 };
3219 typedef union cvmx_sli_last_win_rdata1 cvmx_sli_last_win_rdata1_t;
3220 
3221 /**
3222  * cvmx_sli_last_win_rdata2
3223  *
3224  * SLI_LAST_WIN_RDATA2 = SLI Last Window Read Data
3225  *
3226  * The data from the last initiated window read by MAC 2.
3227  */
3228 union cvmx_sli_last_win_rdata2 {
3229 	uint64_t u64;
3230 	struct cvmx_sli_last_win_rdata2_s {
3231 #ifdef __BIG_ENDIAN_BITFIELD
3232 	uint64_t data                         : 64; /**< Last window read data. */
3233 #else
3234 	uint64_t data                         : 64;
3235 #endif
3236 	} s;
3237 	struct cvmx_sli_last_win_rdata2_s     cn61xx;
3238 	struct cvmx_sli_last_win_rdata2_s     cn66xx;
3239 	struct cvmx_sli_last_win_rdata2_s     cnf71xx;
3240 };
3241 typedef union cvmx_sli_last_win_rdata2 cvmx_sli_last_win_rdata2_t;
3242 
3243 /**
3244  * cvmx_sli_last_win_rdata3
3245  *
3246  * SLI_LAST_WIN_RDATA3 = SLI Last Window Read Data
3247  *
3248  * The data from the last initiated window read by MAC 3.
3249  */
3250 union cvmx_sli_last_win_rdata3 {
3251 	uint64_t u64;
3252 	struct cvmx_sli_last_win_rdata3_s {
3253 #ifdef __BIG_ENDIAN_BITFIELD
3254 	uint64_t data                         : 64; /**< Last window read data. */
3255 #else
3256 	uint64_t data                         : 64;
3257 #endif
3258 	} s;
3259 	struct cvmx_sli_last_win_rdata3_s     cn61xx;
3260 	struct cvmx_sli_last_win_rdata3_s     cn66xx;
3261 	struct cvmx_sli_last_win_rdata3_s     cnf71xx;
3262 };
3263 typedef union cvmx_sli_last_win_rdata3 cvmx_sli_last_win_rdata3_t;
3264 
3265 /**
3266  * cvmx_sli_mac_credit_cnt
3267  *
3268  * SLI_MAC_CREDIT_CNT = SLI MAC Credit Count
3269  *
3270  * Contains the number of credits for the MAC port FIFOs used by the SLI. This value needs to be set BEFORE S2M traffic
3271  * flow starts. A write to this register will cause the credit counts in the SLI for the MAC ports to be reset to the value
3272  * in this register.
3273  */
3274 union cvmx_sli_mac_credit_cnt {
3275 	uint64_t u64;
3276 	struct cvmx_sli_mac_credit_cnt_s {
3277 #ifdef __BIG_ENDIAN_BITFIELD
3278 	uint64_t reserved_54_63               : 10;
3279 	uint64_t p1_c_d                       : 1;  /**< When set does not allow writing of P1_CCNT. */
3280 	uint64_t p1_n_d                       : 1;  /**< When set does not allow writing of P1_NCNT. */
3281 	uint64_t p1_p_d                       : 1;  /**< When set does not allow writing of P1_PCNT. */
3282 	uint64_t p0_c_d                       : 1;  /**< When set does not allow writing of P0_CCNT. */
3283 	uint64_t p0_n_d                       : 1;  /**< When set does not allow writing of P0_NCNT. */
3284 	uint64_t p0_p_d                       : 1;  /**< When set does not allow writing of P0_PCNT. */
3285 	uint64_t p1_ccnt                      : 8;  /**< Port1 C-TLP FIFO Credits.
3286                                                          Legal values are 0x25 to 0x80. */
3287 	uint64_t p1_ncnt                      : 8;  /**< Port1 N-TLP FIFO Credits.
3288                                                          Legal values are 0x5 to 0x10. */
3289 	uint64_t p1_pcnt                      : 8;  /**< Port1 P-TLP FIFO Credits.
3290                                                          Legal values are 0x25 to 0x80. */
3291 	uint64_t p0_ccnt                      : 8;  /**< Port0 C-TLP FIFO Credits.
3292                                                          Legal values are 0x25 to 0x80. */
3293 	uint64_t p0_ncnt                      : 8;  /**< Port0 N-TLP FIFO Credits.
3294                                                          Legal values are 0x5 to 0x10. */
3295 	uint64_t p0_pcnt                      : 8;  /**< Port0 P-TLP FIFO Credits.
3296                                                          Legal values are 0x25 to 0x80. */
3297 #else
3298 	uint64_t p0_pcnt                      : 8;
3299 	uint64_t p0_ncnt                      : 8;
3300 	uint64_t p0_ccnt                      : 8;
3301 	uint64_t p1_pcnt                      : 8;
3302 	uint64_t p1_ncnt                      : 8;
3303 	uint64_t p1_ccnt                      : 8;
3304 	uint64_t p0_p_d                       : 1;
3305 	uint64_t p0_n_d                       : 1;
3306 	uint64_t p0_c_d                       : 1;
3307 	uint64_t p1_p_d                       : 1;
3308 	uint64_t p1_n_d                       : 1;
3309 	uint64_t p1_c_d                       : 1;
3310 	uint64_t reserved_54_63               : 10;
3311 #endif
3312 	} s;
3313 	struct cvmx_sli_mac_credit_cnt_s      cn61xx;
3314 	struct cvmx_sli_mac_credit_cnt_s      cn63xx;
3315 	struct cvmx_sli_mac_credit_cnt_cn63xxp1 {
3316 #ifdef __BIG_ENDIAN_BITFIELD
3317 	uint64_t reserved_48_63               : 16;
3318 	uint64_t p1_ccnt                      : 8;  /**< Port1 C-TLP FIFO Credits.
3319                                                          Legal values are 0x25 to 0x80. */
3320 	uint64_t p1_ncnt                      : 8;  /**< Port1 N-TLP FIFO Credits.
3321                                                          Legal values are 0x5 to 0x10. */
3322 	uint64_t p1_pcnt                      : 8;  /**< Port1 P-TLP FIFO Credits.
3323                                                          Legal values are 0x25 to 0x80. */
3324 	uint64_t p0_ccnt                      : 8;  /**< Port0 C-TLP FIFO Credits.
3325                                                          Legal values are 0x25 to 0x80. */
3326 	uint64_t p0_ncnt                      : 8;  /**< Port0 N-TLP FIFO Credits.
3327                                                          Legal values are 0x5 to 0x10. */
3328 	uint64_t p0_pcnt                      : 8;  /**< Port0 P-TLP FIFO Credits.
3329                                                          Legal values are 0x25 to 0x80. */
3330 #else
3331 	uint64_t p0_pcnt                      : 8;
3332 	uint64_t p0_ncnt                      : 8;
3333 	uint64_t p0_ccnt                      : 8;
3334 	uint64_t p1_pcnt                      : 8;
3335 	uint64_t p1_ncnt                      : 8;
3336 	uint64_t p1_ccnt                      : 8;
3337 	uint64_t reserved_48_63               : 16;
3338 #endif
3339 	} cn63xxp1;
3340 	struct cvmx_sli_mac_credit_cnt_s      cn66xx;
3341 	struct cvmx_sli_mac_credit_cnt_s      cn68xx;
3342 	struct cvmx_sli_mac_credit_cnt_s      cn68xxp1;
3343 	struct cvmx_sli_mac_credit_cnt_s      cnf71xx;
3344 };
3345 typedef union cvmx_sli_mac_credit_cnt cvmx_sli_mac_credit_cnt_t;
3346 
3347 /**
3348  * cvmx_sli_mac_credit_cnt2
3349  *
3350  * SLI_MAC_CREDIT_CNT2 = SLI MAC Credit Count2
3351  *
3352  * Contains the number of credits for the MAC port FIFOs (for MACs 2 and 3) used by the SLI. This value needs to be set BEFORE S2M traffic
3353  * flow starts. A write to this register will cause the credit counts in the SLI for the MAC ports to be reset to the value
3354  * in this register.
3355  */
3356 union cvmx_sli_mac_credit_cnt2 {
3357 	uint64_t u64;
3358 	struct cvmx_sli_mac_credit_cnt2_s {
3359 #ifdef __BIG_ENDIAN_BITFIELD
3360 	uint64_t reserved_54_63               : 10;
3361 	uint64_t p3_c_d                       : 1;  /**< When set does not allow writing of P3_CCNT. */
3362 	uint64_t p3_n_d                       : 1;  /**< When set does not allow writing of P3_NCNT. */
3363 	uint64_t p3_p_d                       : 1;  /**< When set does not allow writing of P3_PCNT. */
3364 	uint64_t p2_c_d                       : 1;  /**< When set does not allow writing of P2_CCNT. */
3365 	uint64_t p2_n_d                       : 1;  /**< When set does not allow writing of P2_NCNT. */
3366 	uint64_t p2_p_d                       : 1;  /**< When set does not allow writing of P2_PCNT. */
3367 	uint64_t p3_ccnt                      : 8;  /**< Port3 C-TLP FIFO Credits.
3368                                                          Legal values are 0x25 to 0x80. */
3369 	uint64_t p3_ncnt                      : 8;  /**< Port3 N-TLP FIFO Credits.
3370                                                          Legal values are 0x5 to 0x10. */
3371 	uint64_t p3_pcnt                      : 8;  /**< Port3 P-TLP FIFO Credits.
3372                                                          Legal values are 0x25 to 0x80. */
3373 	uint64_t p2_ccnt                      : 8;  /**< Port2 C-TLP FIFO Credits.
3374                                                          Legal values are 0x25 to 0x80. */
3375 	uint64_t p2_ncnt                      : 8;  /**< Port2 N-TLP FIFO Credits.
3376                                                          Legal values are 0x5 to 0x10. */
3377 	uint64_t p2_pcnt                      : 8;  /**< Port2 P-TLP FIFO Credits.
3378                                                          Legal values are 0x25 to 0x80. */
3379 #else
3380 	uint64_t p2_pcnt                      : 8;
3381 	uint64_t p2_ncnt                      : 8;
3382 	uint64_t p2_ccnt                      : 8;
3383 	uint64_t p3_pcnt                      : 8;
3384 	uint64_t p3_ncnt                      : 8;
3385 	uint64_t p3_ccnt                      : 8;
3386 	uint64_t p2_p_d                       : 1;
3387 	uint64_t p2_n_d                       : 1;
3388 	uint64_t p2_c_d                       : 1;
3389 	uint64_t p3_p_d                       : 1;
3390 	uint64_t p3_n_d                       : 1;
3391 	uint64_t p3_c_d                       : 1;
3392 	uint64_t reserved_54_63               : 10;
3393 #endif
3394 	} s;
3395 	struct cvmx_sli_mac_credit_cnt2_s     cn61xx;
3396 	struct cvmx_sli_mac_credit_cnt2_s     cn66xx;
3397 	struct cvmx_sli_mac_credit_cnt2_s     cnf71xx;
3398 };
3399 typedef union cvmx_sli_mac_credit_cnt2 cvmx_sli_mac_credit_cnt2_t;
3400 
3401 /**
3402  * cvmx_sli_mac_number
3403  *
3404  * 0x13DA0 - 0x13DF0 reserved for ports 2 - 7
3405  *
3406  *                  SLI_MAC_NUMBER = SLI MAC Number
3407  *
3408  * When read from a MAC port it returns the MAC's port number.
3409  */
3410 union cvmx_sli_mac_number {
3411 	uint64_t u64;
3412 	struct cvmx_sli_mac_number_s {
3413 #ifdef __BIG_ENDIAN_BITFIELD
3414 	uint64_t reserved_9_63                : 55;
3415 	uint64_t a_mode                       : 1;  /**< SLI in Authenticate Mode. */
3416 	uint64_t num                          : 8;  /**< The mac number. */
3417 #else
3418 	uint64_t num                          : 8;
3419 	uint64_t a_mode                       : 1;
3420 	uint64_t reserved_9_63                : 55;
3421 #endif
3422 	} s;
3423 	struct cvmx_sli_mac_number_s          cn61xx;
3424 	struct cvmx_sli_mac_number_cn63xx {
3425 #ifdef __BIG_ENDIAN_BITFIELD
3426 	uint64_t reserved_8_63                : 56;
3427 	uint64_t num                          : 8;  /**< The mac number. */
3428 #else
3429 	uint64_t num                          : 8;
3430 	uint64_t reserved_8_63                : 56;
3431 #endif
3432 	} cn63xx;
3433 	struct cvmx_sli_mac_number_s          cn66xx;
3434 	struct cvmx_sli_mac_number_cn63xx     cn68xx;
3435 	struct cvmx_sli_mac_number_cn63xx     cn68xxp1;
3436 	struct cvmx_sli_mac_number_s          cnf71xx;
3437 };
3438 typedef union cvmx_sli_mac_number cvmx_sli_mac_number_t;
3439 
3440 /**
3441  * cvmx_sli_mem_access_ctl
3442  *
3443  * SLI_MEM_ACCESS_CTL = SLI's Memory Access Control
3444  *
3445  * Contains control for access to the MAC address space.
3446  */
3447 union cvmx_sli_mem_access_ctl {
3448 	uint64_t u64;
3449 	struct cvmx_sli_mem_access_ctl_s {
3450 #ifdef __BIG_ENDIAN_BITFIELD
3451 	uint64_t reserved_14_63               : 50;
3452 	uint64_t max_word                     : 4;  /**< The maximum number of words to merge into a single
3453                                                          write operation from the PPs to the MAC. Legal
3454                                                          values are 1 to 16, where a '0' is treated as 16. */
3455 	uint64_t timer                        : 10; /**< When the SLI starts a PP to MAC write it waits
3456                                                          no longer than the value of TIMER in eclks to
3457                                                          merge additional writes from the PPs into 1
3458                                                          large write. The values for this field is 1 to
3459                                                          1024 where a value of '0' is treated as 1024. */
3460 #else
3461 	uint64_t timer                        : 10;
3462 	uint64_t max_word                     : 4;
3463 	uint64_t reserved_14_63               : 50;
3464 #endif
3465 	} s;
3466 	struct cvmx_sli_mem_access_ctl_s      cn61xx;
3467 	struct cvmx_sli_mem_access_ctl_s      cn63xx;
3468 	struct cvmx_sli_mem_access_ctl_s      cn63xxp1;
3469 	struct cvmx_sli_mem_access_ctl_s      cn66xx;
3470 	struct cvmx_sli_mem_access_ctl_s      cn68xx;
3471 	struct cvmx_sli_mem_access_ctl_s      cn68xxp1;
3472 	struct cvmx_sli_mem_access_ctl_s      cnf71xx;
3473 };
3474 typedef union cvmx_sli_mem_access_ctl cvmx_sli_mem_access_ctl_t;
3475 
3476 /**
3477  * cvmx_sli_mem_access_subid#
3478  *
3479  * // *
3480  * // * 8070 - 80C0 saved for ports 2 through 7
3481  * // *
3482  * // *
3483  * // * 0x80d0 free
3484  * // *
3485  *
3486  *                   SLI_MEM_ACCESS_SUBIDX = SLI Memory Access SubidX Register
3487  *
3488  *  Contains address index and control bits for access to memory from Core PPs.
3489  */
3490 union cvmx_sli_mem_access_subidx {
3491 	uint64_t u64;
3492 	struct cvmx_sli_mem_access_subidx_s {
3493 #ifdef __BIG_ENDIAN_BITFIELD
3494 	uint64_t reserved_43_63               : 21;
3495 	uint64_t zero                         : 1;  /**< Causes all byte reads to be zero length reads.
3496                                                          Returns to the EXEC a zero for all read data.
3497                                                          This must be zero for sRIO ports. */
3498 	uint64_t port                         : 3;  /**< Physical MAC Port that reads/writes to
3499                                                          this subid are sent to. Must be <= 1, as there are
3500                                                          only two ports present. */
3501 	uint64_t nmerge                       : 1;  /**< When set, no merging is allowed in this window. */
3502 	uint64_t esr                          : 2;  /**< ES<1:0> for reads to this subid.
3503                                                          ES<1:0> is the endian-swap attribute for these MAC
3504                                                          memory space reads. */
3505 	uint64_t esw                          : 2;  /**< ES<1:0> for writes to this subid.
3506                                                          ES<1:0> is the endian-swap attribute for these MAC
3507                                                          memory space writes. */
3508 	uint64_t wtype                        : 2;  /**< ADDRTYPE<1:0> for writes to this subid
3509                                                          For PCIe:
3510                                                          - ADDRTYPE<0> is the relaxed-order attribute
3511                                                          - ADDRTYPE<1> is the no-snoop attribute
3512                                                          For sRIO:
3513                                                          - ADDRTYPE<1:0> help select an SRIO*_S2M_TYPE*
3514                                                            entry */
3515 	uint64_t rtype                        : 2;  /**< ADDRTYPE<1:0> for reads to this subid
3516                                                          For PCIe:
3517                                                          - ADDRTYPE<0> is the relaxed-order attribute
3518                                                          - ADDRTYPE<1> is the no-snoop attribute
3519                                                          For sRIO:
3520                                                          - ADDRTYPE<1:0> help select an SRIO*_S2M_TYPE*
3521                                                            entry */
3522 	uint64_t reserved_0_29                : 30;
3523 #else
3524 	uint64_t reserved_0_29                : 30;
3525 	uint64_t rtype                        : 2;
3526 	uint64_t wtype                        : 2;
3527 	uint64_t esw                          : 2;
3528 	uint64_t esr                          : 2;
3529 	uint64_t nmerge                       : 1;
3530 	uint64_t port                         : 3;
3531 	uint64_t zero                         : 1;
3532 	uint64_t reserved_43_63               : 21;
3533 #endif
3534 	} s;
3535 	struct cvmx_sli_mem_access_subidx_cn61xx {
3536 #ifdef __BIG_ENDIAN_BITFIELD
3537 	uint64_t reserved_43_63               : 21;
3538 	uint64_t zero                         : 1;  /**< Causes all byte reads to be zero length reads.
3539                                                          Returns to the EXEC a zero for all read data.
3540                                                          This must be zero for sRIO ports. */
3541 	uint64_t port                         : 3;  /**< Physical MAC Port that reads/writes to
3542                                                          this subid are sent to. Must be <= 1, as there are
3543                                                          only two ports present. */
3544 	uint64_t nmerge                       : 1;  /**< When set, no merging is allowed in this window. */
3545 	uint64_t esr                          : 2;  /**< ES<1:0> for reads to this subid.
3546                                                          ES<1:0> is the endian-swap attribute for these MAC
3547                                                          memory space reads. */
3548 	uint64_t esw                          : 2;  /**< ES<1:0> for writes to this subid.
3549                                                          ES<1:0> is the endian-swap attribute for these MAC
3550                                                          memory space writes. */
3551 	uint64_t wtype                        : 2;  /**< ADDRTYPE<1:0> for writes to this subid
3552                                                          For PCIe:
3553                                                          - ADDRTYPE<0> is the relaxed-order attribute
3554                                                          - ADDRTYPE<1> is the no-snoop attribute
3555                                                          For sRIO:
3556                                                          - ADDRTYPE<1:0> help select an SRIO*_S2M_TYPE*
3557                                                            entry */
3558 	uint64_t rtype                        : 2;  /**< ADDRTYPE<1:0> for reads to this subid
3559                                                          For PCIe:
3560                                                          - ADDRTYPE<0> is the relaxed-order attribute
3561                                                          - ADDRTYPE<1> is the no-snoop attribute
3562                                                          For sRIO:
3563                                                          - ADDRTYPE<1:0> help select an SRIO*_S2M_TYPE*
3564                                                            entry */
3565 	uint64_t ba                           : 30; /**< Address Bits <63:34> for reads/writes that use
3566                                                          this subid. */
3567 #else
3568 	uint64_t ba                           : 30;
3569 	uint64_t rtype                        : 2;
3570 	uint64_t wtype                        : 2;
3571 	uint64_t esw                          : 2;
3572 	uint64_t esr                          : 2;
3573 	uint64_t nmerge                       : 1;
3574 	uint64_t port                         : 3;
3575 	uint64_t zero                         : 1;
3576 	uint64_t reserved_43_63               : 21;
3577 #endif
3578 	} cn61xx;
3579 	struct cvmx_sli_mem_access_subidx_cn61xx cn63xx;
3580 	struct cvmx_sli_mem_access_subidx_cn61xx cn63xxp1;
3581 	struct cvmx_sli_mem_access_subidx_cn61xx cn66xx;
3582 	struct cvmx_sli_mem_access_subidx_cn68xx {
3583 #ifdef __BIG_ENDIAN_BITFIELD
3584 	uint64_t reserved_43_63               : 21;
3585 	uint64_t zero                         : 1;  /**< Causes all byte reads to be zero length reads.
3586                                                          Returns to the EXEC a zero for all read data.
3587                                                          This must be zero for sRIO ports. */
3588 	uint64_t port                         : 3;  /**< Physical MAC Port that reads/writes to
3589                                                          this subid are sent to. Must be <= 1, as there are
3590                                                          only two ports present. */
3591 	uint64_t nmerge                       : 1;  /**< When set, no merging is allowed in this window. */
3592 	uint64_t esr                          : 2;  /**< ES<1:0> for reads to this subid.
3593                                                          ES<1:0> is the endian-swap attribute for these MAC
3594                                                          memory space reads. */
3595 	uint64_t esw                          : 2;  /**< ES<1:0> for writes to this subid.
3596                                                          ES<1:0> is the endian-swap attribute for these MAC
3597                                                          memory space writes. */
3598 	uint64_t wtype                        : 2;  /**< ADDRTYPE<1:0> for writes to this subid
3599                                                          For PCIe:
3600                                                          - ADDRTYPE<0> is the relaxed-order attribute
3601                                                          - ADDRTYPE<1> is the no-snoop attribute */
3602 	uint64_t rtype                        : 2;  /**< ADDRTYPE<1:0> for reads to this subid
3603                                                          For PCIe:
3604                                                          - ADDRTYPE<0> is the relaxed-order attribute
3605                                                          - ADDRTYPE<1> is the no-snoop attribute */
3606 	uint64_t ba                           : 28; /**< Address Bits <63:36> for reads/writes that use
3607                                                          this subid. */
3608 	uint64_t reserved_0_1                 : 2;
3609 #else
3610 	uint64_t reserved_0_1                 : 2;
3611 	uint64_t ba                           : 28;
3612 	uint64_t rtype                        : 2;
3613 	uint64_t wtype                        : 2;
3614 	uint64_t esw                          : 2;
3615 	uint64_t esr                          : 2;
3616 	uint64_t nmerge                       : 1;
3617 	uint64_t port                         : 3;
3618 	uint64_t zero                         : 1;
3619 	uint64_t reserved_43_63               : 21;
3620 #endif
3621 	} cn68xx;
3622 	struct cvmx_sli_mem_access_subidx_cn68xx cn68xxp1;
3623 	struct cvmx_sli_mem_access_subidx_cn61xx cnf71xx;
3624 };
3625 typedef union cvmx_sli_mem_access_subidx cvmx_sli_mem_access_subidx_t;
3626 
3627 /**
3628  * cvmx_sli_msi_enb0
3629  *
3630  * SLI_MSI_ENB0 = SLI MSI Enable0
3631  *
3632  * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV0.
3633  */
3634 union cvmx_sli_msi_enb0 {
3635 	uint64_t u64;
3636 	struct cvmx_sli_msi_enb0_s {
3637 #ifdef __BIG_ENDIAN_BITFIELD
3638 	uint64_t enb                          : 64; /**< Enables bit [63:0] of SLI_MSI_RCV0. */
3639 #else
3640 	uint64_t enb                          : 64;
3641 #endif
3642 	} s;
3643 	struct cvmx_sli_msi_enb0_s            cn61xx;
3644 	struct cvmx_sli_msi_enb0_s            cn63xx;
3645 	struct cvmx_sli_msi_enb0_s            cn63xxp1;
3646 	struct cvmx_sli_msi_enb0_s            cn66xx;
3647 	struct cvmx_sli_msi_enb0_s            cn68xx;
3648 	struct cvmx_sli_msi_enb0_s            cn68xxp1;
3649 	struct cvmx_sli_msi_enb0_s            cnf71xx;
3650 };
3651 typedef union cvmx_sli_msi_enb0 cvmx_sli_msi_enb0_t;
3652 
3653 /**
3654  * cvmx_sli_msi_enb1
3655  *
3656  * SLI_MSI_ENB1 = SLI MSI Enable1
3657  *
3658  * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV1.
3659  */
3660 union cvmx_sli_msi_enb1 {
3661 	uint64_t u64;
3662 	struct cvmx_sli_msi_enb1_s {
3663 #ifdef __BIG_ENDIAN_BITFIELD
3664 	uint64_t enb                          : 64; /**< Enables bit [63:0] of SLI_MSI_RCV1. */
3665 #else
3666 	uint64_t enb                          : 64;
3667 #endif
3668 	} s;
3669 	struct cvmx_sli_msi_enb1_s            cn61xx;
3670 	struct cvmx_sli_msi_enb1_s            cn63xx;
3671 	struct cvmx_sli_msi_enb1_s            cn63xxp1;
3672 	struct cvmx_sli_msi_enb1_s            cn66xx;
3673 	struct cvmx_sli_msi_enb1_s            cn68xx;
3674 	struct cvmx_sli_msi_enb1_s            cn68xxp1;
3675 	struct cvmx_sli_msi_enb1_s            cnf71xx;
3676 };
3677 typedef union cvmx_sli_msi_enb1 cvmx_sli_msi_enb1_t;
3678 
3679 /**
3680  * cvmx_sli_msi_enb2
3681  *
3682  * SLI_MSI_ENB2 = SLI MSI Enable2
3683  *
3684  * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV2.
3685  */
3686 union cvmx_sli_msi_enb2 {
3687 	uint64_t u64;
3688 	struct cvmx_sli_msi_enb2_s {
3689 #ifdef __BIG_ENDIAN_BITFIELD
3690 	uint64_t enb                          : 64; /**< Enables bit [63:0] of SLI_MSI_RCV2. */
3691 #else
3692 	uint64_t enb                          : 64;
3693 #endif
3694 	} s;
3695 	struct cvmx_sli_msi_enb2_s            cn61xx;
3696 	struct cvmx_sli_msi_enb2_s            cn63xx;
3697 	struct cvmx_sli_msi_enb2_s            cn63xxp1;
3698 	struct cvmx_sli_msi_enb2_s            cn66xx;
3699 	struct cvmx_sli_msi_enb2_s            cn68xx;
3700 	struct cvmx_sli_msi_enb2_s            cn68xxp1;
3701 	struct cvmx_sli_msi_enb2_s            cnf71xx;
3702 };
3703 typedef union cvmx_sli_msi_enb2 cvmx_sli_msi_enb2_t;
3704 
3705 /**
3706  * cvmx_sli_msi_enb3
3707  *
3708  * SLI_MSI_ENB3 = SLI MSI Enable3
3709  *
3710  * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV3.
3711  */
3712 union cvmx_sli_msi_enb3 {
3713 	uint64_t u64;
3714 	struct cvmx_sli_msi_enb3_s {
3715 #ifdef __BIG_ENDIAN_BITFIELD
3716 	uint64_t enb                          : 64; /**< Enables bit [63:0] of SLI_MSI_RCV3. */
3717 #else
3718 	uint64_t enb                          : 64;
3719 #endif
3720 	} s;
3721 	struct cvmx_sli_msi_enb3_s            cn61xx;
3722 	struct cvmx_sli_msi_enb3_s            cn63xx;
3723 	struct cvmx_sli_msi_enb3_s            cn63xxp1;
3724 	struct cvmx_sli_msi_enb3_s            cn66xx;
3725 	struct cvmx_sli_msi_enb3_s            cn68xx;
3726 	struct cvmx_sli_msi_enb3_s            cn68xxp1;
3727 	struct cvmx_sli_msi_enb3_s            cnf71xx;
3728 };
3729 typedef union cvmx_sli_msi_enb3 cvmx_sli_msi_enb3_t;
3730 
3731 /**
3732  * cvmx_sli_msi_rcv0
3733  *
3734  * SLI_MSI_RCV0 = SLI MSI Receive0
3735  *
3736  * Contains bits [63:0] of the 256 bits of MSI interrupts.
3737  */
3738 union cvmx_sli_msi_rcv0 {
3739 	uint64_t u64;
3740 	struct cvmx_sli_msi_rcv0_s {
3741 #ifdef __BIG_ENDIAN_BITFIELD
3742 	uint64_t intr                         : 64; /**< Bits 63-0 of the 256 bits of MSI interrupt. */
3743 #else
3744 	uint64_t intr                         : 64;
3745 #endif
3746 	} s;
3747 	struct cvmx_sli_msi_rcv0_s            cn61xx;
3748 	struct cvmx_sli_msi_rcv0_s            cn63xx;
3749 	struct cvmx_sli_msi_rcv0_s            cn63xxp1;
3750 	struct cvmx_sli_msi_rcv0_s            cn66xx;
3751 	struct cvmx_sli_msi_rcv0_s            cn68xx;
3752 	struct cvmx_sli_msi_rcv0_s            cn68xxp1;
3753 	struct cvmx_sli_msi_rcv0_s            cnf71xx;
3754 };
3755 typedef union cvmx_sli_msi_rcv0 cvmx_sli_msi_rcv0_t;
3756 
3757 /**
3758  * cvmx_sli_msi_rcv1
3759  *
3760  * SLI_MSI_RCV1 = SLI MSI Receive1
3761  *
3762  * Contains bits [127:64] of the 256 bits of MSI interrupts.
3763  */
3764 union cvmx_sli_msi_rcv1 {
3765 	uint64_t u64;
3766 	struct cvmx_sli_msi_rcv1_s {
3767 #ifdef __BIG_ENDIAN_BITFIELD
3768 	uint64_t intr                         : 64; /**< Bits 127-64 of the 256 bits of MSI interrupt. */
3769 #else
3770 	uint64_t intr                         : 64;
3771 #endif
3772 	} s;
3773 	struct cvmx_sli_msi_rcv1_s            cn61xx;
3774 	struct cvmx_sli_msi_rcv1_s            cn63xx;
3775 	struct cvmx_sli_msi_rcv1_s            cn63xxp1;
3776 	struct cvmx_sli_msi_rcv1_s            cn66xx;
3777 	struct cvmx_sli_msi_rcv1_s            cn68xx;
3778 	struct cvmx_sli_msi_rcv1_s            cn68xxp1;
3779 	struct cvmx_sli_msi_rcv1_s            cnf71xx;
3780 };
3781 typedef union cvmx_sli_msi_rcv1 cvmx_sli_msi_rcv1_t;
3782 
3783 /**
3784  * cvmx_sli_msi_rcv2
3785  *
3786  * SLI_MSI_RCV2 = SLI MSI Receive2
3787  *
3788  * Contains bits [191:128] of the 256 bits of MSI interrupts.
3789  */
3790 union cvmx_sli_msi_rcv2 {
3791 	uint64_t u64;
3792 	struct cvmx_sli_msi_rcv2_s {
3793 #ifdef __BIG_ENDIAN_BITFIELD
3794 	uint64_t intr                         : 64; /**< Bits 191-128 of the 256 bits of MSI interrupt. */
3795 #else
3796 	uint64_t intr                         : 64;
3797 #endif
3798 	} s;
3799 	struct cvmx_sli_msi_rcv2_s            cn61xx;
3800 	struct cvmx_sli_msi_rcv2_s            cn63xx;
3801 	struct cvmx_sli_msi_rcv2_s            cn63xxp1;
3802 	struct cvmx_sli_msi_rcv2_s            cn66xx;
3803 	struct cvmx_sli_msi_rcv2_s            cn68xx;
3804 	struct cvmx_sli_msi_rcv2_s            cn68xxp1;
3805 	struct cvmx_sli_msi_rcv2_s            cnf71xx;
3806 };
3807 typedef union cvmx_sli_msi_rcv2 cvmx_sli_msi_rcv2_t;
3808 
3809 /**
3810  * cvmx_sli_msi_rcv3
3811  *
3812  * SLI_MSI_RCV3 = SLI MSI Receive3
3813  *
3814  * Contains bits [255:192] of the 256 bits of MSI interrupts.
3815  */
3816 union cvmx_sli_msi_rcv3 {
3817 	uint64_t u64;
3818 	struct cvmx_sli_msi_rcv3_s {
3819 #ifdef __BIG_ENDIAN_BITFIELD
3820 	uint64_t intr                         : 64; /**< Bits 255-192 of the 256 bits of MSI interrupt. */
3821 #else
3822 	uint64_t intr                         : 64;
3823 #endif
3824 	} s;
3825 	struct cvmx_sli_msi_rcv3_s            cn61xx;
3826 	struct cvmx_sli_msi_rcv3_s            cn63xx;
3827 	struct cvmx_sli_msi_rcv3_s            cn63xxp1;
3828 	struct cvmx_sli_msi_rcv3_s            cn66xx;
3829 	struct cvmx_sli_msi_rcv3_s            cn68xx;
3830 	struct cvmx_sli_msi_rcv3_s            cn68xxp1;
3831 	struct cvmx_sli_msi_rcv3_s            cnf71xx;
3832 };
3833 typedef union cvmx_sli_msi_rcv3 cvmx_sli_msi_rcv3_t;
3834 
3835 /**
3836  * cvmx_sli_msi_rd_map
3837  *
3838  * SLI_MSI_RD_MAP = SLI MSI Read MAP
3839  *
3840  * Used to read the mapping function of the SLI_PCIE_MSI_RCV to SLI_MSI_RCV registers.
3841  */
3842 union cvmx_sli_msi_rd_map {
3843 	uint64_t u64;
3844 	struct cvmx_sli_msi_rd_map_s {
3845 #ifdef __BIG_ENDIAN_BITFIELD
3846 	uint64_t reserved_16_63               : 48;
3847 	uint64_t rd_int                       : 8;  /**< The value of the map at the location PREVIOUSLY
3848                                                          written to the MSI_INT field of this register. */
3849 	uint64_t msi_int                      : 8;  /**< Selects the value that would be received when the
3850                                                          SLI_PCIE_MSI_RCV register is written. */
3851 #else
3852 	uint64_t msi_int                      : 8;
3853 	uint64_t rd_int                       : 8;
3854 	uint64_t reserved_16_63               : 48;
3855 #endif
3856 	} s;
3857 	struct cvmx_sli_msi_rd_map_s          cn61xx;
3858 	struct cvmx_sli_msi_rd_map_s          cn63xx;
3859 	struct cvmx_sli_msi_rd_map_s          cn63xxp1;
3860 	struct cvmx_sli_msi_rd_map_s          cn66xx;
3861 	struct cvmx_sli_msi_rd_map_s          cn68xx;
3862 	struct cvmx_sli_msi_rd_map_s          cn68xxp1;
3863 	struct cvmx_sli_msi_rd_map_s          cnf71xx;
3864 };
3865 typedef union cvmx_sli_msi_rd_map cvmx_sli_msi_rd_map_t;
3866 
3867 /**
3868  * cvmx_sli_msi_w1c_enb0
3869  *
3870  * SLI_MSI_W1C_ENB0 = SLI MSI Write 1 To Clear Enable0
3871  *
3872  * Used to clear bits in SLI_MSI_ENB0.
3873  */
3874 union cvmx_sli_msi_w1c_enb0 {
3875 	uint64_t u64;
3876 	struct cvmx_sli_msi_w1c_enb0_s {
3877 #ifdef __BIG_ENDIAN_BITFIELD
3878 	uint64_t clr                          : 64; /**< A write of '1' to a vector will clear the
3879                                                          cooresponding bit in SLI_MSI_ENB0.
3880                                                          A read to this address will return 0. */
3881 #else
3882 	uint64_t clr                          : 64;
3883 #endif
3884 	} s;
3885 	struct cvmx_sli_msi_w1c_enb0_s        cn61xx;
3886 	struct cvmx_sli_msi_w1c_enb0_s        cn63xx;
3887 	struct cvmx_sli_msi_w1c_enb0_s        cn63xxp1;
3888 	struct cvmx_sli_msi_w1c_enb0_s        cn66xx;
3889 	struct cvmx_sli_msi_w1c_enb0_s        cn68xx;
3890 	struct cvmx_sli_msi_w1c_enb0_s        cn68xxp1;
3891 	struct cvmx_sli_msi_w1c_enb0_s        cnf71xx;
3892 };
3893 typedef union cvmx_sli_msi_w1c_enb0 cvmx_sli_msi_w1c_enb0_t;
3894 
3895 /**
3896  * cvmx_sli_msi_w1c_enb1
3897  *
3898  * SLI_MSI_W1C_ENB1 = SLI MSI Write 1 To Clear Enable1
3899  *
3900  * Used to clear bits in SLI_MSI_ENB1.
3901  */
3902 union cvmx_sli_msi_w1c_enb1 {
3903 	uint64_t u64;
3904 	struct cvmx_sli_msi_w1c_enb1_s {
3905 #ifdef __BIG_ENDIAN_BITFIELD
3906 	uint64_t clr                          : 64; /**< A write of '1' to a vector will clear the
3907                                                          cooresponding bit in SLI_MSI_ENB1.
3908                                                          A read to this address will return 0. */
3909 #else
3910 	uint64_t clr                          : 64;
3911 #endif
3912 	} s;
3913 	struct cvmx_sli_msi_w1c_enb1_s        cn61xx;
3914 	struct cvmx_sli_msi_w1c_enb1_s        cn63xx;
3915 	struct cvmx_sli_msi_w1c_enb1_s        cn63xxp1;
3916 	struct cvmx_sli_msi_w1c_enb1_s        cn66xx;
3917 	struct cvmx_sli_msi_w1c_enb1_s        cn68xx;
3918 	struct cvmx_sli_msi_w1c_enb1_s        cn68xxp1;
3919 	struct cvmx_sli_msi_w1c_enb1_s        cnf71xx;
3920 };
3921 typedef union cvmx_sli_msi_w1c_enb1 cvmx_sli_msi_w1c_enb1_t;
3922 
3923 /**
3924  * cvmx_sli_msi_w1c_enb2
3925  *
3926  * SLI_MSI_W1C_ENB2 = SLI MSI Write 1 To Clear Enable2
3927  *
3928  * Used to clear bits in SLI_MSI_ENB2.
3929  */
3930 union cvmx_sli_msi_w1c_enb2 {
3931 	uint64_t u64;
3932 	struct cvmx_sli_msi_w1c_enb2_s {
3933 #ifdef __BIG_ENDIAN_BITFIELD
3934 	uint64_t clr                          : 64; /**< A write of '1' to a vector will clear the
3935                                                          cooresponding bit in SLI_MSI_ENB2.
3936                                                          A read to this address will return 0. */
3937 #else
3938 	uint64_t clr                          : 64;
3939 #endif
3940 	} s;
3941 	struct cvmx_sli_msi_w1c_enb2_s        cn61xx;
3942 	struct cvmx_sli_msi_w1c_enb2_s        cn63xx;
3943 	struct cvmx_sli_msi_w1c_enb2_s        cn63xxp1;
3944 	struct cvmx_sli_msi_w1c_enb2_s        cn66xx;
3945 	struct cvmx_sli_msi_w1c_enb2_s        cn68xx;
3946 	struct cvmx_sli_msi_w1c_enb2_s        cn68xxp1;
3947 	struct cvmx_sli_msi_w1c_enb2_s        cnf71xx;
3948 };
3949 typedef union cvmx_sli_msi_w1c_enb2 cvmx_sli_msi_w1c_enb2_t;
3950 
3951 /**
3952  * cvmx_sli_msi_w1c_enb3
3953  *
3954  * SLI_MSI_W1C_ENB3 = SLI MSI Write 1 To Clear Enable3
3955  *
3956  * Used to clear bits in SLI_MSI_ENB3.
3957  */
3958 union cvmx_sli_msi_w1c_enb3 {
3959 	uint64_t u64;
3960 	struct cvmx_sli_msi_w1c_enb3_s {
3961 #ifdef __BIG_ENDIAN_BITFIELD
3962 	uint64_t clr                          : 64; /**< A write of '1' to a vector will clear the
3963                                                          cooresponding bit in SLI_MSI_ENB3.
3964                                                          A read to this address will return 0. */
3965 #else
3966 	uint64_t clr                          : 64;
3967 #endif
3968 	} s;
3969 	struct cvmx_sli_msi_w1c_enb3_s        cn61xx;
3970 	struct cvmx_sli_msi_w1c_enb3_s        cn63xx;
3971 	struct cvmx_sli_msi_w1c_enb3_s        cn63xxp1;
3972 	struct cvmx_sli_msi_w1c_enb3_s        cn66xx;
3973 	struct cvmx_sli_msi_w1c_enb3_s        cn68xx;
3974 	struct cvmx_sli_msi_w1c_enb3_s        cn68xxp1;
3975 	struct cvmx_sli_msi_w1c_enb3_s        cnf71xx;
3976 };
3977 typedef union cvmx_sli_msi_w1c_enb3 cvmx_sli_msi_w1c_enb3_t;
3978 
3979 /**
3980  * cvmx_sli_msi_w1s_enb0
3981  *
3982  * SLI_MSI_W1S_ENB0 = SLI MSI Write 1 To Set Enable0
3983  *
3984  * Used to set bits in SLI_MSI_ENB0.
3985  */
3986 union cvmx_sli_msi_w1s_enb0 {
3987 	uint64_t u64;
3988 	struct cvmx_sli_msi_w1s_enb0_s {
3989 #ifdef __BIG_ENDIAN_BITFIELD
3990 	uint64_t set                          : 64; /**< A write of '1' to a vector will set the
3991                                                          cooresponding bit in SLI_MSI_ENB0.
3992                                                          A read to this address will return 0. */
3993 #else
3994 	uint64_t set                          : 64;
3995 #endif
3996 	} s;
3997 	struct cvmx_sli_msi_w1s_enb0_s        cn61xx;
3998 	struct cvmx_sli_msi_w1s_enb0_s        cn63xx;
3999 	struct cvmx_sli_msi_w1s_enb0_s        cn63xxp1;
4000 	struct cvmx_sli_msi_w1s_enb0_s        cn66xx;
4001 	struct cvmx_sli_msi_w1s_enb0_s        cn68xx;
4002 	struct cvmx_sli_msi_w1s_enb0_s        cn68xxp1;
4003 	struct cvmx_sli_msi_w1s_enb0_s        cnf71xx;
4004 };
4005 typedef union cvmx_sli_msi_w1s_enb0 cvmx_sli_msi_w1s_enb0_t;
4006 
4007 /**
4008  * cvmx_sli_msi_w1s_enb1
4009  *
4010  * SLI_MSI_W1S_ENB0 = SLI MSI Write 1 To Set Enable1
4011  *
4012  * Used to set bits in SLI_MSI_ENB1.
4013  */
4014 union cvmx_sli_msi_w1s_enb1 {
4015 	uint64_t u64;
4016 	struct cvmx_sli_msi_w1s_enb1_s {
4017 #ifdef __BIG_ENDIAN_BITFIELD
4018 	uint64_t set                          : 64; /**< A write of '1' to a vector will set the
4019                                                          cooresponding bit in SLI_MSI_ENB1.
4020                                                          A read to this address will return 0. */
4021 #else
4022 	uint64_t set                          : 64;
4023 #endif
4024 	} s;
4025 	struct cvmx_sli_msi_w1s_enb1_s        cn61xx;
4026 	struct cvmx_sli_msi_w1s_enb1_s        cn63xx;
4027 	struct cvmx_sli_msi_w1s_enb1_s        cn63xxp1;
4028 	struct cvmx_sli_msi_w1s_enb1_s        cn66xx;
4029 	struct cvmx_sli_msi_w1s_enb1_s        cn68xx;
4030 	struct cvmx_sli_msi_w1s_enb1_s        cn68xxp1;
4031 	struct cvmx_sli_msi_w1s_enb1_s        cnf71xx;
4032 };
4033 typedef union cvmx_sli_msi_w1s_enb1 cvmx_sli_msi_w1s_enb1_t;
4034 
4035 /**
4036  * cvmx_sli_msi_w1s_enb2
4037  *
4038  * SLI_MSI_W1S_ENB2 = SLI MSI Write 1 To Set Enable2
4039  *
4040  * Used to set bits in SLI_MSI_ENB2.
4041  */
4042 union cvmx_sli_msi_w1s_enb2 {
4043 	uint64_t u64;
4044 	struct cvmx_sli_msi_w1s_enb2_s {
4045 #ifdef __BIG_ENDIAN_BITFIELD
4046 	uint64_t set                          : 64; /**< A write of '1' to a vector will set the
4047                                                          cooresponding bit in SLI_MSI_ENB2.
4048                                                          A read to this address will return 0. */
4049 #else
4050 	uint64_t set                          : 64;
4051 #endif
4052 	} s;
4053 	struct cvmx_sli_msi_w1s_enb2_s        cn61xx;
4054 	struct cvmx_sli_msi_w1s_enb2_s        cn63xx;
4055 	struct cvmx_sli_msi_w1s_enb2_s        cn63xxp1;
4056 	struct cvmx_sli_msi_w1s_enb2_s        cn66xx;
4057 	struct cvmx_sli_msi_w1s_enb2_s        cn68xx;
4058 	struct cvmx_sli_msi_w1s_enb2_s        cn68xxp1;
4059 	struct cvmx_sli_msi_w1s_enb2_s        cnf71xx;
4060 };
4061 typedef union cvmx_sli_msi_w1s_enb2 cvmx_sli_msi_w1s_enb2_t;
4062 
4063 /**
4064  * cvmx_sli_msi_w1s_enb3
4065  *
4066  * SLI_MSI_W1S_ENB3 = SLI MSI Write 1 To Set Enable3
4067  *
4068  * Used to set bits in SLI_MSI_ENB3.
4069  */
4070 union cvmx_sli_msi_w1s_enb3 {
4071 	uint64_t u64;
4072 	struct cvmx_sli_msi_w1s_enb3_s {
4073 #ifdef __BIG_ENDIAN_BITFIELD
4074 	uint64_t set                          : 64; /**< A write of '1' to a vector will set the
4075                                                          cooresponding bit in SLI_MSI_ENB3.
4076                                                          A read to this address will return 0. */
4077 #else
4078 	uint64_t set                          : 64;
4079 #endif
4080 	} s;
4081 	struct cvmx_sli_msi_w1s_enb3_s        cn61xx;
4082 	struct cvmx_sli_msi_w1s_enb3_s        cn63xx;
4083 	struct cvmx_sli_msi_w1s_enb3_s        cn63xxp1;
4084 	struct cvmx_sli_msi_w1s_enb3_s        cn66xx;
4085 	struct cvmx_sli_msi_w1s_enb3_s        cn68xx;
4086 	struct cvmx_sli_msi_w1s_enb3_s        cn68xxp1;
4087 	struct cvmx_sli_msi_w1s_enb3_s        cnf71xx;
4088 };
4089 typedef union cvmx_sli_msi_w1s_enb3 cvmx_sli_msi_w1s_enb3_t;
4090 
4091 /**
4092  * cvmx_sli_msi_wr_map
4093  *
4094  * SLI_MSI_WR_MAP = SLI MSI Write MAP
4095  *
4096  * Used to write the mapping function of the SLI_PCIE_MSI_RCV to SLI_MSI_RCV registers.
4097  */
4098 union cvmx_sli_msi_wr_map {
4099 	uint64_t u64;
4100 	struct cvmx_sli_msi_wr_map_s {
4101 #ifdef __BIG_ENDIAN_BITFIELD
4102 	uint64_t reserved_16_63               : 48;
4103 	uint64_t ciu_int                      : 8;  /**< Selects which bit in the SLI_MSI_RCV# (0-255)
4104                                                          will be set when the value specified in the
4105                                                          MSI_INT of this register is recevied during a
4106                                                          write to the SLI_PCIE_MSI_RCV register. */
4107 	uint64_t msi_int                      : 8;  /**< Selects the value that would be received when the
4108                                                          SLI_PCIE_MSI_RCV register is written. */
4109 #else
4110 	uint64_t msi_int                      : 8;
4111 	uint64_t ciu_int                      : 8;
4112 	uint64_t reserved_16_63               : 48;
4113 #endif
4114 	} s;
4115 	struct cvmx_sli_msi_wr_map_s          cn61xx;
4116 	struct cvmx_sli_msi_wr_map_s          cn63xx;
4117 	struct cvmx_sli_msi_wr_map_s          cn63xxp1;
4118 	struct cvmx_sli_msi_wr_map_s          cn66xx;
4119 	struct cvmx_sli_msi_wr_map_s          cn68xx;
4120 	struct cvmx_sli_msi_wr_map_s          cn68xxp1;
4121 	struct cvmx_sli_msi_wr_map_s          cnf71xx;
4122 };
4123 typedef union cvmx_sli_msi_wr_map cvmx_sli_msi_wr_map_t;
4124 
4125 /**
4126  * cvmx_sli_pcie_msi_rcv
4127  *
4128  * SLI_PCIE_MSI_RCV = SLI MAC MSI Receive
4129  *
4130  * Register where MSI writes are directed from the MAC.
4131  */
4132 union cvmx_sli_pcie_msi_rcv {
4133 	uint64_t u64;
4134 	struct cvmx_sli_pcie_msi_rcv_s {
4135 #ifdef __BIG_ENDIAN_BITFIELD
4136 	uint64_t reserved_8_63                : 56;
4137 	uint64_t intr                         : 8;  /**< A write to this register will result in a bit in
4138                                                          one of the SLI_MSI_RCV# registers being set.
4139                                                          Which bit is set is dependent on the previously
4140                                                          written using the SLI_MSI_WR_MAP register or if
4141                                                          not previously written the reset value of the MAP. */
4142 #else
4143 	uint64_t intr                         : 8;
4144 	uint64_t reserved_8_63                : 56;
4145 #endif
4146 	} s;
4147 	struct cvmx_sli_pcie_msi_rcv_s        cn61xx;
4148 	struct cvmx_sli_pcie_msi_rcv_s        cn63xx;
4149 	struct cvmx_sli_pcie_msi_rcv_s        cn63xxp1;
4150 	struct cvmx_sli_pcie_msi_rcv_s        cn66xx;
4151 	struct cvmx_sli_pcie_msi_rcv_s        cn68xx;
4152 	struct cvmx_sli_pcie_msi_rcv_s        cn68xxp1;
4153 	struct cvmx_sli_pcie_msi_rcv_s        cnf71xx;
4154 };
4155 typedef union cvmx_sli_pcie_msi_rcv cvmx_sli_pcie_msi_rcv_t;
4156 
4157 /**
4158  * cvmx_sli_pcie_msi_rcv_b1
4159  *
4160  * SLI_PCIE_MSI_RCV_B1 = SLI MAC MSI Receive Byte 1
4161  *
4162  * Register where MSI writes are directed from the MAC.
4163  *
4164  * Notes:
4165  * This CSR can be used by PCIe and sRIO MACs.
4166  *
4167  */
4168 union cvmx_sli_pcie_msi_rcv_b1 {
4169 	uint64_t u64;
4170 	struct cvmx_sli_pcie_msi_rcv_b1_s {
4171 #ifdef __BIG_ENDIAN_BITFIELD
4172 	uint64_t reserved_16_63               : 48;
4173 	uint64_t intr                         : 8;  /**< A write to this register will result in a bit in
4174                                                          one of the SLI_MSI_RCV# registers being set.
4175                                                          Which bit is set is dependent on the previously
4176                                                          written using the SLI_MSI_WR_MAP register or if
4177                                                          not previously written the reset value of the MAP. */
4178 	uint64_t reserved_0_7                 : 8;
4179 #else
4180 	uint64_t reserved_0_7                 : 8;
4181 	uint64_t intr                         : 8;
4182 	uint64_t reserved_16_63               : 48;
4183 #endif
4184 	} s;
4185 	struct cvmx_sli_pcie_msi_rcv_b1_s     cn61xx;
4186 	struct cvmx_sli_pcie_msi_rcv_b1_s     cn63xx;
4187 	struct cvmx_sli_pcie_msi_rcv_b1_s     cn63xxp1;
4188 	struct cvmx_sli_pcie_msi_rcv_b1_s     cn66xx;
4189 	struct cvmx_sli_pcie_msi_rcv_b1_s     cn68xx;
4190 	struct cvmx_sli_pcie_msi_rcv_b1_s     cn68xxp1;
4191 	struct cvmx_sli_pcie_msi_rcv_b1_s     cnf71xx;
4192 };
4193 typedef union cvmx_sli_pcie_msi_rcv_b1 cvmx_sli_pcie_msi_rcv_b1_t;
4194 
4195 /**
4196  * cvmx_sli_pcie_msi_rcv_b2
4197  *
4198  * SLI_PCIE_MSI_RCV_B2 = SLI MAC MSI Receive Byte 2
4199  *
4200  * Register where MSI writes are directed from the MAC.
4201  *
4202  * Notes:
4203  * This CSR can be used by PCIe and sRIO MACs.
4204  *
4205  */
4206 union cvmx_sli_pcie_msi_rcv_b2 {
4207 	uint64_t u64;
4208 	struct cvmx_sli_pcie_msi_rcv_b2_s {
4209 #ifdef __BIG_ENDIAN_BITFIELD
4210 	uint64_t reserved_24_63               : 40;
4211 	uint64_t intr                         : 8;  /**< A write to this register will result in a bit in
4212                                                          one of the SLI_MSI_RCV# registers being set.
4213                                                          Which bit is set is dependent on the previously
4214                                                          written using the SLI_MSI_WR_MAP register or if
4215                                                          not previously written the reset value of the MAP. */
4216 	uint64_t reserved_0_15                : 16;
4217 #else
4218 	uint64_t reserved_0_15                : 16;
4219 	uint64_t intr                         : 8;
4220 	uint64_t reserved_24_63               : 40;
4221 #endif
4222 	} s;
4223 	struct cvmx_sli_pcie_msi_rcv_b2_s     cn61xx;
4224 	struct cvmx_sli_pcie_msi_rcv_b2_s     cn63xx;
4225 	struct cvmx_sli_pcie_msi_rcv_b2_s     cn63xxp1;
4226 	struct cvmx_sli_pcie_msi_rcv_b2_s     cn66xx;
4227 	struct cvmx_sli_pcie_msi_rcv_b2_s     cn68xx;
4228 	struct cvmx_sli_pcie_msi_rcv_b2_s     cn68xxp1;
4229 	struct cvmx_sli_pcie_msi_rcv_b2_s     cnf71xx;
4230 };
4231 typedef union cvmx_sli_pcie_msi_rcv_b2 cvmx_sli_pcie_msi_rcv_b2_t;
4232 
4233 /**
4234  * cvmx_sli_pcie_msi_rcv_b3
4235  *
4236  * SLI_PCIE_MSI_RCV_B3 = SLI MAC MSI Receive Byte 3
4237  *
4238  * Register where MSI writes are directed from the MAC.
4239  *
4240  * Notes:
4241  * This CSR can be used by PCIe and sRIO MACs.
4242  *
4243  */
4244 union cvmx_sli_pcie_msi_rcv_b3 {
4245 	uint64_t u64;
4246 	struct cvmx_sli_pcie_msi_rcv_b3_s {
4247 #ifdef __BIG_ENDIAN_BITFIELD
4248 	uint64_t reserved_32_63               : 32;
4249 	uint64_t intr                         : 8;  /**< A write to this register will result in a bit in
4250                                                          one of the SLI_MSI_RCV# registers being set.
4251                                                          Which bit is set is dependent on the previously
4252                                                          written using the SLI_MSI_WR_MAP register or if
4253                                                          not previously written the reset value of the MAP. */
4254 	uint64_t reserved_0_23                : 24;
4255 #else
4256 	uint64_t reserved_0_23                : 24;
4257 	uint64_t intr                         : 8;
4258 	uint64_t reserved_32_63               : 32;
4259 #endif
4260 	} s;
4261 	struct cvmx_sli_pcie_msi_rcv_b3_s     cn61xx;
4262 	struct cvmx_sli_pcie_msi_rcv_b3_s     cn63xx;
4263 	struct cvmx_sli_pcie_msi_rcv_b3_s     cn63xxp1;
4264 	struct cvmx_sli_pcie_msi_rcv_b3_s     cn66xx;
4265 	struct cvmx_sli_pcie_msi_rcv_b3_s     cn68xx;
4266 	struct cvmx_sli_pcie_msi_rcv_b3_s     cn68xxp1;
4267 	struct cvmx_sli_pcie_msi_rcv_b3_s     cnf71xx;
4268 };
4269 typedef union cvmx_sli_pcie_msi_rcv_b3 cvmx_sli_pcie_msi_rcv_b3_t;
4270 
4271 /**
4272  * cvmx_sli_pkt#_cnts
4273  *
4274  * SLI_PKT[0..31]_CNTS = SLI Packet ring# Counts
4275  *
4276  * The counters for output rings.
4277  */
4278 union cvmx_sli_pktx_cnts {
4279 	uint64_t u64;
4280 	struct cvmx_sli_pktx_cnts_s {
4281 #ifdef __BIG_ENDIAN_BITFIELD
4282 	uint64_t reserved_54_63               : 10;
4283 	uint64_t timer                        : 22; /**< Timer incremented every 1024 core clocks
4284                                                          when SLI_PKTS#_CNTS[CNT] is non zero. Field
4285                                                          cleared when SLI_PKTS#_CNTS[CNT] goes to 0.
4286                                                          Field is also cleared when SLI_PKT_TIME_INT is
4287                                                          cleared.
4288                                                          The first increment of this count can occur
4289                                                          between 0 to 1023 core clocks. */
4290 	uint64_t cnt                          : 32; /**< ring counter. This field is incremented as
4291                                                          packets are sent out and decremented in response to
4292                                                          writes to this field.
4293                                                          When SLI_PKT_OUT_BMODE is '0' a value of 1 is
4294                                                          added to the register for each packet, when '1'
4295                                                          and the info-pointer is NOT used the length of the
4296                                                          packet plus 8 is added, when '1' and info-pointer
4297                                                          mode IS used the packet length is added to this
4298                                                          field. */
4299 #else
4300 	uint64_t cnt                          : 32;
4301 	uint64_t timer                        : 22;
4302 	uint64_t reserved_54_63               : 10;
4303 #endif
4304 	} s;
4305 	struct cvmx_sli_pktx_cnts_s           cn61xx;
4306 	struct cvmx_sli_pktx_cnts_s           cn63xx;
4307 	struct cvmx_sli_pktx_cnts_s           cn63xxp1;
4308 	struct cvmx_sli_pktx_cnts_s           cn66xx;
4309 	struct cvmx_sli_pktx_cnts_s           cn68xx;
4310 	struct cvmx_sli_pktx_cnts_s           cn68xxp1;
4311 	struct cvmx_sli_pktx_cnts_s           cnf71xx;
4312 };
4313 typedef union cvmx_sli_pktx_cnts cvmx_sli_pktx_cnts_t;
4314 
4315 /**
4316  * cvmx_sli_pkt#_in_bp
4317  *
4318  * SLI_PKT[0..31]_IN_BP = SLI Packet ring# Input Backpressure
4319  *
4320  * The counters and thresholds for input packets to apply backpressure to processing of the packets.
4321  */
4322 union cvmx_sli_pktx_in_bp {
4323 	uint64_t u64;
4324 	struct cvmx_sli_pktx_in_bp_s {
4325 #ifdef __BIG_ENDIAN_BITFIELD
4326 	uint64_t wmark                        : 32; /**< When CNT is greater than this threshold no more
4327                                                          packets will be processed for this ring.
4328                                                          When writing this field of the SLI_PKT#_IN_BP
4329                                                          register, use a 4-byte write so as to not write
4330                                                          any other field of this register. */
4331 	uint64_t cnt                          : 32; /**< ring counter. This field is incremented by one
4332                                                          whenever OCTEON receives, buffers, and creates a
4333                                                          work queue entry for a packet that arrives by the
4334                                                          cooresponding input ring. A write to this field
4335                                                          will be subtracted from the field value.
4336                                                          When writing this field of the SLI_PKT#_IN_BP
4337                                                          register, use a 4-byte write so as to not write
4338                                                          any other field of this register. */
4339 #else
4340 	uint64_t cnt                          : 32;
4341 	uint64_t wmark                        : 32;
4342 #endif
4343 	} s;
4344 	struct cvmx_sli_pktx_in_bp_s          cn61xx;
4345 	struct cvmx_sli_pktx_in_bp_s          cn63xx;
4346 	struct cvmx_sli_pktx_in_bp_s          cn63xxp1;
4347 	struct cvmx_sli_pktx_in_bp_s          cn66xx;
4348 	struct cvmx_sli_pktx_in_bp_s          cnf71xx;
4349 };
4350 typedef union cvmx_sli_pktx_in_bp cvmx_sli_pktx_in_bp_t;
4351 
4352 /**
4353  * cvmx_sli_pkt#_instr_baddr
4354  *
4355  * SLI_PKT[0..31]_INSTR_BADDR = SLI Packet ring# Instruction Base Address
4356  *
4357  * Start of Instruction for input packets.
4358  */
4359 union cvmx_sli_pktx_instr_baddr {
4360 	uint64_t u64;
4361 	struct cvmx_sli_pktx_instr_baddr_s {
4362 #ifdef __BIG_ENDIAN_BITFIELD
4363 	uint64_t addr                         : 61; /**< Base address for Instructions. */
4364 	uint64_t reserved_0_2                 : 3;
4365 #else
4366 	uint64_t reserved_0_2                 : 3;
4367 	uint64_t addr                         : 61;
4368 #endif
4369 	} s;
4370 	struct cvmx_sli_pktx_instr_baddr_s    cn61xx;
4371 	struct cvmx_sli_pktx_instr_baddr_s    cn63xx;
4372 	struct cvmx_sli_pktx_instr_baddr_s    cn63xxp1;
4373 	struct cvmx_sli_pktx_instr_baddr_s    cn66xx;
4374 	struct cvmx_sli_pktx_instr_baddr_s    cn68xx;
4375 	struct cvmx_sli_pktx_instr_baddr_s    cn68xxp1;
4376 	struct cvmx_sli_pktx_instr_baddr_s    cnf71xx;
4377 };
4378 typedef union cvmx_sli_pktx_instr_baddr cvmx_sli_pktx_instr_baddr_t;
4379 
4380 /**
4381  * cvmx_sli_pkt#_instr_baoff_dbell
4382  *
4383  * SLI_PKT[0..31]_INSTR_BAOFF_DBELL = SLI Packet ring# Instruction Base Address Offset and Doorbell
4384  *
4385  * The doorbell and base address offset for next read.
4386  */
4387 union cvmx_sli_pktx_instr_baoff_dbell {
4388 	uint64_t u64;
4389 	struct cvmx_sli_pktx_instr_baoff_dbell_s {
4390 #ifdef __BIG_ENDIAN_BITFIELD
4391 	uint64_t aoff                         : 32; /**< The offset from the SLI_PKT[0..31]_INSTR_BADDR
4392                                                          where the next instruction will be read. */
4393 	uint64_t dbell                        : 32; /**< Instruction doorbell count. Writes to this field
4394                                                          will increment the value here. Reads will return
4395                                                          present value. A write of 0xffffffff will set the
4396                                                          DBELL and AOFF fields to '0'. */
4397 #else
4398 	uint64_t dbell                        : 32;
4399 	uint64_t aoff                         : 32;
4400 #endif
4401 	} s;
4402 	struct cvmx_sli_pktx_instr_baoff_dbell_s cn61xx;
4403 	struct cvmx_sli_pktx_instr_baoff_dbell_s cn63xx;
4404 	struct cvmx_sli_pktx_instr_baoff_dbell_s cn63xxp1;
4405 	struct cvmx_sli_pktx_instr_baoff_dbell_s cn66xx;
4406 	struct cvmx_sli_pktx_instr_baoff_dbell_s cn68xx;
4407 	struct cvmx_sli_pktx_instr_baoff_dbell_s cn68xxp1;
4408 	struct cvmx_sli_pktx_instr_baoff_dbell_s cnf71xx;
4409 };
4410 typedef union cvmx_sli_pktx_instr_baoff_dbell cvmx_sli_pktx_instr_baoff_dbell_t;
4411 
4412 /**
4413  * cvmx_sli_pkt#_instr_fifo_rsize
4414  *
4415  * SLI_PKT[0..31]_INSTR_FIFO_RSIZE = SLI Packet ring# Instruction FIFO and Ring Size.
4416  *
4417  * Fifo field and ring size for Instructions.
4418  */
4419 union cvmx_sli_pktx_instr_fifo_rsize {
4420 	uint64_t u64;
4421 	struct cvmx_sli_pktx_instr_fifo_rsize_s {
4422 #ifdef __BIG_ENDIAN_BITFIELD
4423 	uint64_t max                          : 9;  /**< Max Fifo Size. */
4424 	uint64_t rrp                          : 9;  /**< Fifo read pointer. */
4425 	uint64_t wrp                          : 9;  /**< Fifo write pointer. */
4426 	uint64_t fcnt                         : 5;  /**< Fifo count. */
4427 	uint64_t rsize                        : 32; /**< Instruction ring size. */
4428 #else
4429 	uint64_t rsize                        : 32;
4430 	uint64_t fcnt                         : 5;
4431 	uint64_t wrp                          : 9;
4432 	uint64_t rrp                          : 9;
4433 	uint64_t max                          : 9;
4434 #endif
4435 	} s;
4436 	struct cvmx_sli_pktx_instr_fifo_rsize_s cn61xx;
4437 	struct cvmx_sli_pktx_instr_fifo_rsize_s cn63xx;
4438 	struct cvmx_sli_pktx_instr_fifo_rsize_s cn63xxp1;
4439 	struct cvmx_sli_pktx_instr_fifo_rsize_s cn66xx;
4440 	struct cvmx_sli_pktx_instr_fifo_rsize_s cn68xx;
4441 	struct cvmx_sli_pktx_instr_fifo_rsize_s cn68xxp1;
4442 	struct cvmx_sli_pktx_instr_fifo_rsize_s cnf71xx;
4443 };
4444 typedef union cvmx_sli_pktx_instr_fifo_rsize cvmx_sli_pktx_instr_fifo_rsize_t;
4445 
4446 /**
4447  * cvmx_sli_pkt#_instr_header
4448  *
4449  * SLI_PKT[0..31]_INSTR_HEADER = SLI Packet ring# Instruction Header.
4450  *
4451  * VAlues used to build input packet header.
4452  */
4453 union cvmx_sli_pktx_instr_header {
4454 	uint64_t u64;
4455 	struct cvmx_sli_pktx_instr_header_s {
4456 #ifdef __BIG_ENDIAN_BITFIELD
4457 	uint64_t reserved_44_63               : 20;
4458 	uint64_t pbp                          : 1;  /**< Enable Packet-by-packet mode.
4459                                                          Allows DPI to generate PKT_INST_HDR[PM,SL]
4460                                                          differently per DPI instruction.
4461                                                          USE_IHDR must be set whenever PBP is set. */
4462 	uint64_t reserved_38_42               : 5;
4463 	uint64_t rparmode                     : 2;  /**< Parse Mode. Becomes PKT_INST_HDR[PM]
4464                                                          when DPI_INST_HDR[R]==1 and PBP==0 */
4465 	uint64_t reserved_35_35               : 1;
4466 	uint64_t rskp_len                     : 7;  /**< Skip Length. Becomes PKT_INST_HDR[SL]
4467                                                          when DPI_INST_HDR[R]==1 and PBP==0 */
4468 	uint64_t rngrpext                     : 2;  /**< Becomes PKT_INST_HDR[GRPEXT]
4469                                                          when DPI_INST_HDR[R]==1 */
4470 	uint64_t rnqos                        : 1;  /**< Becomes PKT_INST_HDR[NQOS]
4471                                                          when DPI_INST_HDR[R]==1 */
4472 	uint64_t rngrp                        : 1;  /**< Becomes PKT_INST_HDR[NGRP]
4473                                                          when DPI_INST_HDR[R]==1 */
4474 	uint64_t rntt                         : 1;  /**< Becomes PKT_INST_HDR[NTT]
4475                                                          when DPI_INST_HDR[R]==1 */
4476 	uint64_t rntag                        : 1;  /**< Becomes PKT_INST_HDR[NTAG]
4477                                                          when DPI_INST_HDR[R]==1 */
4478 	uint64_t use_ihdr                     : 1;  /**< When set '1' DPI always prepends a PKT_INST_HDR
4479                                                          as part of the packet data sent to PIP/IPD,
4480                                                          regardless of DPI_INST_HDR[R]. (DPI also always
4481                                                          prepends a PKT_INST_HDR when DPI_INST_HDR[R]=1.)
4482                                                          USE_IHDR must be set whenever PBP is set. */
4483 	uint64_t reserved_16_20               : 5;
4484 	uint64_t par_mode                     : 2;  /**< Parse Mode. Becomes PKT_INST_HDR[PM]
4485                                                          when DPI_INST_HDR[R]==0 and USE_IHDR==1 and PBP==0 */
4486 	uint64_t reserved_13_13               : 1;
4487 	uint64_t skp_len                      : 7;  /**< Skip Length. Becomes PKT_INST_HDR[SL]
4488                                                          when DPI_INST_HDR[R]==0 and USE_IHDR==1 and PBP==0 */
4489 	uint64_t ngrpext                      : 2;  /**< Becomes PKT_INST_HDR[GRPEXT]
4490                                                          when DPI_INST_HDR[R]==0 (and USE_IHDR==1) */
4491 	uint64_t nqos                         : 1;  /**< Becomes PKT_INST_HDR[NQOS]
4492                                                          when DPI_INST_HDR[R]==0 (and USE_IHDR==1) */
4493 	uint64_t ngrp                         : 1;  /**< Becomes PKT_INST_HDR[NGRP]
4494                                                          when DPI_INST_HDR[R]==0 (and USE_IHDR==1) */
4495 	uint64_t ntt                          : 1;  /**< Becomes PKT_INST_HDR[NTT]
4496                                                          when DPI_INST_HDR[R]==0 (and USE_IHDR==1) */
4497 	uint64_t ntag                         : 1;  /**< Becomes PKT_INST_HDR[NTAG]
4498                                                          when DPI_INST_HDR[R]==0 (and USE_IHDR==1) */
4499 #else
4500 	uint64_t ntag                         : 1;
4501 	uint64_t ntt                          : 1;
4502 	uint64_t ngrp                         : 1;
4503 	uint64_t nqos                         : 1;
4504 	uint64_t ngrpext                      : 2;
4505 	uint64_t skp_len                      : 7;
4506 	uint64_t reserved_13_13               : 1;
4507 	uint64_t par_mode                     : 2;
4508 	uint64_t reserved_16_20               : 5;
4509 	uint64_t use_ihdr                     : 1;
4510 	uint64_t rntag                        : 1;
4511 	uint64_t rntt                         : 1;
4512 	uint64_t rngrp                        : 1;
4513 	uint64_t rnqos                        : 1;
4514 	uint64_t rngrpext                     : 2;
4515 	uint64_t rskp_len                     : 7;
4516 	uint64_t reserved_35_35               : 1;
4517 	uint64_t rparmode                     : 2;
4518 	uint64_t reserved_38_42               : 5;
4519 	uint64_t pbp                          : 1;
4520 	uint64_t reserved_44_63               : 20;
4521 #endif
4522 	} s;
4523 	struct cvmx_sli_pktx_instr_header_cn61xx {
4524 #ifdef __BIG_ENDIAN_BITFIELD
4525 	uint64_t reserved_44_63               : 20;
4526 	uint64_t pbp                          : 1;  /**< Enable Packet-by-packet mode.
4527                                                          Allows DPI to generate PKT_INST_HDR[PM,SL]
4528                                                          differently per DPI instruction.
4529                                                          USE_IHDR must be set whenever PBP is set. */
4530 	uint64_t reserved_38_42               : 5;
4531 	uint64_t rparmode                     : 2;  /**< Parse Mode. Becomes PKT_INST_HDR[PM]
4532                                                          when DPI_INST_HDR[R]==1 and PBP==0 */
4533 	uint64_t reserved_35_35               : 1;
4534 	uint64_t rskp_len                     : 7;  /**< Skip Length. Becomes PKT_INST_HDR[SL]
4535                                                          when DPI_INST_HDR[R]==1 and PBP==0 */
4536 	uint64_t reserved_26_27               : 2;
4537 	uint64_t rnqos                        : 1;  /**< Becomes PKT_INST_HDR[NQOS]
4538                                                          when DPI_INST_HDR[R]==1 */
4539 	uint64_t rngrp                        : 1;  /**< Becomes PKT_INST_HDR[NGRP]
4540                                                          when DPI_INST_HDR[R]==1 */
4541 	uint64_t rntt                         : 1;  /**< Becomes PKT_INST_HDR[NTT]
4542                                                          when DPI_INST_HDR[R]==1 */
4543 	uint64_t rntag                        : 1;  /**< Becomes PKT_INST_HDR[NTAG]
4544                                                          when DPI_INST_HDR[R]==1 */
4545 	uint64_t use_ihdr                     : 1;  /**< When set '1' DPI always prepends a PKT_INST_HDR
4546                                                          as part of the packet data sent to PIP/IPD,
4547                                                          regardless of DPI_INST_HDR[R]. (DPI also always
4548                                                          prepends a PKT_INST_HDR when DPI_INST_HDR[R]=1.)
4549                                                          USE_IHDR must be set whenever PBP is set. */
4550 	uint64_t reserved_16_20               : 5;
4551 	uint64_t par_mode                     : 2;  /**< Parse Mode. Becomes PKT_INST_HDR[PM]
4552                                                          when DPI_INST_HDR[R]==0 and USE_IHDR==1 and PBP==0 */
4553 	uint64_t reserved_13_13               : 1;
4554 	uint64_t skp_len                      : 7;  /**< Skip Length. Becomes PKT_INST_HDR[SL]
4555                                                          when DPI_INST_HDR[R]==0 and USE_IHDR==1 and PBP==0 */
4556 	uint64_t reserved_4_5                 : 2;
4557 	uint64_t nqos                         : 1;  /**< Becomes PKT_INST_HDR[NQOS]
4558                                                          when DPI_INST_HDR[R]==0 (and USE_IHDR==1) */
4559 	uint64_t ngrp                         : 1;  /**< Becomes PKT_INST_HDR[NGRP]
4560                                                          when DPI_INST_HDR[R]==0 (and USE_IHDR==1) */
4561 	uint64_t ntt                          : 1;  /**< Becomes PKT_INST_HDR[NTT]
4562                                                          when DPI_INST_HDR[R]==0 (and USE_IHDR==1) */
4563 	uint64_t ntag                         : 1;  /**< Becomes PKT_INST_HDR[NTAG]
4564                                                          when DPI_INST_HDR[R]==0 (and USE_IHDR==1) */
4565 #else
4566 	uint64_t ntag                         : 1;
4567 	uint64_t ntt                          : 1;
4568 	uint64_t ngrp                         : 1;
4569 	uint64_t nqos                         : 1;
4570 	uint64_t reserved_4_5                 : 2;
4571 	uint64_t skp_len                      : 7;
4572 	uint64_t reserved_13_13               : 1;
4573 	uint64_t par_mode                     : 2;
4574 	uint64_t reserved_16_20               : 5;
4575 	uint64_t use_ihdr                     : 1;
4576 	uint64_t rntag                        : 1;
4577 	uint64_t rntt                         : 1;
4578 	uint64_t rngrp                        : 1;
4579 	uint64_t rnqos                        : 1;
4580 	uint64_t reserved_26_27               : 2;
4581 	uint64_t rskp_len                     : 7;
4582 	uint64_t reserved_35_35               : 1;
4583 	uint64_t rparmode                     : 2;
4584 	uint64_t reserved_38_42               : 5;
4585 	uint64_t pbp                          : 1;
4586 	uint64_t reserved_44_63               : 20;
4587 #endif
4588 	} cn61xx;
4589 	struct cvmx_sli_pktx_instr_header_cn61xx cn63xx;
4590 	struct cvmx_sli_pktx_instr_header_cn61xx cn63xxp1;
4591 	struct cvmx_sli_pktx_instr_header_cn61xx cn66xx;
4592 	struct cvmx_sli_pktx_instr_header_s   cn68xx;
4593 	struct cvmx_sli_pktx_instr_header_cn61xx cn68xxp1;
4594 	struct cvmx_sli_pktx_instr_header_cn61xx cnf71xx;
4595 };
4596 typedef union cvmx_sli_pktx_instr_header cvmx_sli_pktx_instr_header_t;
4597 
4598 /**
4599  * cvmx_sli_pkt#_out_size
4600  *
4601  * SLI_PKT[0..31]_OUT_SIZE = SLI Packet Out Size
4602  *
4603  * Contains the BSIZE and ISIZE for output packet ports.
4604  */
4605 union cvmx_sli_pktx_out_size {
4606 	uint64_t u64;
4607 	struct cvmx_sli_pktx_out_size_s {
4608 #ifdef __BIG_ENDIAN_BITFIELD
4609 	uint64_t reserved_23_63               : 41;
4610 	uint64_t isize                        : 7;  /**< INFO BYTES size (bytes) for ring X. Legal sizes
4611                                                          are 0 to 120. Not used in buffer-pointer-only mode. */
4612 	uint64_t bsize                        : 16; /**< BUFFER SIZE (bytes) for ring X. */
4613 #else
4614 	uint64_t bsize                        : 16;
4615 	uint64_t isize                        : 7;
4616 	uint64_t reserved_23_63               : 41;
4617 #endif
4618 	} s;
4619 	struct cvmx_sli_pktx_out_size_s       cn61xx;
4620 	struct cvmx_sli_pktx_out_size_s       cn63xx;
4621 	struct cvmx_sli_pktx_out_size_s       cn63xxp1;
4622 	struct cvmx_sli_pktx_out_size_s       cn66xx;
4623 	struct cvmx_sli_pktx_out_size_s       cn68xx;
4624 	struct cvmx_sli_pktx_out_size_s       cn68xxp1;
4625 	struct cvmx_sli_pktx_out_size_s       cnf71xx;
4626 };
4627 typedef union cvmx_sli_pktx_out_size cvmx_sli_pktx_out_size_t;
4628 
4629 /**
4630  * cvmx_sli_pkt#_slist_baddr
4631  *
4632  * SLI_PKT[0..31]_SLIST_BADDR = SLI Packet ring# Scatter List Base Address
4633  *
4634  * Start of Scatter List for output packet pointers - MUST be 16 byte alligned
4635  */
4636 union cvmx_sli_pktx_slist_baddr {
4637 	uint64_t u64;
4638 	struct cvmx_sli_pktx_slist_baddr_s {
4639 #ifdef __BIG_ENDIAN_BITFIELD
4640 	uint64_t addr                         : 60; /**< Base address for scatter list pointers. */
4641 	uint64_t reserved_0_3                 : 4;
4642 #else
4643 	uint64_t reserved_0_3                 : 4;
4644 	uint64_t addr                         : 60;
4645 #endif
4646 	} s;
4647 	struct cvmx_sli_pktx_slist_baddr_s    cn61xx;
4648 	struct cvmx_sli_pktx_slist_baddr_s    cn63xx;
4649 	struct cvmx_sli_pktx_slist_baddr_s    cn63xxp1;
4650 	struct cvmx_sli_pktx_slist_baddr_s    cn66xx;
4651 	struct cvmx_sli_pktx_slist_baddr_s    cn68xx;
4652 	struct cvmx_sli_pktx_slist_baddr_s    cn68xxp1;
4653 	struct cvmx_sli_pktx_slist_baddr_s    cnf71xx;
4654 };
4655 typedef union cvmx_sli_pktx_slist_baddr cvmx_sli_pktx_slist_baddr_t;
4656 
4657 /**
4658  * cvmx_sli_pkt#_slist_baoff_dbell
4659  *
4660  * SLI_PKT[0..31]_SLIST_BAOFF_DBELL = SLI Packet ring# Scatter List Base Address Offset and Doorbell
4661  *
4662  * The doorbell and base address offset for next read.
4663  */
4664 union cvmx_sli_pktx_slist_baoff_dbell {
4665 	uint64_t u64;
4666 	struct cvmx_sli_pktx_slist_baoff_dbell_s {
4667 #ifdef __BIG_ENDIAN_BITFIELD
4668 	uint64_t aoff                         : 32; /**< The offset from the SLI_PKT[0..31]_SLIST_BADDR
4669                                                          where the next SList pointer will be read.
4670                                                          A write of 0xFFFFFFFF to the DBELL field will
4671                                                          clear DBELL and AOFF */
4672 	uint64_t dbell                        : 32; /**< Scatter list doorbell count. Writes to this field
4673                                                          will increment the value here. Reads will return
4674                                                          present value. The value of this field is
4675                                                          decremented as read operations are ISSUED for
4676                                                          scatter pointers.
4677                                                          A write of 0xFFFFFFFF will clear DBELL and AOFF */
4678 #else
4679 	uint64_t dbell                        : 32;
4680 	uint64_t aoff                         : 32;
4681 #endif
4682 	} s;
4683 	struct cvmx_sli_pktx_slist_baoff_dbell_s cn61xx;
4684 	struct cvmx_sli_pktx_slist_baoff_dbell_s cn63xx;
4685 	struct cvmx_sli_pktx_slist_baoff_dbell_s cn63xxp1;
4686 	struct cvmx_sli_pktx_slist_baoff_dbell_s cn66xx;
4687 	struct cvmx_sli_pktx_slist_baoff_dbell_s cn68xx;
4688 	struct cvmx_sli_pktx_slist_baoff_dbell_s cn68xxp1;
4689 	struct cvmx_sli_pktx_slist_baoff_dbell_s cnf71xx;
4690 };
4691 typedef union cvmx_sli_pktx_slist_baoff_dbell cvmx_sli_pktx_slist_baoff_dbell_t;
4692 
4693 /**
4694  * cvmx_sli_pkt#_slist_fifo_rsize
4695  *
4696  * SLI_PKT[0..31]_SLIST_FIFO_RSIZE = SLI Packet ring# Scatter List FIFO and Ring Size.
4697  *
4698  * The number of scatter pointer pairs in the scatter list.
4699  */
4700 union cvmx_sli_pktx_slist_fifo_rsize {
4701 	uint64_t u64;
4702 	struct cvmx_sli_pktx_slist_fifo_rsize_s {
4703 #ifdef __BIG_ENDIAN_BITFIELD
4704 	uint64_t reserved_32_63               : 32;
4705 	uint64_t rsize                        : 32; /**< The number of scatter pointer pairs contained in
4706                                                          the scatter list ring. */
4707 #else
4708 	uint64_t rsize                        : 32;
4709 	uint64_t reserved_32_63               : 32;
4710 #endif
4711 	} s;
4712 	struct cvmx_sli_pktx_slist_fifo_rsize_s cn61xx;
4713 	struct cvmx_sli_pktx_slist_fifo_rsize_s cn63xx;
4714 	struct cvmx_sli_pktx_slist_fifo_rsize_s cn63xxp1;
4715 	struct cvmx_sli_pktx_slist_fifo_rsize_s cn66xx;
4716 	struct cvmx_sli_pktx_slist_fifo_rsize_s cn68xx;
4717 	struct cvmx_sli_pktx_slist_fifo_rsize_s cn68xxp1;
4718 	struct cvmx_sli_pktx_slist_fifo_rsize_s cnf71xx;
4719 };
4720 typedef union cvmx_sli_pktx_slist_fifo_rsize cvmx_sli_pktx_slist_fifo_rsize_t;
4721 
4722 /**
4723  * cvmx_sli_pkt_cnt_int
4724  *
4725  * SLI_PKT_CNT_INT = SLI Packet Counter Interrupt
4726  *
4727  * The packets rings that are interrupting because of Packet Counters.
4728  */
4729 union cvmx_sli_pkt_cnt_int {
4730 	uint64_t u64;
4731 	struct cvmx_sli_pkt_cnt_int_s {
4732 #ifdef __BIG_ENDIAN_BITFIELD
4733 	uint64_t reserved_32_63               : 32;
4734 	uint64_t port                         : 32; /**< Output ring packet counter interrupt bits
4735                                                          SLI sets PORT<i> whenever
4736                                                          SLI_PKTi_CNTS[CNT] > SLI_PKT_INT_LEVELS[CNT].
4737                                                          SLI_PKT_CNT_INT_ENB[PORT<i>] is the corresponding
4738                                                          enable. */
4739 #else
4740 	uint64_t port                         : 32;
4741 	uint64_t reserved_32_63               : 32;
4742 #endif
4743 	} s;
4744 	struct cvmx_sli_pkt_cnt_int_s         cn61xx;
4745 	struct cvmx_sli_pkt_cnt_int_s         cn63xx;
4746 	struct cvmx_sli_pkt_cnt_int_s         cn63xxp1;
4747 	struct cvmx_sli_pkt_cnt_int_s         cn66xx;
4748 	struct cvmx_sli_pkt_cnt_int_s         cn68xx;
4749 	struct cvmx_sli_pkt_cnt_int_s         cn68xxp1;
4750 	struct cvmx_sli_pkt_cnt_int_s         cnf71xx;
4751 };
4752 typedef union cvmx_sli_pkt_cnt_int cvmx_sli_pkt_cnt_int_t;
4753 
4754 /**
4755  * cvmx_sli_pkt_cnt_int_enb
4756  *
4757  * SLI_PKT_CNT_INT_ENB = SLI Packet Counter Interrupt Enable
4758  *
4759  * Enable for the packets rings that are interrupting because of Packet Counters.
4760  */
4761 union cvmx_sli_pkt_cnt_int_enb {
4762 	uint64_t u64;
4763 	struct cvmx_sli_pkt_cnt_int_enb_s {
4764 #ifdef __BIG_ENDIAN_BITFIELD
4765 	uint64_t reserved_32_63               : 32;
4766 	uint64_t port                         : 32; /**< Output ring packet counter interrupt enables
4767                                                          When both PORT<i> and corresponding
4768                                                          SLI_PKT_CNT_INT[PORT<i>] are set, for any i,
4769                                                          then SLI_INT_SUM[PCNT] is set, which can cause
4770                                                          an interrupt. */
4771 #else
4772 	uint64_t port                         : 32;
4773 	uint64_t reserved_32_63               : 32;
4774 #endif
4775 	} s;
4776 	struct cvmx_sli_pkt_cnt_int_enb_s     cn61xx;
4777 	struct cvmx_sli_pkt_cnt_int_enb_s     cn63xx;
4778 	struct cvmx_sli_pkt_cnt_int_enb_s     cn63xxp1;
4779 	struct cvmx_sli_pkt_cnt_int_enb_s     cn66xx;
4780 	struct cvmx_sli_pkt_cnt_int_enb_s     cn68xx;
4781 	struct cvmx_sli_pkt_cnt_int_enb_s     cn68xxp1;
4782 	struct cvmx_sli_pkt_cnt_int_enb_s     cnf71xx;
4783 };
4784 typedef union cvmx_sli_pkt_cnt_int_enb cvmx_sli_pkt_cnt_int_enb_t;
4785 
4786 /**
4787  * cvmx_sli_pkt_ctl
4788  *
4789  * SLI_PKT_CTL = SLI Packet Control
4790  *
4791  * Control for packets.
4792  */
4793 union cvmx_sli_pkt_ctl {
4794 	uint64_t u64;
4795 	struct cvmx_sli_pkt_ctl_s {
4796 #ifdef __BIG_ENDIAN_BITFIELD
4797 	uint64_t reserved_5_63                : 59;
4798 	uint64_t ring_en                      : 1;  /**< When '0' forces "relative Q position" received
4799                                                          from PKO to be zero, and replicates the back-
4800                                                          pressure indication for the first ring attached
4801                                                          to a PKO port across all the rings attached to a
4802                                                          PKO port. When '1' backpressure is on a per
4803                                                          port/ring. */
4804 	uint64_t pkt_bp                       : 4;  /**< When set '1' enable the port level backpressure for
4805                                                          PKO ports associated with the bit. */
4806 #else
4807 	uint64_t pkt_bp                       : 4;
4808 	uint64_t ring_en                      : 1;
4809 	uint64_t reserved_5_63                : 59;
4810 #endif
4811 	} s;
4812 	struct cvmx_sli_pkt_ctl_s             cn61xx;
4813 	struct cvmx_sli_pkt_ctl_s             cn63xx;
4814 	struct cvmx_sli_pkt_ctl_s             cn63xxp1;
4815 	struct cvmx_sli_pkt_ctl_s             cn66xx;
4816 	struct cvmx_sli_pkt_ctl_s             cn68xx;
4817 	struct cvmx_sli_pkt_ctl_s             cn68xxp1;
4818 	struct cvmx_sli_pkt_ctl_s             cnf71xx;
4819 };
4820 typedef union cvmx_sli_pkt_ctl cvmx_sli_pkt_ctl_t;
4821 
4822 /**
4823  * cvmx_sli_pkt_data_out_es
4824  *
4825  * SLI_PKT_DATA_OUT_ES = SLI's Packet Data Out Endian Swap
4826  *
4827  * The Endian Swap for writing Data Out.
4828  */
4829 union cvmx_sli_pkt_data_out_es {
4830 	uint64_t u64;
4831 	struct cvmx_sli_pkt_data_out_es_s {
4832 #ifdef __BIG_ENDIAN_BITFIELD
4833 	uint64_t es                           : 64; /**< ES<1:0> or MACADD<63:62> for buffer/info writes.
4834                                                          ES<2i+1:2i> becomes either ES<1:0> or
4835                                                          MACADD<63:62> for writes to buffer/info pair
4836                                                          MAC memory space addresses fetched from packet
4837                                                          output ring i. ES<1:0> if SLI_PKT_DPADDR[DPTR<i>]=1
4838                                                          , else MACADD<63:62>.
4839                                                          In the latter case, ES<1:0> comes from DPTR<63:62>.
4840                                                          ES<1:0> is the endian-swap attribute for these MAC
4841                                                          memory space writes. */
4842 #else
4843 	uint64_t es                           : 64;
4844 #endif
4845 	} s;
4846 	struct cvmx_sli_pkt_data_out_es_s     cn61xx;
4847 	struct cvmx_sli_pkt_data_out_es_s     cn63xx;
4848 	struct cvmx_sli_pkt_data_out_es_s     cn63xxp1;
4849 	struct cvmx_sli_pkt_data_out_es_s     cn66xx;
4850 	struct cvmx_sli_pkt_data_out_es_s     cn68xx;
4851 	struct cvmx_sli_pkt_data_out_es_s     cn68xxp1;
4852 	struct cvmx_sli_pkt_data_out_es_s     cnf71xx;
4853 };
4854 typedef union cvmx_sli_pkt_data_out_es cvmx_sli_pkt_data_out_es_t;
4855 
4856 /**
4857  * cvmx_sli_pkt_data_out_ns
4858  *
4859  * SLI_PKT_DATA_OUT_NS = SLI's Packet Data Out No Snoop
4860  *
4861  * The NS field for the TLP when writing packet data.
4862  */
4863 union cvmx_sli_pkt_data_out_ns {
4864 	uint64_t u64;
4865 	struct cvmx_sli_pkt_data_out_ns_s {
4866 #ifdef __BIG_ENDIAN_BITFIELD
4867 	uint64_t reserved_32_63               : 32;
4868 	uint64_t nsr                          : 32; /**< ADDRTYPE<1> or MACADD<61> for buffer/info writes.
4869                                                          NSR<i> becomes either ADDRTYPE<1> or MACADD<61>
4870                                                          for writes to buffer/info pair MAC memory space
4871                                                          addresses fetched from packet output ring i.
4872                                                          ADDRTYPE<1> if SLI_PKT_DPADDR[DPTR<i>]=1, else
4873                                                          MACADD<61>.
4874                                                          In the latter case,ADDRTYPE<1> comes from DPTR<61>.
4875                                                          ADDRTYPE<1> is the no-snoop attribute for PCIe
4876                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
4877 #else
4878 	uint64_t nsr                          : 32;
4879 	uint64_t reserved_32_63               : 32;
4880 #endif
4881 	} s;
4882 	struct cvmx_sli_pkt_data_out_ns_s     cn61xx;
4883 	struct cvmx_sli_pkt_data_out_ns_s     cn63xx;
4884 	struct cvmx_sli_pkt_data_out_ns_s     cn63xxp1;
4885 	struct cvmx_sli_pkt_data_out_ns_s     cn66xx;
4886 	struct cvmx_sli_pkt_data_out_ns_s     cn68xx;
4887 	struct cvmx_sli_pkt_data_out_ns_s     cn68xxp1;
4888 	struct cvmx_sli_pkt_data_out_ns_s     cnf71xx;
4889 };
4890 typedef union cvmx_sli_pkt_data_out_ns cvmx_sli_pkt_data_out_ns_t;
4891 
4892 /**
4893  * cvmx_sli_pkt_data_out_ror
4894  *
4895  * SLI_PKT_DATA_OUT_ROR = SLI's Packet Data Out Relaxed Ordering
4896  *
4897  * The ROR field for the TLP when writing Packet Data.
4898  */
4899 union cvmx_sli_pkt_data_out_ror {
4900 	uint64_t u64;
4901 	struct cvmx_sli_pkt_data_out_ror_s {
4902 #ifdef __BIG_ENDIAN_BITFIELD
4903 	uint64_t reserved_32_63               : 32;
4904 	uint64_t ror                          : 32; /**< ADDRTYPE<0> or MACADD<60> for buffer/info writes.
4905                                                          ROR<i> becomes either ADDRTYPE<0> or MACADD<60>
4906                                                          for writes to buffer/info pair MAC memory space
4907                                                          addresses fetched from packet output ring i.
4908                                                          ADDRTYPE<0> if SLI_PKT_DPADDR[DPTR<i>]=1, else
4909                                                          MACADD<60>.
4910                                                          In the latter case,ADDRTYPE<0> comes from DPTR<60>.
4911                                                          ADDRTYPE<0> is the relaxed-order attribute for PCIe
4912                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
4913 #else
4914 	uint64_t ror                          : 32;
4915 	uint64_t reserved_32_63               : 32;
4916 #endif
4917 	} s;
4918 	struct cvmx_sli_pkt_data_out_ror_s    cn61xx;
4919 	struct cvmx_sli_pkt_data_out_ror_s    cn63xx;
4920 	struct cvmx_sli_pkt_data_out_ror_s    cn63xxp1;
4921 	struct cvmx_sli_pkt_data_out_ror_s    cn66xx;
4922 	struct cvmx_sli_pkt_data_out_ror_s    cn68xx;
4923 	struct cvmx_sli_pkt_data_out_ror_s    cn68xxp1;
4924 	struct cvmx_sli_pkt_data_out_ror_s    cnf71xx;
4925 };
4926 typedef union cvmx_sli_pkt_data_out_ror cvmx_sli_pkt_data_out_ror_t;
4927 
4928 /**
4929  * cvmx_sli_pkt_dpaddr
4930  *
4931  * SLI_PKT_DPADDR = SLI's Packet Data Pointer Addr
4932  *
4933  * Used to detemine address and attributes for packet data writes.
4934  */
4935 union cvmx_sli_pkt_dpaddr {
4936 	uint64_t u64;
4937 	struct cvmx_sli_pkt_dpaddr_s {
4938 #ifdef __BIG_ENDIAN_BITFIELD
4939 	uint64_t reserved_32_63               : 32;
4940 	uint64_t dptr                         : 32; /**< Determines whether buffer/info pointers are
4941                                                          DPTR format 0 or DPTR format 1.
4942                                                          When DPTR<i>=1, the buffer/info pointers fetched
4943                                                          from packet output ring i are DPTR format 0.
4944                                                          When DPTR<i>=0, the buffer/info pointers fetched
4945                                                          from packet output ring i are DPTR format 1.
4946                                                          (Replace SLI_PKT_INPUT_CONTROL[D_ESR,D_NSR,D_ROR]
4947                                                          in the HRM descriptions of DPTR format 0/1 with
4948                                                          SLI_PKT_DATA_OUT_ES[ES<2i+1:2i>],
4949                                                          SLI_PKT_DATA_OUT_NS[NSR<i>], and
4950                                                          SLI_PKT_DATA_OUT_ROR[ROR<i>], respectively,
4951                                                          though.) */
4952 #else
4953 	uint64_t dptr                         : 32;
4954 	uint64_t reserved_32_63               : 32;
4955 #endif
4956 	} s;
4957 	struct cvmx_sli_pkt_dpaddr_s          cn61xx;
4958 	struct cvmx_sli_pkt_dpaddr_s          cn63xx;
4959 	struct cvmx_sli_pkt_dpaddr_s          cn63xxp1;
4960 	struct cvmx_sli_pkt_dpaddr_s          cn66xx;
4961 	struct cvmx_sli_pkt_dpaddr_s          cn68xx;
4962 	struct cvmx_sli_pkt_dpaddr_s          cn68xxp1;
4963 	struct cvmx_sli_pkt_dpaddr_s          cnf71xx;
4964 };
4965 typedef union cvmx_sli_pkt_dpaddr cvmx_sli_pkt_dpaddr_t;
4966 
4967 /**
4968  * cvmx_sli_pkt_in_bp
4969  *
4970  * SLI_PKT_IN_BP = SLI Packet Input Backpressure
4971  *
4972  * Which input rings have backpressure applied.
4973  */
4974 union cvmx_sli_pkt_in_bp {
4975 	uint64_t u64;
4976 	struct cvmx_sli_pkt_in_bp_s {
4977 #ifdef __BIG_ENDIAN_BITFIELD
4978 	uint64_t reserved_32_63               : 32;
4979 	uint64_t bp                           : 32; /**< A packet input  ring that has its count greater
4980                                                          than its WMARK will have backpressure applied.
4981                                                          Each of the 32 bits coorespond to an input ring.
4982                                                          When '1' that ring has backpressure applied an
4983                                                          will fetch no more instructions, but will process
4984                                                          any previously fetched instructions. */
4985 #else
4986 	uint64_t bp                           : 32;
4987 	uint64_t reserved_32_63               : 32;
4988 #endif
4989 	} s;
4990 	struct cvmx_sli_pkt_in_bp_s           cn61xx;
4991 	struct cvmx_sli_pkt_in_bp_s           cn63xx;
4992 	struct cvmx_sli_pkt_in_bp_s           cn63xxp1;
4993 	struct cvmx_sli_pkt_in_bp_s           cn66xx;
4994 	struct cvmx_sli_pkt_in_bp_s           cnf71xx;
4995 };
4996 typedef union cvmx_sli_pkt_in_bp cvmx_sli_pkt_in_bp_t;
4997 
4998 /**
4999  * cvmx_sli_pkt_in_done#_cnts
5000  *
5001  * SLI_PKT_IN_DONE[0..31]_CNTS = SLI Instruction Done ring# Counts
5002  *
5003  * Counters for instructions completed on Input rings.
5004  */
5005 union cvmx_sli_pkt_in_donex_cnts {
5006 	uint64_t u64;
5007 	struct cvmx_sli_pkt_in_donex_cnts_s {
5008 #ifdef __BIG_ENDIAN_BITFIELD
5009 	uint64_t reserved_32_63               : 32;
5010 	uint64_t cnt                          : 32; /**< This field is incrmented by '1' when an instruction
5011                                                          is completed. This field is incremented as the
5012                                                          last of the data is read from the MAC. */
5013 #else
5014 	uint64_t cnt                          : 32;
5015 	uint64_t reserved_32_63               : 32;
5016 #endif
5017 	} s;
5018 	struct cvmx_sli_pkt_in_donex_cnts_s   cn61xx;
5019 	struct cvmx_sli_pkt_in_donex_cnts_s   cn63xx;
5020 	struct cvmx_sli_pkt_in_donex_cnts_s   cn63xxp1;
5021 	struct cvmx_sli_pkt_in_donex_cnts_s   cn66xx;
5022 	struct cvmx_sli_pkt_in_donex_cnts_s   cn68xx;
5023 	struct cvmx_sli_pkt_in_donex_cnts_s   cn68xxp1;
5024 	struct cvmx_sli_pkt_in_donex_cnts_s   cnf71xx;
5025 };
5026 typedef union cvmx_sli_pkt_in_donex_cnts cvmx_sli_pkt_in_donex_cnts_t;
5027 
5028 /**
5029  * cvmx_sli_pkt_in_instr_counts
5030  *
5031  * SLI_PKT_IN_INSTR_COUNTS = SLI Packet Input Instrutction Counts
5032  *
5033  * Keeps track of the number of instructions read into the FIFO and Packets sent to IPD.
5034  */
5035 union cvmx_sli_pkt_in_instr_counts {
5036 	uint64_t u64;
5037 	struct cvmx_sli_pkt_in_instr_counts_s {
5038 #ifdef __BIG_ENDIAN_BITFIELD
5039 	uint64_t wr_cnt                       : 32; /**< Shows the number of packets sent to the IPD. */
5040 	uint64_t rd_cnt                       : 32; /**< Shows the value of instructions that have had reads
5041                                                          issued for them.
5042                                                          to the Packet-ring is in reset. */
5043 #else
5044 	uint64_t rd_cnt                       : 32;
5045 	uint64_t wr_cnt                       : 32;
5046 #endif
5047 	} s;
5048 	struct cvmx_sli_pkt_in_instr_counts_s cn61xx;
5049 	struct cvmx_sli_pkt_in_instr_counts_s cn63xx;
5050 	struct cvmx_sli_pkt_in_instr_counts_s cn63xxp1;
5051 	struct cvmx_sli_pkt_in_instr_counts_s cn66xx;
5052 	struct cvmx_sli_pkt_in_instr_counts_s cn68xx;
5053 	struct cvmx_sli_pkt_in_instr_counts_s cn68xxp1;
5054 	struct cvmx_sli_pkt_in_instr_counts_s cnf71xx;
5055 };
5056 typedef union cvmx_sli_pkt_in_instr_counts cvmx_sli_pkt_in_instr_counts_t;
5057 
5058 /**
5059  * cvmx_sli_pkt_in_pcie_port
5060  *
5061  * SLI_PKT_IN_PCIE_PORT = SLI's Packet In To MAC Port Assignment
5062  *
5063  * Assigns Packet Input rings to MAC ports.
5064  */
5065 union cvmx_sli_pkt_in_pcie_port {
5066 	uint64_t u64;
5067 	struct cvmx_sli_pkt_in_pcie_port_s {
5068 #ifdef __BIG_ENDIAN_BITFIELD
5069 	uint64_t pp                           : 64; /**< The MAC port that the Packet ring number is
5070                                                          assigned. Two bits are used per ring (i.e. ring 0
5071                                                          [1:0], ring 1 [3:2], ....). A value of '0 means
5072                                                          that the Packetring is assign to MAC Port 0, a '1'
5073                                                          MAC Port 1, a '2' MAC Port 2, and a '3' MAC Port 3. */
5074 #else
5075 	uint64_t pp                           : 64;
5076 #endif
5077 	} s;
5078 	struct cvmx_sli_pkt_in_pcie_port_s    cn61xx;
5079 	struct cvmx_sli_pkt_in_pcie_port_s    cn63xx;
5080 	struct cvmx_sli_pkt_in_pcie_port_s    cn63xxp1;
5081 	struct cvmx_sli_pkt_in_pcie_port_s    cn66xx;
5082 	struct cvmx_sli_pkt_in_pcie_port_s    cn68xx;
5083 	struct cvmx_sli_pkt_in_pcie_port_s    cn68xxp1;
5084 	struct cvmx_sli_pkt_in_pcie_port_s    cnf71xx;
5085 };
5086 typedef union cvmx_sli_pkt_in_pcie_port cvmx_sli_pkt_in_pcie_port_t;
5087 
5088 /**
5089  * cvmx_sli_pkt_input_control
5090  *
5091  * SLI_PKT_INPUT_CONTROL = SLI's Packet Input Control
5092  *
5093  * Control for reads for gather list and instructions.
5094  */
5095 union cvmx_sli_pkt_input_control {
5096 	uint64_t u64;
5097 	struct cvmx_sli_pkt_input_control_s {
5098 #ifdef __BIG_ENDIAN_BITFIELD
5099 	uint64_t prd_erst                     : 1;  /**< PRD Error Reset */
5100 	uint64_t prd_rds                      : 7;  /**< PRD Reads Out */
5101 	uint64_t gii_erst                     : 1;  /**< GII Error Reset */
5102 	uint64_t gii_rds                      : 7;  /**< GII Reads Out */
5103 	uint64_t reserved_41_47               : 7;
5104 	uint64_t prc_idle                     : 1;  /**< PRC In IDLE */
5105 	uint64_t reserved_24_39               : 16;
5106 	uint64_t pin_rst                      : 1;  /**< Packet In Reset. When a gather-list read receives
5107                                                          an error this bit (along with SLI_INT_SUM[PGL_ERR])
5108                                                          is set. When receiveing a PGL_ERR interrupt the SW
5109                                                          should:
5110                                                          1. Wait 2ms to allow any outstanding reads to return
5111                                                             or be timed out.
5112                                                          2. Write a '0' to this bit.
5113                                                          3. Startup the packet input again (all previous
5114                                                             CSR setting of the packet-input will be lost). */
5115 	uint64_t pkt_rr                       : 1;  /**< When set '1' the input packet selection will be
5116                                                          made with a Round Robin arbitration. When '0'
5117                                                          the input packet ring is fixed in priority,
5118                                                          where the lower ring number has higher priority. */
5119 	uint64_t pbp_dhi                      : 13; /**< PBP_DHI replaces address bits that are used
5120                                                          for parse mode and skip-length when
5121                                                          SLI_PKTi_INSTR_HEADER[PBP]=1.
5122                                                          PBP_DHI becomes either MACADD<63:55> or MACADD<59:51>
5123                                                          for the instruction DPTR reads in this case.
5124                                                          The instruction DPTR reads are called
5125                                                          "First Direct" or "First Indirect" in the HRM.
5126                                                          When PBP=1, if "First Direct" and USE_CSR=0, PBP_DHI
5127                                                          becomes MACADD<59:51>, else MACADD<63:55>. */
5128 	uint64_t d_nsr                        : 1;  /**< ADDRTYPE<1> or MACADD<61> for packet input data
5129                                                          reads.
5130                                                          D_NSR becomes either ADDRTYPE<1> or MACADD<61>
5131                                                          for MAC memory space reads of packet input data
5132                                                          fetched for any packet input ring.
5133                                                          ADDRTYPE<1> if USE_CSR=1, else MACADD<61>.
5134                                                          In the latter case, ADDRTYPE<1> comes from DPTR<61>.
5135                                                          ADDRTYPE<1> is the no-snoop attribute for PCIe
5136                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5137 	uint64_t d_esr                        : 2;  /**< ES<1:0> or MACADD<63:62> for packet input data
5138                                                          reads.
5139                                                          D_ESR becomes either ES<1:0> or MACADD<63:62>
5140                                                          for MAC memory space reads of packet input data
5141                                                          fetched for any packet input ring.
5142                                                          ES<1:0> if USE_CSR=1, else MACADD<63:62>.
5143                                                          In the latter case, ES<1:0> comes from DPTR<63:62>.
5144                                                          ES<1:0> is the endian-swap attribute for these MAC
5145                                                          memory space reads. */
5146 	uint64_t d_ror                        : 1;  /**< ADDRTYPE<0> or MACADD<60> for packet input data
5147                                                          reads.
5148                                                          D_ROR becomes either ADDRTYPE<0> or MACADD<60>
5149                                                          for MAC memory space reads of packet input data
5150                                                          fetched for any packet input ring.
5151                                                          ADDRTYPE<0> if USE_CSR=1, else MACADD<60>.
5152                                                          In the latter case, ADDRTYPE<0> comes from DPTR<60>.
5153                                                          ADDRTYPE<0> is the relaxed-order attribute for PCIe
5154                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5155 	uint64_t use_csr                      : 1;  /**< When set '1' the csr value will be used for
5156                                                          ROR, ESR, and NSR. When clear '0' the value in
5157                                                          DPTR will be used. In turn the bits not used for
5158                                                          ROR, ESR, and NSR, will be used for bits [63:60]
5159                                                          of the address used to fetch packet data. */
5160 	uint64_t nsr                          : 1;  /**< ADDRTYPE<1> for packet input instruction reads and
5161                                                          gather list (i.e. DPI component) reads from MAC
5162                                                          memory space.
5163                                                          ADDRTYPE<1> is the no-snoop attribute for PCIe
5164                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5165 	uint64_t esr                          : 2;  /**< ES<1:0> for packet input instruction reads and
5166                                                          gather list (i.e. DPI component) reads from MAC
5167                                                          memory space.
5168                                                          ES<1:0> is the endian-swap attribute for these MAC
5169                                                          memory space reads. */
5170 	uint64_t ror                          : 1;  /**< ADDRTYPE<0> for packet input instruction reads and
5171                                                          gather list (i.e. DPI component) reads from MAC
5172                                                          memory space.
5173                                                          ADDRTYPE<0> is the relaxed-order attribute for PCIe
5174                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5175 #else
5176 	uint64_t ror                          : 1;
5177 	uint64_t esr                          : 2;
5178 	uint64_t nsr                          : 1;
5179 	uint64_t use_csr                      : 1;
5180 	uint64_t d_ror                        : 1;
5181 	uint64_t d_esr                        : 2;
5182 	uint64_t d_nsr                        : 1;
5183 	uint64_t pbp_dhi                      : 13;
5184 	uint64_t pkt_rr                       : 1;
5185 	uint64_t pin_rst                      : 1;
5186 	uint64_t reserved_24_39               : 16;
5187 	uint64_t prc_idle                     : 1;
5188 	uint64_t reserved_41_47               : 7;
5189 	uint64_t gii_rds                      : 7;
5190 	uint64_t gii_erst                     : 1;
5191 	uint64_t prd_rds                      : 7;
5192 	uint64_t prd_erst                     : 1;
5193 #endif
5194 	} s;
5195 	struct cvmx_sli_pkt_input_control_s   cn61xx;
5196 	struct cvmx_sli_pkt_input_control_cn63xx {
5197 #ifdef __BIG_ENDIAN_BITFIELD
5198 	uint64_t reserved_23_63               : 41;
5199 	uint64_t pkt_rr                       : 1;  /**< When set '1' the input packet selection will be
5200                                                          made with a Round Robin arbitration. When '0'
5201                                                          the input packet ring is fixed in priority,
5202                                                          where the lower ring number has higher priority. */
5203 	uint64_t pbp_dhi                      : 13; /**< PBP_DHI replaces address bits that are used
5204                                                          for parse mode and skip-length when
5205                                                          SLI_PKTi_INSTR_HEADER[PBP]=1.
5206                                                          PBP_DHI becomes either MACADD<63:55> or MACADD<59:51>
5207                                                          for the instruction DPTR reads in this case.
5208                                                          The instruction DPTR reads are called
5209                                                          "First Direct" or "First Indirect" in the HRM.
5210                                                          When PBP=1, if "First Direct" and USE_CSR=0, PBP_DHI
5211                                                          becomes MACADD<59:51>, else MACADD<63:55>. */
5212 	uint64_t d_nsr                        : 1;  /**< ADDRTYPE<1> or MACADD<61> for packet input data
5213                                                          reads.
5214                                                          D_NSR becomes either ADDRTYPE<1> or MACADD<61>
5215                                                          for MAC memory space reads of packet input data
5216                                                          fetched for any packet input ring.
5217                                                          ADDRTYPE<1> if USE_CSR=1, else MACADD<61>.
5218                                                          In the latter case, ADDRTYPE<1> comes from DPTR<61>.
5219                                                          ADDRTYPE<1> is the no-snoop attribute for PCIe
5220                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5221 	uint64_t d_esr                        : 2;  /**< ES<1:0> or MACADD<63:62> for packet input data
5222                                                          reads.
5223                                                          D_ESR becomes either ES<1:0> or MACADD<63:62>
5224                                                          for MAC memory space reads of packet input data
5225                                                          fetched for any packet input ring.
5226                                                          ES<1:0> if USE_CSR=1, else MACADD<63:62>.
5227                                                          In the latter case, ES<1:0> comes from DPTR<63:62>.
5228                                                          ES<1:0> is the endian-swap attribute for these MAC
5229                                                          memory space reads. */
5230 	uint64_t d_ror                        : 1;  /**< ADDRTYPE<0> or MACADD<60> for packet input data
5231                                                          reads.
5232                                                          D_ROR becomes either ADDRTYPE<0> or MACADD<60>
5233                                                          for MAC memory space reads of packet input data
5234                                                          fetched for any packet input ring.
5235                                                          ADDRTYPE<0> if USE_CSR=1, else MACADD<60>.
5236                                                          In the latter case, ADDRTYPE<0> comes from DPTR<60>.
5237                                                          ADDRTYPE<0> is the relaxed-order attribute for PCIe
5238                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5239 	uint64_t use_csr                      : 1;  /**< When set '1' the csr value will be used for
5240                                                          ROR, ESR, and NSR. When clear '0' the value in
5241                                                          DPTR will be used. In turn the bits not used for
5242                                                          ROR, ESR, and NSR, will be used for bits [63:60]
5243                                                          of the address used to fetch packet data. */
5244 	uint64_t nsr                          : 1;  /**< ADDRTYPE<1> for packet input instruction reads and
5245                                                          gather list (i.e. DPI component) reads from MAC
5246                                                          memory space.
5247                                                          ADDRTYPE<1> is the no-snoop attribute for PCIe
5248                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5249 	uint64_t esr                          : 2;  /**< ES<1:0> for packet input instruction reads and
5250                                                          gather list (i.e. DPI component) reads from MAC
5251                                                          memory space.
5252                                                          ES<1:0> is the endian-swap attribute for these MAC
5253                                                          memory space reads. */
5254 	uint64_t ror                          : 1;  /**< ADDRTYPE<0> for packet input instruction reads and
5255                                                          gather list (i.e. DPI component) reads from MAC
5256                                                          memory space.
5257                                                          ADDRTYPE<0> is the relaxed-order attribute for PCIe
5258                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5259 #else
5260 	uint64_t ror                          : 1;
5261 	uint64_t esr                          : 2;
5262 	uint64_t nsr                          : 1;
5263 	uint64_t use_csr                      : 1;
5264 	uint64_t d_ror                        : 1;
5265 	uint64_t d_esr                        : 2;
5266 	uint64_t d_nsr                        : 1;
5267 	uint64_t pbp_dhi                      : 13;
5268 	uint64_t pkt_rr                       : 1;
5269 	uint64_t reserved_23_63               : 41;
5270 #endif
5271 	} cn63xx;
5272 	struct cvmx_sli_pkt_input_control_cn63xx cn63xxp1;
5273 	struct cvmx_sli_pkt_input_control_s   cn66xx;
5274 	struct cvmx_sli_pkt_input_control_s   cn68xx;
5275 	struct cvmx_sli_pkt_input_control_s   cn68xxp1;
5276 	struct cvmx_sli_pkt_input_control_s   cnf71xx;
5277 };
5278 typedef union cvmx_sli_pkt_input_control cvmx_sli_pkt_input_control_t;
5279 
5280 /**
5281  * cvmx_sli_pkt_instr_enb
5282  *
5283  * SLI_PKT_INSTR_ENB = SLI's Packet Instruction Enable
5284  *
5285  * Enables the instruction fetch for a Packet-ring.
5286  */
5287 union cvmx_sli_pkt_instr_enb {
5288 	uint64_t u64;
5289 	struct cvmx_sli_pkt_instr_enb_s {
5290 #ifdef __BIG_ENDIAN_BITFIELD
5291 	uint64_t reserved_32_63               : 32;
5292 	uint64_t enb                          : 32; /**< When ENB<i>=1, instruction input ring i is enabled. */
5293 #else
5294 	uint64_t enb                          : 32;
5295 	uint64_t reserved_32_63               : 32;
5296 #endif
5297 	} s;
5298 	struct cvmx_sli_pkt_instr_enb_s       cn61xx;
5299 	struct cvmx_sli_pkt_instr_enb_s       cn63xx;
5300 	struct cvmx_sli_pkt_instr_enb_s       cn63xxp1;
5301 	struct cvmx_sli_pkt_instr_enb_s       cn66xx;
5302 	struct cvmx_sli_pkt_instr_enb_s       cn68xx;
5303 	struct cvmx_sli_pkt_instr_enb_s       cn68xxp1;
5304 	struct cvmx_sli_pkt_instr_enb_s       cnf71xx;
5305 };
5306 typedef union cvmx_sli_pkt_instr_enb cvmx_sli_pkt_instr_enb_t;
5307 
5308 /**
5309  * cvmx_sli_pkt_instr_rd_size
5310  *
5311  * SLI_PKT_INSTR_RD_SIZE = SLI Instruction Read Size
5312  *
5313  * The number of instruction allowed to be read at one time.
5314  */
5315 union cvmx_sli_pkt_instr_rd_size {
5316 	uint64_t u64;
5317 	struct cvmx_sli_pkt_instr_rd_size_s {
5318 #ifdef __BIG_ENDIAN_BITFIELD
5319 	uint64_t rdsize                       : 64; /**< Number of instructions to be read in one MAC read
5320                                                          request for the 4 ports - 8 rings. Every two bits
5321                                                          (i.e. 1:0, 3:2, 5:4..) are assign to the port/ring
5322                                                          combinations.
5323                                                          - 15:0  PKIPort0,Ring 7..0  31:16 PKIPort1,Ring 7..0
5324                                                          - 47:32 PKIPort2,Ring 7..0  63:48 PKIPort3,Ring 7..0
5325                                                          Two bit value are:
5326                                                          0 - 1 Instruction
5327                                                          1 - 2 Instructions
5328                                                          2 - 3 Instructions
5329                                                          3 - 4 Instructions */
5330 #else
5331 	uint64_t rdsize                       : 64;
5332 #endif
5333 	} s;
5334 	struct cvmx_sli_pkt_instr_rd_size_s   cn61xx;
5335 	struct cvmx_sli_pkt_instr_rd_size_s   cn63xx;
5336 	struct cvmx_sli_pkt_instr_rd_size_s   cn63xxp1;
5337 	struct cvmx_sli_pkt_instr_rd_size_s   cn66xx;
5338 	struct cvmx_sli_pkt_instr_rd_size_s   cn68xx;
5339 	struct cvmx_sli_pkt_instr_rd_size_s   cn68xxp1;
5340 	struct cvmx_sli_pkt_instr_rd_size_s   cnf71xx;
5341 };
5342 typedef union cvmx_sli_pkt_instr_rd_size cvmx_sli_pkt_instr_rd_size_t;
5343 
5344 /**
5345  * cvmx_sli_pkt_instr_size
5346  *
5347  * SLI_PKT_INSTR_SIZE = SLI's Packet Instruction Size
5348  *
5349  * Determines if instructions are 64 or 32 byte in size for a Packet-ring.
5350  */
5351 union cvmx_sli_pkt_instr_size {
5352 	uint64_t u64;
5353 	struct cvmx_sli_pkt_instr_size_s {
5354 #ifdef __BIG_ENDIAN_BITFIELD
5355 	uint64_t reserved_32_63               : 32;
5356 	uint64_t is_64b                       : 32; /**< When IS_64B<i>=1, instruction input ring i uses 64B
5357                                                          instructions, else 32B instructions. */
5358 #else
5359 	uint64_t is_64b                       : 32;
5360 	uint64_t reserved_32_63               : 32;
5361 #endif
5362 	} s;
5363 	struct cvmx_sli_pkt_instr_size_s      cn61xx;
5364 	struct cvmx_sli_pkt_instr_size_s      cn63xx;
5365 	struct cvmx_sli_pkt_instr_size_s      cn63xxp1;
5366 	struct cvmx_sli_pkt_instr_size_s      cn66xx;
5367 	struct cvmx_sli_pkt_instr_size_s      cn68xx;
5368 	struct cvmx_sli_pkt_instr_size_s      cn68xxp1;
5369 	struct cvmx_sli_pkt_instr_size_s      cnf71xx;
5370 };
5371 typedef union cvmx_sli_pkt_instr_size cvmx_sli_pkt_instr_size_t;
5372 
5373 /**
5374  * cvmx_sli_pkt_int_levels
5375  *
5376  * 0x90F0 reserved SLI_PKT_PCIE_PORT2
5377  *
5378  *
5379  *                  SLI_PKT_INT_LEVELS = SLI's Packet Interrupt Levels
5380  *
5381  * Output packet interrupt levels.
5382  */
5383 union cvmx_sli_pkt_int_levels {
5384 	uint64_t u64;
5385 	struct cvmx_sli_pkt_int_levels_s {
5386 #ifdef __BIG_ENDIAN_BITFIELD
5387 	uint64_t reserved_54_63               : 10;
5388 	uint64_t time                         : 22; /**< Output ring counter time interrupt threshold
5389                                                          SLI sets SLI_PKT_TIME_INT[PORT<i>] whenever
5390                                                          SLI_PKTi_CNTS[TIMER] > TIME */
5391 	uint64_t cnt                          : 32; /**< Output ring counter interrupt threshold
5392                                                          SLI sets SLI_PKT_CNT_INT[PORT<i>] whenever
5393                                                          SLI_PKTi_CNTS[CNT] > CNT */
5394 #else
5395 	uint64_t cnt                          : 32;
5396 	uint64_t time                         : 22;
5397 	uint64_t reserved_54_63               : 10;
5398 #endif
5399 	} s;
5400 	struct cvmx_sli_pkt_int_levels_s      cn61xx;
5401 	struct cvmx_sli_pkt_int_levels_s      cn63xx;
5402 	struct cvmx_sli_pkt_int_levels_s      cn63xxp1;
5403 	struct cvmx_sli_pkt_int_levels_s      cn66xx;
5404 	struct cvmx_sli_pkt_int_levels_s      cn68xx;
5405 	struct cvmx_sli_pkt_int_levels_s      cn68xxp1;
5406 	struct cvmx_sli_pkt_int_levels_s      cnf71xx;
5407 };
5408 typedef union cvmx_sli_pkt_int_levels cvmx_sli_pkt_int_levels_t;
5409 
5410 /**
5411  * cvmx_sli_pkt_iptr
5412  *
5413  * SLI_PKT_IPTR = SLI's Packet Info Poitner
5414  *
5415  * Controls using the Info-Pointer to store length and data.
5416  */
5417 union cvmx_sli_pkt_iptr {
5418 	uint64_t u64;
5419 	struct cvmx_sli_pkt_iptr_s {
5420 #ifdef __BIG_ENDIAN_BITFIELD
5421 	uint64_t reserved_32_63               : 32;
5422 	uint64_t iptr                         : 32; /**< When IPTR<i>=1, packet output ring i is in info-
5423                                                          pointer mode, else buffer-pointer-only mode. */
5424 #else
5425 	uint64_t iptr                         : 32;
5426 	uint64_t reserved_32_63               : 32;
5427 #endif
5428 	} s;
5429 	struct cvmx_sli_pkt_iptr_s            cn61xx;
5430 	struct cvmx_sli_pkt_iptr_s            cn63xx;
5431 	struct cvmx_sli_pkt_iptr_s            cn63xxp1;
5432 	struct cvmx_sli_pkt_iptr_s            cn66xx;
5433 	struct cvmx_sli_pkt_iptr_s            cn68xx;
5434 	struct cvmx_sli_pkt_iptr_s            cn68xxp1;
5435 	struct cvmx_sli_pkt_iptr_s            cnf71xx;
5436 };
5437 typedef union cvmx_sli_pkt_iptr cvmx_sli_pkt_iptr_t;
5438 
5439 /**
5440  * cvmx_sli_pkt_out_bmode
5441  *
5442  * SLI_PKT_OUT_BMODE = SLI's Packet Out Byte Mode
5443  *
5444  * Control the updating of the SLI_PKT#_CNT register.
5445  */
5446 union cvmx_sli_pkt_out_bmode {
5447 	uint64_t u64;
5448 	struct cvmx_sli_pkt_out_bmode_s {
5449 #ifdef __BIG_ENDIAN_BITFIELD
5450 	uint64_t reserved_32_63               : 32;
5451 	uint64_t bmode                        : 32; /**< Determines whether SLI_PKTi_CNTS[CNT] is a byte or
5452                                                          packet counter.
5453                                                          When BMODE<i>=1, SLI_PKTi_CNTS[CNT] is a byte
5454                                                          counter, else SLI_PKTi_CNTS[CNT] is a packet
5455                                                          counter. */
5456 #else
5457 	uint64_t bmode                        : 32;
5458 	uint64_t reserved_32_63               : 32;
5459 #endif
5460 	} s;
5461 	struct cvmx_sli_pkt_out_bmode_s       cn61xx;
5462 	struct cvmx_sli_pkt_out_bmode_s       cn63xx;
5463 	struct cvmx_sli_pkt_out_bmode_s       cn63xxp1;
5464 	struct cvmx_sli_pkt_out_bmode_s       cn66xx;
5465 	struct cvmx_sli_pkt_out_bmode_s       cn68xx;
5466 	struct cvmx_sli_pkt_out_bmode_s       cn68xxp1;
5467 	struct cvmx_sli_pkt_out_bmode_s       cnf71xx;
5468 };
5469 typedef union cvmx_sli_pkt_out_bmode cvmx_sli_pkt_out_bmode_t;
5470 
5471 /**
5472  * cvmx_sli_pkt_out_bp_en
5473  *
5474  * SLI_PKT_OUT_BP_EN = SLI Packet Output Backpressure Enable
5475  *
5476  * Enables sending backpressure to the PKO.
5477  */
5478 union cvmx_sli_pkt_out_bp_en {
5479 	uint64_t u64;
5480 	struct cvmx_sli_pkt_out_bp_en_s {
5481 #ifdef __BIG_ENDIAN_BITFIELD
5482 	uint64_t reserved_32_63               : 32;
5483 	uint64_t bp_en                        : 32; /**< When set '1' enable the ring level backpressure
5484                                                          to be sent to PKO. Backpressure is sent to the
5485                                                          PKO on the PIPE number associated with the ring.
5486                                                          (See SLI_TX_PIPE for ring to pipe associations). */
5487 #else
5488 	uint64_t bp_en                        : 32;
5489 	uint64_t reserved_32_63               : 32;
5490 #endif
5491 	} s;
5492 	struct cvmx_sli_pkt_out_bp_en_s       cn68xx;
5493 	struct cvmx_sli_pkt_out_bp_en_s       cn68xxp1;
5494 };
5495 typedef union cvmx_sli_pkt_out_bp_en cvmx_sli_pkt_out_bp_en_t;
5496 
5497 /**
5498  * cvmx_sli_pkt_out_enb
5499  *
5500  * SLI_PKT_OUT_ENB = SLI's Packet Output Enable
5501  *
5502  * Enables the output packet engines.
5503  */
5504 union cvmx_sli_pkt_out_enb {
5505 	uint64_t u64;
5506 	struct cvmx_sli_pkt_out_enb_s {
5507 #ifdef __BIG_ENDIAN_BITFIELD
5508 	uint64_t reserved_32_63               : 32;
5509 	uint64_t enb                          : 32; /**< When ENB<i>=1, packet output ring i is enabled.
5510                                                          If an error occurs on reading pointers for an
5511                                                          output ring, the ring will be disabled by clearing
5512                                                          the bit associated with the ring to '0'. */
5513 #else
5514 	uint64_t enb                          : 32;
5515 	uint64_t reserved_32_63               : 32;
5516 #endif
5517 	} s;
5518 	struct cvmx_sli_pkt_out_enb_s         cn61xx;
5519 	struct cvmx_sli_pkt_out_enb_s         cn63xx;
5520 	struct cvmx_sli_pkt_out_enb_s         cn63xxp1;
5521 	struct cvmx_sli_pkt_out_enb_s         cn66xx;
5522 	struct cvmx_sli_pkt_out_enb_s         cn68xx;
5523 	struct cvmx_sli_pkt_out_enb_s         cn68xxp1;
5524 	struct cvmx_sli_pkt_out_enb_s         cnf71xx;
5525 };
5526 typedef union cvmx_sli_pkt_out_enb cvmx_sli_pkt_out_enb_t;
5527 
5528 /**
5529  * cvmx_sli_pkt_output_wmark
5530  *
5531  * SLI_PKT_OUTPUT_WMARK = SLI's Packet Output Water Mark
5532  *
5533  * Value that when the SLI_PKT#_SLIST_BAOFF_DBELL[DBELL] value is less then that backpressure for the rings will be applied.
5534  */
5535 union cvmx_sli_pkt_output_wmark {
5536 	uint64_t u64;
5537 	struct cvmx_sli_pkt_output_wmark_s {
5538 #ifdef __BIG_ENDIAN_BITFIELD
5539 	uint64_t reserved_32_63               : 32;
5540 	uint64_t wmark                        : 32; /**< Value when DBELL count drops below backpressure
5541                                                          for the ring will be applied to the PKO. */
5542 #else
5543 	uint64_t wmark                        : 32;
5544 	uint64_t reserved_32_63               : 32;
5545 #endif
5546 	} s;
5547 	struct cvmx_sli_pkt_output_wmark_s    cn61xx;
5548 	struct cvmx_sli_pkt_output_wmark_s    cn63xx;
5549 	struct cvmx_sli_pkt_output_wmark_s    cn63xxp1;
5550 	struct cvmx_sli_pkt_output_wmark_s    cn66xx;
5551 	struct cvmx_sli_pkt_output_wmark_s    cn68xx;
5552 	struct cvmx_sli_pkt_output_wmark_s    cn68xxp1;
5553 	struct cvmx_sli_pkt_output_wmark_s    cnf71xx;
5554 };
5555 typedef union cvmx_sli_pkt_output_wmark cvmx_sli_pkt_output_wmark_t;
5556 
5557 /**
5558  * cvmx_sli_pkt_pcie_port
5559  *
5560  * SLI_PKT_PCIE_PORT = SLI's Packet To MAC Port Assignment
5561  *
5562  * Assigns Packet Ports to MAC ports.
5563  */
5564 union cvmx_sli_pkt_pcie_port {
5565 	uint64_t u64;
5566 	struct cvmx_sli_pkt_pcie_port_s {
5567 #ifdef __BIG_ENDIAN_BITFIELD
5568 	uint64_t pp                           : 64; /**< The physical MAC  port that the output ring uses.
5569                                                          Two bits are used per ring (i.e. ring 0 [1:0],
5570                                                          ring 1 [3:2], ....). A value of '0 means
5571                                                          that the Packetring is assign to MAC Port 0, a '1'
5572                                                          MAC Port 1, '2' and '3' are reserved. */
5573 #else
5574 	uint64_t pp                           : 64;
5575 #endif
5576 	} s;
5577 	struct cvmx_sli_pkt_pcie_port_s       cn61xx;
5578 	struct cvmx_sli_pkt_pcie_port_s       cn63xx;
5579 	struct cvmx_sli_pkt_pcie_port_s       cn63xxp1;
5580 	struct cvmx_sli_pkt_pcie_port_s       cn66xx;
5581 	struct cvmx_sli_pkt_pcie_port_s       cn68xx;
5582 	struct cvmx_sli_pkt_pcie_port_s       cn68xxp1;
5583 	struct cvmx_sli_pkt_pcie_port_s       cnf71xx;
5584 };
5585 typedef union cvmx_sli_pkt_pcie_port cvmx_sli_pkt_pcie_port_t;
5586 
5587 /**
5588  * cvmx_sli_pkt_port_in_rst
5589  *
5590  * 91c0 reserved
5591  * 91d0 reserved
5592  * 91e0 reserved
5593  *
5594  *
5595  *                   SLI_PKT_PORT_IN_RST = SLI Packet Port In Reset
5596  *
5597  *  Vector bits related to ring-port for ones that are reset.
5598  */
5599 union cvmx_sli_pkt_port_in_rst {
5600 	uint64_t u64;
5601 	struct cvmx_sli_pkt_port_in_rst_s {
5602 #ifdef __BIG_ENDIAN_BITFIELD
5603 	uint64_t in_rst                       : 32; /**< When asserted '1' the vector bit cooresponding
5604                                                          to the inbound Packet-ring is in reset. */
5605 	uint64_t out_rst                      : 32; /**< When asserted '1' the vector bit cooresponding
5606                                                          to the outbound Packet-ring is in reset. */
5607 #else
5608 	uint64_t out_rst                      : 32;
5609 	uint64_t in_rst                       : 32;
5610 #endif
5611 	} s;
5612 	struct cvmx_sli_pkt_port_in_rst_s     cn61xx;
5613 	struct cvmx_sli_pkt_port_in_rst_s     cn63xx;
5614 	struct cvmx_sli_pkt_port_in_rst_s     cn63xxp1;
5615 	struct cvmx_sli_pkt_port_in_rst_s     cn66xx;
5616 	struct cvmx_sli_pkt_port_in_rst_s     cn68xx;
5617 	struct cvmx_sli_pkt_port_in_rst_s     cn68xxp1;
5618 	struct cvmx_sli_pkt_port_in_rst_s     cnf71xx;
5619 };
5620 typedef union cvmx_sli_pkt_port_in_rst cvmx_sli_pkt_port_in_rst_t;
5621 
5622 /**
5623  * cvmx_sli_pkt_slist_es
5624  *
5625  * SLI_PKT_SLIST_ES = SLI's Packet Scatter List Endian Swap
5626  *
5627  * The Endian Swap for Scatter List Read.
5628  */
5629 union cvmx_sli_pkt_slist_es {
5630 	uint64_t u64;
5631 	struct cvmx_sli_pkt_slist_es_s {
5632 #ifdef __BIG_ENDIAN_BITFIELD
5633 	uint64_t es                           : 64; /**< ES<1:0> for the packet output ring reads that
5634                                                          fetch buffer/info pointer pairs.
5635                                                          ES<2i+1:2i> becomes ES<1:0> in DPI/SLI reads that
5636                                                          fetch buffer/info pairs from packet output ring i
5637                                                          (from address SLI_PKTi_SLIST_BADDR+ in MAC memory
5638                                                          space.)
5639                                                          ES<1:0> is the endian-swap attribute for these MAC
5640                                                          memory space reads. */
5641 #else
5642 	uint64_t es                           : 64;
5643 #endif
5644 	} s;
5645 	struct cvmx_sli_pkt_slist_es_s        cn61xx;
5646 	struct cvmx_sli_pkt_slist_es_s        cn63xx;
5647 	struct cvmx_sli_pkt_slist_es_s        cn63xxp1;
5648 	struct cvmx_sli_pkt_slist_es_s        cn66xx;
5649 	struct cvmx_sli_pkt_slist_es_s        cn68xx;
5650 	struct cvmx_sli_pkt_slist_es_s        cn68xxp1;
5651 	struct cvmx_sli_pkt_slist_es_s        cnf71xx;
5652 };
5653 typedef union cvmx_sli_pkt_slist_es cvmx_sli_pkt_slist_es_t;
5654 
5655 /**
5656  * cvmx_sli_pkt_slist_ns
5657  *
5658  * SLI_PKT_SLIST_NS = SLI's Packet Scatter List No Snoop
5659  *
5660  * The NS field for the TLP when fetching Scatter List.
5661  */
5662 union cvmx_sli_pkt_slist_ns {
5663 	uint64_t u64;
5664 	struct cvmx_sli_pkt_slist_ns_s {
5665 #ifdef __BIG_ENDIAN_BITFIELD
5666 	uint64_t reserved_32_63               : 32;
5667 	uint64_t nsr                          : 32; /**< ADDRTYPE<1> for the packet output ring reads that
5668                                                          fetch buffer/info pointer pairs.
5669                                                          NSR<i> becomes ADDRTYPE<1> in DPI/SLI reads that
5670                                                          fetch buffer/info pairs from packet output ring i
5671                                                          (from address SLI_PKTi_SLIST_BADDR+ in MAC memory
5672                                                          space.)
5673                                                          ADDRTYPE<1> is the relaxed-order attribute for PCIe
5674                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5675 #else
5676 	uint64_t nsr                          : 32;
5677 	uint64_t reserved_32_63               : 32;
5678 #endif
5679 	} s;
5680 	struct cvmx_sli_pkt_slist_ns_s        cn61xx;
5681 	struct cvmx_sli_pkt_slist_ns_s        cn63xx;
5682 	struct cvmx_sli_pkt_slist_ns_s        cn63xxp1;
5683 	struct cvmx_sli_pkt_slist_ns_s        cn66xx;
5684 	struct cvmx_sli_pkt_slist_ns_s        cn68xx;
5685 	struct cvmx_sli_pkt_slist_ns_s        cn68xxp1;
5686 	struct cvmx_sli_pkt_slist_ns_s        cnf71xx;
5687 };
5688 typedef union cvmx_sli_pkt_slist_ns cvmx_sli_pkt_slist_ns_t;
5689 
5690 /**
5691  * cvmx_sli_pkt_slist_ror
5692  *
5693  * SLI_PKT_SLIST_ROR = SLI's Packet Scatter List Relaxed Ordering
5694  *
5695  * The ROR field for the TLP when fetching Scatter List.
5696  */
5697 union cvmx_sli_pkt_slist_ror {
5698 	uint64_t u64;
5699 	struct cvmx_sli_pkt_slist_ror_s {
5700 #ifdef __BIG_ENDIAN_BITFIELD
5701 	uint64_t reserved_32_63               : 32;
5702 	uint64_t ror                          : 32; /**< ADDRTYPE<0> for the packet output ring reads that
5703                                                          fetch buffer/info pointer pairs.
5704                                                          ROR<i> becomes ADDRTYPE<0> in DPI/SLI reads that
5705                                                          fetch buffer/info pairs from packet output ring i
5706                                                          (from address SLI_PKTi_SLIST_BADDR+ in MAC memory
5707                                                          space.)
5708                                                          ADDRTYPE<0> is the relaxed-order attribute for PCIe
5709                                                          , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5710 #else
5711 	uint64_t ror                          : 32;
5712 	uint64_t reserved_32_63               : 32;
5713 #endif
5714 	} s;
5715 	struct cvmx_sli_pkt_slist_ror_s       cn61xx;
5716 	struct cvmx_sli_pkt_slist_ror_s       cn63xx;
5717 	struct cvmx_sli_pkt_slist_ror_s       cn63xxp1;
5718 	struct cvmx_sli_pkt_slist_ror_s       cn66xx;
5719 	struct cvmx_sli_pkt_slist_ror_s       cn68xx;
5720 	struct cvmx_sli_pkt_slist_ror_s       cn68xxp1;
5721 	struct cvmx_sli_pkt_slist_ror_s       cnf71xx;
5722 };
5723 typedef union cvmx_sli_pkt_slist_ror cvmx_sli_pkt_slist_ror_t;
5724 
5725 /**
5726  * cvmx_sli_pkt_time_int
5727  *
5728  * SLI_PKT_TIME_INT = SLI Packet Timer Interrupt
5729  *
5730  * The packets rings that are interrupting because of Packet Timers.
5731  */
5732 union cvmx_sli_pkt_time_int {
5733 	uint64_t u64;
5734 	struct cvmx_sli_pkt_time_int_s {
5735 #ifdef __BIG_ENDIAN_BITFIELD
5736 	uint64_t reserved_32_63               : 32;
5737 	uint64_t port                         : 32; /**< Output ring packet timer interrupt bits
5738                                                          SLI sets PORT<i> whenever
5739                                                          SLI_PKTi_CNTS[TIMER] > SLI_PKT_INT_LEVELS[TIME].
5740                                                          SLI_PKT_TIME_INT_ENB[PORT<i>] is the corresponding
5741                                                          enable. */
5742 #else
5743 	uint64_t port                         : 32;
5744 	uint64_t reserved_32_63               : 32;
5745 #endif
5746 	} s;
5747 	struct cvmx_sli_pkt_time_int_s        cn61xx;
5748 	struct cvmx_sli_pkt_time_int_s        cn63xx;
5749 	struct cvmx_sli_pkt_time_int_s        cn63xxp1;
5750 	struct cvmx_sli_pkt_time_int_s        cn66xx;
5751 	struct cvmx_sli_pkt_time_int_s        cn68xx;
5752 	struct cvmx_sli_pkt_time_int_s        cn68xxp1;
5753 	struct cvmx_sli_pkt_time_int_s        cnf71xx;
5754 };
5755 typedef union cvmx_sli_pkt_time_int cvmx_sli_pkt_time_int_t;
5756 
5757 /**
5758  * cvmx_sli_pkt_time_int_enb
5759  *
5760  * SLI_PKT_TIME_INT_ENB = SLI Packet Timer Interrupt Enable
5761  *
5762  * The packets rings that are interrupting because of Packet Timers.
5763  */
5764 union cvmx_sli_pkt_time_int_enb {
5765 	uint64_t u64;
5766 	struct cvmx_sli_pkt_time_int_enb_s {
5767 #ifdef __BIG_ENDIAN_BITFIELD
5768 	uint64_t reserved_32_63               : 32;
5769 	uint64_t port                         : 32; /**< Output ring packet timer interrupt enables
5770                                                          When both PORT<i> and corresponding
5771                                                          SLI_PKT_TIME_INT[PORT<i>] are set, for any i,
5772                                                          then SLI_INT_SUM[PTIME] is set, which can cause
5773                                                          an interrupt. */
5774 #else
5775 	uint64_t port                         : 32;
5776 	uint64_t reserved_32_63               : 32;
5777 #endif
5778 	} s;
5779 	struct cvmx_sli_pkt_time_int_enb_s    cn61xx;
5780 	struct cvmx_sli_pkt_time_int_enb_s    cn63xx;
5781 	struct cvmx_sli_pkt_time_int_enb_s    cn63xxp1;
5782 	struct cvmx_sli_pkt_time_int_enb_s    cn66xx;
5783 	struct cvmx_sli_pkt_time_int_enb_s    cn68xx;
5784 	struct cvmx_sli_pkt_time_int_enb_s    cn68xxp1;
5785 	struct cvmx_sli_pkt_time_int_enb_s    cnf71xx;
5786 };
5787 typedef union cvmx_sli_pkt_time_int_enb cvmx_sli_pkt_time_int_enb_t;
5788 
5789 /**
5790  * cvmx_sli_port#_pkind
5791  *
5792  * SLI_PORT[0..31]_PKIND = SLI Port Pkind
5793  *
5794  * The SLI/DPI supports 32 input rings for fetching input packets. This register maps the input-rings (0-31) to a PKIND.
5795  */
5796 union cvmx_sli_portx_pkind {
5797 	uint64_t u64;
5798 	struct cvmx_sli_portx_pkind_s {
5799 #ifdef __BIG_ENDIAN_BITFIELD
5800 	uint64_t reserved_25_63               : 39;
5801 	uint64_t rpk_enb                      : 1;  /**< Alternate PKT_INST_HDR PKind Enable for this ring.
5802                                                          When RPK_ENB==1 and DPI prepends
5803                                                          a PKT_INST_HDR to a packet, the pkind for the
5804                                                          packet is PKINDR (rather than PKIND), and any
5805                                                          special PIP/IPD processing of the DPI packet is
5806                                                          disabled (see PIP_PRT_CFG*[INST_HDR,HIGIG_EN]).
5807                                                          (DPI prepends a PKT_INST_HDR when either
5808                                                          DPI_INST_HDR[R]==1 for the packet or
5809                                                          SLI_PKT*_INSTR_HEADER[USE_IHDR]==1 for the ring.)
5810                                                          When RPK_ENB==0, PKIND is the pkind for all
5811                                                          packets through the input ring, and
5812                                                          PIP/IPD will process a DPI packet that has a
5813                                                          PKT_INST_HDR specially. */
5814 	uint64_t reserved_22_23               : 2;
5815 	uint64_t pkindr                       : 6;  /**< Port Kind For this Ring used with packets
5816                                                          that include a DPI-prepended PKT_INST_HDR
5817                                                          when RPK_ENB is set. */
5818 	uint64_t reserved_14_15               : 2;
5819 	uint64_t bpkind                       : 6;  /**< Back-pressure pkind for this Ring. */
5820 	uint64_t reserved_6_7                 : 2;
5821 	uint64_t pkind                        : 6;  /**< Port Kind For this Ring. */
5822 #else
5823 	uint64_t pkind                        : 6;
5824 	uint64_t reserved_6_7                 : 2;
5825 	uint64_t bpkind                       : 6;
5826 	uint64_t reserved_14_15               : 2;
5827 	uint64_t pkindr                       : 6;
5828 	uint64_t reserved_22_23               : 2;
5829 	uint64_t rpk_enb                      : 1;
5830 	uint64_t reserved_25_63               : 39;
5831 #endif
5832 	} s;
5833 	struct cvmx_sli_portx_pkind_s         cn68xx;
5834 	struct cvmx_sli_portx_pkind_cn68xxp1 {
5835 #ifdef __BIG_ENDIAN_BITFIELD
5836 	uint64_t reserved_14_63               : 50;
5837 	uint64_t bpkind                       : 6;  /**< Back-pressure pkind for this Ring. */
5838 	uint64_t reserved_6_7                 : 2;
5839 	uint64_t pkind                        : 6;  /**< Port Kind For this Ring. */
5840 #else
5841 	uint64_t pkind                        : 6;
5842 	uint64_t reserved_6_7                 : 2;
5843 	uint64_t bpkind                       : 6;
5844 	uint64_t reserved_14_63               : 50;
5845 #endif
5846 	} cn68xxp1;
5847 };
5848 typedef union cvmx_sli_portx_pkind cvmx_sli_portx_pkind_t;
5849 
5850 /**
5851  * cvmx_sli_s2m_port#_ctl
5852  *
5853  * SLI_S2M_PORTX_CTL = SLI's S2M Port 0 Control
5854  *
5855  * Contains control for access from SLI to a MAC port.
5856  * Writes to this register are not ordered with writes/reads to the MAC Memory space.
5857  * To ensure that a write has completed the user must read the register before
5858  * making an access(i.e. MAC memory space) that requires the value of this register to be updated.
5859  */
5860 union cvmx_sli_s2m_portx_ctl {
5861 	uint64_t u64;
5862 	struct cvmx_sli_s2m_portx_ctl_s {
5863 #ifdef __BIG_ENDIAN_BITFIELD
5864 	uint64_t reserved_5_63                : 59;
5865 	uint64_t wind_d                       : 1;  /**< When set '1' disables access to the Window
5866                                                          Registers from the MAC-Port.
5867                                                          When Authenticate-Mode is set the reset value of
5868                                                          this field is "1" else "0'. */
5869 	uint64_t bar0_d                       : 1;  /**< When set '1' disables access from MAC to
5870                                                          BAR-0 address offsets: Less Than 0x330,
5871                                                          0x3CD0, and greater than 0x3D70 excluding
5872                                                          0x3e00.
5873                                                          When Authenticate-Mode is set the reset value of
5874                                                          this field is "1" else "0'. */
5875 	uint64_t mrrs                         : 3;  /**< Max Read Request Size
5876                                                                  0 = 128B
5877                                                                  1 = 256B
5878                                                                  2 = 512B
5879                                                                  3 = 1024B
5880                                                                  4 = 2048B
5881                                                                  5-7 = Reserved
5882                                                          This field should not exceed the desired
5883                                                                max read request size. This field is used to
5884                                                                determine if an IOBDMA is too large.
5885                                                          For a PCIe MAC, this field should not exceed
5886                                                                PCIE*_CFG030[MRRS].
5887                                                          For a sRIO MAC, this field should indicate a size
5888                                                                of 256B or smaller. */
5889 #else
5890 	uint64_t mrrs                         : 3;
5891 	uint64_t bar0_d                       : 1;
5892 	uint64_t wind_d                       : 1;
5893 	uint64_t reserved_5_63                : 59;
5894 #endif
5895 	} s;
5896 	struct cvmx_sli_s2m_portx_ctl_s       cn61xx;
5897 	struct cvmx_sli_s2m_portx_ctl_s       cn63xx;
5898 	struct cvmx_sli_s2m_portx_ctl_s       cn63xxp1;
5899 	struct cvmx_sli_s2m_portx_ctl_s       cn66xx;
5900 	struct cvmx_sli_s2m_portx_ctl_s       cn68xx;
5901 	struct cvmx_sli_s2m_portx_ctl_s       cn68xxp1;
5902 	struct cvmx_sli_s2m_portx_ctl_s       cnf71xx;
5903 };
5904 typedef union cvmx_sli_s2m_portx_ctl cvmx_sli_s2m_portx_ctl_t;
5905 
5906 /**
5907  * cvmx_sli_scratch_1
5908  *
5909  * SLI_SCRATCH_1 = SLI's Scratch 1
5910  *
5911  * A general purpose 64 bit register for SW use.
5912  */
5913 union cvmx_sli_scratch_1 {
5914 	uint64_t u64;
5915 	struct cvmx_sli_scratch_1_s {
5916 #ifdef __BIG_ENDIAN_BITFIELD
5917 	uint64_t data                         : 64; /**< The value in this register is totaly SW dependent. */
5918 #else
5919 	uint64_t data                         : 64;
5920 #endif
5921 	} s;
5922 	struct cvmx_sli_scratch_1_s           cn61xx;
5923 	struct cvmx_sli_scratch_1_s           cn63xx;
5924 	struct cvmx_sli_scratch_1_s           cn63xxp1;
5925 	struct cvmx_sli_scratch_1_s           cn66xx;
5926 	struct cvmx_sli_scratch_1_s           cn68xx;
5927 	struct cvmx_sli_scratch_1_s           cn68xxp1;
5928 	struct cvmx_sli_scratch_1_s           cnf71xx;
5929 };
5930 typedef union cvmx_sli_scratch_1 cvmx_sli_scratch_1_t;
5931 
5932 /**
5933  * cvmx_sli_scratch_2
5934  *
5935  * SLI_SCRATCH_2 = SLI's Scratch 2
5936  *
5937  * A general purpose 64 bit register for SW use.
5938  */
5939 union cvmx_sli_scratch_2 {
5940 	uint64_t u64;
5941 	struct cvmx_sli_scratch_2_s {
5942 #ifdef __BIG_ENDIAN_BITFIELD
5943 	uint64_t data                         : 64; /**< The value in this register is totaly SW dependent. */
5944 #else
5945 	uint64_t data                         : 64;
5946 #endif
5947 	} s;
5948 	struct cvmx_sli_scratch_2_s           cn61xx;
5949 	struct cvmx_sli_scratch_2_s           cn63xx;
5950 	struct cvmx_sli_scratch_2_s           cn63xxp1;
5951 	struct cvmx_sli_scratch_2_s           cn66xx;
5952 	struct cvmx_sli_scratch_2_s           cn68xx;
5953 	struct cvmx_sli_scratch_2_s           cn68xxp1;
5954 	struct cvmx_sli_scratch_2_s           cnf71xx;
5955 };
5956 typedef union cvmx_sli_scratch_2 cvmx_sli_scratch_2_t;
5957 
5958 /**
5959  * cvmx_sli_state1
5960  *
5961  * SLI_STATE1 = SLI State 1
5962  *
5963  * State machines in SLI. For debug.
5964  */
5965 union cvmx_sli_state1 {
5966 	uint64_t u64;
5967 	struct cvmx_sli_state1_s {
5968 #ifdef __BIG_ENDIAN_BITFIELD
5969 	uint64_t cpl1                         : 12; /**< CPL1 State */
5970 	uint64_t cpl0                         : 12; /**< CPL0 State */
5971 	uint64_t arb                          : 1;  /**< ARB State */
5972 	uint64_t csr                          : 39; /**< CSR State */
5973 #else
5974 	uint64_t csr                          : 39;
5975 	uint64_t arb                          : 1;
5976 	uint64_t cpl0                         : 12;
5977 	uint64_t cpl1                         : 12;
5978 #endif
5979 	} s;
5980 	struct cvmx_sli_state1_s              cn61xx;
5981 	struct cvmx_sli_state1_s              cn63xx;
5982 	struct cvmx_sli_state1_s              cn63xxp1;
5983 	struct cvmx_sli_state1_s              cn66xx;
5984 	struct cvmx_sli_state1_s              cn68xx;
5985 	struct cvmx_sli_state1_s              cn68xxp1;
5986 	struct cvmx_sli_state1_s              cnf71xx;
5987 };
5988 typedef union cvmx_sli_state1 cvmx_sli_state1_t;
5989 
5990 /**
5991  * cvmx_sli_state2
5992  *
5993  * SLI_STATE2 = SLI State 2
5994  *
5995  * State machines in SLI. For debug.
5996  */
5997 union cvmx_sli_state2 {
5998 	uint64_t u64;
5999 	struct cvmx_sli_state2_s {
6000 #ifdef __BIG_ENDIAN_BITFIELD
6001 	uint64_t reserved_56_63               : 8;
6002 	uint64_t nnp1                         : 8;  /**< NNP1 State */
6003 	uint64_t reserved_47_47               : 1;
6004 	uint64_t rac                          : 1;  /**< RAC State */
6005 	uint64_t csm1                         : 15; /**< CSM1 State */
6006 	uint64_t csm0                         : 15; /**< CSM0 State */
6007 	uint64_t nnp0                         : 8;  /**< NNP0 State */
6008 	uint64_t nnd                          : 8;  /**< NND State */
6009 #else
6010 	uint64_t nnd                          : 8;
6011 	uint64_t nnp0                         : 8;
6012 	uint64_t csm0                         : 15;
6013 	uint64_t csm1                         : 15;
6014 	uint64_t rac                          : 1;
6015 	uint64_t reserved_47_47               : 1;
6016 	uint64_t nnp1                         : 8;
6017 	uint64_t reserved_56_63               : 8;
6018 #endif
6019 	} s;
6020 	struct cvmx_sli_state2_s              cn61xx;
6021 	struct cvmx_sli_state2_s              cn63xx;
6022 	struct cvmx_sli_state2_s              cn63xxp1;
6023 	struct cvmx_sli_state2_s              cn66xx;
6024 	struct cvmx_sli_state2_s              cn68xx;
6025 	struct cvmx_sli_state2_s              cn68xxp1;
6026 	struct cvmx_sli_state2_s              cnf71xx;
6027 };
6028 typedef union cvmx_sli_state2 cvmx_sli_state2_t;
6029 
6030 /**
6031  * cvmx_sli_state3
6032  *
6033  * SLI_STATE3 = SLI State 3
6034  *
6035  * State machines in SLI. For debug.
6036  */
6037 union cvmx_sli_state3 {
6038 	uint64_t u64;
6039 	struct cvmx_sli_state3_s {
6040 #ifdef __BIG_ENDIAN_BITFIELD
6041 	uint64_t reserved_56_63               : 8;
6042 	uint64_t psm1                         : 15; /**< PSM1 State */
6043 	uint64_t psm0                         : 15; /**< PSM0 State */
6044 	uint64_t nsm1                         : 13; /**< NSM1 State */
6045 	uint64_t nsm0                         : 13; /**< NSM0 State */
6046 #else
6047 	uint64_t nsm0                         : 13;
6048 	uint64_t nsm1                         : 13;
6049 	uint64_t psm0                         : 15;
6050 	uint64_t psm1                         : 15;
6051 	uint64_t reserved_56_63               : 8;
6052 #endif
6053 	} s;
6054 	struct cvmx_sli_state3_s              cn61xx;
6055 	struct cvmx_sli_state3_s              cn63xx;
6056 	struct cvmx_sli_state3_s              cn63xxp1;
6057 	struct cvmx_sli_state3_s              cn66xx;
6058 	struct cvmx_sli_state3_s              cn68xx;
6059 	struct cvmx_sli_state3_s              cn68xxp1;
6060 	struct cvmx_sli_state3_s              cnf71xx;
6061 };
6062 typedef union cvmx_sli_state3 cvmx_sli_state3_t;
6063 
6064 /**
6065  * cvmx_sli_tx_pipe
6066  *
6067  * SLI_TX_PIPE = SLI Packet TX Pipe
6068  *
6069  * Contains the starting pipe number and number of pipes used by the SLI packet Output.
6070  * If a packet is recevied from PKO with an out of range PIPE number, the following occurs:
6071  * - SLI_INT_SUM[PIPE_ERR] is set.
6072  * - the out of range pipe value is used for returning credits to the PKO.
6073  * - the PCIe packet engine will treat the PIPE value to be equal to [BASE].
6074  */
6075 union cvmx_sli_tx_pipe {
6076 	uint64_t u64;
6077 	struct cvmx_sli_tx_pipe_s {
6078 #ifdef __BIG_ENDIAN_BITFIELD
6079 	uint64_t reserved_24_63               : 40;
6080 	uint64_t nump                         : 8;  /**< Number of pipes the the SLI/DPI supports.
6081                                                          When this value is 4 or less there is a performance
6082                                                          advantage for output packets.
6083                                                          The SLI/DPI can support up to 32 pipes assigned to
6084                                                          packet-rings 0 - 31. */
6085 	uint64_t reserved_7_15                : 9;
6086 	uint64_t base                         : 7;  /**< When NUMP is non-zero, indicates the base pipe
6087                                                          number the SLI/DPI will accept.
6088                                                          The SLI/DPI will accept pko packets from pipes in
6089                                                          the range of:
6090                                                            BASE .. (BASE+(NUMP-1))
6091                                                          BASE and NUMP must be constrained such that
6092                                                            1) BASE+(NUMP-1) < 127
6093                                                            2) Each used PKO pipe must map to exactly
6094                                                               one ring. Where BASE == ring 0, BASE+1 == to
6095                                                               ring 1, etc
6096                                                            3) The pipe ranges must be consistent with
6097                                                               the PKO configuration. */
6098 #else
6099 	uint64_t base                         : 7;
6100 	uint64_t reserved_7_15                : 9;
6101 	uint64_t nump                         : 8;
6102 	uint64_t reserved_24_63               : 40;
6103 #endif
6104 	} s;
6105 	struct cvmx_sli_tx_pipe_s             cn68xx;
6106 	struct cvmx_sli_tx_pipe_s             cn68xxp1;
6107 };
6108 typedef union cvmx_sli_tx_pipe cvmx_sli_tx_pipe_t;
6109 
6110 /**
6111  * cvmx_sli_win_rd_addr
6112  *
6113  * SLI_WIN_RD_ADDR = SLI Window Read Address Register
6114  *
6115  * The address to be read when the SLI_WIN_RD_DATA register is read.
6116  * This register should NOT be used to read SLI_* registers.
6117  */
6118 union cvmx_sli_win_rd_addr {
6119 	uint64_t u64;
6120 	struct cvmx_sli_win_rd_addr_s {
6121 #ifdef __BIG_ENDIAN_BITFIELD
6122 	uint64_t reserved_51_63               : 13;
6123 	uint64_t ld_cmd                       : 2;  /**< The load command sent wit hthe read.
6124                                                          0x3 == Load 8-bytes, 0x2 == Load 4-bytes,
6125                                                          0x1 == Load 2-bytes, 0x0 == Load 1-bytes, */
6126 	uint64_t iobit                        : 1;  /**< A 1 or 0 can be written here but will not be used
6127                                                          in address generation. */
6128 	uint64_t rd_addr                      : 48; /**< The address to be read from.
6129                                                          [47:40] = NCB_ID
6130                                                          [39:0]  = Address
6131                                                          When [47:43] == SLI & [42:40] == 0 bits [39:0] are:
6132                                                               [39:32] == x, Not Used
6133                                                               [31:24] == RSL_ID
6134                                                               [23:0]  == RSL Register Offset */
6135 #else
6136 	uint64_t rd_addr                      : 48;
6137 	uint64_t iobit                        : 1;
6138 	uint64_t ld_cmd                       : 2;
6139 	uint64_t reserved_51_63               : 13;
6140 #endif
6141 	} s;
6142 	struct cvmx_sli_win_rd_addr_s         cn61xx;
6143 	struct cvmx_sli_win_rd_addr_s         cn63xx;
6144 	struct cvmx_sli_win_rd_addr_s         cn63xxp1;
6145 	struct cvmx_sli_win_rd_addr_s         cn66xx;
6146 	struct cvmx_sli_win_rd_addr_s         cn68xx;
6147 	struct cvmx_sli_win_rd_addr_s         cn68xxp1;
6148 	struct cvmx_sli_win_rd_addr_s         cnf71xx;
6149 };
6150 typedef union cvmx_sli_win_rd_addr cvmx_sli_win_rd_addr_t;
6151 
6152 /**
6153  * cvmx_sli_win_rd_data
6154  *
6155  * SLI_WIN_RD_DATA = SLI Window Read Data Register
6156  *
6157  * Reading this register causes a window read operation to take place. Address read is that contained in the SLI_WIN_RD_ADDR
6158  * register.
6159  */
6160 union cvmx_sli_win_rd_data {
6161 	uint64_t u64;
6162 	struct cvmx_sli_win_rd_data_s {
6163 #ifdef __BIG_ENDIAN_BITFIELD
6164 	uint64_t rd_data                      : 64; /**< The read data. */
6165 #else
6166 	uint64_t rd_data                      : 64;
6167 #endif
6168 	} s;
6169 	struct cvmx_sli_win_rd_data_s         cn61xx;
6170 	struct cvmx_sli_win_rd_data_s         cn63xx;
6171 	struct cvmx_sli_win_rd_data_s         cn63xxp1;
6172 	struct cvmx_sli_win_rd_data_s         cn66xx;
6173 	struct cvmx_sli_win_rd_data_s         cn68xx;
6174 	struct cvmx_sli_win_rd_data_s         cn68xxp1;
6175 	struct cvmx_sli_win_rd_data_s         cnf71xx;
6176 };
6177 typedef union cvmx_sli_win_rd_data cvmx_sli_win_rd_data_t;
6178 
6179 /**
6180  * cvmx_sli_win_wr_addr
6181  *
6182  * Add Lock Register (Set on Read, Clear on write), SW uses to control access to BAR0 space.
6183  *
6184  * Total Address is 16Kb; 0x0000 - 0x3fff, 0x000 - 0x7fe(Reg, every other 8B)
6185  *
6186  * General  5kb; 0x0000 - 0x13ff, 0x000 - 0x27e(Reg-General)
6187  * PktMem  10Kb; 0x1400 - 0x3bff, 0x280 - 0x77e(Reg-General-Packet)
6188  * Rsvd     1Kb; 0x3c00 - 0x3fff, 0x780 - 0x7fe(Reg-NCB Only Mode)
6189  *
6190  *                  SLI_WIN_WR_ADDR = SLI Window Write Address Register
6191  *
6192  * Contains the address to be writen to when a write operation is started by writing the
6193  * SLI_WIN_WR_DATA register (see below).
6194  *
6195  * This register should NOT be used to write SLI_* registers.
6196  */
6197 union cvmx_sli_win_wr_addr {
6198 	uint64_t u64;
6199 	struct cvmx_sli_win_wr_addr_s {
6200 #ifdef __BIG_ENDIAN_BITFIELD
6201 	uint64_t reserved_49_63               : 15;
6202 	uint64_t iobit                        : 1;  /**< A 1 or 0 can be written here but this will always
6203                                                          read as '0'. */
6204 	uint64_t wr_addr                      : 45; /**< The address that will be written to when the
6205                                                          SLI_WIN_WR_DATA register is written.
6206                                                          [47:40] = NCB_ID
6207                                                          [39:3]  = Address
6208                                                          When [47:43] == SLI & [42:40] == 0 bits [39:0] are:
6209                                                               [39:32] == x, Not Used
6210                                                               [31:24] == RSL_ID
6211                                                               [23:3]  == RSL Register Offset */
6212 	uint64_t reserved_0_2                 : 3;
6213 #else
6214 	uint64_t reserved_0_2                 : 3;
6215 	uint64_t wr_addr                      : 45;
6216 	uint64_t iobit                        : 1;
6217 	uint64_t reserved_49_63               : 15;
6218 #endif
6219 	} s;
6220 	struct cvmx_sli_win_wr_addr_s         cn61xx;
6221 	struct cvmx_sli_win_wr_addr_s         cn63xx;
6222 	struct cvmx_sli_win_wr_addr_s         cn63xxp1;
6223 	struct cvmx_sli_win_wr_addr_s         cn66xx;
6224 	struct cvmx_sli_win_wr_addr_s         cn68xx;
6225 	struct cvmx_sli_win_wr_addr_s         cn68xxp1;
6226 	struct cvmx_sli_win_wr_addr_s         cnf71xx;
6227 };
6228 typedef union cvmx_sli_win_wr_addr cvmx_sli_win_wr_addr_t;
6229 
6230 /**
6231  * cvmx_sli_win_wr_data
6232  *
6233  * SLI_WIN_WR_DATA = SLI Window Write Data Register
6234  *
6235  * Contains the data to write to the address located in the SLI_WIN_WR_ADDR Register.
6236  * Writing the least-significant-byte of this register will cause a write operation to take place.
6237  */
6238 union cvmx_sli_win_wr_data {
6239 	uint64_t u64;
6240 	struct cvmx_sli_win_wr_data_s {
6241 #ifdef __BIG_ENDIAN_BITFIELD
6242 	uint64_t wr_data                      : 64; /**< The data to be written. Whenever the LSB of this
6243                                                          register is written, the Window Write will take
6244                                                          place. */
6245 #else
6246 	uint64_t wr_data                      : 64;
6247 #endif
6248 	} s;
6249 	struct cvmx_sli_win_wr_data_s         cn61xx;
6250 	struct cvmx_sli_win_wr_data_s         cn63xx;
6251 	struct cvmx_sli_win_wr_data_s         cn63xxp1;
6252 	struct cvmx_sli_win_wr_data_s         cn66xx;
6253 	struct cvmx_sli_win_wr_data_s         cn68xx;
6254 	struct cvmx_sli_win_wr_data_s         cn68xxp1;
6255 	struct cvmx_sli_win_wr_data_s         cnf71xx;
6256 };
6257 typedef union cvmx_sli_win_wr_data cvmx_sli_win_wr_data_t;
6258 
6259 /**
6260  * cvmx_sli_win_wr_mask
6261  *
6262  * SLI_WIN_WR_MASK = SLI Window Write Mask Register
6263  *
6264  * Contains the mask for the data in the SLI_WIN_WR_DATA Register.
6265  */
6266 union cvmx_sli_win_wr_mask {
6267 	uint64_t u64;
6268 	struct cvmx_sli_win_wr_mask_s {
6269 #ifdef __BIG_ENDIAN_BITFIELD
6270 	uint64_t reserved_8_63                : 56;
6271 	uint64_t wr_mask                      : 8;  /**< The data to be written. When a bit is '1'
6272                                                          the corresponding byte will be written. The values
6273                                                          of this field must be contiguos and for 1, 2, 4, or
6274                                                          8 byte operations and aligned to operation size.
6275                                                          A Value of 0 will produce unpredictable results */
6276 #else
6277 	uint64_t wr_mask                      : 8;
6278 	uint64_t reserved_8_63                : 56;
6279 #endif
6280 	} s;
6281 	struct cvmx_sli_win_wr_mask_s         cn61xx;
6282 	struct cvmx_sli_win_wr_mask_s         cn63xx;
6283 	struct cvmx_sli_win_wr_mask_s         cn63xxp1;
6284 	struct cvmx_sli_win_wr_mask_s         cn66xx;
6285 	struct cvmx_sli_win_wr_mask_s         cn68xx;
6286 	struct cvmx_sli_win_wr_mask_s         cn68xxp1;
6287 	struct cvmx_sli_win_wr_mask_s         cnf71xx;
6288 };
6289 typedef union cvmx_sli_win_wr_mask cvmx_sli_win_wr_mask_t;
6290 
6291 /**
6292  * cvmx_sli_window_ctl
6293  *
6294  * // *
6295  * // * 81e0 - 82d0 Reserved for future subids
6296  * // *
6297  *
6298  *                   SLI_WINDOW_CTL = SLI's Window Control
6299  *
6300  *  Access to register space on the NCB (caused by Window Reads/Writes) will wait for a period of time specified
6301  *  by this register before timeing out. Because a Window Access can access the RML, which has a fixed timeout of 0xFFFF
6302  *  core clocks, the value of this register should be set to a minimum of 0x200000 to ensure that a timeout to an RML register
6303  *  occurs on the RML 0xFFFF timer before the timeout for a BAR0 access from the MAC.
6304  */
6305 union cvmx_sli_window_ctl {
6306 	uint64_t u64;
6307 	struct cvmx_sli_window_ctl_s {
6308 #ifdef __BIG_ENDIAN_BITFIELD
6309 	uint64_t reserved_32_63               : 32;
6310 	uint64_t time                         : 32; /**< Time to wait in core clocks for a
6311                                                          BAR0 access to completeon the NCB
6312                                                          before timing out. A value of 0 will cause no
6313                                                          timeouts. A minimum value of 0x200000 should be
6314                                                          used when this register is not set to 0x0. */
6315 #else
6316 	uint64_t time                         : 32;
6317 	uint64_t reserved_32_63               : 32;
6318 #endif
6319 	} s;
6320 	struct cvmx_sli_window_ctl_s          cn61xx;
6321 	struct cvmx_sli_window_ctl_s          cn63xx;
6322 	struct cvmx_sli_window_ctl_s          cn63xxp1;
6323 	struct cvmx_sli_window_ctl_s          cn66xx;
6324 	struct cvmx_sli_window_ctl_s          cn68xx;
6325 	struct cvmx_sli_window_ctl_s          cn68xxp1;
6326 	struct cvmx_sli_window_ctl_s          cnf71xx;
6327 };
6328 typedef union cvmx_sli_window_ctl cvmx_sli_window_ctl_t;
6329 
6330 #endif
6331