1 /***********************license start***************
2 * Copyright (c) 2003-2012 Cavium Inc. (support@cavium.com). All rights
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
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.
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
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
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**************************************/
44 * Configuration and status register (CSR) type definitions for
47 * This file is auto generated. Do not edit.
52 #ifndef __CVMX_SLI_DEFS_H__
53 #define __CVMX_SLI_DEFS_H__
55 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56 #define CVMX_SLI_BIST_STATUS CVMX_SLI_BIST_STATUS_FUNC()
57 static inline uint64_t CVMX_SLI_BIST_STATUS_FUNC(void)
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;
64 #define CVMX_SLI_BIST_STATUS (0x0000000000000580ull)
66 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
67 static inline uint64_t CVMX_SLI_CTL_PORTX(unsigned long offset)
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;
79 #define CVMX_SLI_CTL_PORTX(offset) (0x0000000000000050ull + ((offset) & 3) * 16)
81 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
82 #define CVMX_SLI_CTL_STATUS CVMX_SLI_CTL_STATUS_FUNC()
83 static inline uint64_t CVMX_SLI_CTL_STATUS_FUNC(void)
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;
90 #define CVMX_SLI_CTL_STATUS (0x0000000000000570ull)
92 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
93 #define CVMX_SLI_DATA_OUT_CNT CVMX_SLI_DATA_OUT_CNT_FUNC()
94 static inline uint64_t CVMX_SLI_DATA_OUT_CNT_FUNC(void)
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;
101 #define CVMX_SLI_DATA_OUT_CNT (0x00000000000005F0ull)
103 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
104 #define CVMX_SLI_DBG_DATA CVMX_SLI_DBG_DATA_FUNC()
105 static inline uint64_t CVMX_SLI_DBG_DATA_FUNC(void)
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;
112 #define CVMX_SLI_DBG_DATA (0x0000000000000310ull)
114 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
115 #define CVMX_SLI_DBG_SELECT CVMX_SLI_DBG_SELECT_FUNC()
116 static inline uint64_t CVMX_SLI_DBG_SELECT_FUNC(void)
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;
123 #define CVMX_SLI_DBG_SELECT (0x0000000000000300ull)
125 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
126 static inline uint64_t CVMX_SLI_DMAX_CNT(unsigned long offset)
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;
138 #define CVMX_SLI_DMAX_CNT(offset) (0x0000000000000400ull + ((offset) & 1) * 16)
140 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
141 static inline uint64_t CVMX_SLI_DMAX_INT_LEVEL(unsigned long offset)
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;
153 #define CVMX_SLI_DMAX_INT_LEVEL(offset) (0x00000000000003E0ull + ((offset) & 1) * 16)
155 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
156 static inline uint64_t CVMX_SLI_DMAX_TIM(unsigned long offset)
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;
168 #define CVMX_SLI_DMAX_TIM(offset) (0x0000000000000420ull + ((offset) & 1) * 16)
170 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
171 #define CVMX_SLI_INT_ENB_CIU CVMX_SLI_INT_ENB_CIU_FUNC()
172 static inline uint64_t CVMX_SLI_INT_ENB_CIU_FUNC(void)
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;
179 #define CVMX_SLI_INT_ENB_CIU (0x0000000000003CD0ull)
181 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
182 static inline uint64_t CVMX_SLI_INT_ENB_PORTX(unsigned long offset)
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;
194 #define CVMX_SLI_INT_ENB_PORTX(offset) (0x0000000000000340ull + ((offset) & 1) * 16)
196 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
197 #define CVMX_SLI_INT_SUM CVMX_SLI_INT_SUM_FUNC()
198 static inline uint64_t CVMX_SLI_INT_SUM_FUNC(void)
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;
205 #define CVMX_SLI_INT_SUM (0x0000000000000330ull)
207 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
208 #define CVMX_SLI_LAST_WIN_RDATA0 CVMX_SLI_LAST_WIN_RDATA0_FUNC()
209 static inline uint64_t CVMX_SLI_LAST_WIN_RDATA0_FUNC(void)
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;
216 #define CVMX_SLI_LAST_WIN_RDATA0 (0x0000000000000600ull)
218 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
219 #define CVMX_SLI_LAST_WIN_RDATA1 CVMX_SLI_LAST_WIN_RDATA1_FUNC()
220 static inline uint64_t CVMX_SLI_LAST_WIN_RDATA1_FUNC(void)
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;
227 #define CVMX_SLI_LAST_WIN_RDATA1 (0x0000000000000610ull)
229 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
230 #define CVMX_SLI_LAST_WIN_RDATA2 CVMX_SLI_LAST_WIN_RDATA2_FUNC()
231 static inline uint64_t CVMX_SLI_LAST_WIN_RDATA2_FUNC(void)
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;
238 #define CVMX_SLI_LAST_WIN_RDATA2 (0x00000000000006C0ull)
240 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
241 #define CVMX_SLI_LAST_WIN_RDATA3 CVMX_SLI_LAST_WIN_RDATA3_FUNC()
242 static inline uint64_t CVMX_SLI_LAST_WIN_RDATA3_FUNC(void)
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;
249 #define CVMX_SLI_LAST_WIN_RDATA3 (0x00000000000006D0ull)
251 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
252 #define CVMX_SLI_MAC_CREDIT_CNT CVMX_SLI_MAC_CREDIT_CNT_FUNC()
253 static inline uint64_t CVMX_SLI_MAC_CREDIT_CNT_FUNC(void)
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;
260 #define CVMX_SLI_MAC_CREDIT_CNT (0x0000000000003D70ull)
262 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
263 #define CVMX_SLI_MAC_CREDIT_CNT2 CVMX_SLI_MAC_CREDIT_CNT2_FUNC()
264 static inline uint64_t CVMX_SLI_MAC_CREDIT_CNT2_FUNC(void)
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;
271 #define CVMX_SLI_MAC_CREDIT_CNT2 (0x0000000000003E10ull)
273 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
274 #define CVMX_SLI_MAC_NUMBER CVMX_SLI_MAC_NUMBER_FUNC()
275 static inline uint64_t CVMX_SLI_MAC_NUMBER_FUNC(void)
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;
282 #define CVMX_SLI_MAC_NUMBER (0x0000000000003E00ull)
284 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
285 #define CVMX_SLI_MEM_ACCESS_CTL CVMX_SLI_MEM_ACCESS_CTL_FUNC()
286 static inline uint64_t CVMX_SLI_MEM_ACCESS_CTL_FUNC(void)
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;
293 #define CVMX_SLI_MEM_ACCESS_CTL (0x00000000000002F0ull)
295 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
296 static inline uint64_t CVMX_SLI_MEM_ACCESS_SUBIDX(unsigned long offset)
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;
308 #define CVMX_SLI_MEM_ACCESS_SUBIDX(offset) (0x00000000000000E0ull + ((offset) & 31) * 16 - 16*12)
310 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
311 #define CVMX_SLI_MSI_ENB0 CVMX_SLI_MSI_ENB0_FUNC()
312 static inline uint64_t CVMX_SLI_MSI_ENB0_FUNC(void)
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;
319 #define CVMX_SLI_MSI_ENB0 (0x0000000000003C50ull)
321 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
322 #define CVMX_SLI_MSI_ENB1 CVMX_SLI_MSI_ENB1_FUNC()
323 static inline uint64_t CVMX_SLI_MSI_ENB1_FUNC(void)
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;
330 #define CVMX_SLI_MSI_ENB1 (0x0000000000003C60ull)
332 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
333 #define CVMX_SLI_MSI_ENB2 CVMX_SLI_MSI_ENB2_FUNC()
334 static inline uint64_t CVMX_SLI_MSI_ENB2_FUNC(void)
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;
341 #define CVMX_SLI_MSI_ENB2 (0x0000000000003C70ull)
343 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
344 #define CVMX_SLI_MSI_ENB3 CVMX_SLI_MSI_ENB3_FUNC()
345 static inline uint64_t CVMX_SLI_MSI_ENB3_FUNC(void)
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;
352 #define CVMX_SLI_MSI_ENB3 (0x0000000000003C80ull)
354 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
355 #define CVMX_SLI_MSI_RCV0 CVMX_SLI_MSI_RCV0_FUNC()
356 static inline uint64_t CVMX_SLI_MSI_RCV0_FUNC(void)
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;
363 #define CVMX_SLI_MSI_RCV0 (0x0000000000003C10ull)
365 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
366 #define CVMX_SLI_MSI_RCV1 CVMX_SLI_MSI_RCV1_FUNC()
367 static inline uint64_t CVMX_SLI_MSI_RCV1_FUNC(void)
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;
374 #define CVMX_SLI_MSI_RCV1 (0x0000000000003C20ull)
376 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
377 #define CVMX_SLI_MSI_RCV2 CVMX_SLI_MSI_RCV2_FUNC()
378 static inline uint64_t CVMX_SLI_MSI_RCV2_FUNC(void)
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;
385 #define CVMX_SLI_MSI_RCV2 (0x0000000000003C30ull)
387 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
388 #define CVMX_SLI_MSI_RCV3 CVMX_SLI_MSI_RCV3_FUNC()
389 static inline uint64_t CVMX_SLI_MSI_RCV3_FUNC(void)
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;
396 #define CVMX_SLI_MSI_RCV3 (0x0000000000003C40ull)
398 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
399 #define CVMX_SLI_MSI_RD_MAP CVMX_SLI_MSI_RD_MAP_FUNC()
400 static inline uint64_t CVMX_SLI_MSI_RD_MAP_FUNC(void)
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;
407 #define CVMX_SLI_MSI_RD_MAP (0x0000000000003CA0ull)
409 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
410 #define CVMX_SLI_MSI_W1C_ENB0 CVMX_SLI_MSI_W1C_ENB0_FUNC()
411 static inline uint64_t CVMX_SLI_MSI_W1C_ENB0_FUNC(void)
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;
418 #define CVMX_SLI_MSI_W1C_ENB0 (0x0000000000003CF0ull)
420 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
421 #define CVMX_SLI_MSI_W1C_ENB1 CVMX_SLI_MSI_W1C_ENB1_FUNC()
422 static inline uint64_t CVMX_SLI_MSI_W1C_ENB1_FUNC(void)
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;
429 #define CVMX_SLI_MSI_W1C_ENB1 (0x0000000000003D00ull)
431 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
432 #define CVMX_SLI_MSI_W1C_ENB2 CVMX_SLI_MSI_W1C_ENB2_FUNC()
433 static inline uint64_t CVMX_SLI_MSI_W1C_ENB2_FUNC(void)
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;
440 #define CVMX_SLI_MSI_W1C_ENB2 (0x0000000000003D10ull)
442 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
443 #define CVMX_SLI_MSI_W1C_ENB3 CVMX_SLI_MSI_W1C_ENB3_FUNC()
444 static inline uint64_t CVMX_SLI_MSI_W1C_ENB3_FUNC(void)
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;
451 #define CVMX_SLI_MSI_W1C_ENB3 (0x0000000000003D20ull)
453 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
454 #define CVMX_SLI_MSI_W1S_ENB0 CVMX_SLI_MSI_W1S_ENB0_FUNC()
455 static inline uint64_t CVMX_SLI_MSI_W1S_ENB0_FUNC(void)
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;
462 #define CVMX_SLI_MSI_W1S_ENB0 (0x0000000000003D30ull)
464 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
465 #define CVMX_SLI_MSI_W1S_ENB1 CVMX_SLI_MSI_W1S_ENB1_FUNC()
466 static inline uint64_t CVMX_SLI_MSI_W1S_ENB1_FUNC(void)
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;
473 #define CVMX_SLI_MSI_W1S_ENB1 (0x0000000000003D40ull)
475 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
476 #define CVMX_SLI_MSI_W1S_ENB2 CVMX_SLI_MSI_W1S_ENB2_FUNC()
477 static inline uint64_t CVMX_SLI_MSI_W1S_ENB2_FUNC(void)
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;
484 #define CVMX_SLI_MSI_W1S_ENB2 (0x0000000000003D50ull)
486 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
487 #define CVMX_SLI_MSI_W1S_ENB3 CVMX_SLI_MSI_W1S_ENB3_FUNC()
488 static inline uint64_t CVMX_SLI_MSI_W1S_ENB3_FUNC(void)
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;
495 #define CVMX_SLI_MSI_W1S_ENB3 (0x0000000000003D60ull)
497 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
498 #define CVMX_SLI_MSI_WR_MAP CVMX_SLI_MSI_WR_MAP_FUNC()
499 static inline uint64_t CVMX_SLI_MSI_WR_MAP_FUNC(void)
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;
506 #define CVMX_SLI_MSI_WR_MAP (0x0000000000003C90ull)
508 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
509 #define CVMX_SLI_PCIE_MSI_RCV CVMX_SLI_PCIE_MSI_RCV_FUNC()
510 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_FUNC(void)
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;
517 #define CVMX_SLI_PCIE_MSI_RCV (0x0000000000003CB0ull)
519 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
520 #define CVMX_SLI_PCIE_MSI_RCV_B1 CVMX_SLI_PCIE_MSI_RCV_B1_FUNC()
521 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_B1_FUNC(void)
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;
528 #define CVMX_SLI_PCIE_MSI_RCV_B1 (0x0000000000000650ull)
530 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
531 #define CVMX_SLI_PCIE_MSI_RCV_B2 CVMX_SLI_PCIE_MSI_RCV_B2_FUNC()
532 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_B2_FUNC(void)
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;
539 #define CVMX_SLI_PCIE_MSI_RCV_B2 (0x0000000000000660ull)
541 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
542 #define CVMX_SLI_PCIE_MSI_RCV_B3 CVMX_SLI_PCIE_MSI_RCV_B3_FUNC()
543 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_B3_FUNC(void)
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;
550 #define CVMX_SLI_PCIE_MSI_RCV_B3 (0x0000000000000670ull)
552 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
553 static inline uint64_t CVMX_SLI_PKTX_CNTS(unsigned long offset)
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;
565 #define CVMX_SLI_PKTX_CNTS(offset) (0x0000000000002400ull + ((offset) & 31) * 16)
567 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
568 static inline uint64_t CVMX_SLI_PKTX_INSTR_BADDR(unsigned long offset)
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;
580 #define CVMX_SLI_PKTX_INSTR_BADDR(offset) (0x0000000000002800ull + ((offset) & 31) * 16)
582 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
583 static inline uint64_t CVMX_SLI_PKTX_INSTR_BAOFF_DBELL(unsigned long offset)
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;
595 #define CVMX_SLI_PKTX_INSTR_BAOFF_DBELL(offset) (0x0000000000002C00ull + ((offset) & 31) * 16)
597 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
598 static inline uint64_t CVMX_SLI_PKTX_INSTR_FIFO_RSIZE(unsigned long offset)
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;
610 #define CVMX_SLI_PKTX_INSTR_FIFO_RSIZE(offset) (0x0000000000003000ull + ((offset) & 31) * 16)
612 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
613 static inline uint64_t CVMX_SLI_PKTX_INSTR_HEADER(unsigned long offset)
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;
625 #define CVMX_SLI_PKTX_INSTR_HEADER(offset) (0x0000000000003400ull + ((offset) & 31) * 16)
627 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
628 static inline uint64_t CVMX_SLI_PKTX_IN_BP(unsigned long offset)
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;
639 #define CVMX_SLI_PKTX_IN_BP(offset) (0x0000000000003800ull + ((offset) & 31) * 16)
641 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
642 static inline uint64_t CVMX_SLI_PKTX_OUT_SIZE(unsigned long offset)
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;
654 #define CVMX_SLI_PKTX_OUT_SIZE(offset) (0x0000000000000C00ull + ((offset) & 31) * 16)
656 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
657 static inline uint64_t CVMX_SLI_PKTX_SLIST_BADDR(unsigned long offset)
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;
669 #define CVMX_SLI_PKTX_SLIST_BADDR(offset) (0x0000000000001400ull + ((offset) & 31) * 16)
671 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
672 static inline uint64_t CVMX_SLI_PKTX_SLIST_BAOFF_DBELL(unsigned long offset)
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;
684 #define CVMX_SLI_PKTX_SLIST_BAOFF_DBELL(offset) (0x0000000000001800ull + ((offset) & 31) * 16)
686 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
687 static inline uint64_t CVMX_SLI_PKTX_SLIST_FIFO_RSIZE(unsigned long offset)
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;
699 #define CVMX_SLI_PKTX_SLIST_FIFO_RSIZE(offset) (0x0000000000001C00ull + ((offset) & 31) * 16)
701 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
702 #define CVMX_SLI_PKT_CNT_INT CVMX_SLI_PKT_CNT_INT_FUNC()
703 static inline uint64_t CVMX_SLI_PKT_CNT_INT_FUNC(void)
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;
710 #define CVMX_SLI_PKT_CNT_INT (0x0000000000001130ull)
712 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
713 #define CVMX_SLI_PKT_CNT_INT_ENB CVMX_SLI_PKT_CNT_INT_ENB_FUNC()
714 static inline uint64_t CVMX_SLI_PKT_CNT_INT_ENB_FUNC(void)
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;
721 #define CVMX_SLI_PKT_CNT_INT_ENB (0x0000000000001150ull)
723 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
724 #define CVMX_SLI_PKT_CTL CVMX_SLI_PKT_CTL_FUNC()
725 static inline uint64_t CVMX_SLI_PKT_CTL_FUNC(void)
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;
732 #define CVMX_SLI_PKT_CTL (0x0000000000001220ull)
734 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
735 #define CVMX_SLI_PKT_DATA_OUT_ES CVMX_SLI_PKT_DATA_OUT_ES_FUNC()
736 static inline uint64_t CVMX_SLI_PKT_DATA_OUT_ES_FUNC(void)
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;
743 #define CVMX_SLI_PKT_DATA_OUT_ES (0x00000000000010B0ull)
745 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
746 #define CVMX_SLI_PKT_DATA_OUT_NS CVMX_SLI_PKT_DATA_OUT_NS_FUNC()
747 static inline uint64_t CVMX_SLI_PKT_DATA_OUT_NS_FUNC(void)
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;
754 #define CVMX_SLI_PKT_DATA_OUT_NS (0x00000000000010A0ull)
756 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
757 #define CVMX_SLI_PKT_DATA_OUT_ROR CVMX_SLI_PKT_DATA_OUT_ROR_FUNC()
758 static inline uint64_t CVMX_SLI_PKT_DATA_OUT_ROR_FUNC(void)
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;
765 #define CVMX_SLI_PKT_DATA_OUT_ROR (0x0000000000001090ull)
767 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
768 #define CVMX_SLI_PKT_DPADDR CVMX_SLI_PKT_DPADDR_FUNC()
769 static inline uint64_t CVMX_SLI_PKT_DPADDR_FUNC(void)
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;
776 #define CVMX_SLI_PKT_DPADDR (0x0000000000001080ull)
778 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
779 #define CVMX_SLI_PKT_INPUT_CONTROL CVMX_SLI_PKT_INPUT_CONTROL_FUNC()
780 static inline uint64_t CVMX_SLI_PKT_INPUT_CONTROL_FUNC(void)
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;
787 #define CVMX_SLI_PKT_INPUT_CONTROL (0x0000000000001170ull)
789 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
790 #define CVMX_SLI_PKT_INSTR_ENB CVMX_SLI_PKT_INSTR_ENB_FUNC()
791 static inline uint64_t CVMX_SLI_PKT_INSTR_ENB_FUNC(void)
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;
798 #define CVMX_SLI_PKT_INSTR_ENB (0x0000000000001000ull)
800 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
801 #define CVMX_SLI_PKT_INSTR_RD_SIZE CVMX_SLI_PKT_INSTR_RD_SIZE_FUNC()
802 static inline uint64_t CVMX_SLI_PKT_INSTR_RD_SIZE_FUNC(void)
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;
809 #define CVMX_SLI_PKT_INSTR_RD_SIZE (0x00000000000011A0ull)
811 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
812 #define CVMX_SLI_PKT_INSTR_SIZE CVMX_SLI_PKT_INSTR_SIZE_FUNC()
813 static inline uint64_t CVMX_SLI_PKT_INSTR_SIZE_FUNC(void)
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;
820 #define CVMX_SLI_PKT_INSTR_SIZE (0x0000000000001020ull)
822 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
823 #define CVMX_SLI_PKT_INT_LEVELS CVMX_SLI_PKT_INT_LEVELS_FUNC()
824 static inline uint64_t CVMX_SLI_PKT_INT_LEVELS_FUNC(void)
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;
831 #define CVMX_SLI_PKT_INT_LEVELS (0x0000000000001120ull)
833 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
834 #define CVMX_SLI_PKT_IN_BP CVMX_SLI_PKT_IN_BP_FUNC()
835 static inline uint64_t CVMX_SLI_PKT_IN_BP_FUNC(void)
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;
842 #define CVMX_SLI_PKT_IN_BP (0x0000000000001210ull)
844 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
845 static inline uint64_t CVMX_SLI_PKT_IN_DONEX_CNTS(unsigned long offset)
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;
857 #define CVMX_SLI_PKT_IN_DONEX_CNTS(offset) (0x0000000000002000ull + ((offset) & 31) * 16)
859 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
860 #define CVMX_SLI_PKT_IN_INSTR_COUNTS CVMX_SLI_PKT_IN_INSTR_COUNTS_FUNC()
861 static inline uint64_t CVMX_SLI_PKT_IN_INSTR_COUNTS_FUNC(void)
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;
868 #define CVMX_SLI_PKT_IN_INSTR_COUNTS (0x0000000000001200ull)
870 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
871 #define CVMX_SLI_PKT_IN_PCIE_PORT CVMX_SLI_PKT_IN_PCIE_PORT_FUNC()
872 static inline uint64_t CVMX_SLI_PKT_IN_PCIE_PORT_FUNC(void)
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;
879 #define CVMX_SLI_PKT_IN_PCIE_PORT (0x00000000000011B0ull)
881 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
882 #define CVMX_SLI_PKT_IPTR CVMX_SLI_PKT_IPTR_FUNC()
883 static inline uint64_t CVMX_SLI_PKT_IPTR_FUNC(void)
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;
890 #define CVMX_SLI_PKT_IPTR (0x0000000000001070ull)
892 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
893 #define CVMX_SLI_PKT_OUTPUT_WMARK CVMX_SLI_PKT_OUTPUT_WMARK_FUNC()
894 static inline uint64_t CVMX_SLI_PKT_OUTPUT_WMARK_FUNC(void)
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;
901 #define CVMX_SLI_PKT_OUTPUT_WMARK (0x0000000000001180ull)
903 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
904 #define CVMX_SLI_PKT_OUT_BMODE CVMX_SLI_PKT_OUT_BMODE_FUNC()
905 static inline uint64_t CVMX_SLI_PKT_OUT_BMODE_FUNC(void)
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;
912 #define CVMX_SLI_PKT_OUT_BMODE (0x00000000000010D0ull)
914 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
915 #define CVMX_SLI_PKT_OUT_BP_EN CVMX_SLI_PKT_OUT_BP_EN_FUNC()
916 static inline uint64_t CVMX_SLI_PKT_OUT_BP_EN_FUNC(void)
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;
923 #define CVMX_SLI_PKT_OUT_BP_EN (0x0000000000001240ull)
925 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
926 #define CVMX_SLI_PKT_OUT_ENB CVMX_SLI_PKT_OUT_ENB_FUNC()
927 static inline uint64_t CVMX_SLI_PKT_OUT_ENB_FUNC(void)
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;
934 #define CVMX_SLI_PKT_OUT_ENB (0x0000000000001010ull)
936 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
937 #define CVMX_SLI_PKT_PCIE_PORT CVMX_SLI_PKT_PCIE_PORT_FUNC()
938 static inline uint64_t CVMX_SLI_PKT_PCIE_PORT_FUNC(void)
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;
945 #define CVMX_SLI_PKT_PCIE_PORT (0x00000000000010E0ull)
947 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
948 #define CVMX_SLI_PKT_PORT_IN_RST CVMX_SLI_PKT_PORT_IN_RST_FUNC()
949 static inline uint64_t CVMX_SLI_PKT_PORT_IN_RST_FUNC(void)
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;
956 #define CVMX_SLI_PKT_PORT_IN_RST (0x00000000000011F0ull)
958 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
959 #define CVMX_SLI_PKT_SLIST_ES CVMX_SLI_PKT_SLIST_ES_FUNC()
960 static inline uint64_t CVMX_SLI_PKT_SLIST_ES_FUNC(void)
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;
967 #define CVMX_SLI_PKT_SLIST_ES (0x0000000000001050ull)
969 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
970 #define CVMX_SLI_PKT_SLIST_NS CVMX_SLI_PKT_SLIST_NS_FUNC()
971 static inline uint64_t CVMX_SLI_PKT_SLIST_NS_FUNC(void)
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;
978 #define CVMX_SLI_PKT_SLIST_NS (0x0000000000001040ull)
980 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
981 #define CVMX_SLI_PKT_SLIST_ROR CVMX_SLI_PKT_SLIST_ROR_FUNC()
982 static inline uint64_t CVMX_SLI_PKT_SLIST_ROR_FUNC(void)
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;
989 #define CVMX_SLI_PKT_SLIST_ROR (0x0000000000001030ull)
991 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
992 #define CVMX_SLI_PKT_TIME_INT CVMX_SLI_PKT_TIME_INT_FUNC()
993 static inline uint64_t CVMX_SLI_PKT_TIME_INT_FUNC(void)
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;
1000 #define CVMX_SLI_PKT_TIME_INT (0x0000000000001140ull)
1002 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1003 #define CVMX_SLI_PKT_TIME_INT_ENB CVMX_SLI_PKT_TIME_INT_ENB_FUNC()
1004 static inline uint64_t CVMX_SLI_PKT_TIME_INT_ENB_FUNC(void)
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;
1011 #define CVMX_SLI_PKT_TIME_INT_ENB (0x0000000000001160ull)
1013 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1014 static inline uint64_t CVMX_SLI_PORTX_PKIND(unsigned long offset)
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;
1022 #define CVMX_SLI_PORTX_PKIND(offset) (0x0000000000000800ull + ((offset) & 31) * 16)
1024 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1025 static inline uint64_t CVMX_SLI_S2M_PORTX_CTL(unsigned long offset)
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;
1037 #define CVMX_SLI_S2M_PORTX_CTL(offset) (0x0000000000003D80ull + ((offset) & 3) * 16)
1039 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1040 #define CVMX_SLI_SCRATCH_1 CVMX_SLI_SCRATCH_1_FUNC()
1041 static inline uint64_t CVMX_SLI_SCRATCH_1_FUNC(void)
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;
1048 #define CVMX_SLI_SCRATCH_1 (0x00000000000003C0ull)
1050 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1051 #define CVMX_SLI_SCRATCH_2 CVMX_SLI_SCRATCH_2_FUNC()
1052 static inline uint64_t CVMX_SLI_SCRATCH_2_FUNC(void)
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;
1059 #define CVMX_SLI_SCRATCH_2 (0x00000000000003D0ull)
1061 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1062 #define CVMX_SLI_STATE1 CVMX_SLI_STATE1_FUNC()
1063 static inline uint64_t CVMX_SLI_STATE1_FUNC(void)
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;
1070 #define CVMX_SLI_STATE1 (0x0000000000000620ull)
1072 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1073 #define CVMX_SLI_STATE2 CVMX_SLI_STATE2_FUNC()
1074 static inline uint64_t CVMX_SLI_STATE2_FUNC(void)
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;
1081 #define CVMX_SLI_STATE2 (0x0000000000000630ull)
1083 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1084 #define CVMX_SLI_STATE3 CVMX_SLI_STATE3_FUNC()
1085 static inline uint64_t CVMX_SLI_STATE3_FUNC(void)
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;
1092 #define CVMX_SLI_STATE3 (0x0000000000000640ull)
1094 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1095 #define CVMX_SLI_TX_PIPE CVMX_SLI_TX_PIPE_FUNC()
1096 static inline uint64_t CVMX_SLI_TX_PIPE_FUNC(void)
1098 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
1099 cvmx_warn("CVMX_SLI_TX_PIPE not supported on this chip\n");
1100 return 0x0000000000001230ull;
1103 #define CVMX_SLI_TX_PIPE (0x0000000000001230ull)
1105 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1106 #define CVMX_SLI_WINDOW_CTL CVMX_SLI_WINDOW_CTL_FUNC()
1107 static inline uint64_t CVMX_SLI_WINDOW_CTL_FUNC(void)
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;
1114 #define CVMX_SLI_WINDOW_CTL (0x00000000000002E0ull)
1116 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1117 #define CVMX_SLI_WIN_RD_ADDR CVMX_SLI_WIN_RD_ADDR_FUNC()
1118 static inline uint64_t CVMX_SLI_WIN_RD_ADDR_FUNC(void)
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;
1125 #define CVMX_SLI_WIN_RD_ADDR (0x0000000000000010ull)
1127 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1128 #define CVMX_SLI_WIN_RD_DATA CVMX_SLI_WIN_RD_DATA_FUNC()
1129 static inline uint64_t CVMX_SLI_WIN_RD_DATA_FUNC(void)
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;
1136 #define CVMX_SLI_WIN_RD_DATA (0x0000000000000040ull)
1138 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1139 #define CVMX_SLI_WIN_WR_ADDR CVMX_SLI_WIN_WR_ADDR_FUNC()
1140 static inline uint64_t CVMX_SLI_WIN_WR_ADDR_FUNC(void)
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;
1147 #define CVMX_SLI_WIN_WR_ADDR (0x0000000000000000ull)
1149 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1150 #define CVMX_SLI_WIN_WR_DATA CVMX_SLI_WIN_WR_DATA_FUNC()
1151 static inline uint64_t CVMX_SLI_WIN_WR_DATA_FUNC(void)
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;
1158 #define CVMX_SLI_WIN_WR_DATA (0x0000000000000020ull)
1160 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1161 #define CVMX_SLI_WIN_WR_MASK CVMX_SLI_WIN_WR_MASK_FUNC()
1162 static inline uint64_t CVMX_SLI_WIN_WR_MASK_FUNC(void)
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;
1169 #define CVMX_SLI_WIN_WR_MASK (0x0000000000000030ull)
1173 * cvmx_sli_bist_status
1175 * SLI_BIST_STATUS = SLI's BIST Status Register
1177 * Results from BIST runs of SLI's memories.
1179 union cvmx_sli_bist_status {
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 */
1210 uint64_t ncb_cmd : 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;
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 */
1265 uint64_t ncb_cmd : 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;
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 */
1319 uint64_t ncb_cmd : 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;
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;
1352 typedef union cvmx_sli_bist_status cvmx_sli_bist_status_t;
1355 * cvmx_sli_ctl_port#
1357 * SLI_CTL_PORTX = SLI's Control Port X
1359 * Contains control for access for Port0
1361 union cvmx_sli_ctl_portx {
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
1382 uint64_t intd_map : 2; /**< Maps INTD to INTA(00), INTB(01), INTC(10) or
1384 uint64_t intc_map : 2; /**< Maps INTC to INTA(00), INTB(01), INTC(10) or
1386 uint64_t intb_map : 2; /**< Maps INTB to INTA(00), INTB(01), INTC(10) or
1388 uint64_t inta_map : 2; /**< Maps INTA to INTA(00), INTB(01), INTC(10) or
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
1397 The SLI will request a commit on the last store
1398 if more than one STORE operation is required on
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 */
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;
1419 uint64_t reserved_22_63 : 42;
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;
1430 typedef union cvmx_sli_ctl_portx cvmx_sli_ctl_portx_t;
1433 * cvmx_sli_ctl_status
1435 * SLI_CTL_STATUS = SLI Control Status Register
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.
1441 union cvmx_sli_ctl_status {
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
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. */
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;
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
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. */
1479 uint64_t chip_rev : 8;
1480 uint64_t p0_ntags : 6;
1481 uint64_t reserved_14_63 : 50;
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;
1491 typedef union cvmx_sli_ctl_status cvmx_sli_ctl_status_t;
1494 * cvmx_sli_data_out_cnt
1496 * SLI_DATA_OUT_CNT = SLI DATA OUT COUNT
1498 * The EXEC data out fifo-count and the data unload counter.
1500 union cvmx_sli_data_out_cnt {
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
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
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. */
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;
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;
1535 typedef union cvmx_sli_data_out_cnt cvmx_sli_data_out_cnt_t;
1540 * SLI_DBG_DATA = SLI Debug Data Register
1542 * Value returned on the debug-data lines from the RSLs
1544 union cvmx_sli_dbg_data {
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. */
1554 uint64_t dsel_ext : 1;
1555 uint64_t reserved_18_63 : 46;
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;
1566 typedef union cvmx_sli_dbg_data cvmx_sli_dbg_data_t;
1569 * cvmx_sli_dbg_select
1571 * SLI_DBG_SELECT = Debug Select Register
1573 * Contains the debug select value last written to the RSLs.
1575 union cvmx_sli_dbg_select {
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. */
1597 uint64_t dbg_sel : 32;
1598 uint64_t adbg_sel : 1;
1599 uint64_t reserved_33_63 : 31;
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;
1610 typedef union cvmx_sli_dbg_select cvmx_sli_dbg_select_t;
1615 * SLI_DMAx_CNT = SLI DMA Count
1617 * The DMA Count value.
1619 union cvmx_sli_dmax_cnt {
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]. */
1633 uint64_t reserved_32_63 : 32;
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;
1644 typedef union cvmx_sli_dmax_cnt cvmx_sli_dmax_cnt_t;
1647 * cvmx_sli_dma#_int_level
1649 * SLI_DMAx_INT_LEVEL = SLI DMAx Interrupt Level
1651 * Thresholds for DMA count and timer interrupts.
1653 union cvmx_sli_dmax_int_level {
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
1663 uint64_t cnt : 32; /**< Whenever SLI_DMAx_CNT[CNT] exceeds this value,
1664 SLI_INT_SUM[DCNT<x>] is set. */
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;
1678 typedef union cvmx_sli_dmax_int_level cvmx_sli_dmax_int_level_t;
1683 * SLI_DMAx_TIM = SLI DMA Timer
1685 * The DMA Timer value.
1687 union cvmx_sli_dmax_tim {
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 */
1697 uint64_t reserved_32_63 : 32;
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;
1708 typedef union cvmx_sli_dmax_tim cvmx_sli_dmax_tim_t;
1711 * cvmx_sli_int_enb_ciu
1713 * SLI_INT_ENB_CIU = SLI's Interrupt Enable CIU Register
1715 * Used to enable the various interrupting conditions of SLI
1717 union cvmx_sli_int_enb_ciu {
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. */
1785 uint64_t rml_to : 1;
1786 uint64_t reserved_1_1 : 1;
1787 uint64_t bar0_to : 1;
1788 uint64_t iob2big : 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;
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;
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. */
1898 uint64_t rml_to : 1;
1899 uint64_t reserved_1_1 : 1;
1900 uint64_t bar0_to : 1;
1901 uint64_t iob2big : 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;
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;
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. */
2000 uint64_t rml_to : 1;
2001 uint64_t reserved_1_1 : 1;
2002 uint64_t bar0_to : 1;
2003 uint64_t iob2big : 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;
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;
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. */
2095 uint64_t rml_to : 1;
2096 uint64_t reserved_1_1 : 1;
2097 uint64_t bar0_to : 1;
2098 uint64_t iob2big : 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;
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;
2133 struct cvmx_sli_int_enb_ciu_cn68xx cn68xxp1;
2134 struct cvmx_sli_int_enb_ciu_cn61xx cnf71xx;
2136 typedef union cvmx_sli_int_enb_ciu cvmx_sli_int_enb_ciu_t;
2139 * cvmx_sli_int_enb_port#
2141 * SLI_INT_ENB_PORTX = SLI's Interrupt Enable Register per mac port
2143 * Used to allow the generation of interrupts (MSI/INTA) to the PORT X
2146 * This CSR is not used when the corresponding MAC is sRIO.
2149 union cvmx_sli_int_enb_portx {
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. */
2224 uint64_t rml_to : 1;
2225 uint64_t reserved_1_1 : 1;
2226 uint64_t bar0_to : 1;
2227 uint64_t iob2big : 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;
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;
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. */
2345 uint64_t rml_to : 1;
2346 uint64_t reserved_1_1 : 1;
2347 uint64_t bar0_to : 1;
2348 uint64_t iob2big : 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;
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;
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. */
2456 uint64_t rml_to : 1;
2457 uint64_t reserved_1_1 : 1;
2458 uint64_t bar0_to : 1;
2459 uint64_t iob2big : 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;
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;
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. */
2561 uint64_t rml_to : 1;
2562 uint64_t reserved_1_1 : 1;
2563 uint64_t bar0_to : 1;
2564 uint64_t iob2big : 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;
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;
2601 struct cvmx_sli_int_enb_portx_cn68xx cn68xxp1;
2602 struct cvmx_sli_int_enb_portx_cn61xx cnf71xx;
2604 typedef union cvmx_sli_int_enb_portx cvmx_sli_int_enb_portx_t;
2609 * SLI_INT_SUM = SLI Interrupt Summary Register
2611 * Set when an interrupt condition occurs, write '1' to clear.
2613 union cvmx_sli_int_sum {
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
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
2626 uint64_t sprt0_err : 1; /**< When an error response received on SLI port 0
2628 uint64_t pins_err : 1; /**< When a read error occurs on a packet instruction
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
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
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
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
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
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
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
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. */
2713 uint64_t rml_to : 1;
2714 uint64_t reserved_1_1 : 1;
2715 uint64_t bar0_to : 1;
2716 uint64_t iob2big : 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;
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;
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
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
2772 uint64_t sprt0_err : 1; /**< When an error response received on SLI port 0
2774 uint64_t pins_err : 1; /**< When a read error occurs on a packet instruction
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
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
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
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
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
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
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
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. */
2859 uint64_t rml_to : 1;
2860 uint64_t reserved_1_1 : 1;
2861 uint64_t bar0_to : 1;
2862 uint64_t iob2big : 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;
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;
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
2913 uint64_t reserved_58_59 : 2;
2914 uint64_t sprt1_err : 1; /**< When an error response received on SLI port 1
2916 uint64_t sprt0_err : 1; /**< When an error response received on SLI port 0
2918 uint64_t pins_err : 1; /**< When a read error occurs on a packet instruction
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
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
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
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
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
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
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
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. */
2995 uint64_t rml_to : 1;
2996 uint64_t reserved_1_1 : 1;
2997 uint64_t bar0_to : 1;
2998 uint64_t iob2big : 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;
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;
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
3043 uint64_t reserved_58_59 : 2;
3044 uint64_t sprt1_err : 1; /**< When an error response received on SLI port 1
3046 uint64_t sprt0_err : 1; /**< When an error response received on SLI port 0
3048 uint64_t pins_err : 1; /**< When a read error occurs on a packet instruction
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
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
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
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
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
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
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
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. */
3124 uint64_t rml_to : 1;
3125 uint64_t reserved_1_1 : 1;
3126 uint64_t bar0_to : 1;
3127 uint64_t iob2big : 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;
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;
3164 struct cvmx_sli_int_sum_cn68xx cn68xxp1;
3165 struct cvmx_sli_int_sum_cn61xx cnf71xx;
3167 typedef union cvmx_sli_int_sum cvmx_sli_int_sum_t;
3170 * cvmx_sli_last_win_rdata0
3172 * SLI_LAST_WIN_RDATA0 = SLI Last Window Read Data
3174 * The data from the last initiated window read by MAC 0.
3176 union cvmx_sli_last_win_rdata0 {
3178 struct cvmx_sli_last_win_rdata0_s {
3179 #ifdef __BIG_ENDIAN_BITFIELD
3180 uint64_t data : 64; /**< Last window read data. */
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;
3193 typedef union cvmx_sli_last_win_rdata0 cvmx_sli_last_win_rdata0_t;
3196 * cvmx_sli_last_win_rdata1
3198 * SLI_LAST_WIN_RDATA1 = SLI Last Window Read Data
3200 * The data from the last initiated window read by MAC 1.
3202 union cvmx_sli_last_win_rdata1 {
3204 struct cvmx_sli_last_win_rdata1_s {
3205 #ifdef __BIG_ENDIAN_BITFIELD
3206 uint64_t data : 64; /**< Last window read data. */
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;
3219 typedef union cvmx_sli_last_win_rdata1 cvmx_sli_last_win_rdata1_t;
3222 * cvmx_sli_last_win_rdata2
3224 * SLI_LAST_WIN_RDATA2 = SLI Last Window Read Data
3226 * The data from the last initiated window read by MAC 2.
3228 union cvmx_sli_last_win_rdata2 {
3230 struct cvmx_sli_last_win_rdata2_s {
3231 #ifdef __BIG_ENDIAN_BITFIELD
3232 uint64_t data : 64; /**< Last window read data. */
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;
3241 typedef union cvmx_sli_last_win_rdata2 cvmx_sli_last_win_rdata2_t;
3244 * cvmx_sli_last_win_rdata3
3246 * SLI_LAST_WIN_RDATA3 = SLI Last Window Read Data
3248 * The data from the last initiated window read by MAC 3.
3250 union cvmx_sli_last_win_rdata3 {
3252 struct cvmx_sli_last_win_rdata3_s {
3253 #ifdef __BIG_ENDIAN_BITFIELD
3254 uint64_t data : 64; /**< Last window read data. */
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;
3263 typedef union cvmx_sli_last_win_rdata3 cvmx_sli_last_win_rdata3_t;
3266 * cvmx_sli_mac_credit_cnt
3268 * SLI_MAC_CREDIT_CNT = SLI MAC Credit Count
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
3274 union cvmx_sli_mac_credit_cnt {
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. */
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;
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. */
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;
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;
3345 typedef union cvmx_sli_mac_credit_cnt cvmx_sli_mac_credit_cnt_t;
3348 * cvmx_sli_mac_credit_cnt2
3350 * SLI_MAC_CREDIT_CNT2 = SLI MAC Credit Count2
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
3356 union cvmx_sli_mac_credit_cnt2 {
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. */
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;
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;
3399 typedef union cvmx_sli_mac_credit_cnt2 cvmx_sli_mac_credit_cnt2_t;
3402 * cvmx_sli_mac_number
3404 * 0x13DA0 - 0x13DF0 reserved for ports 2 - 7
3406 * SLI_MAC_NUMBER = SLI MAC Number
3408 * When read from a MAC port it returns the MAC's port number.
3410 union cvmx_sli_mac_number {
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. */
3419 uint64_t a_mode : 1;
3420 uint64_t reserved_9_63 : 55;
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. */
3430 uint64_t reserved_8_63 : 56;
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;
3438 typedef union cvmx_sli_mac_number cvmx_sli_mac_number_t;
3441 * cvmx_sli_mem_access_ctl
3443 * SLI_MEM_ACCESS_CTL = SLI's Memory Access Control
3445 * Contains control for access to the MAC address space.
3447 union cvmx_sli_mem_access_ctl {
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. */
3461 uint64_t timer : 10;
3462 uint64_t max_word : 4;
3463 uint64_t reserved_14_63 : 50;
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;
3474 typedef union cvmx_sli_mem_access_ctl cvmx_sli_mem_access_ctl_t;
3477 * cvmx_sli_mem_access_subid#
3480 * // * 8070 - 80C0 saved for ports 2 through 7
3486 * SLI_MEM_ACCESS_SUBIDX = SLI Memory Access SubidX Register
3488 * Contains address index and control bits for access to memory from Core PPs.
3490 union cvmx_sli_mem_access_subidx {
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
3510 - ADDRTYPE<0> is the relaxed-order attribute
3511 - ADDRTYPE<1> is the no-snoop attribute
3513 - ADDRTYPE<1:0> help select an SRIO*_S2M_TYPE*
3515 uint64_t rtype : 2; /**< ADDRTYPE<1:0> for reads to this subid
3517 - ADDRTYPE<0> is the relaxed-order attribute
3518 - ADDRTYPE<1> is the no-snoop attribute
3520 - ADDRTYPE<1:0> help select an SRIO*_S2M_TYPE*
3522 uint64_t reserved_0_29 : 30;
3524 uint64_t reserved_0_29 : 30;
3529 uint64_t nmerge : 1;
3532 uint64_t reserved_43_63 : 21;
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
3553 - ADDRTYPE<0> is the relaxed-order attribute
3554 - ADDRTYPE<1> is the no-snoop attribute
3556 - ADDRTYPE<1:0> help select an SRIO*_S2M_TYPE*
3558 uint64_t rtype : 2; /**< ADDRTYPE<1:0> for reads to this subid
3560 - ADDRTYPE<0> is the relaxed-order attribute
3561 - ADDRTYPE<1> is the no-snoop attribute
3563 - ADDRTYPE<1:0> help select an SRIO*_S2M_TYPE*
3565 uint64_t ba : 30; /**< Address Bits <63:34> for reads/writes that use
3573 uint64_t nmerge : 1;
3576 uint64_t reserved_43_63 : 21;
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
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
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
3608 uint64_t reserved_0_1 : 2;
3610 uint64_t reserved_0_1 : 2;
3616 uint64_t nmerge : 1;
3619 uint64_t reserved_43_63 : 21;
3622 struct cvmx_sli_mem_access_subidx_cn68xx cn68xxp1;
3623 struct cvmx_sli_mem_access_subidx_cn61xx cnf71xx;
3625 typedef union cvmx_sli_mem_access_subidx cvmx_sli_mem_access_subidx_t;
3630 * SLI_MSI_ENB0 = SLI MSI Enable0
3632 * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV0.
3634 union cvmx_sli_msi_enb0 {
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. */
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;
3651 typedef union cvmx_sli_msi_enb0 cvmx_sli_msi_enb0_t;
3656 * SLI_MSI_ENB1 = SLI MSI Enable1
3658 * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV1.
3660 union cvmx_sli_msi_enb1 {
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. */
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;
3677 typedef union cvmx_sli_msi_enb1 cvmx_sli_msi_enb1_t;
3682 * SLI_MSI_ENB2 = SLI MSI Enable2
3684 * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV2.
3686 union cvmx_sli_msi_enb2 {
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. */
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;
3703 typedef union cvmx_sli_msi_enb2 cvmx_sli_msi_enb2_t;
3708 * SLI_MSI_ENB3 = SLI MSI Enable3
3710 * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV3.
3712 union cvmx_sli_msi_enb3 {
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. */
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;
3729 typedef union cvmx_sli_msi_enb3 cvmx_sli_msi_enb3_t;
3734 * SLI_MSI_RCV0 = SLI MSI Receive0
3736 * Contains bits [63:0] of the 256 bits of MSI interrupts.
3738 union cvmx_sli_msi_rcv0 {
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. */
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;
3755 typedef union cvmx_sli_msi_rcv0 cvmx_sli_msi_rcv0_t;
3760 * SLI_MSI_RCV1 = SLI MSI Receive1
3762 * Contains bits [127:64] of the 256 bits of MSI interrupts.
3764 union cvmx_sli_msi_rcv1 {
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. */
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;
3781 typedef union cvmx_sli_msi_rcv1 cvmx_sli_msi_rcv1_t;
3786 * SLI_MSI_RCV2 = SLI MSI Receive2
3788 * Contains bits [191:128] of the 256 bits of MSI interrupts.
3790 union cvmx_sli_msi_rcv2 {
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. */
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;
3807 typedef union cvmx_sli_msi_rcv2 cvmx_sli_msi_rcv2_t;
3812 * SLI_MSI_RCV3 = SLI MSI Receive3
3814 * Contains bits [255:192] of the 256 bits of MSI interrupts.
3816 union cvmx_sli_msi_rcv3 {
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. */
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;
3833 typedef union cvmx_sli_msi_rcv3 cvmx_sli_msi_rcv3_t;
3836 * cvmx_sli_msi_rd_map
3838 * SLI_MSI_RD_MAP = SLI MSI Read MAP
3840 * Used to read the mapping function of the SLI_PCIE_MSI_RCV to SLI_MSI_RCV registers.
3842 union cvmx_sli_msi_rd_map {
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. */
3852 uint64_t msi_int : 8;
3853 uint64_t rd_int : 8;
3854 uint64_t reserved_16_63 : 48;
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;
3865 typedef union cvmx_sli_msi_rd_map cvmx_sli_msi_rd_map_t;
3868 * cvmx_sli_msi_w1c_enb0
3870 * SLI_MSI_W1C_ENB0 = SLI MSI Write 1 To Clear Enable0
3872 * Used to clear bits in SLI_MSI_ENB0.
3874 union cvmx_sli_msi_w1c_enb0 {
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. */
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;
3893 typedef union cvmx_sli_msi_w1c_enb0 cvmx_sli_msi_w1c_enb0_t;
3896 * cvmx_sli_msi_w1c_enb1
3898 * SLI_MSI_W1C_ENB1 = SLI MSI Write 1 To Clear Enable1
3900 * Used to clear bits in SLI_MSI_ENB1.
3902 union cvmx_sli_msi_w1c_enb1 {
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. */
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;
3921 typedef union cvmx_sli_msi_w1c_enb1 cvmx_sli_msi_w1c_enb1_t;
3924 * cvmx_sli_msi_w1c_enb2
3926 * SLI_MSI_W1C_ENB2 = SLI MSI Write 1 To Clear Enable2
3928 * Used to clear bits in SLI_MSI_ENB2.
3930 union cvmx_sli_msi_w1c_enb2 {
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. */
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;
3949 typedef union cvmx_sli_msi_w1c_enb2 cvmx_sli_msi_w1c_enb2_t;
3952 * cvmx_sli_msi_w1c_enb3
3954 * SLI_MSI_W1C_ENB3 = SLI MSI Write 1 To Clear Enable3
3956 * Used to clear bits in SLI_MSI_ENB3.
3958 union cvmx_sli_msi_w1c_enb3 {
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. */
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;
3977 typedef union cvmx_sli_msi_w1c_enb3 cvmx_sli_msi_w1c_enb3_t;
3980 * cvmx_sli_msi_w1s_enb0
3982 * SLI_MSI_W1S_ENB0 = SLI MSI Write 1 To Set Enable0
3984 * Used to set bits in SLI_MSI_ENB0.
3986 union cvmx_sli_msi_w1s_enb0 {
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. */
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;
4005 typedef union cvmx_sli_msi_w1s_enb0 cvmx_sli_msi_w1s_enb0_t;
4008 * cvmx_sli_msi_w1s_enb1
4010 * SLI_MSI_W1S_ENB0 = SLI MSI Write 1 To Set Enable1
4012 * Used to set bits in SLI_MSI_ENB1.
4014 union cvmx_sli_msi_w1s_enb1 {
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. */
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;
4033 typedef union cvmx_sli_msi_w1s_enb1 cvmx_sli_msi_w1s_enb1_t;
4036 * cvmx_sli_msi_w1s_enb2
4038 * SLI_MSI_W1S_ENB2 = SLI MSI Write 1 To Set Enable2
4040 * Used to set bits in SLI_MSI_ENB2.
4042 union cvmx_sli_msi_w1s_enb2 {
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. */
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;
4061 typedef union cvmx_sli_msi_w1s_enb2 cvmx_sli_msi_w1s_enb2_t;
4064 * cvmx_sli_msi_w1s_enb3
4066 * SLI_MSI_W1S_ENB3 = SLI MSI Write 1 To Set Enable3
4068 * Used to set bits in SLI_MSI_ENB3.
4070 union cvmx_sli_msi_w1s_enb3 {
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. */
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;
4089 typedef union cvmx_sli_msi_w1s_enb3 cvmx_sli_msi_w1s_enb3_t;
4092 * cvmx_sli_msi_wr_map
4094 * SLI_MSI_WR_MAP = SLI MSI Write MAP
4096 * Used to write the mapping function of the SLI_PCIE_MSI_RCV to SLI_MSI_RCV registers.
4098 union cvmx_sli_msi_wr_map {
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. */
4110 uint64_t msi_int : 8;
4111 uint64_t ciu_int : 8;
4112 uint64_t reserved_16_63 : 48;
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;
4123 typedef union cvmx_sli_msi_wr_map cvmx_sli_msi_wr_map_t;
4126 * cvmx_sli_pcie_msi_rcv
4128 * SLI_PCIE_MSI_RCV = SLI MAC MSI Receive
4130 * Register where MSI writes are directed from the MAC.
4132 union cvmx_sli_pcie_msi_rcv {
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. */
4144 uint64_t reserved_8_63 : 56;
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;
4155 typedef union cvmx_sli_pcie_msi_rcv cvmx_sli_pcie_msi_rcv_t;
4158 * cvmx_sli_pcie_msi_rcv_b1
4160 * SLI_PCIE_MSI_RCV_B1 = SLI MAC MSI Receive Byte 1
4162 * Register where MSI writes are directed from the MAC.
4165 * This CSR can be used by PCIe and sRIO MACs.
4168 union cvmx_sli_pcie_msi_rcv_b1 {
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;
4180 uint64_t reserved_0_7 : 8;
4182 uint64_t reserved_16_63 : 48;
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;
4193 typedef union cvmx_sli_pcie_msi_rcv_b1 cvmx_sli_pcie_msi_rcv_b1_t;
4196 * cvmx_sli_pcie_msi_rcv_b2
4198 * SLI_PCIE_MSI_RCV_B2 = SLI MAC MSI Receive Byte 2
4200 * Register where MSI writes are directed from the MAC.
4203 * This CSR can be used by PCIe and sRIO MACs.
4206 union cvmx_sli_pcie_msi_rcv_b2 {
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;
4218 uint64_t reserved_0_15 : 16;
4220 uint64_t reserved_24_63 : 40;
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;
4231 typedef union cvmx_sli_pcie_msi_rcv_b2 cvmx_sli_pcie_msi_rcv_b2_t;
4234 * cvmx_sli_pcie_msi_rcv_b3
4236 * SLI_PCIE_MSI_RCV_B3 = SLI MAC MSI Receive Byte 3
4238 * Register where MSI writes are directed from the MAC.
4241 * This CSR can be used by PCIe and sRIO MACs.
4244 union cvmx_sli_pcie_msi_rcv_b3 {
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;
4256 uint64_t reserved_0_23 : 24;
4258 uint64_t reserved_32_63 : 32;
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;
4269 typedef union cvmx_sli_pcie_msi_rcv_b3 cvmx_sli_pcie_msi_rcv_b3_t;
4272 * cvmx_sli_pkt#_cnts
4274 * SLI_PKT[0..31]_CNTS = SLI Packet ring# Counts
4276 * The counters for output rings.
4278 union cvmx_sli_pktx_cnts {
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
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
4301 uint64_t timer : 22;
4302 uint64_t reserved_54_63 : 10;
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;
4313 typedef union cvmx_sli_pktx_cnts cvmx_sli_pktx_cnts_t;
4316 * cvmx_sli_pkt#_in_bp
4318 * SLI_PKT[0..31]_IN_BP = SLI Packet ring# Input Backpressure
4320 * The counters and thresholds for input packets to apply backpressure to processing of the packets.
4322 union cvmx_sli_pktx_in_bp {
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. */
4341 uint64_t wmark : 32;
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;
4350 typedef union cvmx_sli_pktx_in_bp cvmx_sli_pktx_in_bp_t;
4353 * cvmx_sli_pkt#_instr_baddr
4355 * SLI_PKT[0..31]_INSTR_BADDR = SLI Packet ring# Instruction Base Address
4357 * Start of Instruction for input packets.
4359 union cvmx_sli_pktx_instr_baddr {
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;
4366 uint64_t reserved_0_2 : 3;
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;
4378 typedef union cvmx_sli_pktx_instr_baddr cvmx_sli_pktx_instr_baddr_t;
4381 * cvmx_sli_pkt#_instr_baoff_dbell
4383 * SLI_PKT[0..31]_INSTR_BAOFF_DBELL = SLI Packet ring# Instruction Base Address Offset and Doorbell
4385 * The doorbell and base address offset for next read.
4387 union cvmx_sli_pktx_instr_baoff_dbell {
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'. */
4398 uint64_t dbell : 32;
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;
4410 typedef union cvmx_sli_pktx_instr_baoff_dbell cvmx_sli_pktx_instr_baoff_dbell_t;
4413 * cvmx_sli_pkt#_instr_fifo_rsize
4415 * SLI_PKT[0..31]_INSTR_FIFO_RSIZE = SLI Packet ring# Instruction FIFO and Ring Size.
4417 * Fifo field and ring size for Instructions.
4419 union cvmx_sli_pktx_instr_fifo_rsize {
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. */
4429 uint64_t rsize : 32;
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;
4444 typedef union cvmx_sli_pktx_instr_fifo_rsize cvmx_sli_pktx_instr_fifo_rsize_t;
4447 * cvmx_sli_pkt#_instr_header
4449 * SLI_PKT[0..31]_INSTR_HEADER = SLI Packet ring# Instruction Header.
4451 * VAlues used to build input packet header.
4453 union cvmx_sli_pktx_instr_header {
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) */
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;
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;
4520 uint64_t reserved_44_63 : 20;
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) */
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;
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;
4586 uint64_t reserved_44_63 : 20;
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;
4596 typedef union cvmx_sli_pktx_instr_header cvmx_sli_pktx_instr_header_t;
4599 * cvmx_sli_pkt#_out_size
4601 * SLI_PKT[0..31]_OUT_SIZE = SLI Packet Out Size
4603 * Contains the BSIZE and ISIZE for output packet ports.
4605 union cvmx_sli_pktx_out_size {
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. */
4614 uint64_t bsize : 16;
4616 uint64_t reserved_23_63 : 41;
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;
4627 typedef union cvmx_sli_pktx_out_size cvmx_sli_pktx_out_size_t;
4630 * cvmx_sli_pkt#_slist_baddr
4632 * SLI_PKT[0..31]_SLIST_BADDR = SLI Packet ring# Scatter List Base Address
4634 * Start of Scatter List for output packet pointers - MUST be 16 byte alligned
4636 union cvmx_sli_pktx_slist_baddr {
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;
4643 uint64_t reserved_0_3 : 4;
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;
4655 typedef union cvmx_sli_pktx_slist_baddr cvmx_sli_pktx_slist_baddr_t;
4658 * cvmx_sli_pkt#_slist_baoff_dbell
4660 * SLI_PKT[0..31]_SLIST_BAOFF_DBELL = SLI Packet ring# Scatter List Base Address Offset and Doorbell
4662 * The doorbell and base address offset for next read.
4664 union cvmx_sli_pktx_slist_baoff_dbell {
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
4677 A write of 0xFFFFFFFF will clear DBELL and AOFF */
4679 uint64_t dbell : 32;
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;
4691 typedef union cvmx_sli_pktx_slist_baoff_dbell cvmx_sli_pktx_slist_baoff_dbell_t;
4694 * cvmx_sli_pkt#_slist_fifo_rsize
4696 * SLI_PKT[0..31]_SLIST_FIFO_RSIZE = SLI Packet ring# Scatter List FIFO and Ring Size.
4698 * The number of scatter pointer pairs in the scatter list.
4700 union cvmx_sli_pktx_slist_fifo_rsize {
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. */
4708 uint64_t rsize : 32;
4709 uint64_t reserved_32_63 : 32;
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;
4720 typedef union cvmx_sli_pktx_slist_fifo_rsize cvmx_sli_pktx_slist_fifo_rsize_t;
4723 * cvmx_sli_pkt_cnt_int
4725 * SLI_PKT_CNT_INT = SLI Packet Counter Interrupt
4727 * The packets rings that are interrupting because of Packet Counters.
4729 union cvmx_sli_pkt_cnt_int {
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
4741 uint64_t reserved_32_63 : 32;
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;
4752 typedef union cvmx_sli_pkt_cnt_int cvmx_sli_pkt_cnt_int_t;
4755 * cvmx_sli_pkt_cnt_int_enb
4757 * SLI_PKT_CNT_INT_ENB = SLI Packet Counter Interrupt Enable
4759 * Enable for the packets rings that are interrupting because of Packet Counters.
4761 union cvmx_sli_pkt_cnt_int_enb {
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
4773 uint64_t reserved_32_63 : 32;
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;
4784 typedef union cvmx_sli_pkt_cnt_int_enb cvmx_sli_pkt_cnt_int_enb_t;
4789 * SLI_PKT_CTL = SLI Packet Control
4791 * Control for packets.
4793 union cvmx_sli_pkt_ctl {
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
4804 uint64_t pkt_bp : 4; /**< When set '1' enable the port level backpressure for
4805 PKO ports associated with the bit. */
4807 uint64_t pkt_bp : 4;
4808 uint64_t ring_en : 1;
4809 uint64_t reserved_5_63 : 59;
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;
4820 typedef union cvmx_sli_pkt_ctl cvmx_sli_pkt_ctl_t;
4823 * cvmx_sli_pkt_data_out_es
4825 * SLI_PKT_DATA_OUT_ES = SLI's Packet Data Out Endian Swap
4827 * The Endian Swap for writing Data Out.
4829 union cvmx_sli_pkt_data_out_es {
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. */
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;
4854 typedef union cvmx_sli_pkt_data_out_es cvmx_sli_pkt_data_out_es_t;
4857 * cvmx_sli_pkt_data_out_ns
4859 * SLI_PKT_DATA_OUT_NS = SLI's Packet Data Out No Snoop
4861 * The NS field for the TLP when writing packet data.
4863 union cvmx_sli_pkt_data_out_ns {
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
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. */
4879 uint64_t reserved_32_63 : 32;
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;
4890 typedef union cvmx_sli_pkt_data_out_ns cvmx_sli_pkt_data_out_ns_t;
4893 * cvmx_sli_pkt_data_out_ror
4895 * SLI_PKT_DATA_OUT_ROR = SLI's Packet Data Out Relaxed Ordering
4897 * The ROR field for the TLP when writing Packet Data.
4899 union cvmx_sli_pkt_data_out_ror {
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
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. */
4915 uint64_t reserved_32_63 : 32;
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;
4926 typedef union cvmx_sli_pkt_data_out_ror cvmx_sli_pkt_data_out_ror_t;
4929 * cvmx_sli_pkt_dpaddr
4931 * SLI_PKT_DPADDR = SLI's Packet Data Pointer Addr
4933 * Used to detemine address and attributes for packet data writes.
4935 union cvmx_sli_pkt_dpaddr {
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,
4954 uint64_t reserved_32_63 : 32;
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;
4965 typedef union cvmx_sli_pkt_dpaddr cvmx_sli_pkt_dpaddr_t;
4968 * cvmx_sli_pkt_in_bp
4970 * SLI_PKT_IN_BP = SLI Packet Input Backpressure
4972 * Which input rings have backpressure applied.
4974 union cvmx_sli_pkt_in_bp {
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. */
4987 uint64_t reserved_32_63 : 32;
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;
4996 typedef union cvmx_sli_pkt_in_bp cvmx_sli_pkt_in_bp_t;
4999 * cvmx_sli_pkt_in_done#_cnts
5001 * SLI_PKT_IN_DONE[0..31]_CNTS = SLI Instruction Done ring# Counts
5003 * Counters for instructions completed on Input rings.
5005 union cvmx_sli_pkt_in_donex_cnts {
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. */
5015 uint64_t reserved_32_63 : 32;
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;
5026 typedef union cvmx_sli_pkt_in_donex_cnts cvmx_sli_pkt_in_donex_cnts_t;
5029 * cvmx_sli_pkt_in_instr_counts
5031 * SLI_PKT_IN_INSTR_COUNTS = SLI Packet Input Instrutction Counts
5033 * Keeps track of the number of instructions read into the FIFO and Packets sent to IPD.
5035 union cvmx_sli_pkt_in_instr_counts {
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
5042 to the Packet-ring is in reset. */
5044 uint64_t rd_cnt : 32;
5045 uint64_t wr_cnt : 32;
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;
5056 typedef union cvmx_sli_pkt_in_instr_counts cvmx_sli_pkt_in_instr_counts_t;
5059 * cvmx_sli_pkt_in_pcie_port
5061 * SLI_PKT_IN_PCIE_PORT = SLI's Packet In To MAC Port Assignment
5063 * Assigns Packet Input rings to MAC ports.
5065 union cvmx_sli_pkt_in_pcie_port {
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. */
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;
5086 typedef union cvmx_sli_pkt_in_pcie_port cvmx_sli_pkt_in_pcie_port_t;
5089 * cvmx_sli_pkt_input_control
5091 * SLI_PKT_INPUT_CONTROL = SLI's Packet Input Control
5093 * Control for reads for gather list and instructions.
5095 union cvmx_sli_pkt_input_control {
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
5110 1. Wait 2ms to allow any outstanding reads to return
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
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
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
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
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
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
5173 ADDRTYPE<0> is the relaxed-order attribute for PCIe
5174 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5179 uint64_t use_csr : 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;
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
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
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
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
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
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
5257 ADDRTYPE<0> is the relaxed-order attribute for PCIe
5258 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5263 uint64_t use_csr : 1;
5267 uint64_t pbp_dhi : 13;
5268 uint64_t pkt_rr : 1;
5269 uint64_t reserved_23_63 : 41;
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;
5278 typedef union cvmx_sli_pkt_input_control cvmx_sli_pkt_input_control_t;
5281 * cvmx_sli_pkt_instr_enb
5283 * SLI_PKT_INSTR_ENB = SLI's Packet Instruction Enable
5285 * Enables the instruction fetch for a Packet-ring.
5287 union cvmx_sli_pkt_instr_enb {
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. */
5295 uint64_t reserved_32_63 : 32;
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;
5306 typedef union cvmx_sli_pkt_instr_enb cvmx_sli_pkt_instr_enb_t;
5309 * cvmx_sli_pkt_instr_rd_size
5311 * SLI_PKT_INSTR_RD_SIZE = SLI Instruction Read Size
5313 * The number of instruction allowed to be read at one time.
5315 union cvmx_sli_pkt_instr_rd_size {
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
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
5329 3 - 4 Instructions */
5331 uint64_t rdsize : 64;
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;
5342 typedef union cvmx_sli_pkt_instr_rd_size cvmx_sli_pkt_instr_rd_size_t;
5345 * cvmx_sli_pkt_instr_size
5347 * SLI_PKT_INSTR_SIZE = SLI's Packet Instruction Size
5349 * Determines if instructions are 64 or 32 byte in size for a Packet-ring.
5351 union cvmx_sli_pkt_instr_size {
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. */
5359 uint64_t is_64b : 32;
5360 uint64_t reserved_32_63 : 32;
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;
5371 typedef union cvmx_sli_pkt_instr_size cvmx_sli_pkt_instr_size_t;
5374 * cvmx_sli_pkt_int_levels
5376 * 0x90F0 reserved SLI_PKT_PCIE_PORT2
5379 * SLI_PKT_INT_LEVELS = SLI's Packet Interrupt Levels
5381 * Output packet interrupt levels.
5383 union cvmx_sli_pkt_int_levels {
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 */
5397 uint64_t reserved_54_63 : 10;
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;
5408 typedef union cvmx_sli_pkt_int_levels cvmx_sli_pkt_int_levels_t;
5413 * SLI_PKT_IPTR = SLI's Packet Info Poitner
5415 * Controls using the Info-Pointer to store length and data.
5417 union cvmx_sli_pkt_iptr {
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. */
5426 uint64_t reserved_32_63 : 32;
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;
5437 typedef union cvmx_sli_pkt_iptr cvmx_sli_pkt_iptr_t;
5440 * cvmx_sli_pkt_out_bmode
5442 * SLI_PKT_OUT_BMODE = SLI's Packet Out Byte Mode
5444 * Control the updating of the SLI_PKT#_CNT register.
5446 union cvmx_sli_pkt_out_bmode {
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
5453 When BMODE<i>=1, SLI_PKTi_CNTS[CNT] is a byte
5454 counter, else SLI_PKTi_CNTS[CNT] is a packet
5457 uint64_t bmode : 32;
5458 uint64_t reserved_32_63 : 32;
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;
5469 typedef union cvmx_sli_pkt_out_bmode cvmx_sli_pkt_out_bmode_t;
5472 * cvmx_sli_pkt_out_bp_en
5474 * SLI_PKT_OUT_BP_EN = SLI Packet Output Backpressure Enable
5476 * Enables sending backpressure to the PKO.
5478 union cvmx_sli_pkt_out_bp_en {
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). */
5488 uint64_t bp_en : 32;
5489 uint64_t reserved_32_63 : 32;
5492 struct cvmx_sli_pkt_out_bp_en_s cn68xx;
5493 struct cvmx_sli_pkt_out_bp_en_s cn68xxp1;
5495 typedef union cvmx_sli_pkt_out_bp_en cvmx_sli_pkt_out_bp_en_t;
5498 * cvmx_sli_pkt_out_enb
5500 * SLI_PKT_OUT_ENB = SLI's Packet Output Enable
5502 * Enables the output packet engines.
5504 union cvmx_sli_pkt_out_enb {
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'. */
5515 uint64_t reserved_32_63 : 32;
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;
5526 typedef union cvmx_sli_pkt_out_enb cvmx_sli_pkt_out_enb_t;
5529 * cvmx_sli_pkt_output_wmark
5531 * SLI_PKT_OUTPUT_WMARK = SLI's Packet Output Water Mark
5533 * Value that when the SLI_PKT#_SLIST_BAOFF_DBELL[DBELL] value is less then that backpressure for the rings will be applied.
5535 union cvmx_sli_pkt_output_wmark {
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. */
5543 uint64_t wmark : 32;
5544 uint64_t reserved_32_63 : 32;
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;
5555 typedef union cvmx_sli_pkt_output_wmark cvmx_sli_pkt_output_wmark_t;
5558 * cvmx_sli_pkt_pcie_port
5560 * SLI_PKT_PCIE_PORT = SLI's Packet To MAC Port Assignment
5562 * Assigns Packet Ports to MAC ports.
5564 union cvmx_sli_pkt_pcie_port {
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. */
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;
5585 typedef union cvmx_sli_pkt_pcie_port cvmx_sli_pkt_pcie_port_t;
5588 * cvmx_sli_pkt_port_in_rst
5595 * SLI_PKT_PORT_IN_RST = SLI Packet Port In Reset
5597 * Vector bits related to ring-port for ones that are reset.
5599 union cvmx_sli_pkt_port_in_rst {
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. */
5608 uint64_t out_rst : 32;
5609 uint64_t in_rst : 32;
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;
5620 typedef union cvmx_sli_pkt_port_in_rst cvmx_sli_pkt_port_in_rst_t;
5623 * cvmx_sli_pkt_slist_es
5625 * SLI_PKT_SLIST_ES = SLI's Packet Scatter List Endian Swap
5627 * The Endian Swap for Scatter List Read.
5629 union cvmx_sli_pkt_slist_es {
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
5639 ES<1:0> is the endian-swap attribute for these MAC
5640 memory space reads. */
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;
5653 typedef union cvmx_sli_pkt_slist_es cvmx_sli_pkt_slist_es_t;
5656 * cvmx_sli_pkt_slist_ns
5658 * SLI_PKT_SLIST_NS = SLI's Packet Scatter List No Snoop
5660 * The NS field for the TLP when fetching Scatter List.
5662 union cvmx_sli_pkt_slist_ns {
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
5673 ADDRTYPE<1> is the relaxed-order attribute for PCIe
5674 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5677 uint64_t reserved_32_63 : 32;
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;
5688 typedef union cvmx_sli_pkt_slist_ns cvmx_sli_pkt_slist_ns_t;
5691 * cvmx_sli_pkt_slist_ror
5693 * SLI_PKT_SLIST_ROR = SLI's Packet Scatter List Relaxed Ordering
5695 * The ROR field for the TLP when fetching Scatter List.
5697 union cvmx_sli_pkt_slist_ror {
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
5708 ADDRTYPE<0> is the relaxed-order attribute for PCIe
5709 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
5712 uint64_t reserved_32_63 : 32;
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;
5723 typedef union cvmx_sli_pkt_slist_ror cvmx_sli_pkt_slist_ror_t;
5726 * cvmx_sli_pkt_time_int
5728 * SLI_PKT_TIME_INT = SLI Packet Timer Interrupt
5730 * The packets rings that are interrupting because of Packet Timers.
5732 union cvmx_sli_pkt_time_int {
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
5744 uint64_t reserved_32_63 : 32;
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;
5755 typedef union cvmx_sli_pkt_time_int cvmx_sli_pkt_time_int_t;
5758 * cvmx_sli_pkt_time_int_enb
5760 * SLI_PKT_TIME_INT_ENB = SLI Packet Timer Interrupt Enable
5762 * The packets rings that are interrupting because of Packet Timers.
5764 union cvmx_sli_pkt_time_int_enb {
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
5776 uint64_t reserved_32_63 : 32;
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;
5787 typedef union cvmx_sli_pkt_time_int_enb cvmx_sli_pkt_time_int_enb_t;
5790 * cvmx_sli_port#_pkind
5792 * SLI_PORT[0..31]_PKIND = SLI Port Pkind
5794 * The SLI/DPI supports 32 input rings for fetching input packets. This register maps the input-rings (0-31) to a PKIND.
5796 union cvmx_sli_portx_pkind {
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. */
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;
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. */
5842 uint64_t reserved_6_7 : 2;
5843 uint64_t bpkind : 6;
5844 uint64_t reserved_14_63 : 50;
5848 typedef union cvmx_sli_portx_pkind cvmx_sli_portx_pkind_t;
5851 * cvmx_sli_s2m_port#_ctl
5853 * SLI_S2M_PORTX_CTL = SLI's S2M Port 0 Control
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.
5860 union cvmx_sli_s2m_portx_ctl {
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
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
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
5887 For a sRIO MAC, this field should indicate a size
5888 of 256B or smaller. */
5891 uint64_t bar0_d : 1;
5892 uint64_t wind_d : 1;
5893 uint64_t reserved_5_63 : 59;
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;
5904 typedef union cvmx_sli_s2m_portx_ctl cvmx_sli_s2m_portx_ctl_t;
5907 * cvmx_sli_scratch_1
5909 * SLI_SCRATCH_1 = SLI's Scratch 1
5911 * A general purpose 64 bit register for SW use.
5913 union cvmx_sli_scratch_1 {
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. */
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;
5930 typedef union cvmx_sli_scratch_1 cvmx_sli_scratch_1_t;
5933 * cvmx_sli_scratch_2
5935 * SLI_SCRATCH_2 = SLI's Scratch 2
5937 * A general purpose 64 bit register for SW use.
5939 union cvmx_sli_scratch_2 {
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. */
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;
5956 typedef union cvmx_sli_scratch_2 cvmx_sli_scratch_2_t;
5961 * SLI_STATE1 = SLI State 1
5963 * State machines in SLI. For debug.
5965 union cvmx_sli_state1 {
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 */
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;
5988 typedef union cvmx_sli_state1 cvmx_sli_state1_t;
5993 * SLI_STATE2 = SLI State 2
5995 * State machines in SLI. For debug.
5997 union cvmx_sli_state2 {
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 */
6015 uint64_t reserved_47_47 : 1;
6017 uint64_t reserved_56_63 : 8;
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;
6028 typedef union cvmx_sli_state2 cvmx_sli_state2_t;
6033 * SLI_STATE3 = SLI State 3
6035 * State machines in SLI. For debug.
6037 union cvmx_sli_state3 {
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 */
6051 uint64_t reserved_56_63 : 8;
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;
6062 typedef union cvmx_sli_state3 cvmx_sli_state3_t;
6067 * SLI_TX_PIPE = SLI Packet TX Pipe
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].
6075 union cvmx_sli_tx_pipe {
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
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
6096 3) The pipe ranges must be consistent with
6097 the PKO configuration. */
6100 uint64_t reserved_7_15 : 9;
6102 uint64_t reserved_24_63 : 40;
6105 struct cvmx_sli_tx_pipe_s cn68xx;
6106 struct cvmx_sli_tx_pipe_s cn68xxp1;
6108 typedef union cvmx_sli_tx_pipe cvmx_sli_tx_pipe_t;
6111 * cvmx_sli_win_rd_addr
6113 * SLI_WIN_RD_ADDR = SLI Window Read Address Register
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.
6118 union cvmx_sli_win_rd_addr {
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.
6131 When [47:43] == SLI & [42:40] == 0 bits [39:0] are:
6132 [39:32] == x, Not Used
6134 [23:0] == RSL Register Offset */
6136 uint64_t rd_addr : 48;
6138 uint64_t ld_cmd : 2;
6139 uint64_t reserved_51_63 : 13;
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;
6150 typedef union cvmx_sli_win_rd_addr cvmx_sli_win_rd_addr_t;
6153 * cvmx_sli_win_rd_data
6155 * SLI_WIN_RD_DATA = SLI Window Read Data Register
6157 * Reading this register causes a window read operation to take place. Address read is that contained in the SLI_WIN_RD_ADDR
6160 union cvmx_sli_win_rd_data {
6162 struct cvmx_sli_win_rd_data_s {
6163 #ifdef __BIG_ENDIAN_BITFIELD
6164 uint64_t rd_data : 64; /**< The read data. */
6166 uint64_t rd_data : 64;
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;
6177 typedef union cvmx_sli_win_rd_data cvmx_sli_win_rd_data_t;
6180 * cvmx_sli_win_wr_addr
6182 * Add Lock Register (Set on Read, Clear on write), SW uses to control access to BAR0 space.
6184 * Total Address is 16Kb; 0x0000 - 0x3fff, 0x000 - 0x7fe(Reg, every other 8B)
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)
6190 * SLI_WIN_WR_ADDR = SLI Window Write Address Register
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).
6195 * This register should NOT be used to write SLI_* registers.
6197 union cvmx_sli_win_wr_addr {
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
6204 uint64_t wr_addr : 45; /**< The address that will be written to when the
6205 SLI_WIN_WR_DATA register is written.
6208 When [47:43] == SLI & [42:40] == 0 bits [39:0] are:
6209 [39:32] == x, Not Used
6211 [23:3] == RSL Register Offset */
6212 uint64_t reserved_0_2 : 3;
6214 uint64_t reserved_0_2 : 3;
6215 uint64_t wr_addr : 45;
6217 uint64_t reserved_49_63 : 15;
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;
6228 typedef union cvmx_sli_win_wr_addr cvmx_sli_win_wr_addr_t;
6231 * cvmx_sli_win_wr_data
6233 * SLI_WIN_WR_DATA = SLI Window Write Data Register
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.
6238 union cvmx_sli_win_wr_data {
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
6246 uint64_t wr_data : 64;
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;
6257 typedef union cvmx_sli_win_wr_data cvmx_sli_win_wr_data_t;
6260 * cvmx_sli_win_wr_mask
6262 * SLI_WIN_WR_MASK = SLI Window Write Mask Register
6264 * Contains the mask for the data in the SLI_WIN_WR_DATA Register.
6266 union cvmx_sli_win_wr_mask {
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 */
6277 uint64_t wr_mask : 8;
6278 uint64_t reserved_8_63 : 56;
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;
6289 typedef union cvmx_sli_win_wr_mask cvmx_sli_win_wr_mask_t;
6292 * cvmx_sli_window_ctl
6295 * // * 81e0 - 82d0 Reserved for future subids
6298 * SLI_WINDOW_CTL = SLI's Window Control
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.
6305 union cvmx_sli_window_ctl {
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. */
6317 uint64_t reserved_32_63 : 32;
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;
6328 typedef union cvmx_sli_window_ctl cvmx_sli_window_ctl_t;