1 /***********************license start***************
2 * Copyright (c) 2003-2010 Cavium Networks (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 Networks 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 NETWORKS 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_TYPEDEFS_H__
53 #define __CVMX_SLI_TYPEDEFS_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_CN63XX)))
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_CN63XX) && ((offset <= 1)))))
71 cvmx_warn("CVMX_SLI_CTL_PORTX(%lu) is invalid on this chip\n", offset);
72 return 0x0000000000000050ull + ((offset) & 1) * 16;
75 #define CVMX_SLI_CTL_PORTX(offset) (0x0000000000000050ull + ((offset) & 1) * 16)
77 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
78 #define CVMX_SLI_CTL_STATUS CVMX_SLI_CTL_STATUS_FUNC()
79 static inline uint64_t CVMX_SLI_CTL_STATUS_FUNC(void)
81 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
82 cvmx_warn("CVMX_SLI_CTL_STATUS not supported on this chip\n");
83 return 0x0000000000000570ull;
86 #define CVMX_SLI_CTL_STATUS (0x0000000000000570ull)
88 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
89 #define CVMX_SLI_DATA_OUT_CNT CVMX_SLI_DATA_OUT_CNT_FUNC()
90 static inline uint64_t CVMX_SLI_DATA_OUT_CNT_FUNC(void)
92 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
93 cvmx_warn("CVMX_SLI_DATA_OUT_CNT not supported on this chip\n");
94 return 0x00000000000005F0ull;
97 #define CVMX_SLI_DATA_OUT_CNT (0x00000000000005F0ull)
99 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
100 #define CVMX_SLI_DBG_DATA CVMX_SLI_DBG_DATA_FUNC()
101 static inline uint64_t CVMX_SLI_DBG_DATA_FUNC(void)
103 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
104 cvmx_warn("CVMX_SLI_DBG_DATA not supported on this chip\n");
105 return 0x0000000000000310ull;
108 #define CVMX_SLI_DBG_DATA (0x0000000000000310ull)
110 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
111 #define CVMX_SLI_DBG_SELECT CVMX_SLI_DBG_SELECT_FUNC()
112 static inline uint64_t CVMX_SLI_DBG_SELECT_FUNC(void)
114 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
115 cvmx_warn("CVMX_SLI_DBG_SELECT not supported on this chip\n");
116 return 0x0000000000000300ull;
119 #define CVMX_SLI_DBG_SELECT (0x0000000000000300ull)
121 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
122 static inline uint64_t CVMX_SLI_DMAX_CNT(unsigned long offset)
125 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1)))))
126 cvmx_warn("CVMX_SLI_DMAX_CNT(%lu) is invalid on this chip\n", offset);
127 return 0x0000000000000400ull + ((offset) & 1) * 16;
130 #define CVMX_SLI_DMAX_CNT(offset) (0x0000000000000400ull + ((offset) & 1) * 16)
132 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
133 static inline uint64_t CVMX_SLI_DMAX_INT_LEVEL(unsigned long offset)
136 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1)))))
137 cvmx_warn("CVMX_SLI_DMAX_INT_LEVEL(%lu) is invalid on this chip\n", offset);
138 return 0x00000000000003E0ull + ((offset) & 1) * 16;
141 #define CVMX_SLI_DMAX_INT_LEVEL(offset) (0x00000000000003E0ull + ((offset) & 1) * 16)
143 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
144 static inline uint64_t CVMX_SLI_DMAX_TIM(unsigned long offset)
147 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1)))))
148 cvmx_warn("CVMX_SLI_DMAX_TIM(%lu) is invalid on this chip\n", offset);
149 return 0x0000000000000420ull + ((offset) & 1) * 16;
152 #define CVMX_SLI_DMAX_TIM(offset) (0x0000000000000420ull + ((offset) & 1) * 16)
154 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
155 #define CVMX_SLI_INT_ENB_CIU CVMX_SLI_INT_ENB_CIU_FUNC()
156 static inline uint64_t CVMX_SLI_INT_ENB_CIU_FUNC(void)
158 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
159 cvmx_warn("CVMX_SLI_INT_ENB_CIU not supported on this chip\n");
160 return 0x0000000000003CD0ull;
163 #define CVMX_SLI_INT_ENB_CIU (0x0000000000003CD0ull)
165 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
166 static inline uint64_t CVMX_SLI_INT_ENB_PORTX(unsigned long offset)
169 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1)))))
170 cvmx_warn("CVMX_SLI_INT_ENB_PORTX(%lu) is invalid on this chip\n", offset);
171 return 0x0000000000000340ull + ((offset) & 1) * 16;
174 #define CVMX_SLI_INT_ENB_PORTX(offset) (0x0000000000000340ull + ((offset) & 1) * 16)
176 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
177 #define CVMX_SLI_INT_SUM CVMX_SLI_INT_SUM_FUNC()
178 static inline uint64_t CVMX_SLI_INT_SUM_FUNC(void)
180 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
181 cvmx_warn("CVMX_SLI_INT_SUM not supported on this chip\n");
182 return 0x0000000000000330ull;
185 #define CVMX_SLI_INT_SUM (0x0000000000000330ull)
187 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
188 #define CVMX_SLI_LAST_WIN_RDATA0 CVMX_SLI_LAST_WIN_RDATA0_FUNC()
189 static inline uint64_t CVMX_SLI_LAST_WIN_RDATA0_FUNC(void)
191 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
192 cvmx_warn("CVMX_SLI_LAST_WIN_RDATA0 not supported on this chip\n");
193 return 0x0000000000000600ull;
196 #define CVMX_SLI_LAST_WIN_RDATA0 (0x0000000000000600ull)
198 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
199 #define CVMX_SLI_LAST_WIN_RDATA1 CVMX_SLI_LAST_WIN_RDATA1_FUNC()
200 static inline uint64_t CVMX_SLI_LAST_WIN_RDATA1_FUNC(void)
202 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
203 cvmx_warn("CVMX_SLI_LAST_WIN_RDATA1 not supported on this chip\n");
204 return 0x0000000000000610ull;
207 #define CVMX_SLI_LAST_WIN_RDATA1 (0x0000000000000610ull)
209 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
210 #define CVMX_SLI_MAC_CREDIT_CNT CVMX_SLI_MAC_CREDIT_CNT_FUNC()
211 static inline uint64_t CVMX_SLI_MAC_CREDIT_CNT_FUNC(void)
213 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
214 cvmx_warn("CVMX_SLI_MAC_CREDIT_CNT not supported on this chip\n");
215 return 0x0000000000003D70ull;
218 #define CVMX_SLI_MAC_CREDIT_CNT (0x0000000000003D70ull)
220 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
221 #define CVMX_SLI_MAC_NUMBER CVMX_SLI_MAC_NUMBER_FUNC()
222 static inline uint64_t CVMX_SLI_MAC_NUMBER_FUNC(void)
224 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
225 cvmx_warn("CVMX_SLI_MAC_NUMBER not supported on this chip\n");
226 return 0x0000000000003E00ull;
229 #define CVMX_SLI_MAC_NUMBER (0x0000000000003E00ull)
231 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
232 #define CVMX_SLI_MEM_ACCESS_CTL CVMX_SLI_MEM_ACCESS_CTL_FUNC()
233 static inline uint64_t CVMX_SLI_MEM_ACCESS_CTL_FUNC(void)
235 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
236 cvmx_warn("CVMX_SLI_MEM_ACCESS_CTL not supported on this chip\n");
237 return 0x00000000000002F0ull;
240 #define CVMX_SLI_MEM_ACCESS_CTL (0x00000000000002F0ull)
242 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
243 static inline uint64_t CVMX_SLI_MEM_ACCESS_SUBIDX(unsigned long offset)
246 (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset >= 12) && (offset <= 27))))))
247 cvmx_warn("CVMX_SLI_MEM_ACCESS_SUBIDX(%lu) is invalid on this chip\n", offset);
248 return 0x00000000000001A0ull + ((offset) & 31) * 16 - 16*12;
251 #define CVMX_SLI_MEM_ACCESS_SUBIDX(offset) (0x00000000000001A0ull + ((offset) & 31) * 16 - 16*12)
253 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
254 #define CVMX_SLI_MSI_ENB0 CVMX_SLI_MSI_ENB0_FUNC()
255 static inline uint64_t CVMX_SLI_MSI_ENB0_FUNC(void)
257 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
258 cvmx_warn("CVMX_SLI_MSI_ENB0 not supported on this chip\n");
259 return 0x0000000000003C50ull;
262 #define CVMX_SLI_MSI_ENB0 (0x0000000000003C50ull)
264 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
265 #define CVMX_SLI_MSI_ENB1 CVMX_SLI_MSI_ENB1_FUNC()
266 static inline uint64_t CVMX_SLI_MSI_ENB1_FUNC(void)
268 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
269 cvmx_warn("CVMX_SLI_MSI_ENB1 not supported on this chip\n");
270 return 0x0000000000003C60ull;
273 #define CVMX_SLI_MSI_ENB1 (0x0000000000003C60ull)
275 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
276 #define CVMX_SLI_MSI_ENB2 CVMX_SLI_MSI_ENB2_FUNC()
277 static inline uint64_t CVMX_SLI_MSI_ENB2_FUNC(void)
279 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
280 cvmx_warn("CVMX_SLI_MSI_ENB2 not supported on this chip\n");
281 return 0x0000000000003C70ull;
284 #define CVMX_SLI_MSI_ENB2 (0x0000000000003C70ull)
286 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
287 #define CVMX_SLI_MSI_ENB3 CVMX_SLI_MSI_ENB3_FUNC()
288 static inline uint64_t CVMX_SLI_MSI_ENB3_FUNC(void)
290 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
291 cvmx_warn("CVMX_SLI_MSI_ENB3 not supported on this chip\n");
292 return 0x0000000000003C80ull;
295 #define CVMX_SLI_MSI_ENB3 (0x0000000000003C80ull)
297 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
298 #define CVMX_SLI_MSI_RCV0 CVMX_SLI_MSI_RCV0_FUNC()
299 static inline uint64_t CVMX_SLI_MSI_RCV0_FUNC(void)
301 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
302 cvmx_warn("CVMX_SLI_MSI_RCV0 not supported on this chip\n");
303 return 0x0000000000003C10ull;
306 #define CVMX_SLI_MSI_RCV0 (0x0000000000003C10ull)
308 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
309 #define CVMX_SLI_MSI_RCV1 CVMX_SLI_MSI_RCV1_FUNC()
310 static inline uint64_t CVMX_SLI_MSI_RCV1_FUNC(void)
312 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
313 cvmx_warn("CVMX_SLI_MSI_RCV1 not supported on this chip\n");
314 return 0x0000000000003C20ull;
317 #define CVMX_SLI_MSI_RCV1 (0x0000000000003C20ull)
319 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
320 #define CVMX_SLI_MSI_RCV2 CVMX_SLI_MSI_RCV2_FUNC()
321 static inline uint64_t CVMX_SLI_MSI_RCV2_FUNC(void)
323 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
324 cvmx_warn("CVMX_SLI_MSI_RCV2 not supported on this chip\n");
325 return 0x0000000000003C30ull;
328 #define CVMX_SLI_MSI_RCV2 (0x0000000000003C30ull)
330 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
331 #define CVMX_SLI_MSI_RCV3 CVMX_SLI_MSI_RCV3_FUNC()
332 static inline uint64_t CVMX_SLI_MSI_RCV3_FUNC(void)
334 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
335 cvmx_warn("CVMX_SLI_MSI_RCV3 not supported on this chip\n");
336 return 0x0000000000003C40ull;
339 #define CVMX_SLI_MSI_RCV3 (0x0000000000003C40ull)
341 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
342 #define CVMX_SLI_MSI_RD_MAP CVMX_SLI_MSI_RD_MAP_FUNC()
343 static inline uint64_t CVMX_SLI_MSI_RD_MAP_FUNC(void)
345 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
346 cvmx_warn("CVMX_SLI_MSI_RD_MAP not supported on this chip\n");
347 return 0x0000000000003CA0ull;
350 #define CVMX_SLI_MSI_RD_MAP (0x0000000000003CA0ull)
352 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
353 #define CVMX_SLI_MSI_W1C_ENB0 CVMX_SLI_MSI_W1C_ENB0_FUNC()
354 static inline uint64_t CVMX_SLI_MSI_W1C_ENB0_FUNC(void)
356 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
357 cvmx_warn("CVMX_SLI_MSI_W1C_ENB0 not supported on this chip\n");
358 return 0x0000000000003CF0ull;
361 #define CVMX_SLI_MSI_W1C_ENB0 (0x0000000000003CF0ull)
363 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
364 #define CVMX_SLI_MSI_W1C_ENB1 CVMX_SLI_MSI_W1C_ENB1_FUNC()
365 static inline uint64_t CVMX_SLI_MSI_W1C_ENB1_FUNC(void)
367 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
368 cvmx_warn("CVMX_SLI_MSI_W1C_ENB1 not supported on this chip\n");
369 return 0x0000000000003D00ull;
372 #define CVMX_SLI_MSI_W1C_ENB1 (0x0000000000003D00ull)
374 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
375 #define CVMX_SLI_MSI_W1C_ENB2 CVMX_SLI_MSI_W1C_ENB2_FUNC()
376 static inline uint64_t CVMX_SLI_MSI_W1C_ENB2_FUNC(void)
378 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
379 cvmx_warn("CVMX_SLI_MSI_W1C_ENB2 not supported on this chip\n");
380 return 0x0000000000003D10ull;
383 #define CVMX_SLI_MSI_W1C_ENB2 (0x0000000000003D10ull)
385 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
386 #define CVMX_SLI_MSI_W1C_ENB3 CVMX_SLI_MSI_W1C_ENB3_FUNC()
387 static inline uint64_t CVMX_SLI_MSI_W1C_ENB3_FUNC(void)
389 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
390 cvmx_warn("CVMX_SLI_MSI_W1C_ENB3 not supported on this chip\n");
391 return 0x0000000000003D20ull;
394 #define CVMX_SLI_MSI_W1C_ENB3 (0x0000000000003D20ull)
396 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
397 #define CVMX_SLI_MSI_W1S_ENB0 CVMX_SLI_MSI_W1S_ENB0_FUNC()
398 static inline uint64_t CVMX_SLI_MSI_W1S_ENB0_FUNC(void)
400 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
401 cvmx_warn("CVMX_SLI_MSI_W1S_ENB0 not supported on this chip\n");
402 return 0x0000000000003D30ull;
405 #define CVMX_SLI_MSI_W1S_ENB0 (0x0000000000003D30ull)
407 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
408 #define CVMX_SLI_MSI_W1S_ENB1 CVMX_SLI_MSI_W1S_ENB1_FUNC()
409 static inline uint64_t CVMX_SLI_MSI_W1S_ENB1_FUNC(void)
411 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
412 cvmx_warn("CVMX_SLI_MSI_W1S_ENB1 not supported on this chip\n");
413 return 0x0000000000003D40ull;
416 #define CVMX_SLI_MSI_W1S_ENB1 (0x0000000000003D40ull)
418 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
419 #define CVMX_SLI_MSI_W1S_ENB2 CVMX_SLI_MSI_W1S_ENB2_FUNC()
420 static inline uint64_t CVMX_SLI_MSI_W1S_ENB2_FUNC(void)
422 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
423 cvmx_warn("CVMX_SLI_MSI_W1S_ENB2 not supported on this chip\n");
424 return 0x0000000000003D50ull;
427 #define CVMX_SLI_MSI_W1S_ENB2 (0x0000000000003D50ull)
429 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
430 #define CVMX_SLI_MSI_W1S_ENB3 CVMX_SLI_MSI_W1S_ENB3_FUNC()
431 static inline uint64_t CVMX_SLI_MSI_W1S_ENB3_FUNC(void)
433 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
434 cvmx_warn("CVMX_SLI_MSI_W1S_ENB3 not supported on this chip\n");
435 return 0x0000000000003D60ull;
438 #define CVMX_SLI_MSI_W1S_ENB3 (0x0000000000003D60ull)
440 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
441 #define CVMX_SLI_MSI_WR_MAP CVMX_SLI_MSI_WR_MAP_FUNC()
442 static inline uint64_t CVMX_SLI_MSI_WR_MAP_FUNC(void)
444 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
445 cvmx_warn("CVMX_SLI_MSI_WR_MAP not supported on this chip\n");
446 return 0x0000000000003C90ull;
449 #define CVMX_SLI_MSI_WR_MAP (0x0000000000003C90ull)
451 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
452 #define CVMX_SLI_PCIE_MSI_RCV CVMX_SLI_PCIE_MSI_RCV_FUNC()
453 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_FUNC(void)
455 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
456 cvmx_warn("CVMX_SLI_PCIE_MSI_RCV not supported on this chip\n");
457 return 0x0000000000003CB0ull;
460 #define CVMX_SLI_PCIE_MSI_RCV (0x0000000000003CB0ull)
462 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
463 #define CVMX_SLI_PCIE_MSI_RCV_B1 CVMX_SLI_PCIE_MSI_RCV_B1_FUNC()
464 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_B1_FUNC(void)
466 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
467 cvmx_warn("CVMX_SLI_PCIE_MSI_RCV_B1 not supported on this chip\n");
468 return 0x0000000000000650ull;
471 #define CVMX_SLI_PCIE_MSI_RCV_B1 (0x0000000000000650ull)
473 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
474 #define CVMX_SLI_PCIE_MSI_RCV_B2 CVMX_SLI_PCIE_MSI_RCV_B2_FUNC()
475 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_B2_FUNC(void)
477 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
478 cvmx_warn("CVMX_SLI_PCIE_MSI_RCV_B2 not supported on this chip\n");
479 return 0x0000000000000660ull;
482 #define CVMX_SLI_PCIE_MSI_RCV_B2 (0x0000000000000660ull)
484 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
485 #define CVMX_SLI_PCIE_MSI_RCV_B3 CVMX_SLI_PCIE_MSI_RCV_B3_FUNC()
486 static inline uint64_t CVMX_SLI_PCIE_MSI_RCV_B3_FUNC(void)
488 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
489 cvmx_warn("CVMX_SLI_PCIE_MSI_RCV_B3 not supported on this chip\n");
490 return 0x0000000000000670ull;
493 #define CVMX_SLI_PCIE_MSI_RCV_B3 (0x0000000000000670ull)
495 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
496 static inline uint64_t CVMX_SLI_PKTX_CNTS(unsigned long offset)
499 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
500 cvmx_warn("CVMX_SLI_PKTX_CNTS(%lu) is invalid on this chip\n", offset);
501 return 0x0000000000002400ull + ((offset) & 31) * 16;
504 #define CVMX_SLI_PKTX_CNTS(offset) (0x0000000000002400ull + ((offset) & 31) * 16)
506 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
507 static inline uint64_t CVMX_SLI_PKTX_INSTR_BADDR(unsigned long offset)
510 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
511 cvmx_warn("CVMX_SLI_PKTX_INSTR_BADDR(%lu) is invalid on this chip\n", offset);
512 return 0x0000000000002800ull + ((offset) & 31) * 16;
515 #define CVMX_SLI_PKTX_INSTR_BADDR(offset) (0x0000000000002800ull + ((offset) & 31) * 16)
517 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
518 static inline uint64_t CVMX_SLI_PKTX_INSTR_BAOFF_DBELL(unsigned long offset)
521 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
522 cvmx_warn("CVMX_SLI_PKTX_INSTR_BAOFF_DBELL(%lu) is invalid on this chip\n", offset);
523 return 0x0000000000002C00ull + ((offset) & 31) * 16;
526 #define CVMX_SLI_PKTX_INSTR_BAOFF_DBELL(offset) (0x0000000000002C00ull + ((offset) & 31) * 16)
528 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
529 static inline uint64_t CVMX_SLI_PKTX_INSTR_FIFO_RSIZE(unsigned long offset)
532 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
533 cvmx_warn("CVMX_SLI_PKTX_INSTR_FIFO_RSIZE(%lu) is invalid on this chip\n", offset);
534 return 0x0000000000003000ull + ((offset) & 31) * 16;
537 #define CVMX_SLI_PKTX_INSTR_FIFO_RSIZE(offset) (0x0000000000003000ull + ((offset) & 31) * 16)
539 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
540 static inline uint64_t CVMX_SLI_PKTX_INSTR_HEADER(unsigned long offset)
543 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
544 cvmx_warn("CVMX_SLI_PKTX_INSTR_HEADER(%lu) is invalid on this chip\n", offset);
545 return 0x0000000000003400ull + ((offset) & 31) * 16;
548 #define CVMX_SLI_PKTX_INSTR_HEADER(offset) (0x0000000000003400ull + ((offset) & 31) * 16)
550 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
551 static inline uint64_t CVMX_SLI_PKTX_IN_BP(unsigned long offset)
554 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
555 cvmx_warn("CVMX_SLI_PKTX_IN_BP(%lu) is invalid on this chip\n", offset);
556 return 0x0000000000003800ull + ((offset) & 31) * 16;
559 #define CVMX_SLI_PKTX_IN_BP(offset) (0x0000000000003800ull + ((offset) & 31) * 16)
561 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
562 static inline uint64_t CVMX_SLI_PKTX_OUT_SIZE(unsigned long offset)
565 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
566 cvmx_warn("CVMX_SLI_PKTX_OUT_SIZE(%lu) is invalid on this chip\n", offset);
567 return 0x0000000000000C00ull + ((offset) & 31) * 16;
570 #define CVMX_SLI_PKTX_OUT_SIZE(offset) (0x0000000000000C00ull + ((offset) & 31) * 16)
572 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
573 static inline uint64_t CVMX_SLI_PKTX_SLIST_BADDR(unsigned long offset)
576 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
577 cvmx_warn("CVMX_SLI_PKTX_SLIST_BADDR(%lu) is invalid on this chip\n", offset);
578 return 0x0000000000001400ull + ((offset) & 31) * 16;
581 #define CVMX_SLI_PKTX_SLIST_BADDR(offset) (0x0000000000001400ull + ((offset) & 31) * 16)
583 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
584 static inline uint64_t CVMX_SLI_PKTX_SLIST_BAOFF_DBELL(unsigned long offset)
587 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
588 cvmx_warn("CVMX_SLI_PKTX_SLIST_BAOFF_DBELL(%lu) is invalid on this chip\n", offset);
589 return 0x0000000000001800ull + ((offset) & 31) * 16;
592 #define CVMX_SLI_PKTX_SLIST_BAOFF_DBELL(offset) (0x0000000000001800ull + ((offset) & 31) * 16)
594 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
595 static inline uint64_t CVMX_SLI_PKTX_SLIST_FIFO_RSIZE(unsigned long offset)
598 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
599 cvmx_warn("CVMX_SLI_PKTX_SLIST_FIFO_RSIZE(%lu) is invalid on this chip\n", offset);
600 return 0x0000000000001C00ull + ((offset) & 31) * 16;
603 #define CVMX_SLI_PKTX_SLIST_FIFO_RSIZE(offset) (0x0000000000001C00ull + ((offset) & 31) * 16)
605 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
606 #define CVMX_SLI_PKT_CNT_INT CVMX_SLI_PKT_CNT_INT_FUNC()
607 static inline uint64_t CVMX_SLI_PKT_CNT_INT_FUNC(void)
609 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
610 cvmx_warn("CVMX_SLI_PKT_CNT_INT not supported on this chip\n");
611 return 0x0000000000001130ull;
614 #define CVMX_SLI_PKT_CNT_INT (0x0000000000001130ull)
616 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
617 #define CVMX_SLI_PKT_CNT_INT_ENB CVMX_SLI_PKT_CNT_INT_ENB_FUNC()
618 static inline uint64_t CVMX_SLI_PKT_CNT_INT_ENB_FUNC(void)
620 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
621 cvmx_warn("CVMX_SLI_PKT_CNT_INT_ENB not supported on this chip\n");
622 return 0x0000000000001150ull;
625 #define CVMX_SLI_PKT_CNT_INT_ENB (0x0000000000001150ull)
627 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
628 #define CVMX_SLI_PKT_CTL CVMX_SLI_PKT_CTL_FUNC()
629 static inline uint64_t CVMX_SLI_PKT_CTL_FUNC(void)
631 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
632 cvmx_warn("CVMX_SLI_PKT_CTL not supported on this chip\n");
633 return 0x0000000000001220ull;
636 #define CVMX_SLI_PKT_CTL (0x0000000000001220ull)
638 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
639 #define CVMX_SLI_PKT_DATA_OUT_ES CVMX_SLI_PKT_DATA_OUT_ES_FUNC()
640 static inline uint64_t CVMX_SLI_PKT_DATA_OUT_ES_FUNC(void)
642 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
643 cvmx_warn("CVMX_SLI_PKT_DATA_OUT_ES not supported on this chip\n");
644 return 0x00000000000010B0ull;
647 #define CVMX_SLI_PKT_DATA_OUT_ES (0x00000000000010B0ull)
649 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
650 #define CVMX_SLI_PKT_DATA_OUT_NS CVMX_SLI_PKT_DATA_OUT_NS_FUNC()
651 static inline uint64_t CVMX_SLI_PKT_DATA_OUT_NS_FUNC(void)
653 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
654 cvmx_warn("CVMX_SLI_PKT_DATA_OUT_NS not supported on this chip\n");
655 return 0x00000000000010A0ull;
658 #define CVMX_SLI_PKT_DATA_OUT_NS (0x00000000000010A0ull)
660 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
661 #define CVMX_SLI_PKT_DATA_OUT_ROR CVMX_SLI_PKT_DATA_OUT_ROR_FUNC()
662 static inline uint64_t CVMX_SLI_PKT_DATA_OUT_ROR_FUNC(void)
664 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
665 cvmx_warn("CVMX_SLI_PKT_DATA_OUT_ROR not supported on this chip\n");
666 return 0x0000000000001090ull;
669 #define CVMX_SLI_PKT_DATA_OUT_ROR (0x0000000000001090ull)
671 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
672 #define CVMX_SLI_PKT_DPADDR CVMX_SLI_PKT_DPADDR_FUNC()
673 static inline uint64_t CVMX_SLI_PKT_DPADDR_FUNC(void)
675 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
676 cvmx_warn("CVMX_SLI_PKT_DPADDR not supported on this chip\n");
677 return 0x0000000000001080ull;
680 #define CVMX_SLI_PKT_DPADDR (0x0000000000001080ull)
682 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
683 #define CVMX_SLI_PKT_INPUT_CONTROL CVMX_SLI_PKT_INPUT_CONTROL_FUNC()
684 static inline uint64_t CVMX_SLI_PKT_INPUT_CONTROL_FUNC(void)
686 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
687 cvmx_warn("CVMX_SLI_PKT_INPUT_CONTROL not supported on this chip\n");
688 return 0x0000000000001170ull;
691 #define CVMX_SLI_PKT_INPUT_CONTROL (0x0000000000001170ull)
693 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
694 #define CVMX_SLI_PKT_INSTR_ENB CVMX_SLI_PKT_INSTR_ENB_FUNC()
695 static inline uint64_t CVMX_SLI_PKT_INSTR_ENB_FUNC(void)
697 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
698 cvmx_warn("CVMX_SLI_PKT_INSTR_ENB not supported on this chip\n");
699 return 0x0000000000001000ull;
702 #define CVMX_SLI_PKT_INSTR_ENB (0x0000000000001000ull)
704 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
705 #define CVMX_SLI_PKT_INSTR_RD_SIZE CVMX_SLI_PKT_INSTR_RD_SIZE_FUNC()
706 static inline uint64_t CVMX_SLI_PKT_INSTR_RD_SIZE_FUNC(void)
708 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
709 cvmx_warn("CVMX_SLI_PKT_INSTR_RD_SIZE not supported on this chip\n");
710 return 0x00000000000011A0ull;
713 #define CVMX_SLI_PKT_INSTR_RD_SIZE (0x00000000000011A0ull)
715 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
716 #define CVMX_SLI_PKT_INSTR_SIZE CVMX_SLI_PKT_INSTR_SIZE_FUNC()
717 static inline uint64_t CVMX_SLI_PKT_INSTR_SIZE_FUNC(void)
719 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
720 cvmx_warn("CVMX_SLI_PKT_INSTR_SIZE not supported on this chip\n");
721 return 0x0000000000001020ull;
724 #define CVMX_SLI_PKT_INSTR_SIZE (0x0000000000001020ull)
726 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
727 #define CVMX_SLI_PKT_INT_LEVELS CVMX_SLI_PKT_INT_LEVELS_FUNC()
728 static inline uint64_t CVMX_SLI_PKT_INT_LEVELS_FUNC(void)
730 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
731 cvmx_warn("CVMX_SLI_PKT_INT_LEVELS not supported on this chip\n");
732 return 0x0000000000001120ull;
735 #define CVMX_SLI_PKT_INT_LEVELS (0x0000000000001120ull)
737 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
738 #define CVMX_SLI_PKT_IN_BP CVMX_SLI_PKT_IN_BP_FUNC()
739 static inline uint64_t CVMX_SLI_PKT_IN_BP_FUNC(void)
741 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
742 cvmx_warn("CVMX_SLI_PKT_IN_BP not supported on this chip\n");
743 return 0x0000000000001210ull;
746 #define CVMX_SLI_PKT_IN_BP (0x0000000000001210ull)
748 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
749 static inline uint64_t CVMX_SLI_PKT_IN_DONEX_CNTS(unsigned long offset)
752 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31)))))
753 cvmx_warn("CVMX_SLI_PKT_IN_DONEX_CNTS(%lu) is invalid on this chip\n", offset);
754 return 0x0000000000002000ull + ((offset) & 31) * 16;
757 #define CVMX_SLI_PKT_IN_DONEX_CNTS(offset) (0x0000000000002000ull + ((offset) & 31) * 16)
759 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
760 #define CVMX_SLI_PKT_IN_INSTR_COUNTS CVMX_SLI_PKT_IN_INSTR_COUNTS_FUNC()
761 static inline uint64_t CVMX_SLI_PKT_IN_INSTR_COUNTS_FUNC(void)
763 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
764 cvmx_warn("CVMX_SLI_PKT_IN_INSTR_COUNTS not supported on this chip\n");
765 return 0x0000000000001200ull;
768 #define CVMX_SLI_PKT_IN_INSTR_COUNTS (0x0000000000001200ull)
770 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
771 #define CVMX_SLI_PKT_IN_PCIE_PORT CVMX_SLI_PKT_IN_PCIE_PORT_FUNC()
772 static inline uint64_t CVMX_SLI_PKT_IN_PCIE_PORT_FUNC(void)
774 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
775 cvmx_warn("CVMX_SLI_PKT_IN_PCIE_PORT not supported on this chip\n");
776 return 0x00000000000011B0ull;
779 #define CVMX_SLI_PKT_IN_PCIE_PORT (0x00000000000011B0ull)
781 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
782 #define CVMX_SLI_PKT_IPTR CVMX_SLI_PKT_IPTR_FUNC()
783 static inline uint64_t CVMX_SLI_PKT_IPTR_FUNC(void)
785 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
786 cvmx_warn("CVMX_SLI_PKT_IPTR not supported on this chip\n");
787 return 0x0000000000001070ull;
790 #define CVMX_SLI_PKT_IPTR (0x0000000000001070ull)
792 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
793 #define CVMX_SLI_PKT_OUTPUT_WMARK CVMX_SLI_PKT_OUTPUT_WMARK_FUNC()
794 static inline uint64_t CVMX_SLI_PKT_OUTPUT_WMARK_FUNC(void)
796 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
797 cvmx_warn("CVMX_SLI_PKT_OUTPUT_WMARK not supported on this chip\n");
798 return 0x0000000000001180ull;
801 #define CVMX_SLI_PKT_OUTPUT_WMARK (0x0000000000001180ull)
803 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
804 #define CVMX_SLI_PKT_OUT_BMODE CVMX_SLI_PKT_OUT_BMODE_FUNC()
805 static inline uint64_t CVMX_SLI_PKT_OUT_BMODE_FUNC(void)
807 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
808 cvmx_warn("CVMX_SLI_PKT_OUT_BMODE not supported on this chip\n");
809 return 0x00000000000010D0ull;
812 #define CVMX_SLI_PKT_OUT_BMODE (0x00000000000010D0ull)
814 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
815 #define CVMX_SLI_PKT_OUT_ENB CVMX_SLI_PKT_OUT_ENB_FUNC()
816 static inline uint64_t CVMX_SLI_PKT_OUT_ENB_FUNC(void)
818 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
819 cvmx_warn("CVMX_SLI_PKT_OUT_ENB not supported on this chip\n");
820 return 0x0000000000001010ull;
823 #define CVMX_SLI_PKT_OUT_ENB (0x0000000000001010ull)
825 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
826 #define CVMX_SLI_PKT_PCIE_PORT CVMX_SLI_PKT_PCIE_PORT_FUNC()
827 static inline uint64_t CVMX_SLI_PKT_PCIE_PORT_FUNC(void)
829 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
830 cvmx_warn("CVMX_SLI_PKT_PCIE_PORT not supported on this chip\n");
831 return 0x00000000000010E0ull;
834 #define CVMX_SLI_PKT_PCIE_PORT (0x00000000000010E0ull)
836 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
837 #define CVMX_SLI_PKT_PORT_IN_RST CVMX_SLI_PKT_PORT_IN_RST_FUNC()
838 static inline uint64_t CVMX_SLI_PKT_PORT_IN_RST_FUNC(void)
840 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
841 cvmx_warn("CVMX_SLI_PKT_PORT_IN_RST not supported on this chip\n");
842 return 0x00000000000011F0ull;
845 #define CVMX_SLI_PKT_PORT_IN_RST (0x00000000000011F0ull)
847 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
848 #define CVMX_SLI_PKT_SLIST_ES CVMX_SLI_PKT_SLIST_ES_FUNC()
849 static inline uint64_t CVMX_SLI_PKT_SLIST_ES_FUNC(void)
851 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
852 cvmx_warn("CVMX_SLI_PKT_SLIST_ES not supported on this chip\n");
853 return 0x0000000000001050ull;
856 #define CVMX_SLI_PKT_SLIST_ES (0x0000000000001050ull)
858 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
859 #define CVMX_SLI_PKT_SLIST_NS CVMX_SLI_PKT_SLIST_NS_FUNC()
860 static inline uint64_t CVMX_SLI_PKT_SLIST_NS_FUNC(void)
862 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
863 cvmx_warn("CVMX_SLI_PKT_SLIST_NS not supported on this chip\n");
864 return 0x0000000000001040ull;
867 #define CVMX_SLI_PKT_SLIST_NS (0x0000000000001040ull)
869 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
870 #define CVMX_SLI_PKT_SLIST_ROR CVMX_SLI_PKT_SLIST_ROR_FUNC()
871 static inline uint64_t CVMX_SLI_PKT_SLIST_ROR_FUNC(void)
873 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
874 cvmx_warn("CVMX_SLI_PKT_SLIST_ROR not supported on this chip\n");
875 return 0x0000000000001030ull;
878 #define CVMX_SLI_PKT_SLIST_ROR (0x0000000000001030ull)
880 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
881 #define CVMX_SLI_PKT_TIME_INT CVMX_SLI_PKT_TIME_INT_FUNC()
882 static inline uint64_t CVMX_SLI_PKT_TIME_INT_FUNC(void)
884 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
885 cvmx_warn("CVMX_SLI_PKT_TIME_INT not supported on this chip\n");
886 return 0x0000000000001140ull;
889 #define CVMX_SLI_PKT_TIME_INT (0x0000000000001140ull)
891 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
892 #define CVMX_SLI_PKT_TIME_INT_ENB CVMX_SLI_PKT_TIME_INT_ENB_FUNC()
893 static inline uint64_t CVMX_SLI_PKT_TIME_INT_ENB_FUNC(void)
895 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
896 cvmx_warn("CVMX_SLI_PKT_TIME_INT_ENB not supported on this chip\n");
897 return 0x0000000000001160ull;
900 #define CVMX_SLI_PKT_TIME_INT_ENB (0x0000000000001160ull)
902 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
903 static inline uint64_t CVMX_SLI_S2M_PORTX_CTL(unsigned long offset)
906 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1)))))
907 cvmx_warn("CVMX_SLI_S2M_PORTX_CTL(%lu) is invalid on this chip\n", offset);
908 return 0x0000000000003D80ull + ((offset) & 1) * 16;
911 #define CVMX_SLI_S2M_PORTX_CTL(offset) (0x0000000000003D80ull + ((offset) & 1) * 16)
913 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
914 #define CVMX_SLI_SCRATCH_1 CVMX_SLI_SCRATCH_1_FUNC()
915 static inline uint64_t CVMX_SLI_SCRATCH_1_FUNC(void)
917 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
918 cvmx_warn("CVMX_SLI_SCRATCH_1 not supported on this chip\n");
919 return 0x00000000000003C0ull;
922 #define CVMX_SLI_SCRATCH_1 (0x00000000000003C0ull)
924 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
925 #define CVMX_SLI_SCRATCH_2 CVMX_SLI_SCRATCH_2_FUNC()
926 static inline uint64_t CVMX_SLI_SCRATCH_2_FUNC(void)
928 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
929 cvmx_warn("CVMX_SLI_SCRATCH_2 not supported on this chip\n");
930 return 0x00000000000003D0ull;
933 #define CVMX_SLI_SCRATCH_2 (0x00000000000003D0ull)
935 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
936 #define CVMX_SLI_STATE1 CVMX_SLI_STATE1_FUNC()
937 static inline uint64_t CVMX_SLI_STATE1_FUNC(void)
939 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
940 cvmx_warn("CVMX_SLI_STATE1 not supported on this chip\n");
941 return 0x0000000000000620ull;
944 #define CVMX_SLI_STATE1 (0x0000000000000620ull)
946 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
947 #define CVMX_SLI_STATE2 CVMX_SLI_STATE2_FUNC()
948 static inline uint64_t CVMX_SLI_STATE2_FUNC(void)
950 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
951 cvmx_warn("CVMX_SLI_STATE2 not supported on this chip\n");
952 return 0x0000000000000630ull;
955 #define CVMX_SLI_STATE2 (0x0000000000000630ull)
957 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
958 #define CVMX_SLI_STATE3 CVMX_SLI_STATE3_FUNC()
959 static inline uint64_t CVMX_SLI_STATE3_FUNC(void)
961 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
962 cvmx_warn("CVMX_SLI_STATE3 not supported on this chip\n");
963 return 0x0000000000000640ull;
966 #define CVMX_SLI_STATE3 (0x0000000000000640ull)
968 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
969 #define CVMX_SLI_WINDOW_CTL CVMX_SLI_WINDOW_CTL_FUNC()
970 static inline uint64_t CVMX_SLI_WINDOW_CTL_FUNC(void)
972 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
973 cvmx_warn("CVMX_SLI_WINDOW_CTL not supported on this chip\n");
974 return 0x00000000000002E0ull;
977 #define CVMX_SLI_WINDOW_CTL (0x00000000000002E0ull)
979 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
980 #define CVMX_SLI_WIN_RD_ADDR CVMX_SLI_WIN_RD_ADDR_FUNC()
981 static inline uint64_t CVMX_SLI_WIN_RD_ADDR_FUNC(void)
983 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
984 cvmx_warn("CVMX_SLI_WIN_RD_ADDR not supported on this chip\n");
985 return 0x0000000000000010ull;
988 #define CVMX_SLI_WIN_RD_ADDR (0x0000000000000010ull)
990 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
991 #define CVMX_SLI_WIN_RD_DATA CVMX_SLI_WIN_RD_DATA_FUNC()
992 static inline uint64_t CVMX_SLI_WIN_RD_DATA_FUNC(void)
994 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
995 cvmx_warn("CVMX_SLI_WIN_RD_DATA not supported on this chip\n");
996 return 0x0000000000000040ull;
999 #define CVMX_SLI_WIN_RD_DATA (0x0000000000000040ull)
1001 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1002 #define CVMX_SLI_WIN_WR_ADDR CVMX_SLI_WIN_WR_ADDR_FUNC()
1003 static inline uint64_t CVMX_SLI_WIN_WR_ADDR_FUNC(void)
1005 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
1006 cvmx_warn("CVMX_SLI_WIN_WR_ADDR not supported on this chip\n");
1007 return 0x0000000000000000ull;
1010 #define CVMX_SLI_WIN_WR_ADDR (0x0000000000000000ull)
1012 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1013 #define CVMX_SLI_WIN_WR_DATA CVMX_SLI_WIN_WR_DATA_FUNC()
1014 static inline uint64_t CVMX_SLI_WIN_WR_DATA_FUNC(void)
1016 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
1017 cvmx_warn("CVMX_SLI_WIN_WR_DATA not supported on this chip\n");
1018 return 0x0000000000000020ull;
1021 #define CVMX_SLI_WIN_WR_DATA (0x0000000000000020ull)
1023 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
1024 #define CVMX_SLI_WIN_WR_MASK CVMX_SLI_WIN_WR_MASK_FUNC()
1025 static inline uint64_t CVMX_SLI_WIN_WR_MASK_FUNC(void)
1027 if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
1028 cvmx_warn("CVMX_SLI_WIN_WR_MASK not supported on this chip\n");
1029 return 0x0000000000000030ull;
1032 #define CVMX_SLI_WIN_WR_MASK (0x0000000000000030ull)
1036 * cvmx_sli_bist_status
1038 * SLI_BIST_STATUS = SLI's BIST Status Register
1040 * Results from BIST runs of SLI's memories.
1042 union cvmx_sli_bist_status
1045 struct cvmx_sli_bist_status_s
1047 #if __BYTE_ORDER == __BIG_ENDIAN
1048 uint64_t reserved_31_63 : 33;
1049 uint64_t n2p0_c : 1; /**< BIST Status for N2P Port0 Cmd */
1050 uint64_t n2p0_o : 1; /**< BIST Status for N2P Port0 Data */
1051 uint64_t n2p1_c : 1; /**< BIST Status for N2P Port1 Cmd */
1052 uint64_t n2p1_o : 1; /**< BIST Status for N2P Port1 Data */
1053 uint64_t cpl_p0 : 1; /**< BIST Status for CPL Port 0 */
1054 uint64_t cpl_p1 : 1; /**< BIST Status for CPL Port 1 */
1055 uint64_t reserved_19_24 : 6;
1056 uint64_t p2n0_c0 : 1; /**< BIST Status for P2N Port0 C0 */
1057 uint64_t p2n0_c1 : 1; /**< BIST Status for P2N Port0 C1 */
1058 uint64_t p2n0_n : 1; /**< BIST Status for P2N Port0 N */
1059 uint64_t p2n0_p0 : 1; /**< BIST Status for P2N Port0 P0 */
1060 uint64_t p2n0_p1 : 1; /**< BIST Status for P2N Port0 P1 */
1061 uint64_t p2n1_c0 : 1; /**< BIST Status for P2N Port1 C0 */
1062 uint64_t p2n1_c1 : 1; /**< BIST Status for P2N Port1 C1 */
1063 uint64_t p2n1_n : 1; /**< BIST Status for P2N Port1 N */
1064 uint64_t p2n1_p0 : 1; /**< BIST Status for P2N Port1 P0 */
1065 uint64_t p2n1_p1 : 1; /**< BIST Status for P2N Port1 P1 */
1066 uint64_t reserved_6_8 : 3;
1067 uint64_t dsi1_1 : 1; /**< BIST Status for DSI1 Memory 1 */
1068 uint64_t dsi1_0 : 1; /**< BIST Status for DSI1 Memory 0 */
1069 uint64_t dsi0_1 : 1; /**< BIST Status for DSI0 Memory 1 */
1070 uint64_t dsi0_0 : 1; /**< BIST Status for DSI0 Memory 0 */
1071 uint64_t msi : 1; /**< BIST Status for MSI Memory Map */
1072 uint64_t ncb_cmd : 1; /**< BIST Status for NCB Outbound Commands */
1074 uint64_t ncb_cmd : 1;
1076 uint64_t dsi0_0 : 1;
1077 uint64_t dsi0_1 : 1;
1078 uint64_t dsi1_0 : 1;
1079 uint64_t dsi1_1 : 1;
1080 uint64_t reserved_6_8 : 3;
1081 uint64_t p2n1_p1 : 1;
1082 uint64_t p2n1_p0 : 1;
1083 uint64_t p2n1_n : 1;
1084 uint64_t p2n1_c1 : 1;
1085 uint64_t p2n1_c0 : 1;
1086 uint64_t p2n0_p1 : 1;
1087 uint64_t p2n0_p0 : 1;
1088 uint64_t p2n0_n : 1;
1089 uint64_t p2n0_c1 : 1;
1090 uint64_t p2n0_c0 : 1;
1091 uint64_t reserved_19_24 : 6;
1092 uint64_t cpl_p1 : 1;
1093 uint64_t cpl_p0 : 1;
1094 uint64_t n2p1_o : 1;
1095 uint64_t n2p1_c : 1;
1096 uint64_t n2p0_o : 1;
1097 uint64_t n2p0_c : 1;
1098 uint64_t reserved_31_63 : 33;
1101 struct cvmx_sli_bist_status_s cn63xx;
1102 struct cvmx_sli_bist_status_s cn63xxp1;
1104 typedef union cvmx_sli_bist_status cvmx_sli_bist_status_t;
1107 * cvmx_sli_ctl_port#
1109 * SLI_CTL_PORTX = SLI's Control Port X
1111 * Contains control for access for Port0
1113 union cvmx_sli_ctl_portx
1116 struct cvmx_sli_ctl_portx_s
1118 #if __BYTE_ORDER == __BIG_ENDIAN
1119 uint64_t reserved_22_63 : 42;
1120 uint64_t intd : 1; /**< When '0' Intd wire asserted. Before mapping. */
1121 uint64_t intc : 1; /**< When '0' Intc wire asserted. Before mapping. */
1122 uint64_t intb : 1; /**< When '0' Intb wire asserted. Before mapping. */
1123 uint64_t inta : 1; /**< When '0' Inta wire asserted. Before mapping. */
1124 uint64_t dis_port : 1; /**< When set the output to the MAC is disabled. This
1125 occurs when the MAC reset line transitions from
1126 de-asserted to asserted. Writing a '1' to this
1127 location will clear this condition when the MAC is
1128 no longer in reset and the output to the MAC is at
1129 the begining of a transfer. */
1130 uint64_t waitl_com : 1; /**< When set '1' casues the SLI to wait for a commit
1131 from the L2C before sending additional completions
1132 to the L2C from a MAC.
1133 Set this for more conservative behavior. Clear
1134 this for more aggressive, higher-performance
1136 uint64_t intd_map : 2; /**< Maps INTD to INTA(00), INTB(01), INTC(10) or
1138 uint64_t intc_map : 2; /**< Maps INTC to INTA(00), INTB(01), INTC(10) or
1140 uint64_t intb_map : 2; /**< Maps INTB to INTA(00), INTB(01), INTC(10) or
1142 uint64_t inta_map : 2; /**< Maps INTA to INTA(00), INTB(01), INTC(10) or
1144 uint64_t ctlp_ro : 1; /**< Relaxed ordering enable for Completion TLPS. */
1145 uint64_t reserved_6_6 : 1;
1146 uint64_t ptlp_ro : 1; /**< Relaxed ordering enable for Posted TLPS. */
1147 uint64_t reserved_1_4 : 4;
1148 uint64_t wait_com : 1; /**< When set '1' casues the SLI to wait for a commit
1149 from the L2C before sending additional stores to
1151 The SLI will request a commit on the last store
1152 if more than one STORE operation is required on
1154 Most applications will not notice a difference, so
1155 should not set this bit. Setting the bit is more
1156 conservative on ordering, lower performance */
1158 uint64_t wait_com : 1;
1159 uint64_t reserved_1_4 : 4;
1160 uint64_t ptlp_ro : 1;
1161 uint64_t reserved_6_6 : 1;
1162 uint64_t ctlp_ro : 1;
1163 uint64_t inta_map : 2;
1164 uint64_t intb_map : 2;
1165 uint64_t intc_map : 2;
1166 uint64_t intd_map : 2;
1167 uint64_t waitl_com : 1;
1168 uint64_t dis_port : 1;
1173 uint64_t reserved_22_63 : 42;
1176 struct cvmx_sli_ctl_portx_s cn63xx;
1177 struct cvmx_sli_ctl_portx_s cn63xxp1;
1179 typedef union cvmx_sli_ctl_portx cvmx_sli_ctl_portx_t;
1182 * cvmx_sli_ctl_status
1184 * SLI_CTL_STATUS = SLI Control Status Register
1186 * Contains control and status for SLI. Writes to this register are not ordered with writes/reads to the MAC Memory space.
1187 * To ensure that a write has completed the user must read the register before making an access(i.e. MAC memory space)
1188 * that requires the value of this register to be updated.
1190 union cvmx_sli_ctl_status
1193 struct cvmx_sli_ctl_status_s
1195 #if __BYTE_ORDER == __BIG_ENDIAN
1196 uint64_t reserved_20_63 : 44;
1197 uint64_t p1_ntags : 6; /**< Number of tags available for MAC Port1.
1198 In RC mode 1 tag is needed for each outbound TLP
1199 that requires a CPL TLP. In Endpoint mode the
1200 number of tags required for a TLP request is
1201 1 per 64-bytes of CPL data + 1.
1202 This field should only be written as part of
1203 reset sequence, before issuing any reads, CFGs, or
1204 IO transactions from the core(s). */
1205 uint64_t p0_ntags : 6; /**< Number of tags available for MAC Port0.
1206 In RC mode 1 tag is needed for each outbound TLP
1207 that requires a CPL TLP. In Endpoint mode the
1208 number of tags required for a TLP request is
1209 1 per 64-bytes of CPL data + 1.
1210 This field should only be written as part of
1211 reset sequence, before issuing any reads, CFGs, or
1212 IO transactions from the core(s). */
1213 uint64_t chip_rev : 8; /**< The chip revision. */
1215 uint64_t chip_rev : 8;
1216 uint64_t p0_ntags : 6;
1217 uint64_t p1_ntags : 6;
1218 uint64_t reserved_20_63 : 44;
1221 struct cvmx_sli_ctl_status_s cn63xx;
1222 struct cvmx_sli_ctl_status_s cn63xxp1;
1224 typedef union cvmx_sli_ctl_status cvmx_sli_ctl_status_t;
1227 * cvmx_sli_data_out_cnt
1229 * SLI_DATA_OUT_CNT = SLI DATA OUT COUNT
1231 * The EXEC data out fifo-count and the data unload counter.
1233 union cvmx_sli_data_out_cnt
1236 struct cvmx_sli_data_out_cnt_s
1238 #if __BYTE_ORDER == __BIG_ENDIAN
1239 uint64_t reserved_44_63 : 20;
1240 uint64_t p1_ucnt : 16; /**< MAC Port1 Fifo Unload Count. This counter is
1241 incremented by '1' every time a word is removed
1242 from the Data Out FIFO, whose count is shown in
1244 uint64_t p1_fcnt : 6; /**< MAC Port1 Data Out Fifo Count. Number of address
1245 data words to be sent out the MAC port presently
1246 buffered in the FIFO. */
1247 uint64_t p0_ucnt : 16; /**< MAC Port0 Fifo Unload Count. This counter is
1248 incremented by '1' every time a word is removed
1249 from the Data Out FIFO, whose count is shown in
1251 uint64_t p0_fcnt : 6; /**< MAC Port0 Data Out Fifo Count. Number of address
1252 data words to be sent out the MAC port presently
1253 buffered in the FIFO. */
1255 uint64_t p0_fcnt : 6;
1256 uint64_t p0_ucnt : 16;
1257 uint64_t p1_fcnt : 6;
1258 uint64_t p1_ucnt : 16;
1259 uint64_t reserved_44_63 : 20;
1262 struct cvmx_sli_data_out_cnt_s cn63xx;
1263 struct cvmx_sli_data_out_cnt_s cn63xxp1;
1265 typedef union cvmx_sli_data_out_cnt cvmx_sli_data_out_cnt_t;
1270 * SLI_DBG_DATA = SLI Debug Data Register
1272 * Value returned on the debug-data lines from the RSLs
1274 union cvmx_sli_dbg_data
1277 struct cvmx_sli_dbg_data_s
1279 #if __BYTE_ORDER == __BIG_ENDIAN
1280 uint64_t reserved_18_63 : 46;
1281 uint64_t dsel_ext : 1; /**< Allows changes in the external pins to set the
1282 debug select value. */
1283 uint64_t data : 17; /**< Value on the debug data lines. */
1286 uint64_t dsel_ext : 1;
1287 uint64_t reserved_18_63 : 46;
1290 struct cvmx_sli_dbg_data_s cn63xx;
1291 struct cvmx_sli_dbg_data_s cn63xxp1;
1293 typedef union cvmx_sli_dbg_data cvmx_sli_dbg_data_t;
1296 * cvmx_sli_dbg_select
1298 * SLI_DBG_SELECT = Debug Select Register
1300 * Contains the debug select value last written to the RSLs.
1302 union cvmx_sli_dbg_select
1305 struct cvmx_sli_dbg_select_s
1307 #if __BYTE_ORDER == __BIG_ENDIAN
1308 uint64_t reserved_33_63 : 31;
1309 uint64_t adbg_sel : 1; /**< When set '1' the SLI_DBG_DATA[DATA] will only be
1310 loaded when SLI_DBG_DATA[DATA] bit [16] is a '1'.
1311 When the debug data comes from an Async-RSL bit
1312 16 is used to tell that the data present is valid. */
1313 uint64_t dbg_sel : 32; /**< When this register is written the RML will write
1314 all "F"s to the previous RTL to disable it from
1315 sending Debug-Data. The RML will then send a write
1316 to the new RSL with the supplied Debug-Select
1317 value. Because it takes time for the new Debug
1318 Select value to take effect and the requested
1319 Debug-Data to return, time is needed to the new
1320 Debug-Data to arrive. The inititator of the Debug
1321 Select should issue a read to a CSR before reading
1322 the Debug Data (this read could also be to the
1323 SLI_DBG_DATA but the returned value for the first
1324 read will return NS data. */
1326 uint64_t dbg_sel : 32;
1327 uint64_t adbg_sel : 1;
1328 uint64_t reserved_33_63 : 31;
1331 struct cvmx_sli_dbg_select_s cn63xx;
1332 struct cvmx_sli_dbg_select_s cn63xxp1;
1334 typedef union cvmx_sli_dbg_select cvmx_sli_dbg_select_t;
1339 * SLI_DMAx_CNT = SLI DMA Count
1341 * The DMA Count value.
1343 union cvmx_sli_dmax_cnt
1346 struct cvmx_sli_dmax_cnt_s
1348 #if __BYTE_ORDER == __BIG_ENDIAN
1349 uint64_t reserved_32_63 : 32;
1350 uint64_t cnt : 32; /**< The DMA counter.
1351 Writing this field will cause the written value
1352 to be subtracted from DMA. HW will optionally
1353 increment this field after it completes an
1354 OUTBOUND or EXTERNAL-ONLY DMA instruction. These
1355 increments may cause interrupts. Refer to
1356 SLI_DMAx_INT_LEVEL and SLI_INT_SUM[DCNT,DTIME]. */
1359 uint64_t reserved_32_63 : 32;
1362 struct cvmx_sli_dmax_cnt_s cn63xx;
1363 struct cvmx_sli_dmax_cnt_s cn63xxp1;
1365 typedef union cvmx_sli_dmax_cnt cvmx_sli_dmax_cnt_t;
1368 * cvmx_sli_dma#_int_level
1370 * SLI_DMAx_INT_LEVEL = SLI DMAx Interrupt Level
1372 * Thresholds for DMA count and timer interrupts.
1374 union cvmx_sli_dmax_int_level
1377 struct cvmx_sli_dmax_int_level_s
1379 #if __BYTE_ORDER == __BIG_ENDIAN
1380 uint64_t time : 32; /**< Whenever the SLI_DMAx_TIM[TIM] timer exceeds
1381 this value, SLI_INT_SUM[DTIME<x>] is set.
1382 The SLI_DMAx_TIM[TIM] timer increments every SLI
1383 clock whenever SLI_DMAx_CNT[CNT]!=0, and is
1384 cleared when SLI_INT_SUM[DTIME<x>] is written with
1386 uint64_t cnt : 32; /**< Whenever SLI_DMAx_CNT[CNT] exceeds this value,
1387 SLI_INT_SUM[DCNT<x>] is set. */
1393 struct cvmx_sli_dmax_int_level_s cn63xx;
1394 struct cvmx_sli_dmax_int_level_s cn63xxp1;
1396 typedef union cvmx_sli_dmax_int_level cvmx_sli_dmax_int_level_t;
1401 * SLI_DMAx_TIM = SLI DMA Timer
1403 * The DMA Timer value.
1405 union cvmx_sli_dmax_tim
1408 struct cvmx_sli_dmax_tim_s
1410 #if __BYTE_ORDER == __BIG_ENDIAN
1411 uint64_t reserved_32_63 : 32;
1412 uint64_t tim : 32; /**< The DMA timer value.
1413 The timer will increment when SLI_DMAx_CNT[CNT]!=0
1414 and will clear when SLI_DMAx_CNT[CNT]==0 */
1417 uint64_t reserved_32_63 : 32;
1420 struct cvmx_sli_dmax_tim_s cn63xx;
1421 struct cvmx_sli_dmax_tim_s cn63xxp1;
1423 typedef union cvmx_sli_dmax_tim cvmx_sli_dmax_tim_t;
1426 * cvmx_sli_int_enb_ciu
1428 * SLI_INT_ENB_CIU = SLI's Interrupt Enable CIU Register
1430 * Used to enable the various interrupting conditions of SLI
1432 union cvmx_sli_int_enb_ciu
1435 struct cvmx_sli_int_enb_ciu_s
1437 #if __BYTE_ORDER == __BIG_ENDIAN
1438 uint64_t reserved_61_63 : 3;
1439 uint64_t ill_pad : 1; /**< Illegal packet csr address. */
1440 uint64_t reserved_58_59 : 2;
1441 uint64_t sprt1_err : 1; /**< Error Response received on SLI port 1. */
1442 uint64_t sprt0_err : 1; /**< Error Response received on SLI port 0. */
1443 uint64_t pins_err : 1; /**< Read Error during packet instruction fetch. */
1444 uint64_t pop_err : 1; /**< Read Error during packet scatter pointer fetch. */
1445 uint64_t pdi_err : 1; /**< Read Error during packet data fetch. */
1446 uint64_t pgl_err : 1; /**< Read Error during gather list fetch. */
1447 uint64_t pin_bp : 1; /**< Packet Input Count exceeded WMARK. */
1448 uint64_t pout_err : 1; /**< Packet Out Interrupt, Error From PKO. */
1449 uint64_t psldbof : 1; /**< Packet Scatterlist Doorbell Count Overflow. */
1450 uint64_t pidbof : 1; /**< Packet Instruction Doorbell Count Overflow. */
1451 uint64_t reserved_38_47 : 10;
1452 uint64_t dtime : 2; /**< DMA Timer Interrupts */
1453 uint64_t dcnt : 2; /**< DMA Count Interrupts */
1454 uint64_t dmafi : 2; /**< DMA set Forced Interrupts */
1455 uint64_t reserved_18_31 : 14;
1456 uint64_t mio_int1 : 1; /**< Enables SLI_INT_SUM[17] to generate an
1457 interrupt on the RSL.
1458 THIS SHOULD NEVER BE SET */
1459 uint64_t mio_int0 : 1; /**< Enables SLI_INT_SUM[16] to generate an
1460 interrupt on the RSL.
1461 THIS SHOULD NEVER BE SET */
1462 uint64_t m1_un_wi : 1; /**< Enables SLI_INT_SUM[15] to generate an
1463 interrupt on the RSL. */
1464 uint64_t m1_un_b0 : 1; /**< Enables SLI_INT_SUM[14] to generate an
1465 interrupt on the RSL. */
1466 uint64_t m1_up_wi : 1; /**< Enables SLI_INT_SUM[13] to generate an
1467 interrupt on the RSL. */
1468 uint64_t m1_up_b0 : 1; /**< Enables SLI_INT_SUM[12] to generate an
1469 interrupt on the RSL. */
1470 uint64_t m0_un_wi : 1; /**< Enables SLI_INT_SUM[11] to generate an
1471 interrupt on the RSL. */
1472 uint64_t m0_un_b0 : 1; /**< Enables SLI_INT_SUM[10] to generate an
1473 interrupt on the RSL. */
1474 uint64_t m0_up_wi : 1; /**< Enables SLI_INT_SUM[9] to generate an
1475 interrupt on the RSL. */
1476 uint64_t m0_up_b0 : 1; /**< Enables SLI_INT_SUM[8] to generate an
1477 interrupt on the RSL. */
1478 uint64_t reserved_6_7 : 2;
1479 uint64_t ptime : 1; /**< Enables SLI_INT_SUM[5] to generate an
1480 interrupt on the RSL. */
1481 uint64_t pcnt : 1; /**< Enables SLI_INT_SUM[4] to generate an
1482 interrupt on the RSL. */
1483 uint64_t iob2big : 1; /**< Enables SLI_INT_SUM[3] to generate an
1484 interrupt on the RSL. */
1485 uint64_t bar0_to : 1; /**< Enables SLI_INT_SUM[2] to generate an
1486 interrupt on the RSL. */
1487 uint64_t reserved_1_1 : 1;
1488 uint64_t rml_to : 1; /**< Enables SLI_INT_SUM[0] to generate an
1489 interrupt on the RSL. */
1491 uint64_t rml_to : 1;
1492 uint64_t reserved_1_1 : 1;
1493 uint64_t bar0_to : 1;
1494 uint64_t iob2big : 1;
1497 uint64_t reserved_6_7 : 2;
1498 uint64_t m0_up_b0 : 1;
1499 uint64_t m0_up_wi : 1;
1500 uint64_t m0_un_b0 : 1;
1501 uint64_t m0_un_wi : 1;
1502 uint64_t m1_up_b0 : 1;
1503 uint64_t m1_up_wi : 1;
1504 uint64_t m1_un_b0 : 1;
1505 uint64_t m1_un_wi : 1;
1506 uint64_t mio_int0 : 1;
1507 uint64_t mio_int1 : 1;
1508 uint64_t reserved_18_31 : 14;
1512 uint64_t reserved_38_47 : 10;
1513 uint64_t pidbof : 1;
1514 uint64_t psldbof : 1;
1515 uint64_t pout_err : 1;
1516 uint64_t pin_bp : 1;
1517 uint64_t pgl_err : 1;
1518 uint64_t pdi_err : 1;
1519 uint64_t pop_err : 1;
1520 uint64_t pins_err : 1;
1521 uint64_t sprt0_err : 1;
1522 uint64_t sprt1_err : 1;
1523 uint64_t reserved_58_59 : 2;
1524 uint64_t ill_pad : 1;
1525 uint64_t reserved_61_63 : 3;
1528 struct cvmx_sli_int_enb_ciu_s cn63xx;
1529 struct cvmx_sli_int_enb_ciu_s cn63xxp1;
1531 typedef union cvmx_sli_int_enb_ciu cvmx_sli_int_enb_ciu_t;
1534 * cvmx_sli_int_enb_port#
1536 * SLI_INT_ENB_PORTX = SLI's Interrupt Enable Register per mac port
1538 * Used to allow the generation of interrupts (MSI/INTA) to the PORT X
1541 * This CSR is not used when the corresponding MAC is sRIO.
1544 union cvmx_sli_int_enb_portx
1547 struct cvmx_sli_int_enb_portx_s
1549 #if __BYTE_ORDER == __BIG_ENDIAN
1550 uint64_t reserved_61_63 : 3;
1551 uint64_t ill_pad : 1; /**< Illegal packet csr address. */
1552 uint64_t reserved_58_59 : 2;
1553 uint64_t sprt1_err : 1; /**< Error Response received on SLI port 1. */
1554 uint64_t sprt0_err : 1; /**< Error Response received on SLI port 0. */
1555 uint64_t pins_err : 1; /**< Read Error during packet instruction fetch. */
1556 uint64_t pop_err : 1; /**< Read Error during packet scatter pointer fetch. */
1557 uint64_t pdi_err : 1; /**< Read Error during packet data fetch. */
1558 uint64_t pgl_err : 1; /**< Read Error during gather list fetch. */
1559 uint64_t pin_bp : 1; /**< Packet Input Count exceeded WMARK. */
1560 uint64_t pout_err : 1; /**< Packet Out Interrupt, Error From PKO. */
1561 uint64_t psldbof : 1; /**< Packet Scatterlist Doorbell Count Overflow. */
1562 uint64_t pidbof : 1; /**< Packet Instruction Doorbell Count Overflow. */
1563 uint64_t reserved_38_47 : 10;
1564 uint64_t dtime : 2; /**< DMA Timer Interrupts */
1565 uint64_t dcnt : 2; /**< DMA Count Interrupts */
1566 uint64_t dmafi : 2; /**< DMA set Forced Interrupts */
1567 uint64_t reserved_20_31 : 12;
1568 uint64_t mac1_int : 1; /**< Enables SLI_INT_SUM[19] to generate an
1569 interrupt to the PCIE-Port1 for MSI/inta.
1570 The valuse of this bit has NO effect on PCIE Port0.
1571 SLI_INT_ENB_PORT0[MAC1_INT] sould NEVER be set. */
1572 uint64_t mac0_int : 1; /**< Enables SLI_INT_SUM[18] to generate an
1573 interrupt to the PCIE-Port0 for MSI/inta.
1574 The valus of this bit has NO effect on PCIE Port1.
1575 SLI_INT_ENB_PORT1[MAC0_INT] sould NEVER be set. */
1576 uint64_t mio_int1 : 1; /**< Enables SLI_INT_SUM[17] to generate an
1577 interrupt to the PCIE core for MSI/inta.
1578 SLI_INT_ENB_PORT0[MIO_INT1] should NEVER be set. */
1579 uint64_t mio_int0 : 1; /**< Enables SLI_INT_SUM[16] to generate an
1580 interrupt to the PCIE core for MSI/inta.
1581 SLI_INT_ENB_PORT1[MIO_INT0] should NEVER be set. */
1582 uint64_t m1_un_wi : 1; /**< Enables SLI_INT_SUM[15] to generate an
1583 interrupt to the PCIE core for MSI/inta. */
1584 uint64_t m1_un_b0 : 1; /**< Enables SLI_INT_SUM[14] to generate an
1585 interrupt to the PCIE core for MSI/inta. */
1586 uint64_t m1_up_wi : 1; /**< Enables SLI_INT_SUM[13] to generate an
1587 interrupt to the PCIE core for MSI/inta. */
1588 uint64_t m1_up_b0 : 1; /**< Enables SLI_INT_SUM[12] to generate an
1589 interrupt to the PCIE core for MSI/inta. */
1590 uint64_t m0_un_wi : 1; /**< Enables SLI_INT_SUM[11] to generate an
1591 interrupt to the PCIE core for MSI/inta. */
1592 uint64_t m0_un_b0 : 1; /**< Enables SLI_INT_SUM[10] to generate an
1593 interrupt to the PCIE core for MSI/inta. */
1594 uint64_t m0_up_wi : 1; /**< Enables SLI_INT_SUM[9] to generate an
1595 interrupt to the PCIE core for MSI/inta. */
1596 uint64_t m0_up_b0 : 1; /**< Enables SLI_INT_SUM[8] to generate an
1597 interrupt to the PCIE core for MSI/inta. */
1598 uint64_t reserved_6_7 : 2;
1599 uint64_t ptime : 1; /**< Enables SLI_INT_SUM[5] to generate an
1600 interrupt to the PCIE core for MSI/inta. */
1601 uint64_t pcnt : 1; /**< Enables SLI_INT_SUM[4] to generate an
1602 interrupt to the PCIE core for MSI/inta. */
1603 uint64_t iob2big : 1; /**< Enables SLI_INT_SUM[3] to generate an
1604 interrupt to the PCIE core for MSI/inta. */
1605 uint64_t bar0_to : 1; /**< Enables SLI_INT_SUM[2] to generate an
1606 interrupt to the PCIE core for MSI/inta. */
1607 uint64_t reserved_1_1 : 1;
1608 uint64_t rml_to : 1; /**< Enables SLI_INT_SUM[0] to generate an
1609 interrupt to the PCIE core for MSI/inta. */
1611 uint64_t rml_to : 1;
1612 uint64_t reserved_1_1 : 1;
1613 uint64_t bar0_to : 1;
1614 uint64_t iob2big : 1;
1617 uint64_t reserved_6_7 : 2;
1618 uint64_t m0_up_b0 : 1;
1619 uint64_t m0_up_wi : 1;
1620 uint64_t m0_un_b0 : 1;
1621 uint64_t m0_un_wi : 1;
1622 uint64_t m1_up_b0 : 1;
1623 uint64_t m1_up_wi : 1;
1624 uint64_t m1_un_b0 : 1;
1625 uint64_t m1_un_wi : 1;
1626 uint64_t mio_int0 : 1;
1627 uint64_t mio_int1 : 1;
1628 uint64_t mac0_int : 1;
1629 uint64_t mac1_int : 1;
1630 uint64_t reserved_20_31 : 12;
1634 uint64_t reserved_38_47 : 10;
1635 uint64_t pidbof : 1;
1636 uint64_t psldbof : 1;
1637 uint64_t pout_err : 1;
1638 uint64_t pin_bp : 1;
1639 uint64_t pgl_err : 1;
1640 uint64_t pdi_err : 1;
1641 uint64_t pop_err : 1;
1642 uint64_t pins_err : 1;
1643 uint64_t sprt0_err : 1;
1644 uint64_t sprt1_err : 1;
1645 uint64_t reserved_58_59 : 2;
1646 uint64_t ill_pad : 1;
1647 uint64_t reserved_61_63 : 3;
1650 struct cvmx_sli_int_enb_portx_s cn63xx;
1651 struct cvmx_sli_int_enb_portx_s cn63xxp1;
1653 typedef union cvmx_sli_int_enb_portx cvmx_sli_int_enb_portx_t;
1658 * SLI_INT_SUM = SLI Interrupt Summary Register
1660 * Set when an interrupt condition occurs, write '1' to clear.
1662 union cvmx_sli_int_sum
1665 struct cvmx_sli_int_sum_s
1667 #if __BYTE_ORDER == __BIG_ENDIAN
1668 uint64_t reserved_61_63 : 3;
1669 uint64_t ill_pad : 1; /**< Set when a BAR0 address R/W falls into theaddress
1670 range of the Packet-CSR, but for an unused
1672 uint64_t reserved_58_59 : 2;
1673 uint64_t sprt1_err : 1; /**< When an error response received on SLI port 1
1675 uint64_t sprt0_err : 1; /**< When an error response received on SLI port 0
1677 uint64_t pins_err : 1; /**< When a read error occurs on a packet instruction
1679 uint64_t pop_err : 1; /**< When a read error occurs on a packet scatter
1680 pointer pair this bit is set. */
1681 uint64_t pdi_err : 1; /**< When a read error occurs on a packet data read
1683 uint64_t pgl_err : 1; /**< When a read error occurs on a packet gather list
1684 read this bit is set. */
1685 uint64_t pin_bp : 1; /**< Packet input count has exceeded the WMARK.
1686 See SLI_PKT_IN_BP */
1687 uint64_t pout_err : 1; /**< Set when PKO sends packet data with the error bit
1689 uint64_t psldbof : 1; /**< Packet Scatterlist Doorbell count overflowed. Which
1690 doorbell can be found in DPI_PINT_INFO[PSLDBOF] */
1691 uint64_t pidbof : 1; /**< Packet Instruction Doorbell count overflowed. Which
1692 doorbell can be found in DPI_PINT_INFO[PIDBOF] */
1693 uint64_t reserved_38_47 : 10;
1694 uint64_t dtime : 2; /**< Whenever SLI_DMAx_CNT[CNT] is not 0, the
1695 SLI_DMAx_TIM[TIM] timer increments every SLI
1697 DTIME[x] is set whenever SLI_DMAx_TIM[TIM] >
1698 SLI_DMAx_INT_LEVEL[TIME].
1699 DTIME[x] is normally cleared by clearing
1700 SLI_DMAx_CNT[CNT] (which also clears
1701 SLI_DMAx_TIM[TIM]). */
1702 uint64_t dcnt : 2; /**< DCNT[x] is set whenever SLI_DMAx_CNT[CNT] >
1703 SLI_DMAx_INT_LEVEL[CNT].
1704 DCNT[x] is normally cleared by decreasing
1705 SLI_DMAx_CNT[CNT]. */
1706 uint64_t dmafi : 2; /**< DMA set Forced Interrupts. */
1707 uint64_t reserved_20_31 : 12;
1708 uint64_t mac1_int : 1; /**< Interrupt from MAC1.
1709 See PEM1_INT_SUM (enabled by PEM1_INT_ENB_INT) */
1710 uint64_t mac0_int : 1; /**< Interrupt from MAC0.
1711 See PEM0_INT_SUM (enabled by PEM0_INT_ENB_INT) */
1712 uint64_t mio_int1 : 1; /**< Interrupt from MIO for PORT 1.
1713 See CIU_INT33_SUM0, CIU_INT_SUM1
1714 (enabled by CIU_INT33_EN0, CIU_INT33_EN1) */
1715 uint64_t mio_int0 : 1; /**< Interrupt from MIO for PORT 0.
1716 See CIU_INT32_SUM0, CIU_INT_SUM1
1717 (enabled by CIU_INT32_EN0, CIU_INT32_EN1) */
1718 uint64_t m1_un_wi : 1; /**< Received Unsupported N-TLP for Window Register
1719 from MAC 1. This occurs when the window registers
1720 are disabeld and a window register access occurs. */
1721 uint64_t m1_un_b0 : 1; /**< Received Unsupported N-TLP for Bar0 from MAC 1.
1722 This occurs when the BAR 0 address space is
1724 uint64_t m1_up_wi : 1; /**< Received Unsupported P-TLP for Window Register
1725 from MAC 1. This occurs when the window registers
1726 are disabeld and a window register access occurs. */
1727 uint64_t m1_up_b0 : 1; /**< Received Unsupported P-TLP for Bar0 from MAC 1.
1728 This occurs when the BAR 0 address space is
1730 uint64_t m0_un_wi : 1; /**< Received Unsupported N-TLP for Window Register
1731 from MAC 0. This occurs when the window registers
1732 are disabeld and a window register access occurs. */
1733 uint64_t m0_un_b0 : 1; /**< Received Unsupported N-TLP for Bar0 from MAC 0.
1734 This occurs when the BAR 0 address space is
1736 uint64_t m0_up_wi : 1; /**< Received Unsupported P-TLP for Window Register
1737 from MAC 0. This occurs when the window registers
1738 are disabeld and a window register access occurs. */
1739 uint64_t m0_up_b0 : 1; /**< Received Unsupported P-TLP for Bar0 from MAC 0.
1740 This occurs when the BAR 0 address space is
1742 uint64_t reserved_6_7 : 2;
1743 uint64_t ptime : 1; /**< Packet Timer has an interrupt. Which rings can
1744 be found in SLI_PKT_TIME_INT. */
1745 uint64_t pcnt : 1; /**< Packet Counter has an interrupt. Which rings can
1746 be found in SLI_PKT_CNT_INT. */
1747 uint64_t iob2big : 1; /**< A requested IOBDMA is to large. */
1748 uint64_t bar0_to : 1; /**< BAR0 R/W to a NCB device did not receive
1749 read-data/commit in 0xffff core clocks. */
1750 uint64_t reserved_1_1 : 1;
1751 uint64_t rml_to : 1; /**< A read or write transfer did not complete
1752 within 0xffff core clocks. */
1754 uint64_t rml_to : 1;
1755 uint64_t reserved_1_1 : 1;
1756 uint64_t bar0_to : 1;
1757 uint64_t iob2big : 1;
1760 uint64_t reserved_6_7 : 2;
1761 uint64_t m0_up_b0 : 1;
1762 uint64_t m0_up_wi : 1;
1763 uint64_t m0_un_b0 : 1;
1764 uint64_t m0_un_wi : 1;
1765 uint64_t m1_up_b0 : 1;
1766 uint64_t m1_up_wi : 1;
1767 uint64_t m1_un_b0 : 1;
1768 uint64_t m1_un_wi : 1;
1769 uint64_t mio_int0 : 1;
1770 uint64_t mio_int1 : 1;
1771 uint64_t mac0_int : 1;
1772 uint64_t mac1_int : 1;
1773 uint64_t reserved_20_31 : 12;
1777 uint64_t reserved_38_47 : 10;
1778 uint64_t pidbof : 1;
1779 uint64_t psldbof : 1;
1780 uint64_t pout_err : 1;
1781 uint64_t pin_bp : 1;
1782 uint64_t pgl_err : 1;
1783 uint64_t pdi_err : 1;
1784 uint64_t pop_err : 1;
1785 uint64_t pins_err : 1;
1786 uint64_t sprt0_err : 1;
1787 uint64_t sprt1_err : 1;
1788 uint64_t reserved_58_59 : 2;
1789 uint64_t ill_pad : 1;
1790 uint64_t reserved_61_63 : 3;
1793 struct cvmx_sli_int_sum_s cn63xx;
1794 struct cvmx_sli_int_sum_s cn63xxp1;
1796 typedef union cvmx_sli_int_sum cvmx_sli_int_sum_t;
1799 * cvmx_sli_last_win_rdata0
1801 * SLI_LAST_WIN_RDATA0 = SLI Last Window Read Data Port0
1803 * The data from the last initiated window read.
1805 union cvmx_sli_last_win_rdata0
1808 struct cvmx_sli_last_win_rdata0_s
1810 #if __BYTE_ORDER == __BIG_ENDIAN
1811 uint64_t data : 64; /**< Last window read data. */
1816 struct cvmx_sli_last_win_rdata0_s cn63xx;
1817 struct cvmx_sli_last_win_rdata0_s cn63xxp1;
1819 typedef union cvmx_sli_last_win_rdata0 cvmx_sli_last_win_rdata0_t;
1822 * cvmx_sli_last_win_rdata1
1824 * SLI_LAST_WIN_RDATA1 = SLI Last Window Read Data Port1
1826 * The data from the last initiated window read.
1828 union cvmx_sli_last_win_rdata1
1831 struct cvmx_sli_last_win_rdata1_s
1833 #if __BYTE_ORDER == __BIG_ENDIAN
1834 uint64_t data : 64; /**< Last window read data. */
1839 struct cvmx_sli_last_win_rdata1_s cn63xx;
1840 struct cvmx_sli_last_win_rdata1_s cn63xxp1;
1842 typedef union cvmx_sli_last_win_rdata1 cvmx_sli_last_win_rdata1_t;
1845 * cvmx_sli_mac_credit_cnt
1847 * SLI_MAC_CREDIT_CNT = SLI MAC Credit Count
1849 * Contains the number of credits for the MAC port FIFOs used by the SLI. This value needs to be set BEFORE S2M traffic
1850 * 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
1853 union cvmx_sli_mac_credit_cnt
1856 struct cvmx_sli_mac_credit_cnt_s
1858 #if __BYTE_ORDER == __BIG_ENDIAN
1859 uint64_t reserved_54_63 : 10;
1860 uint64_t p1_c_d : 1; /**< When set does not allow writing of P1_CCNT. */
1861 uint64_t p1_n_d : 1; /**< When set does not allow writing of P1_NCNT. */
1862 uint64_t p1_p_d : 1; /**< When set does not allow writing of P1_PCNT. */
1863 uint64_t p0_c_d : 1; /**< When set does not allow writing of P0_CCNT. */
1864 uint64_t p0_n_d : 1; /**< When set does not allow writing of P0_NCNT. */
1865 uint64_t p0_p_d : 1; /**< When set does not allow writing of P0_PCNT. */
1866 uint64_t p1_ccnt : 8; /**< Port1 C-TLP FIFO Credits.
1867 Legal values are 0x25 to 0x80. */
1868 uint64_t p1_ncnt : 8; /**< Port1 N-TLP FIFO Credits.
1869 Legal values are 0x5 to 0x10. */
1870 uint64_t p1_pcnt : 8; /**< Port1 P-TLP FIFO Credits.
1871 Legal values are 0x25 to 0x80. */
1872 uint64_t p0_ccnt : 8; /**< Port0 C-TLP FIFO Credits.
1873 Legal values are 0x25 to 0x80. */
1874 uint64_t p0_ncnt : 8; /**< Port0 N-TLP FIFO Credits.
1875 Legal values are 0x5 to 0x10. */
1876 uint64_t p0_pcnt : 8; /**< Port0 P-TLP FIFO Credits.
1877 Legal values are 0x25 to 0x80. */
1879 uint64_t p0_pcnt : 8;
1880 uint64_t p0_ncnt : 8;
1881 uint64_t p0_ccnt : 8;
1882 uint64_t p1_pcnt : 8;
1883 uint64_t p1_ncnt : 8;
1884 uint64_t p1_ccnt : 8;
1885 uint64_t p0_p_d : 1;
1886 uint64_t p0_n_d : 1;
1887 uint64_t p0_c_d : 1;
1888 uint64_t p1_p_d : 1;
1889 uint64_t p1_n_d : 1;
1890 uint64_t p1_c_d : 1;
1891 uint64_t reserved_54_63 : 10;
1894 struct cvmx_sli_mac_credit_cnt_s cn63xx;
1895 struct cvmx_sli_mac_credit_cnt_cn63xxp1
1897 #if __BYTE_ORDER == __BIG_ENDIAN
1898 uint64_t reserved_48_63 : 16;
1899 uint64_t p1_ccnt : 8; /**< Port1 C-TLP FIFO Credits.
1900 Legal values are 0x25 to 0x80. */
1901 uint64_t p1_ncnt : 8; /**< Port1 N-TLP FIFO Credits.
1902 Legal values are 0x5 to 0x10. */
1903 uint64_t p1_pcnt : 8; /**< Port1 P-TLP FIFO Credits.
1904 Legal values are 0x25 to 0x80. */
1905 uint64_t p0_ccnt : 8; /**< Port0 C-TLP FIFO Credits.
1906 Legal values are 0x25 to 0x80. */
1907 uint64_t p0_ncnt : 8; /**< Port0 N-TLP FIFO Credits.
1908 Legal values are 0x5 to 0x10. */
1909 uint64_t p0_pcnt : 8; /**< Port0 P-TLP FIFO Credits.
1910 Legal values are 0x25 to 0x80. */
1912 uint64_t p0_pcnt : 8;
1913 uint64_t p0_ncnt : 8;
1914 uint64_t p0_ccnt : 8;
1915 uint64_t p1_pcnt : 8;
1916 uint64_t p1_ncnt : 8;
1917 uint64_t p1_ccnt : 8;
1918 uint64_t reserved_48_63 : 16;
1922 typedef union cvmx_sli_mac_credit_cnt cvmx_sli_mac_credit_cnt_t;
1925 * cvmx_sli_mac_number
1927 * 0x13DA0 - 0x13DF0 reserved for ports 2 - 7
1929 * SLI_MAC_NUMBER = SLI MAC Number
1931 * When read from a MAC port it returns the MAC's port number.
1934 union cvmx_sli_mac_number
1937 struct cvmx_sli_mac_number_s
1939 #if __BYTE_ORDER == __BIG_ENDIAN
1940 uint64_t reserved_8_63 : 56;
1941 uint64_t num : 8; /**< The mac number. */
1944 uint64_t reserved_8_63 : 56;
1947 struct cvmx_sli_mac_number_s cn63xx;
1949 typedef union cvmx_sli_mac_number cvmx_sli_mac_number_t;
1952 * cvmx_sli_mem_access_ctl
1954 * SLI_MEM_ACCESS_CTL = SLI's Memory Access Control
1956 * Contains control for access to the MAC address space.
1958 union cvmx_sli_mem_access_ctl
1961 struct cvmx_sli_mem_access_ctl_s
1963 #if __BYTE_ORDER == __BIG_ENDIAN
1964 uint64_t reserved_14_63 : 50;
1965 uint64_t max_word : 4; /**< The maximum number of words to merge into a single
1966 write operation from the PPs to the MAC. Legal
1967 values are 1 to 16, where a '0' is treated as 16. */
1968 uint64_t timer : 10; /**< When the SLI starts a PP to MAC write it waits
1969 no longer than the value of TIMER in eclks to
1970 merge additional writes from the PPs into 1
1971 large write. The values for this field is 1 to
1972 1024 where a value of '0' is treated as 1024. */
1974 uint64_t timer : 10;
1975 uint64_t max_word : 4;
1976 uint64_t reserved_14_63 : 50;
1979 struct cvmx_sli_mem_access_ctl_s cn63xx;
1980 struct cvmx_sli_mem_access_ctl_s cn63xxp1;
1982 typedef union cvmx_sli_mem_access_ctl cvmx_sli_mem_access_ctl_t;
1985 * cvmx_sli_mem_access_subid#
1988 * // * 8070 - 80C0 saved for ports 2 through 7
1994 * SLI_MEM_ACCESS_SUBIDX = SLI Memory Access SubidX Register
1996 * Contains address index and control bits for access to memory from Core PPs.
1998 union cvmx_sli_mem_access_subidx
2001 struct cvmx_sli_mem_access_subidx_s
2003 #if __BYTE_ORDER == __BIG_ENDIAN
2004 uint64_t reserved_43_63 : 21;
2005 uint64_t zero : 1; /**< Causes all byte reads to be zero length reads.
2006 Returns to the EXEC a zero for all read data.
2007 This must be zero for sRIO ports. */
2008 uint64_t port : 3; /**< Physical MAC Port that reads/writes to
2009 this subid are sent to. Must be <= 1, as there are
2010 only two ports present. */
2011 uint64_t nmerge : 1; /**< When set, no merging is allowed in this window. */
2012 uint64_t esr : 2; /**< ES<1:0> for reads to this subid.
2013 ES<1:0> is the endian-swap attribute for these MAC
2014 memory space reads. */
2015 uint64_t esw : 2; /**< ES<1:0> for writes to this subid.
2016 ES<1:0> is the endian-swap attribute for these MAC
2017 memory space writes. */
2018 uint64_t wtype : 2; /**< ADDRTYPE<1:0> for writes to this subid
2020 - ADDRTYPE<0> is the relaxed-order attribute
2021 - ADDRTYPE<1> is the no-snoop attribute
2023 - ADDRTYPE<1:0> help select an SRIO*_S2M_TYPE*
2025 uint64_t rtype : 2; /**< ADDRTYPE<1:0> for reads to this subid
2027 - ADDRTYPE<0> is the relaxed-order attribute
2028 - ADDRTYPE<1> is the no-snoop attribute
2030 - ADDRTYPE<1:0> help select an SRIO*_S2M_TYPE*
2032 uint64_t ba : 30; /**< Address Bits <63:34> for reads/writes that use
2040 uint64_t nmerge : 1;
2043 uint64_t reserved_43_63 : 21;
2046 struct cvmx_sli_mem_access_subidx_s cn63xx;
2047 struct cvmx_sli_mem_access_subidx_s cn63xxp1;
2049 typedef union cvmx_sli_mem_access_subidx cvmx_sli_mem_access_subidx_t;
2054 * SLI_MSI_ENB0 = SLI MSI Enable0
2056 * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV0.
2058 union cvmx_sli_msi_enb0
2061 struct cvmx_sli_msi_enb0_s
2063 #if __BYTE_ORDER == __BIG_ENDIAN
2064 uint64_t enb : 64; /**< Enables bit [63:0] of SLI_MSI_RCV0. */
2069 struct cvmx_sli_msi_enb0_s cn63xx;
2070 struct cvmx_sli_msi_enb0_s cn63xxp1;
2072 typedef union cvmx_sli_msi_enb0 cvmx_sli_msi_enb0_t;
2077 * SLI_MSI_ENB1 = SLI MSI Enable1
2079 * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV1.
2081 union cvmx_sli_msi_enb1
2084 struct cvmx_sli_msi_enb1_s
2086 #if __BYTE_ORDER == __BIG_ENDIAN
2087 uint64_t enb : 64; /**< Enables bit [63:0] of SLI_MSI_RCV1. */
2092 struct cvmx_sli_msi_enb1_s cn63xx;
2093 struct cvmx_sli_msi_enb1_s cn63xxp1;
2095 typedef union cvmx_sli_msi_enb1 cvmx_sli_msi_enb1_t;
2100 * SLI_MSI_ENB2 = SLI MSI Enable2
2102 * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV2.
2104 union cvmx_sli_msi_enb2
2107 struct cvmx_sli_msi_enb2_s
2109 #if __BYTE_ORDER == __BIG_ENDIAN
2110 uint64_t enb : 64; /**< Enables bit [63:0] of SLI_MSI_RCV2. */
2115 struct cvmx_sli_msi_enb2_s cn63xx;
2116 struct cvmx_sli_msi_enb2_s cn63xxp1;
2118 typedef union cvmx_sli_msi_enb2 cvmx_sli_msi_enb2_t;
2123 * SLI_MSI_ENB3 = SLI MSI Enable3
2125 * Used to enable the interrupt generation for the bits in the SLI_MSI_RCV3.
2127 union cvmx_sli_msi_enb3
2130 struct cvmx_sli_msi_enb3_s
2132 #if __BYTE_ORDER == __BIG_ENDIAN
2133 uint64_t enb : 64; /**< Enables bit [63:0] of SLI_MSI_RCV3. */
2138 struct cvmx_sli_msi_enb3_s cn63xx;
2139 struct cvmx_sli_msi_enb3_s cn63xxp1;
2141 typedef union cvmx_sli_msi_enb3 cvmx_sli_msi_enb3_t;
2146 * SLI_MSI_RCV0 = SLI MSI Receive0
2148 * Contains bits [63:0] of the 256 bits of MSI interrupts.
2150 union cvmx_sli_msi_rcv0
2153 struct cvmx_sli_msi_rcv0_s
2155 #if __BYTE_ORDER == __BIG_ENDIAN
2156 uint64_t intr : 64; /**< Bits 63-0 of the 256 bits of MSI interrupt. */
2161 struct cvmx_sli_msi_rcv0_s cn63xx;
2162 struct cvmx_sli_msi_rcv0_s cn63xxp1;
2164 typedef union cvmx_sli_msi_rcv0 cvmx_sli_msi_rcv0_t;
2169 * SLI_MSI_RCV1 = SLI MSI Receive1
2171 * Contains bits [127:64] of the 256 bits of MSI interrupts.
2173 union cvmx_sli_msi_rcv1
2176 struct cvmx_sli_msi_rcv1_s
2178 #if __BYTE_ORDER == __BIG_ENDIAN
2179 uint64_t intr : 64; /**< Bits 127-64 of the 256 bits of MSI interrupt. */
2184 struct cvmx_sli_msi_rcv1_s cn63xx;
2185 struct cvmx_sli_msi_rcv1_s cn63xxp1;
2187 typedef union cvmx_sli_msi_rcv1 cvmx_sli_msi_rcv1_t;
2192 * SLI_MSI_RCV2 = SLI MSI Receive2
2194 * Contains bits [191:128] of the 256 bits of MSI interrupts.
2196 union cvmx_sli_msi_rcv2
2199 struct cvmx_sli_msi_rcv2_s
2201 #if __BYTE_ORDER == __BIG_ENDIAN
2202 uint64_t intr : 64; /**< Bits 191-128 of the 256 bits of MSI interrupt. */
2207 struct cvmx_sli_msi_rcv2_s cn63xx;
2208 struct cvmx_sli_msi_rcv2_s cn63xxp1;
2210 typedef union cvmx_sli_msi_rcv2 cvmx_sli_msi_rcv2_t;
2215 * SLI_MSI_RCV3 = SLI MSI Receive3
2217 * Contains bits [255:192] of the 256 bits of MSI interrupts.
2219 union cvmx_sli_msi_rcv3
2222 struct cvmx_sli_msi_rcv3_s
2224 #if __BYTE_ORDER == __BIG_ENDIAN
2225 uint64_t intr : 64; /**< Bits 255-192 of the 256 bits of MSI interrupt. */
2230 struct cvmx_sli_msi_rcv3_s cn63xx;
2231 struct cvmx_sli_msi_rcv3_s cn63xxp1;
2233 typedef union cvmx_sli_msi_rcv3 cvmx_sli_msi_rcv3_t;
2236 * cvmx_sli_msi_rd_map
2238 * SLI_MSI_RD_MAP = SLI MSI Read MAP
2240 * Used to read the mapping function of the SLI_PCIE_MSI_RCV to SLI_MSI_RCV registers.
2242 union cvmx_sli_msi_rd_map
2245 struct cvmx_sli_msi_rd_map_s
2247 #if __BYTE_ORDER == __BIG_ENDIAN
2248 uint64_t reserved_16_63 : 48;
2249 uint64_t rd_int : 8; /**< The value of the map at the location PREVIOUSLY
2250 written to the MSI_INT field of this register. */
2251 uint64_t msi_int : 8; /**< Selects the value that would be received when the
2252 SLI_PCIE_MSI_RCV register is written. */
2254 uint64_t msi_int : 8;
2255 uint64_t rd_int : 8;
2256 uint64_t reserved_16_63 : 48;
2259 struct cvmx_sli_msi_rd_map_s cn63xx;
2260 struct cvmx_sli_msi_rd_map_s cn63xxp1;
2262 typedef union cvmx_sli_msi_rd_map cvmx_sli_msi_rd_map_t;
2265 * cvmx_sli_msi_w1c_enb0
2267 * SLI_MSI_W1C_ENB0 = SLI MSI Write 1 To Clear Enable0
2269 * Used to clear bits in SLI_MSI_ENB0.
2271 union cvmx_sli_msi_w1c_enb0
2274 struct cvmx_sli_msi_w1c_enb0_s
2276 #if __BYTE_ORDER == __BIG_ENDIAN
2277 uint64_t clr : 64; /**< A write of '1' to a vector will clear the
2278 cooresponding bit in SLI_MSI_ENB0.
2279 A read to this address will return 0. */
2284 struct cvmx_sli_msi_w1c_enb0_s cn63xx;
2285 struct cvmx_sli_msi_w1c_enb0_s cn63xxp1;
2287 typedef union cvmx_sli_msi_w1c_enb0 cvmx_sli_msi_w1c_enb0_t;
2290 * cvmx_sli_msi_w1c_enb1
2292 * SLI_MSI_W1C_ENB1 = SLI MSI Write 1 To Clear Enable1
2294 * Used to clear bits in SLI_MSI_ENB1.
2296 union cvmx_sli_msi_w1c_enb1
2299 struct cvmx_sli_msi_w1c_enb1_s
2301 #if __BYTE_ORDER == __BIG_ENDIAN
2302 uint64_t clr : 64; /**< A write of '1' to a vector will clear the
2303 cooresponding bit in SLI_MSI_ENB1.
2304 A read to this address will return 0. */
2309 struct cvmx_sli_msi_w1c_enb1_s cn63xx;
2310 struct cvmx_sli_msi_w1c_enb1_s cn63xxp1;
2312 typedef union cvmx_sli_msi_w1c_enb1 cvmx_sli_msi_w1c_enb1_t;
2315 * cvmx_sli_msi_w1c_enb2
2317 * SLI_MSI_W1C_ENB2 = SLI MSI Write 1 To Clear Enable2
2319 * Used to clear bits in SLI_MSI_ENB2.
2321 union cvmx_sli_msi_w1c_enb2
2324 struct cvmx_sli_msi_w1c_enb2_s
2326 #if __BYTE_ORDER == __BIG_ENDIAN
2327 uint64_t clr : 64; /**< A write of '1' to a vector will clear the
2328 cooresponding bit in SLI_MSI_ENB2.
2329 A read to this address will return 0. */
2334 struct cvmx_sli_msi_w1c_enb2_s cn63xx;
2335 struct cvmx_sli_msi_w1c_enb2_s cn63xxp1;
2337 typedef union cvmx_sli_msi_w1c_enb2 cvmx_sli_msi_w1c_enb2_t;
2340 * cvmx_sli_msi_w1c_enb3
2342 * SLI_MSI_W1C_ENB3 = SLI MSI Write 1 To Clear Enable3
2344 * Used to clear bits in SLI_MSI_ENB3.
2346 union cvmx_sli_msi_w1c_enb3
2349 struct cvmx_sli_msi_w1c_enb3_s
2351 #if __BYTE_ORDER == __BIG_ENDIAN
2352 uint64_t clr : 64; /**< A write of '1' to a vector will clear the
2353 cooresponding bit in SLI_MSI_ENB3.
2354 A read to this address will return 0. */
2359 struct cvmx_sli_msi_w1c_enb3_s cn63xx;
2360 struct cvmx_sli_msi_w1c_enb3_s cn63xxp1;
2362 typedef union cvmx_sli_msi_w1c_enb3 cvmx_sli_msi_w1c_enb3_t;
2365 * cvmx_sli_msi_w1s_enb0
2367 * SLI_MSI_W1S_ENB0 = SLI MSI Write 1 To Set Enable0
2369 * Used to set bits in SLI_MSI_ENB0.
2371 union cvmx_sli_msi_w1s_enb0
2374 struct cvmx_sli_msi_w1s_enb0_s
2376 #if __BYTE_ORDER == __BIG_ENDIAN
2377 uint64_t set : 64; /**< A write of '1' to a vector will set the
2378 cooresponding bit in SLI_MSI_ENB0.
2379 A read to this address will return 0. */
2384 struct cvmx_sli_msi_w1s_enb0_s cn63xx;
2385 struct cvmx_sli_msi_w1s_enb0_s cn63xxp1;
2387 typedef union cvmx_sli_msi_w1s_enb0 cvmx_sli_msi_w1s_enb0_t;
2390 * cvmx_sli_msi_w1s_enb1
2392 * SLI_MSI_W1S_ENB0 = SLI MSI Write 1 To Set Enable1
2394 * Used to set bits in SLI_MSI_ENB1.
2396 union cvmx_sli_msi_w1s_enb1
2399 struct cvmx_sli_msi_w1s_enb1_s
2401 #if __BYTE_ORDER == __BIG_ENDIAN
2402 uint64_t set : 64; /**< A write of '1' to a vector will set the
2403 cooresponding bit in SLI_MSI_ENB1.
2404 A read to this address will return 0. */
2409 struct cvmx_sli_msi_w1s_enb1_s cn63xx;
2410 struct cvmx_sli_msi_w1s_enb1_s cn63xxp1;
2412 typedef union cvmx_sli_msi_w1s_enb1 cvmx_sli_msi_w1s_enb1_t;
2415 * cvmx_sli_msi_w1s_enb2
2417 * SLI_MSI_W1S_ENB2 = SLI MSI Write 1 To Set Enable2
2419 * Used to set bits in SLI_MSI_ENB2.
2421 union cvmx_sli_msi_w1s_enb2
2424 struct cvmx_sli_msi_w1s_enb2_s
2426 #if __BYTE_ORDER == __BIG_ENDIAN
2427 uint64_t set : 64; /**< A write of '1' to a vector will set the
2428 cooresponding bit in SLI_MSI_ENB2.
2429 A read to this address will return 0. */
2434 struct cvmx_sli_msi_w1s_enb2_s cn63xx;
2435 struct cvmx_sli_msi_w1s_enb2_s cn63xxp1;
2437 typedef union cvmx_sli_msi_w1s_enb2 cvmx_sli_msi_w1s_enb2_t;
2440 * cvmx_sli_msi_w1s_enb3
2442 * SLI_MSI_W1S_ENB3 = SLI MSI Write 1 To Set Enable3
2444 * Used to set bits in SLI_MSI_ENB3.
2446 union cvmx_sli_msi_w1s_enb3
2449 struct cvmx_sli_msi_w1s_enb3_s
2451 #if __BYTE_ORDER == __BIG_ENDIAN
2452 uint64_t set : 64; /**< A write of '1' to a vector will set the
2453 cooresponding bit in SLI_MSI_ENB3.
2454 A read to this address will return 0. */
2459 struct cvmx_sli_msi_w1s_enb3_s cn63xx;
2460 struct cvmx_sli_msi_w1s_enb3_s cn63xxp1;
2462 typedef union cvmx_sli_msi_w1s_enb3 cvmx_sli_msi_w1s_enb3_t;
2465 * cvmx_sli_msi_wr_map
2467 * SLI_MSI_WR_MAP = SLI MSI Write MAP
2469 * Used to write the mapping function of the SLI_PCIE_MSI_RCV to SLI_MSI_RCV registers.
2471 union cvmx_sli_msi_wr_map
2474 struct cvmx_sli_msi_wr_map_s
2476 #if __BYTE_ORDER == __BIG_ENDIAN
2477 uint64_t reserved_16_63 : 48;
2478 uint64_t ciu_int : 8; /**< Selects which bit in the SLI_MSI_RCV# (0-255)
2479 will be set when the value specified in the
2480 MSI_INT of this register is recevied during a
2481 write to the SLI_PCIE_MSI_RCV register. */
2482 uint64_t msi_int : 8; /**< Selects the value that would be received when the
2483 SLI_PCIE_MSI_RCV register is written. */
2485 uint64_t msi_int : 8;
2486 uint64_t ciu_int : 8;
2487 uint64_t reserved_16_63 : 48;
2490 struct cvmx_sli_msi_wr_map_s cn63xx;
2491 struct cvmx_sli_msi_wr_map_s cn63xxp1;
2493 typedef union cvmx_sli_msi_wr_map cvmx_sli_msi_wr_map_t;
2496 * cvmx_sli_pcie_msi_rcv
2498 * SLI_PCIE_MSI_RCV = SLI MAC MSI Receive
2500 * Register where MSI writes are directed from the MAC.
2502 union cvmx_sli_pcie_msi_rcv
2505 struct cvmx_sli_pcie_msi_rcv_s
2507 #if __BYTE_ORDER == __BIG_ENDIAN
2508 uint64_t reserved_8_63 : 56;
2509 uint64_t intr : 8; /**< A write to this register will result in a bit in
2510 one of the SLI_MSI_RCV# registers being set.
2511 Which bit is set is dependent on the previously
2512 written using the SLI_MSI_WR_MAP register or if
2513 not previously written the reset value of the MAP. */
2516 uint64_t reserved_8_63 : 56;
2519 struct cvmx_sli_pcie_msi_rcv_s cn63xx;
2520 struct cvmx_sli_pcie_msi_rcv_s cn63xxp1;
2522 typedef union cvmx_sli_pcie_msi_rcv cvmx_sli_pcie_msi_rcv_t;
2525 * cvmx_sli_pcie_msi_rcv_b1
2527 * SLI_PCIE_MSI_RCV_B1 = SLI MAC MSI Receive Byte 1
2529 * Register where MSI writes are directed from the MAC.
2532 * This CSR can be used by PCIe and sRIO MACs.
2535 union cvmx_sli_pcie_msi_rcv_b1
2538 struct cvmx_sli_pcie_msi_rcv_b1_s
2540 #if __BYTE_ORDER == __BIG_ENDIAN
2541 uint64_t reserved_16_63 : 48;
2542 uint64_t intr : 8; /**< A write to this register will result in a bit in
2543 one of the SLI_MSI_RCV# registers being set.
2544 Which bit is set is dependent on the previously
2545 written using the SLI_MSI_WR_MAP register or if
2546 not previously written the reset value of the MAP. */
2547 uint64_t reserved_0_7 : 8;
2549 uint64_t reserved_0_7 : 8;
2551 uint64_t reserved_16_63 : 48;
2554 struct cvmx_sli_pcie_msi_rcv_b1_s cn63xx;
2555 struct cvmx_sli_pcie_msi_rcv_b1_s cn63xxp1;
2557 typedef union cvmx_sli_pcie_msi_rcv_b1 cvmx_sli_pcie_msi_rcv_b1_t;
2560 * cvmx_sli_pcie_msi_rcv_b2
2562 * SLI_PCIE_MSI_RCV_B2 = SLI MAC MSI Receive Byte 2
2564 * Register where MSI writes are directed from the MAC.
2567 * This CSR can be used by PCIe and sRIO MACs.
2570 union cvmx_sli_pcie_msi_rcv_b2
2573 struct cvmx_sli_pcie_msi_rcv_b2_s
2575 #if __BYTE_ORDER == __BIG_ENDIAN
2576 uint64_t reserved_24_63 : 40;
2577 uint64_t intr : 8; /**< A write to this register will result in a bit in
2578 one of the SLI_MSI_RCV# registers being set.
2579 Which bit is set is dependent on the previously
2580 written using the SLI_MSI_WR_MAP register or if
2581 not previously written the reset value of the MAP. */
2582 uint64_t reserved_0_15 : 16;
2584 uint64_t reserved_0_15 : 16;
2586 uint64_t reserved_24_63 : 40;
2589 struct cvmx_sli_pcie_msi_rcv_b2_s cn63xx;
2590 struct cvmx_sli_pcie_msi_rcv_b2_s cn63xxp1;
2592 typedef union cvmx_sli_pcie_msi_rcv_b2 cvmx_sli_pcie_msi_rcv_b2_t;
2595 * cvmx_sli_pcie_msi_rcv_b3
2597 * SLI_PCIE_MSI_RCV_B3 = SLI MAC MSI Receive Byte 3
2599 * Register where MSI writes are directed from the MAC.
2602 * This CSR can be used by PCIe and sRIO MACs.
2605 union cvmx_sli_pcie_msi_rcv_b3
2608 struct cvmx_sli_pcie_msi_rcv_b3_s
2610 #if __BYTE_ORDER == __BIG_ENDIAN
2611 uint64_t reserved_32_63 : 32;
2612 uint64_t intr : 8; /**< A write to this register will result in a bit in
2613 one of the SLI_MSI_RCV# registers being set.
2614 Which bit is set is dependent on the previously
2615 written using the SLI_MSI_WR_MAP register or if
2616 not previously written the reset value of the MAP. */
2617 uint64_t reserved_0_23 : 24;
2619 uint64_t reserved_0_23 : 24;
2621 uint64_t reserved_32_63 : 32;
2624 struct cvmx_sli_pcie_msi_rcv_b3_s cn63xx;
2625 struct cvmx_sli_pcie_msi_rcv_b3_s cn63xxp1;
2627 typedef union cvmx_sli_pcie_msi_rcv_b3 cvmx_sli_pcie_msi_rcv_b3_t;
2630 * cvmx_sli_pkt#_cnts
2632 * SLI_PKT[0..31]_CNTS = SLI Packet ring# Counts
2634 * The counters for output rings.
2636 union cvmx_sli_pktx_cnts
2639 struct cvmx_sli_pktx_cnts_s
2641 #if __BYTE_ORDER == __BIG_ENDIAN
2642 uint64_t reserved_54_63 : 10;
2643 uint64_t timer : 22; /**< Timer incremented every 1024 core clocks
2644 when SLI_PKTS#_CNTS[CNT] is non zero. Field
2645 cleared when SLI_PKTS#_CNTS[CNT] goes to 0.
2646 Field is also cleared when SLI_PKT_TIME_INT is
2648 The first increment of this count can occur
2649 between 0 to 1023 core clocks. */
2650 uint64_t cnt : 32; /**< ring counter. This field is incremented as
2651 packets are sent out and decremented in response to
2652 writes to this field.
2653 When SLI_PKT_OUT_BMODE is '0' a value of 1 is
2654 added to the register for each packet, when '1'
2655 and the info-pointer is NOT used the length of the
2656 packet plus 8 is added, when '1' and info-pointer
2657 mode IS used the packet length is added to this
2661 uint64_t timer : 22;
2662 uint64_t reserved_54_63 : 10;
2665 struct cvmx_sli_pktx_cnts_s cn63xx;
2666 struct cvmx_sli_pktx_cnts_s cn63xxp1;
2668 typedef union cvmx_sli_pktx_cnts cvmx_sli_pktx_cnts_t;
2671 * cvmx_sli_pkt#_in_bp
2673 * SLI_PKT[0..31]_IN_BP = SLI Packet ring# Input Backpressure
2675 * The counters and thresholds for input packets to apply backpressure to processing of the packets.
2677 union cvmx_sli_pktx_in_bp
2680 struct cvmx_sli_pktx_in_bp_s
2682 #if __BYTE_ORDER == __BIG_ENDIAN
2683 uint64_t wmark : 32; /**< When CNT is greater than this threshold no more
2684 packets will be processed for this ring.
2685 When writing this field of the SLI_PKT#_IN_BP
2686 register, use a 4-byte write so as to not write
2687 any other field of this register. */
2688 uint64_t cnt : 32; /**< ring counter. This field is incremented by one
2689 whenever OCTEON receives, buffers, and creates a
2690 work queue entry for a packet that arrives by the
2691 cooresponding input ring. A write to this field
2692 will be subtracted from the field value.
2693 When writing this field of the SLI_PKT#_IN_BP
2694 register, use a 4-byte write so as to not write
2695 any other field of this register. */
2698 uint64_t wmark : 32;
2701 struct cvmx_sli_pktx_in_bp_s cn63xx;
2702 struct cvmx_sli_pktx_in_bp_s cn63xxp1;
2704 typedef union cvmx_sli_pktx_in_bp cvmx_sli_pktx_in_bp_t;
2707 * cvmx_sli_pkt#_instr_baddr
2709 * SLI_PKT[0..31]_INSTR_BADDR = SLI Packet ring# Instruction Base Address
2711 * Start of Instruction for input packets.
2713 union cvmx_sli_pktx_instr_baddr
2716 struct cvmx_sli_pktx_instr_baddr_s
2718 #if __BYTE_ORDER == __BIG_ENDIAN
2719 uint64_t addr : 61; /**< Base address for Instructions. */
2720 uint64_t reserved_0_2 : 3;
2722 uint64_t reserved_0_2 : 3;
2726 struct cvmx_sli_pktx_instr_baddr_s cn63xx;
2727 struct cvmx_sli_pktx_instr_baddr_s cn63xxp1;
2729 typedef union cvmx_sli_pktx_instr_baddr cvmx_sli_pktx_instr_baddr_t;
2732 * cvmx_sli_pkt#_instr_baoff_dbell
2734 * SLI_PKT[0..31]_INSTR_BAOFF_DBELL = SLI Packet ring# Instruction Base Address Offset and Doorbell
2736 * The doorbell and base address offset for next read.
2738 union cvmx_sli_pktx_instr_baoff_dbell
2741 struct cvmx_sli_pktx_instr_baoff_dbell_s
2743 #if __BYTE_ORDER == __BIG_ENDIAN
2744 uint64_t aoff : 32; /**< The offset from the SLI_PKT[0..31]_INSTR_BADDR
2745 where the next instruction will be read. */
2746 uint64_t dbell : 32; /**< Instruction doorbell count. Writes to this field
2747 will increment the value here. Reads will return
2748 present value. A write of 0xffffffff will set the
2749 DBELL and AOFF fields to '0'. */
2751 uint64_t dbell : 32;
2755 struct cvmx_sli_pktx_instr_baoff_dbell_s cn63xx;
2756 struct cvmx_sli_pktx_instr_baoff_dbell_s cn63xxp1;
2758 typedef union cvmx_sli_pktx_instr_baoff_dbell cvmx_sli_pktx_instr_baoff_dbell_t;
2761 * cvmx_sli_pkt#_instr_fifo_rsize
2763 * SLI_PKT[0..31]_INSTR_FIFO_RSIZE = SLI Packet ring# Instruction FIFO and Ring Size.
2765 * Fifo field and ring size for Instructions.
2767 union cvmx_sli_pktx_instr_fifo_rsize
2770 struct cvmx_sli_pktx_instr_fifo_rsize_s
2772 #if __BYTE_ORDER == __BIG_ENDIAN
2773 uint64_t max : 9; /**< Max Fifo Size. */
2774 uint64_t rrp : 9; /**< Fifo read pointer. */
2775 uint64_t wrp : 9; /**< Fifo write pointer. */
2776 uint64_t fcnt : 5; /**< Fifo count. */
2777 uint64_t rsize : 32; /**< Instruction ring size. */
2779 uint64_t rsize : 32;
2786 struct cvmx_sli_pktx_instr_fifo_rsize_s cn63xx;
2787 struct cvmx_sli_pktx_instr_fifo_rsize_s cn63xxp1;
2789 typedef union cvmx_sli_pktx_instr_fifo_rsize cvmx_sli_pktx_instr_fifo_rsize_t;
2792 * cvmx_sli_pkt#_instr_header
2794 * SLI_PKT[0..31]_INSTR_HEADER = SLI Packet ring# Instruction Header.
2796 * VAlues used to build input packet header.
2798 union cvmx_sli_pktx_instr_header
2801 struct cvmx_sli_pktx_instr_header_s
2803 #if __BYTE_ORDER == __BIG_ENDIAN
2804 uint64_t reserved_44_63 : 20;
2805 uint64_t pbp : 1; /**< Enable Packet-by-packet mode. */
2806 uint64_t reserved_38_42 : 5;
2807 uint64_t rparmode : 2; /**< Parse Mode. Used when packet is raw and PBP==0. */
2808 uint64_t reserved_35_35 : 1;
2809 uint64_t rskp_len : 7; /**< Skip Length. Used when packet is raw and PBP==0. */
2810 uint64_t reserved_26_27 : 2;
2811 uint64_t rnqos : 1; /**< RNQOS. Used when packet is raw and PBP==0. */
2812 uint64_t rngrp : 1; /**< RNGRP. Used when packet is raw and PBP==0. */
2813 uint64_t rntt : 1; /**< RNTT. Used when packet is raw and PBP==0. */
2814 uint64_t rntag : 1; /**< RNTAG. Used when packet is raw and PBP==0. */
2815 uint64_t use_ihdr : 1; /**< When set '1' the instruction header will be sent
2816 as part of the packet data, regardless of the
2817 value of bit [63] of the instruction header.
2818 USE_IHDR must be set whenever PBP is set. */
2819 uint64_t reserved_16_20 : 5;
2820 uint64_t par_mode : 2; /**< Parse Mode. Used when USE_IHDR is set and packet
2821 is not raw and PBP is not set. */
2822 uint64_t reserved_13_13 : 1;
2823 uint64_t skp_len : 7; /**< Skip Length. Used when USE_IHDR is set and packet
2824 is not raw and PBP is not set. */
2825 uint64_t reserved_4_5 : 2;
2826 uint64_t nqos : 1; /**< NQOS. Used when packet is raw and PBP==0. */
2827 uint64_t ngrp : 1; /**< NGRP. Used when packet is raw and PBP==0. */
2828 uint64_t ntt : 1; /**< NTT. Used when packet is raw and PBP==0. */
2829 uint64_t ntag : 1; /**< NTAG. Used when packet is raw and PBP==0. */
2835 uint64_t reserved_4_5 : 2;
2836 uint64_t skp_len : 7;
2837 uint64_t reserved_13_13 : 1;
2838 uint64_t par_mode : 2;
2839 uint64_t reserved_16_20 : 5;
2840 uint64_t use_ihdr : 1;
2845 uint64_t reserved_26_27 : 2;
2846 uint64_t rskp_len : 7;
2847 uint64_t reserved_35_35 : 1;
2848 uint64_t rparmode : 2;
2849 uint64_t reserved_38_42 : 5;
2851 uint64_t reserved_44_63 : 20;
2854 struct cvmx_sli_pktx_instr_header_s cn63xx;
2855 struct cvmx_sli_pktx_instr_header_s cn63xxp1;
2857 typedef union cvmx_sli_pktx_instr_header cvmx_sli_pktx_instr_header_t;
2860 * cvmx_sli_pkt#_out_size
2862 * SLI_PKT[0..31]_OUT_SIZE = SLI Packet Out Size
2864 * Contains the BSIZE and ISIZE for output packet ports.
2866 union cvmx_sli_pktx_out_size
2869 struct cvmx_sli_pktx_out_size_s
2871 #if __BYTE_ORDER == __BIG_ENDIAN
2872 uint64_t reserved_23_63 : 41;
2873 uint64_t isize : 7; /**< INFO BYTES size (bytes) for ring X. Legal sizes
2874 are 0 to 120. Not used in buffer-pointer-only mode. */
2875 uint64_t bsize : 16; /**< BUFFER SIZE (bytes) for ring X. */
2877 uint64_t bsize : 16;
2879 uint64_t reserved_23_63 : 41;
2882 struct cvmx_sli_pktx_out_size_s cn63xx;
2883 struct cvmx_sli_pktx_out_size_s cn63xxp1;
2885 typedef union cvmx_sli_pktx_out_size cvmx_sli_pktx_out_size_t;
2888 * cvmx_sli_pkt#_slist_baddr
2890 * SLI_PKT[0..31]_SLIST_BADDR = SLI Packet ring# Scatter List Base Address
2892 * Start of Scatter List for output packet pointers - MUST be 16 byte alligned
2894 union cvmx_sli_pktx_slist_baddr
2897 struct cvmx_sli_pktx_slist_baddr_s
2899 #if __BYTE_ORDER == __BIG_ENDIAN
2900 uint64_t addr : 60; /**< Base address for scatter list pointers. */
2901 uint64_t reserved_0_3 : 4;
2903 uint64_t reserved_0_3 : 4;
2907 struct cvmx_sli_pktx_slist_baddr_s cn63xx;
2908 struct cvmx_sli_pktx_slist_baddr_s cn63xxp1;
2910 typedef union cvmx_sli_pktx_slist_baddr cvmx_sli_pktx_slist_baddr_t;
2913 * cvmx_sli_pkt#_slist_baoff_dbell
2915 * SLI_PKT[0..31]_SLIST_BAOFF_DBELL = SLI Packet ring# Scatter List Base Address Offset and Doorbell
2917 * The doorbell and base address offset for next read.
2919 union cvmx_sli_pktx_slist_baoff_dbell
2922 struct cvmx_sli_pktx_slist_baoff_dbell_s
2924 #if __BYTE_ORDER == __BIG_ENDIAN
2925 uint64_t aoff : 32; /**< The offset from the SLI_PKT[0..31]_SLIST_BADDR
2926 where the next SList pointer will be read.
2927 A write of 0xFFFFFFFF to the DBELL field will
2928 clear DBELL and AOFF */
2929 uint64_t dbell : 32; /**< Scatter list doorbell count. Writes to this field
2930 will increment the value here. Reads will return
2931 present value. The value of this field is
2932 decremented as read operations are ISSUED for
2934 A write of 0xFFFFFFFF will clear DBELL and AOFF */
2936 uint64_t dbell : 32;
2940 struct cvmx_sli_pktx_slist_baoff_dbell_s cn63xx;
2941 struct cvmx_sli_pktx_slist_baoff_dbell_s cn63xxp1;
2943 typedef union cvmx_sli_pktx_slist_baoff_dbell cvmx_sli_pktx_slist_baoff_dbell_t;
2946 * cvmx_sli_pkt#_slist_fifo_rsize
2948 * SLI_PKT[0..31]_SLIST_FIFO_RSIZE = SLI Packet ring# Scatter List FIFO and Ring Size.
2950 * The number of scatter pointer pairs in the scatter list.
2952 union cvmx_sli_pktx_slist_fifo_rsize
2955 struct cvmx_sli_pktx_slist_fifo_rsize_s
2957 #if __BYTE_ORDER == __BIG_ENDIAN
2958 uint64_t reserved_32_63 : 32;
2959 uint64_t rsize : 32; /**< The number of scatter pointer pairs contained in
2960 the scatter list ring. */
2962 uint64_t rsize : 32;
2963 uint64_t reserved_32_63 : 32;
2966 struct cvmx_sli_pktx_slist_fifo_rsize_s cn63xx;
2967 struct cvmx_sli_pktx_slist_fifo_rsize_s cn63xxp1;
2969 typedef union cvmx_sli_pktx_slist_fifo_rsize cvmx_sli_pktx_slist_fifo_rsize_t;
2972 * cvmx_sli_pkt_cnt_int
2974 * SLI_PKT_CNT_INT = SLI Packet Counter Interrupt
2976 * The packets rings that are interrupting because of Packet Counters.
2978 union cvmx_sli_pkt_cnt_int
2981 struct cvmx_sli_pkt_cnt_int_s
2983 #if __BYTE_ORDER == __BIG_ENDIAN
2984 uint64_t reserved_32_63 : 32;
2985 uint64_t port : 32; /**< Output ring packet counter interrupt bits
2986 SLI sets PORT<i> whenever
2987 SLI_PKTi_CNTS[CNT] > SLI_PKT_INT_LEVELS[CNT].
2988 SLI_PKT_CNT_INT_ENB[PORT<i>] is the corresponding
2992 uint64_t reserved_32_63 : 32;
2995 struct cvmx_sli_pkt_cnt_int_s cn63xx;
2996 struct cvmx_sli_pkt_cnt_int_s cn63xxp1;
2998 typedef union cvmx_sli_pkt_cnt_int cvmx_sli_pkt_cnt_int_t;
3001 * cvmx_sli_pkt_cnt_int_enb
3003 * SLI_PKT_CNT_INT_ENB = SLI Packet Counter Interrupt Enable
3005 * Enable for the packets rings that are interrupting because of Packet Counters.
3007 union cvmx_sli_pkt_cnt_int_enb
3010 struct cvmx_sli_pkt_cnt_int_enb_s
3012 #if __BYTE_ORDER == __BIG_ENDIAN
3013 uint64_t reserved_32_63 : 32;
3014 uint64_t port : 32; /**< Output ring packet counter interrupt enables
3015 When both PORT<i> and corresponding
3016 SLI_PKT_CNT_INT[PORT<i>] are set, for any i,
3017 then SLI_INT_SUM[PCNT] is set, which can cause
3021 uint64_t reserved_32_63 : 32;
3024 struct cvmx_sli_pkt_cnt_int_enb_s cn63xx;
3025 struct cvmx_sli_pkt_cnt_int_enb_s cn63xxp1;
3027 typedef union cvmx_sli_pkt_cnt_int_enb cvmx_sli_pkt_cnt_int_enb_t;
3032 * SLI_PKT_CTL = SLI Packet Control
3034 * Control for packets.
3036 union cvmx_sli_pkt_ctl
3039 struct cvmx_sli_pkt_ctl_s
3041 #if __BYTE_ORDER == __BIG_ENDIAN
3042 uint64_t reserved_5_63 : 59;
3043 uint64_t ring_en : 1; /**< When '0' forces "relative Q position" received
3044 from PKO to be zero, and replicates the back-
3045 pressure indication for the first ring attached
3046 to a PKO port across all the rings attached to a
3047 PKO port. When '1' backpressure is on a per
3049 uint64_t pkt_bp : 4; /**< When set '1' enable the port level backpressure for
3050 PKO ports associated with the bit. */
3052 uint64_t pkt_bp : 4;
3053 uint64_t ring_en : 1;
3054 uint64_t reserved_5_63 : 59;
3057 struct cvmx_sli_pkt_ctl_s cn63xx;
3058 struct cvmx_sli_pkt_ctl_s cn63xxp1;
3060 typedef union cvmx_sli_pkt_ctl cvmx_sli_pkt_ctl_t;
3063 * cvmx_sli_pkt_data_out_es
3065 * SLI_PKT_DATA_OUT_ES = SLI's Packet Data Out Endian Swap
3067 * The Endian Swap for writing Data Out.
3069 union cvmx_sli_pkt_data_out_es
3072 struct cvmx_sli_pkt_data_out_es_s
3074 #if __BYTE_ORDER == __BIG_ENDIAN
3075 uint64_t es : 64; /**< ES<1:0> or MACADD<63:62> for buffer/info writes.
3076 ES<2i+1:2i> becomes either ES<1:0> or
3077 MACADD<63:62> for writes to buffer/info pair
3078 MAC memory space addresses fetched from packet
3079 output ring i. ES<1:0> if SLI_PKT_DPADDR[DPTR<i>]=1
3080 , else MACADD<63:62>.
3081 In the latter case, ES<1:0> comes from DPTR<63:62>.
3082 ES<1:0> is the endian-swap attribute for these MAC
3083 memory space writes. */
3088 struct cvmx_sli_pkt_data_out_es_s cn63xx;
3089 struct cvmx_sli_pkt_data_out_es_s cn63xxp1;
3091 typedef union cvmx_sli_pkt_data_out_es cvmx_sli_pkt_data_out_es_t;
3094 * cvmx_sli_pkt_data_out_ns
3096 * SLI_PKT_DATA_OUT_NS = SLI's Packet Data Out No Snoop
3098 * The NS field for the TLP when writing packet data.
3100 union cvmx_sli_pkt_data_out_ns
3103 struct cvmx_sli_pkt_data_out_ns_s
3105 #if __BYTE_ORDER == __BIG_ENDIAN
3106 uint64_t reserved_32_63 : 32;
3107 uint64_t nsr : 32; /**< ADDRTYPE<1> or MACADD<61> for buffer/info writes.
3108 NSR<i> becomes either ADDRTYPE<1> or MACADD<61>
3109 for writes to buffer/info pair MAC memory space
3110 addresses fetched from packet output ring i.
3111 ADDRTYPE<1> if SLI_PKT_DPADDR[DPTR<i>]=1, else
3113 In the latter case,ADDRTYPE<1> comes from DPTR<61>.
3114 ADDRTYPE<1> is the no-snoop attribute for PCIe
3115 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
3118 uint64_t reserved_32_63 : 32;
3121 struct cvmx_sli_pkt_data_out_ns_s cn63xx;
3122 struct cvmx_sli_pkt_data_out_ns_s cn63xxp1;
3124 typedef union cvmx_sli_pkt_data_out_ns cvmx_sli_pkt_data_out_ns_t;
3127 * cvmx_sli_pkt_data_out_ror
3129 * SLI_PKT_DATA_OUT_ROR = SLI's Packet Data Out Relaxed Ordering
3131 * The ROR field for the TLP when writing Packet Data.
3133 union cvmx_sli_pkt_data_out_ror
3136 struct cvmx_sli_pkt_data_out_ror_s
3138 #if __BYTE_ORDER == __BIG_ENDIAN
3139 uint64_t reserved_32_63 : 32;
3140 uint64_t ror : 32; /**< ADDRTYPE<0> or MACADD<60> for buffer/info writes.
3141 ROR<i> becomes either ADDRTYPE<0> or MACADD<60>
3142 for writes to buffer/info pair MAC memory space
3143 addresses fetched from packet output ring i.
3144 ADDRTYPE<0> if SLI_PKT_DPADDR[DPTR<i>]=1, else
3146 In the latter case,ADDRTYPE<0> comes from DPTR<60>.
3147 ADDRTYPE<0> is the relaxed-order attribute for PCIe
3148 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
3151 uint64_t reserved_32_63 : 32;
3154 struct cvmx_sli_pkt_data_out_ror_s cn63xx;
3155 struct cvmx_sli_pkt_data_out_ror_s cn63xxp1;
3157 typedef union cvmx_sli_pkt_data_out_ror cvmx_sli_pkt_data_out_ror_t;
3160 * cvmx_sli_pkt_dpaddr
3162 * SLI_PKT_DPADDR = SLI's Packet Data Pointer Addr
3164 * Used to detemine address and attributes for packet data writes.
3166 union cvmx_sli_pkt_dpaddr
3169 struct cvmx_sli_pkt_dpaddr_s
3171 #if __BYTE_ORDER == __BIG_ENDIAN
3172 uint64_t reserved_32_63 : 32;
3173 uint64_t dptr : 32; /**< Determines whether buffer/info pointers are
3174 DPTR format 0 or DPTR format 1.
3175 When DPTR<i>=1, the buffer/info pointers fetched
3176 from packet output ring i are DPTR format 0.
3177 When DPTR<i>=0, the buffer/info pointers fetched
3178 from packet output ring i are DPTR format 1.
3179 (Replace SLI_PKT_INPUT_CONTROL[D_ESR,D_NSR,D_ROR]
3180 in the HRM descriptions of DPTR format 0/1 with
3181 SLI_PKT_DATA_OUT_ES[ES<2i+1:2i>],
3182 SLI_PKT_DATA_OUT_NS[NSR<i>], and
3183 SLI_PKT_DATA_OUT_ROR[ROR<i>], respectively,
3187 uint64_t reserved_32_63 : 32;
3190 struct cvmx_sli_pkt_dpaddr_s cn63xx;
3191 struct cvmx_sli_pkt_dpaddr_s cn63xxp1;
3193 typedef union cvmx_sli_pkt_dpaddr cvmx_sli_pkt_dpaddr_t;
3196 * cvmx_sli_pkt_in_bp
3198 * SLI_PKT_IN_BP = SLI Packet Input Backpressure
3200 * Which input rings have backpressure applied.
3202 union cvmx_sli_pkt_in_bp
3205 struct cvmx_sli_pkt_in_bp_s
3207 #if __BYTE_ORDER == __BIG_ENDIAN
3208 uint64_t reserved_32_63 : 32;
3209 uint64_t bp : 32; /**< A packet input ring that has its count greater
3210 than its WMARK will have backpressure applied.
3211 Each of the 32 bits coorespond to an input ring.
3212 When '1' that ring has backpressure applied an
3213 will fetch no more instructions, but will process
3214 any previously fetched instructions. */
3217 uint64_t reserved_32_63 : 32;
3220 struct cvmx_sli_pkt_in_bp_s cn63xx;
3221 struct cvmx_sli_pkt_in_bp_s cn63xxp1;
3223 typedef union cvmx_sli_pkt_in_bp cvmx_sli_pkt_in_bp_t;
3226 * cvmx_sli_pkt_in_done#_cnts
3228 * SLI_PKT_IN_DONE[0..31]_CNTS = SLI Instruction Done ring# Counts
3230 * Counters for instructions completed on Input rings.
3232 union cvmx_sli_pkt_in_donex_cnts
3235 struct cvmx_sli_pkt_in_donex_cnts_s
3237 #if __BYTE_ORDER == __BIG_ENDIAN
3238 uint64_t reserved_32_63 : 32;
3239 uint64_t cnt : 32; /**< This field is incrmented by '1' when an instruction
3240 is completed. This field is incremented as the
3241 last of the data is read from the MAC. */
3244 uint64_t reserved_32_63 : 32;
3247 struct cvmx_sli_pkt_in_donex_cnts_s cn63xx;
3248 struct cvmx_sli_pkt_in_donex_cnts_s cn63xxp1;
3250 typedef union cvmx_sli_pkt_in_donex_cnts cvmx_sli_pkt_in_donex_cnts_t;
3253 * cvmx_sli_pkt_in_instr_counts
3255 * SLI_PKT_IN_INSTR_COUNTS = SLI Packet Input Instrutction Counts
3257 * Keeps track of the number of instructions read into the FIFO and Packets sent to IPD.
3259 union cvmx_sli_pkt_in_instr_counts
3262 struct cvmx_sli_pkt_in_instr_counts_s
3264 #if __BYTE_ORDER == __BIG_ENDIAN
3265 uint64_t wr_cnt : 32; /**< Shows the number of packets sent to the IPD. */
3266 uint64_t rd_cnt : 32; /**< Shows the value of instructions that have had reads
3268 to the Packet-ring is in reset. */
3270 uint64_t rd_cnt : 32;
3271 uint64_t wr_cnt : 32;
3274 struct cvmx_sli_pkt_in_instr_counts_s cn63xx;
3275 struct cvmx_sli_pkt_in_instr_counts_s cn63xxp1;
3277 typedef union cvmx_sli_pkt_in_instr_counts cvmx_sli_pkt_in_instr_counts_t;
3280 * cvmx_sli_pkt_in_pcie_port
3282 * SLI_PKT_IN_PCIE_PORT = SLI's Packet In To MAC Port Assignment
3284 * Assigns Packet Input rings to MAC ports.
3286 union cvmx_sli_pkt_in_pcie_port
3289 struct cvmx_sli_pkt_in_pcie_port_s
3291 #if __BYTE_ORDER == __BIG_ENDIAN
3292 uint64_t pp : 64; /**< The MAC port that the Packet ring number is
3293 assigned. Two bits are used per ring (i.e. ring 0
3294 [1:0], ring 1 [3:2], ....). A value of '0 means
3295 that the Packetring is assign to MAC Port 0, a '1'
3296 MAC Port 1, '2' and '3' are reserved. */
3301 struct cvmx_sli_pkt_in_pcie_port_s cn63xx;
3302 struct cvmx_sli_pkt_in_pcie_port_s cn63xxp1;
3304 typedef union cvmx_sli_pkt_in_pcie_port cvmx_sli_pkt_in_pcie_port_t;
3307 * cvmx_sli_pkt_input_control
3309 * SLI_PKT_INPUT_CONTROL = SLI's Packet Input Control
3311 * Control for reads for gather list and instructions.
3313 union cvmx_sli_pkt_input_control
3316 struct cvmx_sli_pkt_input_control_s
3318 #if __BYTE_ORDER == __BIG_ENDIAN
3319 uint64_t reserved_23_63 : 41;
3320 uint64_t pkt_rr : 1; /**< When set '1' the input packet selection will be
3321 made with a Round Robin arbitration. When '0'
3322 the input packet ring is fixed in priority,
3323 where the lower ring number has higher priority. */
3324 uint64_t pbp_dhi : 13; /**< PBP_DHI replaces address bits that are used
3325 for parse mode and skip-length when
3326 SLI_PKTi_INSTR_HEADER[PBP]=1.
3327 PBP_DHI becomes either MACADD<63:55> or MACADD<59:51>
3328 for the instruction DPTR reads in this case.
3329 The instruction DPTR reads are called
3330 "First Direct" or "First Indirect" in the HRM.
3331 When PBP=1, if "First Direct" and USE_CSR=0, PBP_DHI
3332 becomes MACADD<59:51>, else MACADD<63:55>. */
3333 uint64_t d_nsr : 1; /**< ADDRTYPE<1> or MACADD<61> for packet input data
3335 D_NSR becomes either ADDRTYPE<1> or MACADD<61>
3336 for MAC memory space reads of packet input data
3337 fetched for any packet input ring.
3338 ADDRTYPE<1> if USE_CSR=1, else MACADD<61>.
3339 In the latter case, ADDRTYPE<1> comes from DPTR<61>.
3340 ADDRTYPE<1> is the no-snoop attribute for PCIe
3341 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
3342 uint64_t d_esr : 2; /**< ES<1:0> or MACADD<63:62> for packet input data
3344 D_ESR becomes either ES<1:0> or MACADD<63:62>
3345 for MAC memory space reads of packet input data
3346 fetched for any packet input ring.
3347 ES<1:0> if USE_CSR=1, else MACADD<63:62>.
3348 In the latter case, ES<1:0> comes from DPTR<63:62>.
3349 ES<1:0> is the endian-swap attribute for these MAC
3350 memory space reads. */
3351 uint64_t d_ror : 1; /**< ADDRTYPE<0> or MACADD<60> for packet input data
3353 D_ROR becomes either ADDRTYPE<0> or MACADD<60>
3354 for MAC memory space reads of packet input data
3355 fetched for any packet input ring.
3356 ADDRTYPE<0> if USE_CSR=1, else MACADD<60>.
3357 In the latter case, ADDRTYPE<0> comes from DPTR<60>.
3358 ADDRTYPE<0> is the relaxed-order attribute for PCIe
3359 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
3360 uint64_t use_csr : 1; /**< When set '1' the csr value will be used for
3361 ROR, ESR, and NSR. When clear '0' the value in
3362 DPTR will be used. In turn the bits not used for
3363 ROR, ESR, and NSR, will be used for bits [63:60]
3364 of the address used to fetch packet data. */
3365 uint64_t nsr : 1; /**< ADDRTYPE<1> for packet input instruction reads and
3366 gather list (i.e. DPI component) reads from MAC
3368 ADDRTYPE<1> is the no-snoop attribute for PCIe
3369 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
3370 uint64_t esr : 2; /**< ES<1:0> for packet input instruction reads and
3371 gather list (i.e. DPI component) reads from MAC
3373 ES<1:0> is the endian-swap attribute for these MAC
3374 memory space reads. */
3375 uint64_t ror : 1; /**< ADDRTYPE<0> for packet input instruction reads and
3376 gather list (i.e. DPI component) reads from MAC
3378 ADDRTYPE<0> is the relaxed-order attribute for PCIe
3379 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
3384 uint64_t use_csr : 1;
3388 uint64_t pbp_dhi : 13;
3389 uint64_t pkt_rr : 1;
3390 uint64_t reserved_23_63 : 41;
3393 struct cvmx_sli_pkt_input_control_s cn63xx;
3394 struct cvmx_sli_pkt_input_control_s cn63xxp1;
3396 typedef union cvmx_sli_pkt_input_control cvmx_sli_pkt_input_control_t;
3399 * cvmx_sli_pkt_instr_enb
3401 * SLI_PKT_INSTR_ENB = SLI's Packet Instruction Enable
3403 * Enables the instruction fetch for a Packet-ring.
3405 union cvmx_sli_pkt_instr_enb
3408 struct cvmx_sli_pkt_instr_enb_s
3410 #if __BYTE_ORDER == __BIG_ENDIAN
3411 uint64_t reserved_32_63 : 32;
3412 uint64_t enb : 32; /**< When ENB<i>=1, instruction input ring i is enabled. */
3415 uint64_t reserved_32_63 : 32;
3418 struct cvmx_sli_pkt_instr_enb_s cn63xx;
3419 struct cvmx_sli_pkt_instr_enb_s cn63xxp1;
3421 typedef union cvmx_sli_pkt_instr_enb cvmx_sli_pkt_instr_enb_t;
3424 * cvmx_sli_pkt_instr_rd_size
3426 * SLI_PKT_INSTR_RD_SIZE = SLI Instruction Read Size
3428 * The number of instruction allowed to be read at one time.
3430 union cvmx_sli_pkt_instr_rd_size
3433 struct cvmx_sli_pkt_instr_rd_size_s
3435 #if __BYTE_ORDER == __BIG_ENDIAN
3436 uint64_t rdsize : 64; /**< Number of instructions to be read in one MAC read
3437 request for the 4 ports - 8 rings. Every two bits
3438 (i.e. 1:0, 3:2, 5:4..) are assign to the port/ring
3440 - 15:0 PKIPort0,Ring 7..0 31:16 PKIPort1,Ring 7..0
3441 - 47:32 PKIPort2,Ring 7..0 63:48 PKIPort3,Ring 7..0
3446 3 - 4 Instructions */
3448 uint64_t rdsize : 64;
3451 struct cvmx_sli_pkt_instr_rd_size_s cn63xx;
3452 struct cvmx_sli_pkt_instr_rd_size_s cn63xxp1;
3454 typedef union cvmx_sli_pkt_instr_rd_size cvmx_sli_pkt_instr_rd_size_t;
3457 * cvmx_sli_pkt_instr_size
3459 * SLI_PKT_INSTR_SIZE = SLI's Packet Instruction Size
3461 * Determines if instructions are 64 or 32 byte in size for a Packet-ring.
3463 union cvmx_sli_pkt_instr_size
3466 struct cvmx_sli_pkt_instr_size_s
3468 #if __BYTE_ORDER == __BIG_ENDIAN
3469 uint64_t reserved_32_63 : 32;
3470 uint64_t is_64b : 32; /**< When IS_64B<i>=1, instruction input ring i uses 64B
3471 instructions, else 32B instructions. */
3473 uint64_t is_64b : 32;
3474 uint64_t reserved_32_63 : 32;
3477 struct cvmx_sli_pkt_instr_size_s cn63xx;
3478 struct cvmx_sli_pkt_instr_size_s cn63xxp1;
3480 typedef union cvmx_sli_pkt_instr_size cvmx_sli_pkt_instr_size_t;
3483 * cvmx_sli_pkt_int_levels
3485 * 0x90F0 reserved SLI_PKT_PCIE_PORT2
3488 * SLI_PKT_INT_LEVELS = SLI's Packet Interrupt Levels
3490 * Output packet interrupt levels.
3492 union cvmx_sli_pkt_int_levels
3495 struct cvmx_sli_pkt_int_levels_s
3497 #if __BYTE_ORDER == __BIG_ENDIAN
3498 uint64_t reserved_54_63 : 10;
3499 uint64_t time : 22; /**< Output ring counter time interrupt threshold
3500 SLI sets SLI_PKT_TIME_INT[PORT<i>] whenever
3501 SLI_PKTi_CNTS[TIMER] > TIME */
3502 uint64_t cnt : 32; /**< Output ring counter interrupt threshold
3503 SLI sets SLI_PKT_CNT_INT[PORT<i>] whenever
3504 SLI_PKTi_CNTS[CNT] > CNT */
3508 uint64_t reserved_54_63 : 10;
3511 struct cvmx_sli_pkt_int_levels_s cn63xx;
3512 struct cvmx_sli_pkt_int_levels_s cn63xxp1;
3514 typedef union cvmx_sli_pkt_int_levels cvmx_sli_pkt_int_levels_t;
3519 * SLI_PKT_IPTR = SLI's Packet Info Poitner
3521 * Controls using the Info-Pointer to store length and data.
3523 union cvmx_sli_pkt_iptr
3526 struct cvmx_sli_pkt_iptr_s
3528 #if __BYTE_ORDER == __BIG_ENDIAN
3529 uint64_t reserved_32_63 : 32;
3530 uint64_t iptr : 32; /**< When IPTR<i>=1, packet output ring i is in info-
3531 pointer mode, else buffer-pointer-only mode. */
3534 uint64_t reserved_32_63 : 32;
3537 struct cvmx_sli_pkt_iptr_s cn63xx;
3538 struct cvmx_sli_pkt_iptr_s cn63xxp1;
3540 typedef union cvmx_sli_pkt_iptr cvmx_sli_pkt_iptr_t;
3543 * cvmx_sli_pkt_out_bmode
3545 * SLI_PKT_OUT_BMODE = SLI's Packet Out Byte Mode
3547 * Control the updating of the SLI_PKT#_CNT register.
3549 union cvmx_sli_pkt_out_bmode
3552 struct cvmx_sli_pkt_out_bmode_s
3554 #if __BYTE_ORDER == __BIG_ENDIAN
3555 uint64_t reserved_32_63 : 32;
3556 uint64_t bmode : 32; /**< Determines whether SLI_PKTi_CNTS[CNT] is a byte or
3558 When BMODE<i>=1, SLI_PKTi_CNTS[CNT] is a byte
3559 counter, else SLI_PKTi_CNTS[CNT] is a packet
3562 uint64_t bmode : 32;
3563 uint64_t reserved_32_63 : 32;
3566 struct cvmx_sli_pkt_out_bmode_s cn63xx;
3567 struct cvmx_sli_pkt_out_bmode_s cn63xxp1;
3569 typedef union cvmx_sli_pkt_out_bmode cvmx_sli_pkt_out_bmode_t;
3572 * cvmx_sli_pkt_out_enb
3574 * SLI_PKT_OUT_ENB = SLI's Packet Output Enable
3576 * Enables the output packet engines.
3578 union cvmx_sli_pkt_out_enb
3581 struct cvmx_sli_pkt_out_enb_s
3583 #if __BYTE_ORDER == __BIG_ENDIAN
3584 uint64_t reserved_32_63 : 32;
3585 uint64_t enb : 32; /**< When ENB<i>=1, packet output ring i is enabled.
3586 If an error occurs on reading pointers for an
3587 output ring, the ring will be disabled by clearing
3588 the bit associated with the ring to '0'. */
3591 uint64_t reserved_32_63 : 32;
3594 struct cvmx_sli_pkt_out_enb_s cn63xx;
3595 struct cvmx_sli_pkt_out_enb_s cn63xxp1;
3597 typedef union cvmx_sli_pkt_out_enb cvmx_sli_pkt_out_enb_t;
3600 * cvmx_sli_pkt_output_wmark
3602 * SLI_PKT_OUTPUT_WMARK = SLI's Packet Output Water Mark
3604 * Value that when the SLI_PKT#_SLIST_BAOFF_DBELL[DBELL] value is less then that backpressure for the rings will be applied.
3606 union cvmx_sli_pkt_output_wmark
3609 struct cvmx_sli_pkt_output_wmark_s
3611 #if __BYTE_ORDER == __BIG_ENDIAN
3612 uint64_t reserved_32_63 : 32;
3613 uint64_t wmark : 32; /**< Value when DBELL count drops below backpressure
3614 for the ring will be applied to the PKO. */
3616 uint64_t wmark : 32;
3617 uint64_t reserved_32_63 : 32;
3620 struct cvmx_sli_pkt_output_wmark_s cn63xx;
3621 struct cvmx_sli_pkt_output_wmark_s cn63xxp1;
3623 typedef union cvmx_sli_pkt_output_wmark cvmx_sli_pkt_output_wmark_t;
3626 * cvmx_sli_pkt_pcie_port
3628 * SLI_PKT_PCIE_PORT = SLI's Packet To MAC Port Assignment
3630 * Assigns Packet Ports to MAC ports.
3632 union cvmx_sli_pkt_pcie_port
3635 struct cvmx_sli_pkt_pcie_port_s
3637 #if __BYTE_ORDER == __BIG_ENDIAN
3638 uint64_t pp : 64; /**< The physical MAC port that the output ring uses.
3639 Two bits are used per ring (i.e. ring 0 [1:0],
3640 ring 1 [3:2], ....). A value of '0 means
3641 that the Packetring is assign to MAC Port 0, a '1'
3642 MAC Port 1, '2' and '3' are reserved. */
3647 struct cvmx_sli_pkt_pcie_port_s cn63xx;
3648 struct cvmx_sli_pkt_pcie_port_s cn63xxp1;
3650 typedef union cvmx_sli_pkt_pcie_port cvmx_sli_pkt_pcie_port_t;
3653 * cvmx_sli_pkt_port_in_rst
3660 * SLI_PKT_PORT_IN_RST = SLI Packet Port In Reset
3662 * Vector bits related to ring-port for ones that are reset.
3664 union cvmx_sli_pkt_port_in_rst
3667 struct cvmx_sli_pkt_port_in_rst_s
3669 #if __BYTE_ORDER == __BIG_ENDIAN
3670 uint64_t in_rst : 32; /**< When asserted '1' the vector bit cooresponding
3671 to the inbound Packet-ring is in reset. */
3672 uint64_t out_rst : 32; /**< When asserted '1' the vector bit cooresponding
3673 to the outbound Packet-ring is in reset. */
3675 uint64_t out_rst : 32;
3676 uint64_t in_rst : 32;
3679 struct cvmx_sli_pkt_port_in_rst_s cn63xx;
3680 struct cvmx_sli_pkt_port_in_rst_s cn63xxp1;
3682 typedef union cvmx_sli_pkt_port_in_rst cvmx_sli_pkt_port_in_rst_t;
3685 * cvmx_sli_pkt_slist_es
3687 * SLI_PKT_SLIST_ES = SLI's Packet Scatter List Endian Swap
3689 * The Endian Swap for Scatter List Read.
3691 union cvmx_sli_pkt_slist_es
3694 struct cvmx_sli_pkt_slist_es_s
3696 #if __BYTE_ORDER == __BIG_ENDIAN
3697 uint64_t es : 64; /**< ES<1:0> for the packet output ring reads that
3698 fetch buffer/info pointer pairs.
3699 ES<2i+1:2i> becomes ES<1:0> in DPI/SLI reads that
3700 fetch buffer/info pairs from packet output ring i
3701 (from address SLI_PKTi_SLIST_BADDR+ in MAC memory
3703 ES<1:0> is the endian-swap attribute for these MAC
3704 memory space reads. */
3709 struct cvmx_sli_pkt_slist_es_s cn63xx;
3710 struct cvmx_sli_pkt_slist_es_s cn63xxp1;
3712 typedef union cvmx_sli_pkt_slist_es cvmx_sli_pkt_slist_es_t;
3715 * cvmx_sli_pkt_slist_ns
3717 * SLI_PKT_SLIST_NS = SLI's Packet Scatter List No Snoop
3719 * The NS field for the TLP when fetching Scatter List.
3721 union cvmx_sli_pkt_slist_ns
3724 struct cvmx_sli_pkt_slist_ns_s
3726 #if __BYTE_ORDER == __BIG_ENDIAN
3727 uint64_t reserved_32_63 : 32;
3728 uint64_t nsr : 32; /**< ADDRTYPE<1> for the packet output ring reads that
3729 fetch buffer/info pointer pairs.
3730 NSR<i> becomes ADDRTYPE<1> in DPI/SLI reads that
3731 fetch buffer/info pairs from packet output ring i
3732 (from address SLI_PKTi_SLIST_BADDR+ in MAC memory
3734 ADDRTYPE<1> is the relaxed-order attribute for PCIe
3735 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
3738 uint64_t reserved_32_63 : 32;
3741 struct cvmx_sli_pkt_slist_ns_s cn63xx;
3742 struct cvmx_sli_pkt_slist_ns_s cn63xxp1;
3744 typedef union cvmx_sli_pkt_slist_ns cvmx_sli_pkt_slist_ns_t;
3747 * cvmx_sli_pkt_slist_ror
3749 * SLI_PKT_SLIST_ROR = SLI's Packet Scatter List Relaxed Ordering
3751 * The ROR field for the TLP when fetching Scatter List.
3753 union cvmx_sli_pkt_slist_ror
3756 struct cvmx_sli_pkt_slist_ror_s
3758 #if __BYTE_ORDER == __BIG_ENDIAN
3759 uint64_t reserved_32_63 : 32;
3760 uint64_t ror : 32; /**< ADDRTYPE<0> for the packet output ring reads that
3761 fetch buffer/info pointer pairs.
3762 ROR<i> becomes ADDRTYPE<0> in DPI/SLI reads that
3763 fetch buffer/info pairs from packet output ring i
3764 (from address SLI_PKTi_SLIST_BADDR+ in MAC memory
3766 ADDRTYPE<0> is the relaxed-order attribute for PCIe
3767 , helps select an SRIO*_S2M_TYPE* entry with sRIO. */
3770 uint64_t reserved_32_63 : 32;
3773 struct cvmx_sli_pkt_slist_ror_s cn63xx;
3774 struct cvmx_sli_pkt_slist_ror_s cn63xxp1;
3776 typedef union cvmx_sli_pkt_slist_ror cvmx_sli_pkt_slist_ror_t;
3779 * cvmx_sli_pkt_time_int
3781 * SLI_PKT_TIME_INT = SLI Packet Timer Interrupt
3783 * The packets rings that are interrupting because of Packet Timers.
3785 union cvmx_sli_pkt_time_int
3788 struct cvmx_sli_pkt_time_int_s
3790 #if __BYTE_ORDER == __BIG_ENDIAN
3791 uint64_t reserved_32_63 : 32;
3792 uint64_t port : 32; /**< Output ring packet timer interrupt bits
3793 SLI sets PORT<i> whenever
3794 SLI_PKTi_CNTS[TIMER] > SLI_PKT_INT_LEVELS[TIME].
3795 SLI_PKT_TIME_INT_ENB[PORT<i>] is the corresponding
3799 uint64_t reserved_32_63 : 32;
3802 struct cvmx_sli_pkt_time_int_s cn63xx;
3803 struct cvmx_sli_pkt_time_int_s cn63xxp1;
3805 typedef union cvmx_sli_pkt_time_int cvmx_sli_pkt_time_int_t;
3808 * cvmx_sli_pkt_time_int_enb
3810 * SLI_PKT_TIME_INT_ENB = SLI Packet Timer Interrupt Enable
3812 * The packets rings that are interrupting because of Packet Timers.
3814 union cvmx_sli_pkt_time_int_enb
3817 struct cvmx_sli_pkt_time_int_enb_s
3819 #if __BYTE_ORDER == __BIG_ENDIAN
3820 uint64_t reserved_32_63 : 32;
3821 uint64_t port : 32; /**< Output ring packet timer interrupt enables
3822 When both PORT<i> and corresponding
3823 SLI_PKT_TIME_INT[PORT<i>] are set, for any i,
3824 then SLI_INT_SUM[PTIME] is set, which can cause
3828 uint64_t reserved_32_63 : 32;
3831 struct cvmx_sli_pkt_time_int_enb_s cn63xx;
3832 struct cvmx_sli_pkt_time_int_enb_s cn63xxp1;
3834 typedef union cvmx_sli_pkt_time_int_enb cvmx_sli_pkt_time_int_enb_t;
3837 * cvmx_sli_s2m_port#_ctl
3839 * SLI_S2M_PORTX_CTL = SLI's S2M Port 0 Control
3841 * Contains control for access from SLI to a MAC port.
3842 * Writes to this register are not ordered with writes/reads to the MAC Memory space.
3843 * To ensure that a write has completed the user must read the register before
3844 * making an access(i.e. MAC memory space) that requires the value of this register to be updated.
3846 union cvmx_sli_s2m_portx_ctl
3849 struct cvmx_sli_s2m_portx_ctl_s
3851 #if __BYTE_ORDER == __BIG_ENDIAN
3852 uint64_t reserved_5_63 : 59;
3853 uint64_t wind_d : 1; /**< When set '1' disables access to the Window
3854 Registers from the MAC-Port. */
3855 uint64_t bar0_d : 1; /**< When set '1' disables access from MAC to
3856 BAR-0 address offsets: Less Than 0x330,
3857 0x3CD0, and greater than 0x3D70. */
3858 uint64_t mrrs : 3; /**< Max Read Request Size
3865 This field should not exceed the desired
3866 max read request size. This field is used to
3867 determine if an IOBDMA is too large.
3868 For a PCIe MAC, this field should not exceed
3870 For a sRIO MAC, this field should indicate a size
3871 of 256B or smaller. */
3874 uint64_t bar0_d : 1;
3875 uint64_t wind_d : 1;
3876 uint64_t reserved_5_63 : 59;
3879 struct cvmx_sli_s2m_portx_ctl_s cn63xx;
3880 struct cvmx_sli_s2m_portx_ctl_s cn63xxp1;
3882 typedef union cvmx_sli_s2m_portx_ctl cvmx_sli_s2m_portx_ctl_t;
3885 * cvmx_sli_scratch_1
3887 * SLI_SCRATCH_1 = SLI's Scratch 1
3889 * A general purpose 64 bit register for SW use.
3891 union cvmx_sli_scratch_1
3894 struct cvmx_sli_scratch_1_s
3896 #if __BYTE_ORDER == __BIG_ENDIAN
3897 uint64_t data : 64; /**< The value in this register is totaly SW dependent. */
3902 struct cvmx_sli_scratch_1_s cn63xx;
3903 struct cvmx_sli_scratch_1_s cn63xxp1;
3905 typedef union cvmx_sli_scratch_1 cvmx_sli_scratch_1_t;
3908 * cvmx_sli_scratch_2
3910 * SLI_SCRATCH_2 = SLI's Scratch 2
3912 * A general purpose 64 bit register for SW use.
3914 union cvmx_sli_scratch_2
3917 struct cvmx_sli_scratch_2_s
3919 #if __BYTE_ORDER == __BIG_ENDIAN
3920 uint64_t data : 64; /**< The value in this register is totaly SW dependent. */
3925 struct cvmx_sli_scratch_2_s cn63xx;
3926 struct cvmx_sli_scratch_2_s cn63xxp1;
3928 typedef union cvmx_sli_scratch_2 cvmx_sli_scratch_2_t;
3933 * SLI_STATE1 = SLI State 1
3935 * State machines in SLI. For debug.
3937 union cvmx_sli_state1
3940 struct cvmx_sli_state1_s
3942 #if __BYTE_ORDER == __BIG_ENDIAN
3943 uint64_t cpl1 : 12; /**< CPL1 State */
3944 uint64_t cpl0 : 12; /**< CPL0 State */
3945 uint64_t arb : 1; /**< ARB State */
3946 uint64_t csr : 39; /**< CSR State */
3954 struct cvmx_sli_state1_s cn63xx;
3955 struct cvmx_sli_state1_s cn63xxp1;
3957 typedef union cvmx_sli_state1 cvmx_sli_state1_t;
3962 * SLI_STATE2 = SLI State 2
3964 * State machines in SLI. For debug.
3966 union cvmx_sli_state2
3969 struct cvmx_sli_state2_s
3971 #if __BYTE_ORDER == __BIG_ENDIAN
3972 uint64_t reserved_56_63 : 8;
3973 uint64_t nnp1 : 8; /**< NNP1 State */
3974 uint64_t reserved_47_47 : 1;
3975 uint64_t rac : 1; /**< RAC State */
3976 uint64_t csm1 : 15; /**< CSM1 State */
3977 uint64_t csm0 : 15; /**< CSM0 State */
3978 uint64_t nnp0 : 8; /**< NNP0 State */
3979 uint64_t nnd : 8; /**< NND State */
3986 uint64_t reserved_47_47 : 1;
3988 uint64_t reserved_56_63 : 8;
3991 struct cvmx_sli_state2_s cn63xx;
3992 struct cvmx_sli_state2_s cn63xxp1;
3994 typedef union cvmx_sli_state2 cvmx_sli_state2_t;
3999 * SLI_STATE3 = SLI State 3
4001 * State machines in SLI. For debug.
4003 union cvmx_sli_state3
4006 struct cvmx_sli_state3_s
4008 #if __BYTE_ORDER == __BIG_ENDIAN
4009 uint64_t reserved_56_63 : 8;
4010 uint64_t psm1 : 15; /**< PSM1 State */
4011 uint64_t psm0 : 15; /**< PSM0 State */
4012 uint64_t nsm1 : 13; /**< NSM1 State */
4013 uint64_t nsm0 : 13; /**< NSM0 State */
4019 uint64_t reserved_56_63 : 8;
4022 struct cvmx_sli_state3_s cn63xx;
4023 struct cvmx_sli_state3_s cn63xxp1;
4025 typedef union cvmx_sli_state3 cvmx_sli_state3_t;
4028 * cvmx_sli_win_rd_addr
4030 * SLI_WIN_RD_ADDR = SLI Window Read Address Register
4032 * The address to be read when the SLI_WIN_RD_DATA register is read.
4033 * This register should NOT be used to read SLI_* registers.
4035 union cvmx_sli_win_rd_addr
4038 struct cvmx_sli_win_rd_addr_s
4040 #if __BYTE_ORDER == __BIG_ENDIAN
4041 uint64_t reserved_51_63 : 13;
4042 uint64_t ld_cmd : 2; /**< The load command sent wit hthe read.
4043 0x3 == Load 8-bytes, 0x2 == Load 4-bytes,
4044 0x1 == Load 2-bytes, 0x0 == Load 1-bytes, */
4045 uint64_t iobit : 1; /**< A 1 or 0 can be written here but will not be used
4046 in address generation. */
4047 uint64_t rd_addr : 48; /**< The address to be read from.
4050 When [47:43] == SLI & [42:40] == 0 bits [39:0] are:
4051 [39:32] == x, Not Used
4053 [23:0] == RSL Register Offset */
4055 uint64_t rd_addr : 48;
4057 uint64_t ld_cmd : 2;
4058 uint64_t reserved_51_63 : 13;
4061 struct cvmx_sli_win_rd_addr_s cn63xx;
4062 struct cvmx_sli_win_rd_addr_s cn63xxp1;
4064 typedef union cvmx_sli_win_rd_addr cvmx_sli_win_rd_addr_t;
4067 * cvmx_sli_win_rd_data
4069 * SLI_WIN_RD_DATA = SLI Window Read Data Register
4071 * Reading this register causes a window read operation to take place. Address read is that contained in the SLI_WIN_RD_ADDR
4074 union cvmx_sli_win_rd_data
4077 struct cvmx_sli_win_rd_data_s
4079 #if __BYTE_ORDER == __BIG_ENDIAN
4080 uint64_t rd_data : 64; /**< The read data. */
4082 uint64_t rd_data : 64;
4085 struct cvmx_sli_win_rd_data_s cn63xx;
4086 struct cvmx_sli_win_rd_data_s cn63xxp1;
4088 typedef union cvmx_sli_win_rd_data cvmx_sli_win_rd_data_t;
4091 * cvmx_sli_win_wr_addr
4093 * Add Lock Register (Set on Read, Clear on write), SW uses to control access to BAR0 space.
4095 * Total Address is 16Kb; 0x0000 - 0x3fff, 0x000 - 0x7fe(Reg, every other 8B)
4097 * General 5kb; 0x0000 - 0x13ff, 0x000 - 0x27e(Reg-General)
4098 * PktMem 10Kb; 0x1400 - 0x3bff, 0x280 - 0x77e(Reg-General-Packet)
4099 * Rsvd 1Kb; 0x3c00 - 0x3fff, 0x780 - 0x7fe(Reg-NCB Only Mode)
4101 * SLI_WIN_WR_ADDR = SLI Window Write Address Register
4103 * Contains the address to be writen to when a write operation is started by writing the
4104 * SLI_WIN_WR_DATA register (see below).
4106 * This register should NOT be used to write SLI_* registers.
4108 union cvmx_sli_win_wr_addr
4111 struct cvmx_sli_win_wr_addr_s
4113 #if __BYTE_ORDER == __BIG_ENDIAN
4114 uint64_t reserved_49_63 : 15;
4115 uint64_t iobit : 1; /**< A 1 or 0 can be written here but this will always
4117 uint64_t wr_addr : 45; /**< The address that will be written to when the
4118 SLI_WIN_WR_DATA register is written.
4121 When [47:43] == SLI & [42:40] == 0 bits [39:0] are:
4122 [39:32] == x, Not Used
4124 [23:3] == RSL Register Offset */
4125 uint64_t reserved_0_2 : 3;
4127 uint64_t reserved_0_2 : 3;
4128 uint64_t wr_addr : 45;
4130 uint64_t reserved_49_63 : 15;
4133 struct cvmx_sli_win_wr_addr_s cn63xx;
4134 struct cvmx_sli_win_wr_addr_s cn63xxp1;
4136 typedef union cvmx_sli_win_wr_addr cvmx_sli_win_wr_addr_t;
4139 * cvmx_sli_win_wr_data
4141 * SLI_WIN_WR_DATA = SLI Window Write Data Register
4143 * Contains the data to write to the address located in the SLI_WIN_WR_ADDR Register.
4144 * Writing the least-significant-byte of this register will cause a write operation to take place.
4146 union cvmx_sli_win_wr_data
4149 struct cvmx_sli_win_wr_data_s
4151 #if __BYTE_ORDER == __BIG_ENDIAN
4152 uint64_t wr_data : 64; /**< The data to be written. Whenever the LSB of this
4153 register is written, the Window Write will take
4156 uint64_t wr_data : 64;
4159 struct cvmx_sli_win_wr_data_s cn63xx;
4160 struct cvmx_sli_win_wr_data_s cn63xxp1;
4162 typedef union cvmx_sli_win_wr_data cvmx_sli_win_wr_data_t;
4165 * cvmx_sli_win_wr_mask
4167 * SLI_WIN_WR_MASK = SLI Window Write Mask Register
4169 * Contains the mask for the data in the SLI_WIN_WR_DATA Register.
4171 union cvmx_sli_win_wr_mask
4174 struct cvmx_sli_win_wr_mask_s
4176 #if __BYTE_ORDER == __BIG_ENDIAN
4177 uint64_t reserved_8_63 : 56;
4178 uint64_t wr_mask : 8; /**< The data to be written. When a bit is '1'
4179 the corresponding byte will be written. The values
4180 of this field must be contiguos and for 1, 2, 4, or
4181 8 byte operations and aligned to operation size.
4182 A Value of 0 will produce unpredictable results */
4184 uint64_t wr_mask : 8;
4185 uint64_t reserved_8_63 : 56;
4188 struct cvmx_sli_win_wr_mask_s cn63xx;
4189 struct cvmx_sli_win_wr_mask_s cn63xxp1;
4191 typedef union cvmx_sli_win_wr_mask cvmx_sli_win_wr_mask_t;
4194 * cvmx_sli_window_ctl
4197 * // * 81e0 - 82d0 Reserved for future subids
4200 * SLI_WINDOW_CTL = SLI's Window Control
4202 * Access to register space on the NCB (caused by Window Reads/Writes) will wait for a period of time specified
4203 * by this register before timeing out. Because a Window Access can access the RML, which has a fixed timeout of 0xFFFF
4204 * core clocks, the value of this register should be set to a minimum of 0x200000 to ensure that a timeout to an RML register
4205 * occurs on the RML 0xFFFF timer before the timeout for a BAR0 access from the MAC.
4207 union cvmx_sli_window_ctl
4210 struct cvmx_sli_window_ctl_s
4212 #if __BYTE_ORDER == __BIG_ENDIAN
4213 uint64_t reserved_32_63 : 32;
4214 uint64_t time : 32; /**< Time to wait in core clocks for a
4215 BAR0 access to completeon the NCB
4216 before timing out. A value of 0 will cause no
4217 timeouts. A minimum value of 0x200000 should be
4218 used when this register is not set to 0x0. */
4221 uint64_t reserved_32_63 : 32;
4224 struct cvmx_sli_window_ctl_s cn63xx;
4225 struct cvmx_sli_window_ctl_s cn63xxp1;
4227 typedef union cvmx_sli_window_ctl cvmx_sli_window_ctl_t;