1 /***********************license start***************
2 * Copyright (c) 2003-2012 Cavium Inc. (support@cavium.com). All rights
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
18 * * Neither the name of Cavium Inc. nor the names of
19 * its contributors may be used to endorse or promote products
20 * derived from this software without specific prior written
23 * This Software, including technical data, may be subject to U.S. export control
24 * laws, including the U.S. Export Administration Act and its associated
25 * regulations, and may be subject to export or import regulations in other
28 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29 * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
31 * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
32 * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
33 * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
34 * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35 * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
36 * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
37 * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38 ***********************license end**************************************/
44 * Configuration and status register (CSR) type definitions for
47 * This file is auto generated. Do not edit.
52 #ifndef __CVMX_DPI_DEFS_H__
53 #define __CVMX_DPI_DEFS_H__
55 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56 #define CVMX_DPI_BIST_STATUS CVMX_DPI_BIST_STATUS_FUNC()
57 static inline uint64_t CVMX_DPI_BIST_STATUS_FUNC(void)
59 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
60 cvmx_warn("CVMX_DPI_BIST_STATUS not supported on this chip\n");
61 return CVMX_ADD_IO_SEG(0x0001DF0000000000ull);
64 #define CVMX_DPI_BIST_STATUS (CVMX_ADD_IO_SEG(0x0001DF0000000000ull))
66 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
67 #define CVMX_DPI_CTL CVMX_DPI_CTL_FUNC()
68 static inline uint64_t CVMX_DPI_CTL_FUNC(void)
70 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
71 cvmx_warn("CVMX_DPI_CTL not supported on this chip\n");
72 return CVMX_ADD_IO_SEG(0x0001DF0000000040ull);
75 #define CVMX_DPI_CTL (CVMX_ADD_IO_SEG(0x0001DF0000000040ull))
77 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
78 static inline uint64_t CVMX_DPI_DMAX_COUNTS(unsigned long offset)
81 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
82 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
83 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
84 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
85 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
86 cvmx_warn("CVMX_DPI_DMAX_COUNTS(%lu) is invalid on this chip\n", offset);
87 return CVMX_ADD_IO_SEG(0x0001DF0000000300ull) + ((offset) & 7) * 8;
90 #define CVMX_DPI_DMAX_COUNTS(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000300ull) + ((offset) & 7) * 8)
92 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
93 static inline uint64_t CVMX_DPI_DMAX_DBELL(unsigned long offset)
96 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
97 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
98 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
99 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
100 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
101 cvmx_warn("CVMX_DPI_DMAX_DBELL(%lu) is invalid on this chip\n", offset);
102 return CVMX_ADD_IO_SEG(0x0001DF0000000200ull) + ((offset) & 7) * 8;
105 #define CVMX_DPI_DMAX_DBELL(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000200ull) + ((offset) & 7) * 8)
107 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
108 static inline uint64_t CVMX_DPI_DMAX_ERR_RSP_STATUS(unsigned long offset)
111 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
112 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
113 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
114 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
115 cvmx_warn("CVMX_DPI_DMAX_ERR_RSP_STATUS(%lu) is invalid on this chip\n", offset);
116 return CVMX_ADD_IO_SEG(0x0001DF0000000A80ull) + ((offset) & 7) * 8;
119 #define CVMX_DPI_DMAX_ERR_RSP_STATUS(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000A80ull) + ((offset) & 7) * 8)
121 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
122 static inline uint64_t CVMX_DPI_DMAX_IBUFF_SADDR(unsigned long offset)
125 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
126 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
127 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
128 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
129 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
130 cvmx_warn("CVMX_DPI_DMAX_IBUFF_SADDR(%lu) is invalid on this chip\n", offset);
131 return CVMX_ADD_IO_SEG(0x0001DF0000000280ull) + ((offset) & 7) * 8;
134 #define CVMX_DPI_DMAX_IBUFF_SADDR(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000280ull) + ((offset) & 7) * 8)
136 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
137 static inline uint64_t CVMX_DPI_DMAX_IFLIGHT(unsigned long offset)
140 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
141 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
142 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
143 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
144 cvmx_warn("CVMX_DPI_DMAX_IFLIGHT(%lu) is invalid on this chip\n", offset);
145 return CVMX_ADD_IO_SEG(0x0001DF0000000A00ull) + ((offset) & 7) * 8;
148 #define CVMX_DPI_DMAX_IFLIGHT(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000A00ull) + ((offset) & 7) * 8)
150 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
151 static inline uint64_t CVMX_DPI_DMAX_NADDR(unsigned long offset)
154 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
155 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
156 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
157 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
158 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
159 cvmx_warn("CVMX_DPI_DMAX_NADDR(%lu) is invalid on this chip\n", offset);
160 return CVMX_ADD_IO_SEG(0x0001DF0000000380ull) + ((offset) & 7) * 8;
163 #define CVMX_DPI_DMAX_NADDR(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000380ull) + ((offset) & 7) * 8)
165 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
166 static inline uint64_t CVMX_DPI_DMAX_REQBNK0(unsigned long offset)
169 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
170 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
171 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
172 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
173 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
174 cvmx_warn("CVMX_DPI_DMAX_REQBNK0(%lu) is invalid on this chip\n", offset);
175 return CVMX_ADD_IO_SEG(0x0001DF0000000400ull) + ((offset) & 7) * 8;
178 #define CVMX_DPI_DMAX_REQBNK0(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000400ull) + ((offset) & 7) * 8)
180 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
181 static inline uint64_t CVMX_DPI_DMAX_REQBNK1(unsigned long offset)
184 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
185 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
186 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
187 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
188 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
189 cvmx_warn("CVMX_DPI_DMAX_REQBNK1(%lu) is invalid on this chip\n", offset);
190 return CVMX_ADD_IO_SEG(0x0001DF0000000480ull) + ((offset) & 7) * 8;
193 #define CVMX_DPI_DMAX_REQBNK1(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000480ull) + ((offset) & 7) * 8)
195 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
196 #define CVMX_DPI_DMA_CONTROL CVMX_DPI_DMA_CONTROL_FUNC()
197 static inline uint64_t CVMX_DPI_DMA_CONTROL_FUNC(void)
199 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
200 cvmx_warn("CVMX_DPI_DMA_CONTROL not supported on this chip\n");
201 return CVMX_ADD_IO_SEG(0x0001DF0000000048ull);
204 #define CVMX_DPI_DMA_CONTROL (CVMX_ADD_IO_SEG(0x0001DF0000000048ull))
206 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
207 static inline uint64_t CVMX_DPI_DMA_ENGX_EN(unsigned long offset)
210 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 5))) ||
211 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 5))) ||
212 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 5))) ||
213 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 5))) ||
214 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 5)))))
215 cvmx_warn("CVMX_DPI_DMA_ENGX_EN(%lu) is invalid on this chip\n", offset);
216 return CVMX_ADD_IO_SEG(0x0001DF0000000080ull) + ((offset) & 7) * 8;
219 #define CVMX_DPI_DMA_ENGX_EN(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000080ull) + ((offset) & 7) * 8)
221 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
222 static inline uint64_t CVMX_DPI_DMA_PPX_CNT(unsigned long offset)
225 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 3))) ||
226 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
227 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 3)))))
228 cvmx_warn("CVMX_DPI_DMA_PPX_CNT(%lu) is invalid on this chip\n", offset);
229 return CVMX_ADD_IO_SEG(0x0001DF0000000B00ull) + ((offset) & 31) * 8;
232 #define CVMX_DPI_DMA_PPX_CNT(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000B00ull) + ((offset) & 31) * 8)
234 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
235 static inline uint64_t CVMX_DPI_ENGX_BUF(unsigned long offset)
238 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 5))) ||
239 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 5))) ||
240 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 5))) ||
241 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 5))) ||
242 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 5)))))
243 cvmx_warn("CVMX_DPI_ENGX_BUF(%lu) is invalid on this chip\n", offset);
244 return CVMX_ADD_IO_SEG(0x0001DF0000000880ull) + ((offset) & 7) * 8;
247 #define CVMX_DPI_ENGX_BUF(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000880ull) + ((offset) & 7) * 8)
249 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
250 #define CVMX_DPI_INFO_REG CVMX_DPI_INFO_REG_FUNC()
251 static inline uint64_t CVMX_DPI_INFO_REG_FUNC(void)
253 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
254 cvmx_warn("CVMX_DPI_INFO_REG not supported on this chip\n");
255 return CVMX_ADD_IO_SEG(0x0001DF0000000980ull);
258 #define CVMX_DPI_INFO_REG (CVMX_ADD_IO_SEG(0x0001DF0000000980ull))
260 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
261 #define CVMX_DPI_INT_EN CVMX_DPI_INT_EN_FUNC()
262 static inline uint64_t CVMX_DPI_INT_EN_FUNC(void)
264 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
265 cvmx_warn("CVMX_DPI_INT_EN not supported on this chip\n");
266 return CVMX_ADD_IO_SEG(0x0001DF0000000010ull);
269 #define CVMX_DPI_INT_EN (CVMX_ADD_IO_SEG(0x0001DF0000000010ull))
271 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
272 #define CVMX_DPI_INT_REG CVMX_DPI_INT_REG_FUNC()
273 static inline uint64_t CVMX_DPI_INT_REG_FUNC(void)
275 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
276 cvmx_warn("CVMX_DPI_INT_REG not supported on this chip\n");
277 return CVMX_ADD_IO_SEG(0x0001DF0000000008ull);
280 #define CVMX_DPI_INT_REG (CVMX_ADD_IO_SEG(0x0001DF0000000008ull))
282 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
283 static inline uint64_t CVMX_DPI_NCBX_CFG(unsigned long block_id)
286 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
287 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
288 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
289 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
290 cvmx_warn("CVMX_DPI_NCBX_CFG(%lu) is invalid on this chip\n", block_id);
291 return CVMX_ADD_IO_SEG(0x0001DF0000000800ull);
294 #define CVMX_DPI_NCBX_CFG(block_id) (CVMX_ADD_IO_SEG(0x0001DF0000000800ull))
296 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
297 #define CVMX_DPI_PINT_INFO CVMX_DPI_PINT_INFO_FUNC()
298 static inline uint64_t CVMX_DPI_PINT_INFO_FUNC(void)
300 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
301 cvmx_warn("CVMX_DPI_PINT_INFO not supported on this chip\n");
302 return CVMX_ADD_IO_SEG(0x0001DF0000000830ull);
305 #define CVMX_DPI_PINT_INFO (CVMX_ADD_IO_SEG(0x0001DF0000000830ull))
307 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
308 #define CVMX_DPI_PKT_ERR_RSP CVMX_DPI_PKT_ERR_RSP_FUNC()
309 static inline uint64_t CVMX_DPI_PKT_ERR_RSP_FUNC(void)
311 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
312 cvmx_warn("CVMX_DPI_PKT_ERR_RSP not supported on this chip\n");
313 return CVMX_ADD_IO_SEG(0x0001DF0000000078ull);
316 #define CVMX_DPI_PKT_ERR_RSP (CVMX_ADD_IO_SEG(0x0001DF0000000078ull))
318 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
319 #define CVMX_DPI_REQ_ERR_RSP CVMX_DPI_REQ_ERR_RSP_FUNC()
320 static inline uint64_t CVMX_DPI_REQ_ERR_RSP_FUNC(void)
322 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
323 cvmx_warn("CVMX_DPI_REQ_ERR_RSP not supported on this chip\n");
324 return CVMX_ADD_IO_SEG(0x0001DF0000000058ull);
327 #define CVMX_DPI_REQ_ERR_RSP (CVMX_ADD_IO_SEG(0x0001DF0000000058ull))
329 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
330 #define CVMX_DPI_REQ_ERR_RSP_EN CVMX_DPI_REQ_ERR_RSP_EN_FUNC()
331 static inline uint64_t CVMX_DPI_REQ_ERR_RSP_EN_FUNC(void)
333 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
334 cvmx_warn("CVMX_DPI_REQ_ERR_RSP_EN not supported on this chip\n");
335 return CVMX_ADD_IO_SEG(0x0001DF0000000068ull);
338 #define CVMX_DPI_REQ_ERR_RSP_EN (CVMX_ADD_IO_SEG(0x0001DF0000000068ull))
340 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
341 #define CVMX_DPI_REQ_ERR_RST CVMX_DPI_REQ_ERR_RST_FUNC()
342 static inline uint64_t CVMX_DPI_REQ_ERR_RST_FUNC(void)
344 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
345 cvmx_warn("CVMX_DPI_REQ_ERR_RST not supported on this chip\n");
346 return CVMX_ADD_IO_SEG(0x0001DF0000000060ull);
349 #define CVMX_DPI_REQ_ERR_RST (CVMX_ADD_IO_SEG(0x0001DF0000000060ull))
351 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
352 #define CVMX_DPI_REQ_ERR_RST_EN CVMX_DPI_REQ_ERR_RST_EN_FUNC()
353 static inline uint64_t CVMX_DPI_REQ_ERR_RST_EN_FUNC(void)
355 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
356 cvmx_warn("CVMX_DPI_REQ_ERR_RST_EN not supported on this chip\n");
357 return CVMX_ADD_IO_SEG(0x0001DF0000000070ull);
360 #define CVMX_DPI_REQ_ERR_RST_EN (CVMX_ADD_IO_SEG(0x0001DF0000000070ull))
362 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
363 #define CVMX_DPI_REQ_ERR_SKIP_COMP CVMX_DPI_REQ_ERR_SKIP_COMP_FUNC()
364 static inline uint64_t CVMX_DPI_REQ_ERR_SKIP_COMP_FUNC(void)
366 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
367 cvmx_warn("CVMX_DPI_REQ_ERR_SKIP_COMP not supported on this chip\n");
368 return CVMX_ADD_IO_SEG(0x0001DF0000000838ull);
371 #define CVMX_DPI_REQ_ERR_SKIP_COMP (CVMX_ADD_IO_SEG(0x0001DF0000000838ull))
373 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
374 #define CVMX_DPI_REQ_GBL_EN CVMX_DPI_REQ_GBL_EN_FUNC()
375 static inline uint64_t CVMX_DPI_REQ_GBL_EN_FUNC(void)
377 if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
378 cvmx_warn("CVMX_DPI_REQ_GBL_EN not supported on this chip\n");
379 return CVMX_ADD_IO_SEG(0x0001DF0000000050ull);
382 #define CVMX_DPI_REQ_GBL_EN (CVMX_ADD_IO_SEG(0x0001DF0000000050ull))
384 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
385 static inline uint64_t CVMX_DPI_SLI_PRTX_CFG(unsigned long offset)
388 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 1))) ||
389 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1))) ||
390 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 3))) ||
391 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1))) ||
392 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 1)))))
393 cvmx_warn("CVMX_DPI_SLI_PRTX_CFG(%lu) is invalid on this chip\n", offset);
394 return CVMX_ADD_IO_SEG(0x0001DF0000000900ull) + ((offset) & 3) * 8;
397 #define CVMX_DPI_SLI_PRTX_CFG(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000900ull) + ((offset) & 3) * 8)
399 static inline uint64_t CVMX_DPI_SLI_PRTX_ERR(unsigned long offset)
401 switch(cvmx_get_octeon_family()) {
402 case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
404 return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + ((offset) & 3) * 8;
406 case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
407 case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
408 case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
410 if (OCTEON_IS_MODEL(OCTEON_CN68XX_PASS1))
412 return CVMX_ADD_IO_SEG(0x0001DF0000000928ull) + ((offset) & 1) * 8;
413 if (OCTEON_IS_MODEL(OCTEON_CN68XX_PASS2))
415 return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + ((offset) & 1) * 8;
417 return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + ((offset) & 1) * 8;
419 case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
421 return CVMX_ADD_IO_SEG(0x0001DF0000000928ull) + ((offset) & 1) * 8;
424 cvmx_warn("CVMX_DPI_SLI_PRTX_ERR (offset = %lu) not supported on this chip\n", offset);
425 return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + ((offset) & 1) * 8;
427 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
428 static inline uint64_t CVMX_DPI_SLI_PRTX_ERR_INFO(unsigned long offset)
431 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 1))) ||
432 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1))) ||
433 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 3))) ||
434 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1))) ||
435 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 1)))))
436 cvmx_warn("CVMX_DPI_SLI_PRTX_ERR_INFO(%lu) is invalid on this chip\n", offset);
437 return CVMX_ADD_IO_SEG(0x0001DF0000000940ull) + ((offset) & 3) * 8;
440 #define CVMX_DPI_SLI_PRTX_ERR_INFO(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000940ull) + ((offset) & 3) * 8)
444 * cvmx_dpi_bist_status
446 union cvmx_dpi_bist_status {
448 struct cvmx_dpi_bist_status_s {
449 #ifdef __BIG_ENDIAN_BITFIELD
450 uint64_t reserved_47_63 : 17;
451 uint64_t bist : 47; /**< BIST Results.
452 HW sets a bit in BIST for for memory that fails
456 uint64_t reserved_47_63 : 17;
459 struct cvmx_dpi_bist_status_s cn61xx;
460 struct cvmx_dpi_bist_status_cn63xx {
461 #ifdef __BIG_ENDIAN_BITFIELD
462 uint64_t reserved_45_63 : 19;
463 uint64_t bist : 45; /**< BIST Results.
464 HW sets a bit in BIST for for memory that fails
468 uint64_t reserved_45_63 : 19;
471 struct cvmx_dpi_bist_status_cn63xxp1 {
472 #ifdef __BIG_ENDIAN_BITFIELD
473 uint64_t reserved_37_63 : 27;
474 uint64_t bist : 37; /**< BIST Results.
475 HW sets a bit in BIST for for memory that fails
479 uint64_t reserved_37_63 : 27;
482 struct cvmx_dpi_bist_status_s cn66xx;
483 struct cvmx_dpi_bist_status_cn63xx cn68xx;
484 struct cvmx_dpi_bist_status_cn63xx cn68xxp1;
485 struct cvmx_dpi_bist_status_s cnf71xx;
487 typedef union cvmx_dpi_bist_status cvmx_dpi_bist_status_t;
494 struct cvmx_dpi_ctl_s {
495 #ifdef __BIG_ENDIAN_BITFIELD
496 uint64_t reserved_2_63 : 62;
497 uint64_t clk : 1; /**< Status bit that indicates that the clks are running */
498 uint64_t en : 1; /**< Turns on the DMA and Packet state machines */
502 uint64_t reserved_2_63 : 62;
505 struct cvmx_dpi_ctl_cn61xx {
506 #ifdef __BIG_ENDIAN_BITFIELD
507 uint64_t reserved_1_63 : 63;
508 uint64_t en : 1; /**< Turns on the DMA and Packet state machines */
511 uint64_t reserved_1_63 : 63;
514 struct cvmx_dpi_ctl_s cn63xx;
515 struct cvmx_dpi_ctl_s cn63xxp1;
516 struct cvmx_dpi_ctl_s cn66xx;
517 struct cvmx_dpi_ctl_s cn68xx;
518 struct cvmx_dpi_ctl_s cn68xxp1;
519 struct cvmx_dpi_ctl_cn61xx cnf71xx;
521 typedef union cvmx_dpi_ctl cvmx_dpi_ctl_t;
524 * cvmx_dpi_dma#_counts
526 * DPI_DMA[0..7]_COUNTS = DMA Instruction Counts
528 * Values for determing the number of instructions for DMA[0..7] in the DPI.
530 union cvmx_dpi_dmax_counts {
532 struct cvmx_dpi_dmax_counts_s {
533 #ifdef __BIG_ENDIAN_BITFIELD
534 uint64_t reserved_39_63 : 25;
535 uint64_t fcnt : 7; /**< Number of words in the Instruction FIFO locally
536 cached within DPI. */
537 uint64_t dbell : 32; /**< Number of available words of Instructions to read. */
541 uint64_t reserved_39_63 : 25;
544 struct cvmx_dpi_dmax_counts_s cn61xx;
545 struct cvmx_dpi_dmax_counts_s cn63xx;
546 struct cvmx_dpi_dmax_counts_s cn63xxp1;
547 struct cvmx_dpi_dmax_counts_s cn66xx;
548 struct cvmx_dpi_dmax_counts_s cn68xx;
549 struct cvmx_dpi_dmax_counts_s cn68xxp1;
550 struct cvmx_dpi_dmax_counts_s cnf71xx;
552 typedef union cvmx_dpi_dmax_counts cvmx_dpi_dmax_counts_t;
555 * cvmx_dpi_dma#_dbell
557 * DPI_DMA_DBELL[0..7] = DMA Door Bell
559 * The door bell register for DMA[0..7] queue.
561 union cvmx_dpi_dmax_dbell {
563 struct cvmx_dpi_dmax_dbell_s {
564 #ifdef __BIG_ENDIAN_BITFIELD
565 uint64_t reserved_16_63 : 48;
566 uint64_t dbell : 16; /**< The value written to this register is added to the
567 number of 8byte words to be read and processes for
568 the low priority dma queue. */
571 uint64_t reserved_16_63 : 48;
574 struct cvmx_dpi_dmax_dbell_s cn61xx;
575 struct cvmx_dpi_dmax_dbell_s cn63xx;
576 struct cvmx_dpi_dmax_dbell_s cn63xxp1;
577 struct cvmx_dpi_dmax_dbell_s cn66xx;
578 struct cvmx_dpi_dmax_dbell_s cn68xx;
579 struct cvmx_dpi_dmax_dbell_s cn68xxp1;
580 struct cvmx_dpi_dmax_dbell_s cnf71xx;
582 typedef union cvmx_dpi_dmax_dbell cvmx_dpi_dmax_dbell_t;
585 * cvmx_dpi_dma#_err_rsp_status
587 union cvmx_dpi_dmax_err_rsp_status {
589 struct cvmx_dpi_dmax_err_rsp_status_s {
590 #ifdef __BIG_ENDIAN_BITFIELD
591 uint64_t reserved_6_63 : 58;
592 uint64_t status : 6; /**< QUE captures the ErrorResponse status of the last
593 6 instructions for each instruction queue.
594 STATUS<5> represents the status for first
595 instruction in instruction order while STATUS<0>
596 represents the last or most recent instruction.
597 If STATUS<n> is set, then the nth instruction in
598 the given queue experienced an ErrorResponse.
599 Otherwise, it completed normally. */
602 uint64_t reserved_6_63 : 58;
605 struct cvmx_dpi_dmax_err_rsp_status_s cn61xx;
606 struct cvmx_dpi_dmax_err_rsp_status_s cn66xx;
607 struct cvmx_dpi_dmax_err_rsp_status_s cn68xx;
608 struct cvmx_dpi_dmax_err_rsp_status_s cn68xxp1;
609 struct cvmx_dpi_dmax_err_rsp_status_s cnf71xx;
611 typedef union cvmx_dpi_dmax_err_rsp_status cvmx_dpi_dmax_err_rsp_status_t;
614 * cvmx_dpi_dma#_ibuff_saddr
616 * DPI_DMA[0..7]_IBUFF_SADDR = DMA Instruction Buffer Starting Address
618 * The address to start reading Instructions from for DMA[0..7].
620 union cvmx_dpi_dmax_ibuff_saddr {
622 struct cvmx_dpi_dmax_ibuff_saddr_s {
623 #ifdef __BIG_ENDIAN_BITFIELD
624 uint64_t reserved_62_63 : 2;
625 uint64_t csize : 14; /**< The size in 8B words of the DMA Instruction Chunk.
626 This value should only be written at known times
627 in order to prevent corruption of the instruction
628 queue. The minimum CSIZE is 16 (one cacheblock). */
629 uint64_t reserved_41_47 : 7;
630 uint64_t idle : 1; /**< DMA Request Queue is IDLE */
631 uint64_t saddr : 33; /**< The 128 byte aligned starting or chunk address.
632 SADDR is address bit 35:7 of the starting
633 instructions address. When new chunks are fetched
634 by the HW, SADDR will be updated to reflect the
635 address of the current chunk.
636 A write to SADDR resets both the queue's doorbell
637 (DPI_DMAx_COUNTS[DBELL) and its tail pointer
638 (DPI_DMAx_NADDR[ADDR]). */
639 uint64_t reserved_0_6 : 7;
641 uint64_t reserved_0_6 : 7;
644 uint64_t reserved_41_47 : 7;
646 uint64_t reserved_62_63 : 2;
649 struct cvmx_dpi_dmax_ibuff_saddr_cn61xx {
650 #ifdef __BIG_ENDIAN_BITFIELD
651 uint64_t reserved_62_63 : 2;
652 uint64_t csize : 14; /**< The size in 8B words of the DMA Instruction Chunk.
653 This value should only be written at known times
654 in order to prevent corruption of the instruction
655 queue. The minimum CSIZE is 16 (one cacheblock). */
656 uint64_t reserved_41_47 : 7;
657 uint64_t idle : 1; /**< DMA Request Queue is IDLE */
658 uint64_t reserved_36_39 : 4;
659 uint64_t saddr : 29; /**< The 128 byte aligned starting or chunk address.
660 SADDR is address bit 35:7 of the starting
661 instructions address. When new chunks are fetched
662 by the HW, SADDR will be updated to reflect the
663 address of the current chunk.
664 A write to SADDR resets both the queue's doorbell
665 (DPI_DMAx_COUNTS[DBELL) and its tail pointer
666 (DPI_DMAx_NADDR[ADDR]). */
667 uint64_t reserved_0_6 : 7;
669 uint64_t reserved_0_6 : 7;
671 uint64_t reserved_36_39 : 4;
673 uint64_t reserved_41_47 : 7;
675 uint64_t reserved_62_63 : 2;
678 struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn63xx;
679 struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn63xxp1;
680 struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn66xx;
681 struct cvmx_dpi_dmax_ibuff_saddr_s cn68xx;
682 struct cvmx_dpi_dmax_ibuff_saddr_s cn68xxp1;
683 struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cnf71xx;
685 typedef union cvmx_dpi_dmax_ibuff_saddr cvmx_dpi_dmax_ibuff_saddr_t;
688 * cvmx_dpi_dma#_iflight
690 union cvmx_dpi_dmax_iflight {
692 struct cvmx_dpi_dmax_iflight_s {
693 #ifdef __BIG_ENDIAN_BITFIELD
694 uint64_t reserved_3_63 : 61;
695 uint64_t cnt : 3; /**< The number of instructions from a given queue that
696 can be inflight to the DMA engines at a time.
697 Reset value matches the number of DMA engines. */
700 uint64_t reserved_3_63 : 61;
703 struct cvmx_dpi_dmax_iflight_s cn61xx;
704 struct cvmx_dpi_dmax_iflight_s cn66xx;
705 struct cvmx_dpi_dmax_iflight_s cn68xx;
706 struct cvmx_dpi_dmax_iflight_s cn68xxp1;
707 struct cvmx_dpi_dmax_iflight_s cnf71xx;
709 typedef union cvmx_dpi_dmax_iflight cvmx_dpi_dmax_iflight_t;
712 * cvmx_dpi_dma#_naddr
714 * DPI_DMA[0..7]_NADDR = DMA Next Ichunk Address
716 * Place DPI will read the next Ichunk data from.
718 union cvmx_dpi_dmax_naddr {
720 struct cvmx_dpi_dmax_naddr_s {
721 #ifdef __BIG_ENDIAN_BITFIELD
722 uint64_t reserved_40_63 : 24;
723 uint64_t addr : 40; /**< The next L2C address to read DMA# instructions
727 uint64_t reserved_40_63 : 24;
730 struct cvmx_dpi_dmax_naddr_cn61xx {
731 #ifdef __BIG_ENDIAN_BITFIELD
732 uint64_t reserved_36_63 : 28;
733 uint64_t addr : 36; /**< The next L2C address to read DMA# instructions
737 uint64_t reserved_36_63 : 28;
740 struct cvmx_dpi_dmax_naddr_cn61xx cn63xx;
741 struct cvmx_dpi_dmax_naddr_cn61xx cn63xxp1;
742 struct cvmx_dpi_dmax_naddr_cn61xx cn66xx;
743 struct cvmx_dpi_dmax_naddr_s cn68xx;
744 struct cvmx_dpi_dmax_naddr_s cn68xxp1;
745 struct cvmx_dpi_dmax_naddr_cn61xx cnf71xx;
747 typedef union cvmx_dpi_dmax_naddr cvmx_dpi_dmax_naddr_t;
750 * cvmx_dpi_dma#_reqbnk0
752 * DPI_DMA[0..7]_REQBNK0 = DMA Request State Bank0
754 * Current contents of the request state machine - bank0
756 union cvmx_dpi_dmax_reqbnk0 {
758 struct cvmx_dpi_dmax_reqbnk0_s {
759 #ifdef __BIG_ENDIAN_BITFIELD
760 uint64_t state : 64; /**< State */
765 struct cvmx_dpi_dmax_reqbnk0_s cn61xx;
766 struct cvmx_dpi_dmax_reqbnk0_s cn63xx;
767 struct cvmx_dpi_dmax_reqbnk0_s cn63xxp1;
768 struct cvmx_dpi_dmax_reqbnk0_s cn66xx;
769 struct cvmx_dpi_dmax_reqbnk0_s cn68xx;
770 struct cvmx_dpi_dmax_reqbnk0_s cn68xxp1;
771 struct cvmx_dpi_dmax_reqbnk0_s cnf71xx;
773 typedef union cvmx_dpi_dmax_reqbnk0 cvmx_dpi_dmax_reqbnk0_t;
776 * cvmx_dpi_dma#_reqbnk1
778 * DPI_DMA[0..7]_REQBNK1 = DMA Request State Bank1
780 * Current contents of the request state machine - bank1
782 union cvmx_dpi_dmax_reqbnk1 {
784 struct cvmx_dpi_dmax_reqbnk1_s {
785 #ifdef __BIG_ENDIAN_BITFIELD
786 uint64_t state : 64; /**< State */
791 struct cvmx_dpi_dmax_reqbnk1_s cn61xx;
792 struct cvmx_dpi_dmax_reqbnk1_s cn63xx;
793 struct cvmx_dpi_dmax_reqbnk1_s cn63xxp1;
794 struct cvmx_dpi_dmax_reqbnk1_s cn66xx;
795 struct cvmx_dpi_dmax_reqbnk1_s cn68xx;
796 struct cvmx_dpi_dmax_reqbnk1_s cn68xxp1;
797 struct cvmx_dpi_dmax_reqbnk1_s cnf71xx;
799 typedef union cvmx_dpi_dmax_reqbnk1 cvmx_dpi_dmax_reqbnk1_t;
802 * cvmx_dpi_dma_control
804 * DPI_DMA_CONTROL = DMA Control Register
806 * Controls operation of the DMA IN/OUT.
808 union cvmx_dpi_dma_control {
810 struct cvmx_dpi_dma_control_s {
811 #ifdef __BIG_ENDIAN_BITFIELD
812 uint64_t reserved_62_63 : 2;
813 uint64_t dici_mode : 1; /**< DMA Instruction Completion Interrupt Mode
814 turns on mode to increment DPI_DMA_PPx_CNT
816 uint64_t pkt_en1 : 1; /**< Enables the 2nd packet interface.
817 When the packet interface is enabled, engine 4
818 is used for packets and is not available for DMA.
819 The packet interfaces must be enabled in order.
820 When PKT_EN1=1, then PKT_EN=1.
821 When PKT_EN1=1, then DMA_ENB<4>=0. */
822 uint64_t ffp_dis : 1; /**< Force forward progress disable
823 The DMA engines will compete for shared resources.
824 If the HW detects that particular engines are not
825 able to make requests to an interface, the HW
826 will periodically trade-off throughput for
828 uint64_t commit_mode : 1; /**< DMA Engine Commit Mode
830 When COMMIT_MODE=0, DPI considers an instruction
831 complete when the HW internally generates the
832 final write for the current instruction.
834 When COMMIT_MODE=1, DPI additionally waits for
835 the final write to reach the interface coherency
836 point to declare the instructions complete.
838 Please note: when COMMIT_MODE == 0, DPI may not
839 follow the HRM ordering rules.
841 DPI hardware performance may be better with
842 COMMIT_MODE == 0 than with COMMIT_MODE == 1 due
843 to the relaxed ordering rules.
845 If the HRM ordering rules are required, set
847 uint64_t pkt_hp : 1; /**< High-Priority Mode for Packet Interface.
848 This mode has been deprecated. */
849 uint64_t pkt_en : 1; /**< Enables 1st the packet interface.
850 When the packet interface is enabled, engine 5
851 is used for packets and is not available for DMA.
852 When PKT_EN=1, then DMA_ENB<5>=0.
853 When PKT_EN1=1, then PKT_EN=1. */
854 uint64_t reserved_54_55 : 2;
855 uint64_t dma_enb : 6; /**< DMA engine enable. Enables the operation of the
856 DMA engine. After being enabled an engine should
857 not be disabled while processing instructions.
858 When PKT_EN=1, then DMA_ENB<5>=0.
859 When PKT_EN1=1, then DMA_ENB<4>=0. */
860 uint64_t reserved_34_47 : 14;
861 uint64_t b0_lend : 1; /**< When set '1' and the DPI is in the mode to write
862 0 to L2C memory when a DMA is done, the address
863 to be written to will be treated as a Little
865 uint64_t dwb_denb : 1; /**< When set '1', DPI will send a value in the DWB
866 field for a free page operation for the memory
867 that contained the data. */
868 uint64_t dwb_ichk : 9; /**< When Instruction Chunks for DMA operations are
869 freed this value is used for the DWB field of the
871 uint64_t fpa_que : 3; /**< The FPA queue that the instruction-chunk page will
872 be returned to when used. */
873 uint64_t o_add1 : 1; /**< When set '1' 1 will be added to the SLI_DMAX_CNT
874 DMA counters, if '0' then the number of bytes
875 in the dma transfer will be added to the
876 SLI_DMAX_CNT count register. */
877 uint64_t o_ro : 1; /**< Relaxed Ordering Mode for DMA. */
878 uint64_t o_ns : 1; /**< Nosnoop For DMA. */
879 uint64_t o_es : 2; /**< Endian Swap Mode for DMA. */
880 uint64_t o_mode : 1; /**< Select PCI_POINTER MODE to be used.
881 0=DPTR format 1 is used
882 use register values for address and pointer
883 values for ES, NS, RO
884 1=DPTR format 0 is used
885 use pointer values for address and register
886 values for ES, NS, RO */
887 uint64_t reserved_0_13 : 14;
889 uint64_t reserved_0_13 : 14;
895 uint64_t fpa_que : 3;
896 uint64_t dwb_ichk : 9;
897 uint64_t dwb_denb : 1;
898 uint64_t b0_lend : 1;
899 uint64_t reserved_34_47 : 14;
900 uint64_t dma_enb : 6;
901 uint64_t reserved_54_55 : 2;
904 uint64_t commit_mode : 1;
905 uint64_t ffp_dis : 1;
906 uint64_t pkt_en1 : 1;
907 uint64_t dici_mode : 1;
908 uint64_t reserved_62_63 : 2;
911 struct cvmx_dpi_dma_control_s cn61xx;
912 struct cvmx_dpi_dma_control_cn63xx {
913 #ifdef __BIG_ENDIAN_BITFIELD
914 uint64_t reserved_61_63 : 3;
915 uint64_t pkt_en1 : 1; /**< Enables the 2nd packet interface.
916 When the packet interface is enabled, engine 4
917 is used for packets and is not available for DMA.
918 The packet interfaces must be enabled in order.
919 When PKT_EN1=1, then PKT_EN=1.
920 When PKT_EN1=1, then DMA_ENB<4>=0. */
921 uint64_t ffp_dis : 1; /**< Force forward progress disable
922 The DMA engines will compete for shared resources.
923 If the HW detects that particular engines are not
924 able to make requests to an interface, the HW
925 will periodically trade-off throughput for
927 uint64_t commit_mode : 1; /**< DMA Engine Commit Mode
929 When COMMIT_MODE=0, DPI considers an instruction
930 complete when the HW internally generates the
931 final write for the current instruction.
933 When COMMIT_MODE=1, DPI additionally waits for
934 the final write to reach the interface coherency
935 point to declare the instructions complete.
937 Please note: when COMMIT_MODE == 0, DPI may not
938 follow the HRM ordering rules.
940 DPI hardware performance may be better with
941 COMMIT_MODE == 0 than with COMMIT_MODE == 1 due
942 to the relaxed ordering rules.
944 If the HRM ordering rules are required, set
946 uint64_t pkt_hp : 1; /**< High-Priority Mode for Packet Interface.
947 This mode has been deprecated. */
948 uint64_t pkt_en : 1; /**< Enables 1st the packet interface.
949 When the packet interface is enabled, engine 5
950 is used for packets and is not available for DMA.
951 When PKT_EN=1, then DMA_ENB<5>=0.
952 When PKT_EN1=1, then PKT_EN=1. */
953 uint64_t reserved_54_55 : 2;
954 uint64_t dma_enb : 6; /**< DMA engine enable. Enables the operation of the
955 DMA engine. After being enabled an engine should
956 not be disabled while processing instructions.
957 When PKT_EN=1, then DMA_ENB<5>=0.
958 When PKT_EN1=1, then DMA_ENB<4>=0. */
959 uint64_t reserved_34_47 : 14;
960 uint64_t b0_lend : 1; /**< When set '1' and the DPI is in the mode to write
961 0 to L2C memory when a DMA is done, the address
962 to be written to will be treated as a Little
964 uint64_t dwb_denb : 1; /**< When set '1', DPI will send a value in the DWB
965 field for a free page operation for the memory
966 that contained the data. */
967 uint64_t dwb_ichk : 9; /**< When Instruction Chunks for DMA operations are
968 freed this value is used for the DWB field of the
970 uint64_t fpa_que : 3; /**< The FPA queue that the instruction-chunk page will
971 be returned to when used. */
972 uint64_t o_add1 : 1; /**< When set '1' 1 will be added to the DMA counters,
973 if '0' then the number of bytes in the dma
974 transfer will be added to the count register. */
975 uint64_t o_ro : 1; /**< Relaxed Ordering Mode for DMA. */
976 uint64_t o_ns : 1; /**< Nosnoop For DMA. */
977 uint64_t o_es : 2; /**< Endian Swap Mode for DMA. */
978 uint64_t o_mode : 1; /**< Select PCI_POINTER MODE to be used.
979 0=DPTR format 1 is used
980 use register values for address and pointer
981 values for ES, NS, RO
982 1=DPTR format 0 is used
983 use pointer values for address and register
984 values for ES, NS, RO */
985 uint64_t reserved_0_13 : 14;
987 uint64_t reserved_0_13 : 14;
993 uint64_t fpa_que : 3;
994 uint64_t dwb_ichk : 9;
995 uint64_t dwb_denb : 1;
996 uint64_t b0_lend : 1;
997 uint64_t reserved_34_47 : 14;
998 uint64_t dma_enb : 6;
999 uint64_t reserved_54_55 : 2;
1000 uint64_t pkt_en : 1;
1001 uint64_t pkt_hp : 1;
1002 uint64_t commit_mode : 1;
1003 uint64_t ffp_dis : 1;
1004 uint64_t pkt_en1 : 1;
1005 uint64_t reserved_61_63 : 3;
1008 struct cvmx_dpi_dma_control_cn63xxp1 {
1009 #ifdef __BIG_ENDIAN_BITFIELD
1010 uint64_t reserved_59_63 : 5;
1011 uint64_t commit_mode : 1; /**< DMA Engine Commit Mode
1013 When COMMIT_MODE=0, DPI considers an instruction
1014 complete when the HW internally generates the
1015 final write for the current instruction.
1017 When COMMIT_MODE=1, DPI additionally waits for
1018 the final write to reach the interface coherency
1019 point to declare the instructions complete.
1021 Please note: when COMMIT_MODE == 0, DPI may not
1022 follow the HRM ordering rules.
1024 DPI hardware performance may be better with
1025 COMMIT_MODE == 0 than with COMMIT_MODE == 1 due
1026 to the relaxed ordering rules.
1028 If the HRM ordering rules are required, set
1029 COMMIT_MODE == 1. */
1030 uint64_t pkt_hp : 1; /**< High-Priority Mode for Packet Interface.
1031 Engine 5 will be serviced more frequently to
1032 deliver more bandwidth to packet interface.
1033 When PKT_EN=0, then PKT_HP=0. */
1034 uint64_t pkt_en : 1; /**< Enables the packet interface.
1035 When the packet interface is enabled, engine 5
1036 is used for packets and is not available for DMA.
1037 When PKT_EN=1, then DMA_ENB<5>=0.
1038 When PKT_EN=0, then PKT_HP=0. */
1039 uint64_t reserved_54_55 : 2;
1040 uint64_t dma_enb : 6; /**< DMA engine enable. Enables the operation of the
1041 DMA engine. After being enabled an engine should
1042 not be disabled while processing instructions.
1043 When PKT_EN=1, then DMA_ENB<5>=0. */
1044 uint64_t reserved_34_47 : 14;
1045 uint64_t b0_lend : 1; /**< When set '1' and the DPI is in the mode to write
1046 0 to L2C memory when a DMA is done, the address
1047 to be written to will be treated as a Little
1049 uint64_t dwb_denb : 1; /**< When set '1', DPI will send a value in the DWB
1050 field for a free page operation for the memory
1051 that contained the data. */
1052 uint64_t dwb_ichk : 9; /**< When Instruction Chunks for DMA operations are
1053 freed this value is used for the DWB field of the
1055 uint64_t fpa_que : 3; /**< The FPA queue that the instruction-chunk page will
1056 be returned to when used. */
1057 uint64_t o_add1 : 1; /**< When set '1' 1 will be added to the DMA counters,
1058 if '0' then the number of bytes in the dma
1059 transfer will be added to the count register. */
1060 uint64_t o_ro : 1; /**< Relaxed Ordering Mode for DMA. */
1061 uint64_t o_ns : 1; /**< Nosnoop For DMA. */
1062 uint64_t o_es : 2; /**< Endian Swap Mode for DMA. */
1063 uint64_t o_mode : 1; /**< Select PCI_POINTER MODE to be used.
1064 0=DPTR format 1 is used
1065 use register values for address and pointer
1066 values for ES, NS, RO
1067 1=DPTR format 0 is used
1068 use pointer values for address and register
1069 values for ES, NS, RO */
1070 uint64_t reserved_0_13 : 14;
1072 uint64_t reserved_0_13 : 14;
1073 uint64_t o_mode : 1;
1077 uint64_t o_add1 : 1;
1078 uint64_t fpa_que : 3;
1079 uint64_t dwb_ichk : 9;
1080 uint64_t dwb_denb : 1;
1081 uint64_t b0_lend : 1;
1082 uint64_t reserved_34_47 : 14;
1083 uint64_t dma_enb : 6;
1084 uint64_t reserved_54_55 : 2;
1085 uint64_t pkt_en : 1;
1086 uint64_t pkt_hp : 1;
1087 uint64_t commit_mode : 1;
1088 uint64_t reserved_59_63 : 5;
1091 struct cvmx_dpi_dma_control_cn63xx cn66xx;
1092 struct cvmx_dpi_dma_control_s cn68xx;
1093 struct cvmx_dpi_dma_control_cn63xx cn68xxp1;
1094 struct cvmx_dpi_dma_control_s cnf71xx;
1096 typedef union cvmx_dpi_dma_control cvmx_dpi_dma_control_t;
1099 * cvmx_dpi_dma_eng#_en
1101 union cvmx_dpi_dma_engx_en {
1103 struct cvmx_dpi_dma_engx_en_s {
1104 #ifdef __BIG_ENDIAN_BITFIELD
1105 uint64_t reserved_8_63 : 56;
1106 uint64_t qen : 8; /**< Controls which logical instruction queues can be
1107 serviced by the DMA engine. Setting QEN==0
1108 effectively disables the engine.
1109 When DPI_DMA_CONTROL[PKT_EN] = 1, then
1110 DPI_DMA_ENG5_EN[QEN] must be zero.
1111 When DPI_DMA_CONTROL[PKT_EN1] = 1, then
1112 DPI_DMA_ENG4_EN[QEN] must be zero. */
1115 uint64_t reserved_8_63 : 56;
1118 struct cvmx_dpi_dma_engx_en_s cn61xx;
1119 struct cvmx_dpi_dma_engx_en_s cn63xx;
1120 struct cvmx_dpi_dma_engx_en_s cn63xxp1;
1121 struct cvmx_dpi_dma_engx_en_s cn66xx;
1122 struct cvmx_dpi_dma_engx_en_s cn68xx;
1123 struct cvmx_dpi_dma_engx_en_s cn68xxp1;
1124 struct cvmx_dpi_dma_engx_en_s cnf71xx;
1126 typedef union cvmx_dpi_dma_engx_en cvmx_dpi_dma_engx_en_t;
1129 * cvmx_dpi_dma_pp#_cnt
1131 * DPI_DMA_PP[0..3]_CNT = DMA per PP Instr Done Counter
1133 * When DMA Instruction Completion Interrupt Mode DPI_DMA_CONTROL.DICI_MODE is enabled, every dma instruction
1134 * that has the WQP=0 and a PTR value of 1..4 will incremrement DPI_DMA_PPx_CNT value-1 counter.
1135 * Instructions with WQP=0 and PTR values higher then 0x3F will still send a zero byte write.
1136 * Hardware reserves that values 5..63 for future use and will treat them as a PTR of 0 and do nothing.
1138 union cvmx_dpi_dma_ppx_cnt {
1140 struct cvmx_dpi_dma_ppx_cnt_s {
1141 #ifdef __BIG_ENDIAN_BITFIELD
1142 uint64_t reserved_16_63 : 48;
1143 uint64_t cnt : 16; /**< Counter incremented according to conditions
1144 described above and decremented by values written
1145 to this field. A CNT of non zero, will cause
1146 an interrupt in the CIU_SUM1_PPX_IPX register */
1149 uint64_t reserved_16_63 : 48;
1152 struct cvmx_dpi_dma_ppx_cnt_s cn61xx;
1153 struct cvmx_dpi_dma_ppx_cnt_s cn68xx;
1154 struct cvmx_dpi_dma_ppx_cnt_s cnf71xx;
1156 typedef union cvmx_dpi_dma_ppx_cnt cvmx_dpi_dma_ppx_cnt_t;
1162 * The total amount of storage allocated to the 6 DPI DMA engines (via DPI_ENG*_BUF[BLKS]) must not exceed 8KB.
1165 union cvmx_dpi_engx_buf {
1167 struct cvmx_dpi_engx_buf_s {
1168 #ifdef __BIG_ENDIAN_BITFIELD
1169 uint64_t reserved_37_63 : 27;
1170 uint64_t compblks : 5; /**< Computed engine block size */
1171 uint64_t reserved_9_31 : 23;
1172 uint64_t base : 5; /**< The base address in 512B blocks of the engine fifo */
1173 uint64_t blks : 4; /**< The size of the engine fifo
1174 Legal values are 0-10.
1175 0 = Engine is disabled
1185 10 = 8.0KB buffer */
1189 uint64_t reserved_9_31 : 23;
1190 uint64_t compblks : 5;
1191 uint64_t reserved_37_63 : 27;
1194 struct cvmx_dpi_engx_buf_s cn61xx;
1195 struct cvmx_dpi_engx_buf_cn63xx {
1196 #ifdef __BIG_ENDIAN_BITFIELD
1197 uint64_t reserved_8_63 : 56;
1198 uint64_t base : 4; /**< The base address in 512B blocks of the engine fifo */
1199 uint64_t blks : 4; /**< The size in 512B blocks of the engine fifo
1200 Legal values are 0-8.
1201 0 = Engine is disabled
1213 uint64_t reserved_8_63 : 56;
1216 struct cvmx_dpi_engx_buf_cn63xx cn63xxp1;
1217 struct cvmx_dpi_engx_buf_s cn66xx;
1218 struct cvmx_dpi_engx_buf_s cn68xx;
1219 struct cvmx_dpi_engx_buf_s cn68xxp1;
1220 struct cvmx_dpi_engx_buf_s cnf71xx;
1222 typedef union cvmx_dpi_engx_buf cvmx_dpi_engx_buf_t;
1227 union cvmx_dpi_info_reg {
1229 struct cvmx_dpi_info_reg_s {
1230 #ifdef __BIG_ENDIAN_BITFIELD
1231 uint64_t reserved_8_63 : 56;
1232 uint64_t ffp : 4; /**< Force Forward Progress Indicator */
1233 uint64_t reserved_2_3 : 2;
1234 uint64_t ncb : 1; /**< NCB Register Access
1235 This interrupt will fire in normal operation
1236 when SW reads a DPI register through the NCB
1238 uint64_t rsl : 1; /**< RSL Register Access
1239 This interrupt will fire in normal operation
1240 when SW reads a DPI register through the RSL
1245 uint64_t reserved_2_3 : 2;
1247 uint64_t reserved_8_63 : 56;
1250 struct cvmx_dpi_info_reg_s cn61xx;
1251 struct cvmx_dpi_info_reg_s cn63xx;
1252 struct cvmx_dpi_info_reg_cn63xxp1 {
1253 #ifdef __BIG_ENDIAN_BITFIELD
1254 uint64_t reserved_2_63 : 62;
1255 uint64_t ncb : 1; /**< NCB Register Access
1256 This interrupt will fire in normal operation
1257 when SW reads a DPI register through the NCB
1259 uint64_t rsl : 1; /**< RSL Register Access
1260 This interrupt will fire in normal operation
1261 when SW reads a DPI register through the RSL
1266 uint64_t reserved_2_63 : 62;
1269 struct cvmx_dpi_info_reg_s cn66xx;
1270 struct cvmx_dpi_info_reg_s cn68xx;
1271 struct cvmx_dpi_info_reg_s cn68xxp1;
1272 struct cvmx_dpi_info_reg_s cnf71xx;
1274 typedef union cvmx_dpi_info_reg cvmx_dpi_info_reg_t;
1279 union cvmx_dpi_int_en {
1281 struct cvmx_dpi_int_en_s {
1282 #ifdef __BIG_ENDIAN_BITFIELD
1283 uint64_t reserved_28_63 : 36;
1284 uint64_t sprt3_rst : 1; /**< DMA instruction was dropped because the source or
1285 destination port was in reset.
1287 uint64_t sprt2_rst : 1; /**< DMA instruction was dropped because the source or
1288 destination port was in reset.
1290 uint64_t sprt1_rst : 1; /**< DMA instruction was dropped because the source or
1291 destination port was in reset.
1293 uint64_t sprt0_rst : 1; /**< DMA instruction was dropped because the source or
1294 destination port was in reset.
1296 uint64_t reserved_23_23 : 1;
1297 uint64_t req_badfil : 1; /**< DMA instruction unexpected fill */
1298 uint64_t req_inull : 1; /**< DMA instruction filled with NULL pointer */
1299 uint64_t req_anull : 1; /**< DMA instruction filled with bad instruction */
1300 uint64_t req_undflw : 1; /**< DMA instruction FIFO underflow */
1301 uint64_t req_ovrflw : 1; /**< DMA instruction FIFO overflow */
1302 uint64_t req_badlen : 1; /**< DMA instruction fetch with length */
1303 uint64_t req_badadr : 1; /**< DMA instruction fetch with bad pointer */
1304 uint64_t dmadbo : 8; /**< DMAx doorbell overflow. */
1305 uint64_t reserved_2_7 : 6;
1306 uint64_t nfovr : 1; /**< CSR Fifo Overflow */
1307 uint64_t nderr : 1; /**< NCB Decode Error */
1311 uint64_t reserved_2_7 : 6;
1312 uint64_t dmadbo : 8;
1313 uint64_t req_badadr : 1;
1314 uint64_t req_badlen : 1;
1315 uint64_t req_ovrflw : 1;
1316 uint64_t req_undflw : 1;
1317 uint64_t req_anull : 1;
1318 uint64_t req_inull : 1;
1319 uint64_t req_badfil : 1;
1320 uint64_t reserved_23_23 : 1;
1321 uint64_t sprt0_rst : 1;
1322 uint64_t sprt1_rst : 1;
1323 uint64_t sprt2_rst : 1;
1324 uint64_t sprt3_rst : 1;
1325 uint64_t reserved_28_63 : 36;
1328 struct cvmx_dpi_int_en_s cn61xx;
1329 struct cvmx_dpi_int_en_cn63xx {
1330 #ifdef __BIG_ENDIAN_BITFIELD
1331 uint64_t reserved_26_63 : 38;
1332 uint64_t sprt1_rst : 1; /**< DMA instruction was dropped because the source or
1333 destination port was in reset.
1335 uint64_t sprt0_rst : 1; /**< DMA instruction was dropped because the source or
1336 destination port was in reset.
1338 uint64_t reserved_23_23 : 1;
1339 uint64_t req_badfil : 1; /**< DMA instruction unexpected fill */
1340 uint64_t req_inull : 1; /**< DMA instruction filled with NULL pointer */
1341 uint64_t req_anull : 1; /**< DMA instruction filled with bad instruction */
1342 uint64_t req_undflw : 1; /**< DMA instruction FIFO underflow */
1343 uint64_t req_ovrflw : 1; /**< DMA instruction FIFO overflow */
1344 uint64_t req_badlen : 1; /**< DMA instruction fetch with length */
1345 uint64_t req_badadr : 1; /**< DMA instruction fetch with bad pointer */
1346 uint64_t dmadbo : 8; /**< DMAx doorbell overflow. */
1347 uint64_t reserved_2_7 : 6;
1348 uint64_t nfovr : 1; /**< CSR Fifo Overflow */
1349 uint64_t nderr : 1; /**< NCB Decode Error */
1353 uint64_t reserved_2_7 : 6;
1354 uint64_t dmadbo : 8;
1355 uint64_t req_badadr : 1;
1356 uint64_t req_badlen : 1;
1357 uint64_t req_ovrflw : 1;
1358 uint64_t req_undflw : 1;
1359 uint64_t req_anull : 1;
1360 uint64_t req_inull : 1;
1361 uint64_t req_badfil : 1;
1362 uint64_t reserved_23_23 : 1;
1363 uint64_t sprt0_rst : 1;
1364 uint64_t sprt1_rst : 1;
1365 uint64_t reserved_26_63 : 38;
1368 struct cvmx_dpi_int_en_cn63xx cn63xxp1;
1369 struct cvmx_dpi_int_en_s cn66xx;
1370 struct cvmx_dpi_int_en_cn63xx cn68xx;
1371 struct cvmx_dpi_int_en_cn63xx cn68xxp1;
1372 struct cvmx_dpi_int_en_s cnf71xx;
1374 typedef union cvmx_dpi_int_en cvmx_dpi_int_en_t;
1379 union cvmx_dpi_int_reg {
1381 struct cvmx_dpi_int_reg_s {
1382 #ifdef __BIG_ENDIAN_BITFIELD
1383 uint64_t reserved_28_63 : 36;
1384 uint64_t sprt3_rst : 1; /**< DMA instruction was dropped because the source or
1385 destination port was in reset.
1387 uint64_t sprt2_rst : 1; /**< DMA instruction was dropped because the source or
1388 destination port was in reset.
1390 uint64_t sprt1_rst : 1; /**< DMA instruction was dropped because the source or
1391 destination port was in reset.
1393 uint64_t sprt0_rst : 1; /**< DMA instruction was dropped because the source or
1394 destination port was in reset.
1396 uint64_t reserved_23_23 : 1;
1397 uint64_t req_badfil : 1; /**< DMA instruction unexpected fill
1398 Instruction fill when none outstanding. */
1399 uint64_t req_inull : 1; /**< DMA instruction filled with NULL pointer
1400 Next pointer was NULL. */
1401 uint64_t req_anull : 1; /**< DMA instruction filled with bad instruction
1402 Fetched instruction word was 0. */
1403 uint64_t req_undflw : 1; /**< DMA instruction FIFO underflow
1404 DPI tracks outstanding instructions fetches.
1405 Interrupt will fire when FIFO underflows. */
1406 uint64_t req_ovrflw : 1; /**< DMA instruction FIFO overflow
1407 DPI tracks outstanding instructions fetches.
1408 Interrupt will fire when FIFO overflows. */
1409 uint64_t req_badlen : 1; /**< DMA instruction fetch with length
1410 Interrupt will fire if DPI forms an instruction
1411 fetch with length of zero. */
1412 uint64_t req_badadr : 1; /**< DMA instruction fetch with bad pointer
1413 Interrupt will fire if DPI forms an instruction
1414 fetch to the NULL pointer. */
1415 uint64_t dmadbo : 8; /**< DMAx doorbell overflow.
1416 DPI has a 32-bit counter for each request's queue
1417 outstanding doorbell counts. Interrupt will fire
1418 if the count overflows. */
1419 uint64_t reserved_2_7 : 6;
1420 uint64_t nfovr : 1; /**< CSR Fifo Overflow
1421 DPI can store upto 16 CSR request. The FIFO will
1422 overflow if that number is exceeded. */
1423 uint64_t nderr : 1; /**< NCB Decode Error
1424 DPI received a NCB transaction on the outbound
1425 bus to the DPI deviceID, but the command was not
1430 uint64_t reserved_2_7 : 6;
1431 uint64_t dmadbo : 8;
1432 uint64_t req_badadr : 1;
1433 uint64_t req_badlen : 1;
1434 uint64_t req_ovrflw : 1;
1435 uint64_t req_undflw : 1;
1436 uint64_t req_anull : 1;
1437 uint64_t req_inull : 1;
1438 uint64_t req_badfil : 1;
1439 uint64_t reserved_23_23 : 1;
1440 uint64_t sprt0_rst : 1;
1441 uint64_t sprt1_rst : 1;
1442 uint64_t sprt2_rst : 1;
1443 uint64_t sprt3_rst : 1;
1444 uint64_t reserved_28_63 : 36;
1447 struct cvmx_dpi_int_reg_s cn61xx;
1448 struct cvmx_dpi_int_reg_cn63xx {
1449 #ifdef __BIG_ENDIAN_BITFIELD
1450 uint64_t reserved_26_63 : 38;
1451 uint64_t sprt1_rst : 1; /**< DMA instruction was dropped because the source or
1452 destination port was in reset.
1454 uint64_t sprt0_rst : 1; /**< DMA instruction was dropped because the source or
1455 destination port was in reset.
1457 uint64_t reserved_23_23 : 1;
1458 uint64_t req_badfil : 1; /**< DMA instruction unexpected fill
1459 Instruction fill when none outstanding. */
1460 uint64_t req_inull : 1; /**< DMA instruction filled with NULL pointer
1461 Next pointer was NULL. */
1462 uint64_t req_anull : 1; /**< DMA instruction filled with bad instruction
1463 Fetched instruction word was 0. */
1464 uint64_t req_undflw : 1; /**< DMA instruction FIFO underflow
1465 DPI tracks outstanding instructions fetches.
1466 Interrupt will fire when FIFO underflows. */
1467 uint64_t req_ovrflw : 1; /**< DMA instruction FIFO overflow
1468 DPI tracks outstanding instructions fetches.
1469 Interrupt will fire when FIFO overflows. */
1470 uint64_t req_badlen : 1; /**< DMA instruction fetch with length
1471 Interrupt will fire if DPI forms an instruction
1472 fetch with length of zero. */
1473 uint64_t req_badadr : 1; /**< DMA instruction fetch with bad pointer
1474 Interrupt will fire if DPI forms an instruction
1475 fetch to the NULL pointer. */
1476 uint64_t dmadbo : 8; /**< DMAx doorbell overflow.
1477 DPI has a 32-bit counter for each request's queue
1478 outstanding doorbell counts. Interrupt will fire
1479 if the count overflows. */
1480 uint64_t reserved_2_7 : 6;
1481 uint64_t nfovr : 1; /**< CSR Fifo Overflow
1482 DPI can store upto 16 CSR request. The FIFO will
1483 overflow if that number is exceeded. */
1484 uint64_t nderr : 1; /**< NCB Decode Error
1485 DPI received a NCB transaction on the outbound
1486 bus to the DPI deviceID, but the command was not
1491 uint64_t reserved_2_7 : 6;
1492 uint64_t dmadbo : 8;
1493 uint64_t req_badadr : 1;
1494 uint64_t req_badlen : 1;
1495 uint64_t req_ovrflw : 1;
1496 uint64_t req_undflw : 1;
1497 uint64_t req_anull : 1;
1498 uint64_t req_inull : 1;
1499 uint64_t req_badfil : 1;
1500 uint64_t reserved_23_23 : 1;
1501 uint64_t sprt0_rst : 1;
1502 uint64_t sprt1_rst : 1;
1503 uint64_t reserved_26_63 : 38;
1506 struct cvmx_dpi_int_reg_cn63xx cn63xxp1;
1507 struct cvmx_dpi_int_reg_s cn66xx;
1508 struct cvmx_dpi_int_reg_cn63xx cn68xx;
1509 struct cvmx_dpi_int_reg_cn63xx cn68xxp1;
1510 struct cvmx_dpi_int_reg_s cnf71xx;
1512 typedef union cvmx_dpi_int_reg cvmx_dpi_int_reg_t;
1517 union cvmx_dpi_ncbx_cfg {
1519 struct cvmx_dpi_ncbx_cfg_s {
1520 #ifdef __BIG_ENDIAN_BITFIELD
1521 uint64_t reserved_6_63 : 58;
1522 uint64_t molr : 6; /**< Max Outstanding Load Requests
1523 Limits the number of oustanding load requests on
1524 the NCB interface. This value can range from 1
1525 to 32. Setting a value of 0 will halt all read
1526 traffic to the NCB interface. There are no
1527 restrictions on when this value can be changed. */
1530 uint64_t reserved_6_63 : 58;
1533 struct cvmx_dpi_ncbx_cfg_s cn61xx;
1534 struct cvmx_dpi_ncbx_cfg_s cn66xx;
1535 struct cvmx_dpi_ncbx_cfg_s cn68xx;
1536 struct cvmx_dpi_ncbx_cfg_s cnf71xx;
1538 typedef union cvmx_dpi_ncbx_cfg cvmx_dpi_ncbx_cfg_t;
1541 * cvmx_dpi_pint_info
1543 * DPI_PINT_INFO = DPI Packet Interrupt Info
1545 * DPI Packet Interrupt Info.
1547 union cvmx_dpi_pint_info {
1549 struct cvmx_dpi_pint_info_s {
1550 #ifdef __BIG_ENDIAN_BITFIELD
1551 uint64_t reserved_14_63 : 50;
1552 uint64_t iinfo : 6; /**< Packet Instruction Doorbell count overflow info */
1553 uint64_t reserved_6_7 : 2;
1554 uint64_t sinfo : 6; /**< Packet Scatterlist Doorbell count overflow info */
1557 uint64_t reserved_6_7 : 2;
1559 uint64_t reserved_14_63 : 50;
1562 struct cvmx_dpi_pint_info_s cn61xx;
1563 struct cvmx_dpi_pint_info_s cn63xx;
1564 struct cvmx_dpi_pint_info_s cn63xxp1;
1565 struct cvmx_dpi_pint_info_s cn66xx;
1566 struct cvmx_dpi_pint_info_s cn68xx;
1567 struct cvmx_dpi_pint_info_s cn68xxp1;
1568 struct cvmx_dpi_pint_info_s cnf71xx;
1570 typedef union cvmx_dpi_pint_info cvmx_dpi_pint_info_t;
1573 * cvmx_dpi_pkt_err_rsp
1575 union cvmx_dpi_pkt_err_rsp {
1577 struct cvmx_dpi_pkt_err_rsp_s {
1578 #ifdef __BIG_ENDIAN_BITFIELD
1579 uint64_t reserved_1_63 : 63;
1580 uint64_t pkterr : 1; /**< Indicates that an ErrorResponse was received from
1581 the I/O subsystem. */
1583 uint64_t pkterr : 1;
1584 uint64_t reserved_1_63 : 63;
1587 struct cvmx_dpi_pkt_err_rsp_s cn61xx;
1588 struct cvmx_dpi_pkt_err_rsp_s cn63xx;
1589 struct cvmx_dpi_pkt_err_rsp_s cn63xxp1;
1590 struct cvmx_dpi_pkt_err_rsp_s cn66xx;
1591 struct cvmx_dpi_pkt_err_rsp_s cn68xx;
1592 struct cvmx_dpi_pkt_err_rsp_s cn68xxp1;
1593 struct cvmx_dpi_pkt_err_rsp_s cnf71xx;
1595 typedef union cvmx_dpi_pkt_err_rsp cvmx_dpi_pkt_err_rsp_t;
1598 * cvmx_dpi_req_err_rsp
1600 union cvmx_dpi_req_err_rsp {
1602 struct cvmx_dpi_req_err_rsp_s {
1603 #ifdef __BIG_ENDIAN_BITFIELD
1604 uint64_t reserved_8_63 : 56;
1605 uint64_t qerr : 8; /**< Indicates which instruction queue received an
1606 ErrorResponse from the I/O subsystem.
1607 SW must clear the bit before the the cooresponding
1608 instruction queue will continue processing
1609 instructions if DPI_REQ_ERR_RSP_EN[EN] is set. */
1612 uint64_t reserved_8_63 : 56;
1615 struct cvmx_dpi_req_err_rsp_s cn61xx;
1616 struct cvmx_dpi_req_err_rsp_s cn63xx;
1617 struct cvmx_dpi_req_err_rsp_s cn63xxp1;
1618 struct cvmx_dpi_req_err_rsp_s cn66xx;
1619 struct cvmx_dpi_req_err_rsp_s cn68xx;
1620 struct cvmx_dpi_req_err_rsp_s cn68xxp1;
1621 struct cvmx_dpi_req_err_rsp_s cnf71xx;
1623 typedef union cvmx_dpi_req_err_rsp cvmx_dpi_req_err_rsp_t;
1626 * cvmx_dpi_req_err_rsp_en
1628 union cvmx_dpi_req_err_rsp_en {
1630 struct cvmx_dpi_req_err_rsp_en_s {
1631 #ifdef __BIG_ENDIAN_BITFIELD
1632 uint64_t reserved_8_63 : 56;
1633 uint64_t en : 8; /**< Indicates which instruction queues should stop
1634 dispatching instructions when an ErrorResponse
1635 is received from the I/O subsystem. */
1638 uint64_t reserved_8_63 : 56;
1641 struct cvmx_dpi_req_err_rsp_en_s cn61xx;
1642 struct cvmx_dpi_req_err_rsp_en_s cn63xx;
1643 struct cvmx_dpi_req_err_rsp_en_s cn63xxp1;
1644 struct cvmx_dpi_req_err_rsp_en_s cn66xx;
1645 struct cvmx_dpi_req_err_rsp_en_s cn68xx;
1646 struct cvmx_dpi_req_err_rsp_en_s cn68xxp1;
1647 struct cvmx_dpi_req_err_rsp_en_s cnf71xx;
1649 typedef union cvmx_dpi_req_err_rsp_en cvmx_dpi_req_err_rsp_en_t;
1652 * cvmx_dpi_req_err_rst
1654 union cvmx_dpi_req_err_rst {
1656 struct cvmx_dpi_req_err_rst_s {
1657 #ifdef __BIG_ENDIAN_BITFIELD
1658 uint64_t reserved_8_63 : 56;
1659 uint64_t qerr : 8; /**< Indicates which instruction queue dropped an
1660 instruction because the source or destination
1662 SW must clear the bit before the the cooresponding
1663 instruction queue will continue processing
1664 instructions if DPI_REQ_ERR_RST_EN[EN] is set. */
1667 uint64_t reserved_8_63 : 56;
1670 struct cvmx_dpi_req_err_rst_s cn61xx;
1671 struct cvmx_dpi_req_err_rst_s cn63xx;
1672 struct cvmx_dpi_req_err_rst_s cn63xxp1;
1673 struct cvmx_dpi_req_err_rst_s cn66xx;
1674 struct cvmx_dpi_req_err_rst_s cn68xx;
1675 struct cvmx_dpi_req_err_rst_s cn68xxp1;
1676 struct cvmx_dpi_req_err_rst_s cnf71xx;
1678 typedef union cvmx_dpi_req_err_rst cvmx_dpi_req_err_rst_t;
1681 * cvmx_dpi_req_err_rst_en
1683 union cvmx_dpi_req_err_rst_en {
1685 struct cvmx_dpi_req_err_rst_en_s {
1686 #ifdef __BIG_ENDIAN_BITFIELD
1687 uint64_t reserved_8_63 : 56;
1688 uint64_t en : 8; /**< Indicates which instruction queues should stop
1689 dispatching instructions when an instruction
1690 is dropped because the source or destination port
1694 uint64_t reserved_8_63 : 56;
1697 struct cvmx_dpi_req_err_rst_en_s cn61xx;
1698 struct cvmx_dpi_req_err_rst_en_s cn63xx;
1699 struct cvmx_dpi_req_err_rst_en_s cn63xxp1;
1700 struct cvmx_dpi_req_err_rst_en_s cn66xx;
1701 struct cvmx_dpi_req_err_rst_en_s cn68xx;
1702 struct cvmx_dpi_req_err_rst_en_s cn68xxp1;
1703 struct cvmx_dpi_req_err_rst_en_s cnf71xx;
1705 typedef union cvmx_dpi_req_err_rst_en cvmx_dpi_req_err_rst_en_t;
1708 * cvmx_dpi_req_err_skip_comp
1710 union cvmx_dpi_req_err_skip_comp {
1712 struct cvmx_dpi_req_err_skip_comp_s {
1713 #ifdef __BIG_ENDIAN_BITFIELD
1714 uint64_t reserved_24_63 : 40;
1715 uint64_t en_rst : 8; /**< Indicates which instruction queue should skip the
1716 completion phase once an port reset is
1717 detected as indicated by DPI_REQ_ERR_RST. All
1718 completions to the effected instruction queue
1719 will be skipped as long as
1720 DPI_REQ_ERR_RSP[QERR<ique>] & EN_RSP<ique> or
1721 DPI_REQ_ERR_RST[QERR<ique>] & EN_RST<ique> are
1723 uint64_t reserved_8_15 : 8;
1724 uint64_t en_rsp : 8; /**< Indicates which instruction queue should skip the
1725 completion phase once an ErrorResponse is
1726 detected as indicated by DPI_REQ_ERR_RSP. All
1727 completions to the effected instruction queue
1728 will be skipped as long as
1729 DPI_REQ_ERR_RSP[QERR<ique>] & EN_RSP<ique> or
1730 DPI_REQ_ERR_RST[QERR<ique>] & EN_RST<ique> are
1733 uint64_t en_rsp : 8;
1734 uint64_t reserved_8_15 : 8;
1735 uint64_t en_rst : 8;
1736 uint64_t reserved_24_63 : 40;
1739 struct cvmx_dpi_req_err_skip_comp_s cn61xx;
1740 struct cvmx_dpi_req_err_skip_comp_s cn66xx;
1741 struct cvmx_dpi_req_err_skip_comp_s cn68xx;
1742 struct cvmx_dpi_req_err_skip_comp_s cn68xxp1;
1743 struct cvmx_dpi_req_err_skip_comp_s cnf71xx;
1745 typedef union cvmx_dpi_req_err_skip_comp cvmx_dpi_req_err_skip_comp_t;
1748 * cvmx_dpi_req_gbl_en
1750 union cvmx_dpi_req_gbl_en {
1752 struct cvmx_dpi_req_gbl_en_s {
1753 #ifdef __BIG_ENDIAN_BITFIELD
1754 uint64_t reserved_8_63 : 56;
1755 uint64_t qen : 8; /**< Indicates which instruction queues are enabled and
1756 can dispatch instructions to a requesting engine. */
1759 uint64_t reserved_8_63 : 56;
1762 struct cvmx_dpi_req_gbl_en_s cn61xx;
1763 struct cvmx_dpi_req_gbl_en_s cn63xx;
1764 struct cvmx_dpi_req_gbl_en_s cn63xxp1;
1765 struct cvmx_dpi_req_gbl_en_s cn66xx;
1766 struct cvmx_dpi_req_gbl_en_s cn68xx;
1767 struct cvmx_dpi_req_gbl_en_s cn68xxp1;
1768 struct cvmx_dpi_req_gbl_en_s cnf71xx;
1770 typedef union cvmx_dpi_req_gbl_en cvmx_dpi_req_gbl_en_t;
1773 * cvmx_dpi_sli_prt#_cfg
1775 * DPI_SLI_PRTx_CFG = DPI SLI Port Configuration
1777 * Configures the Max Read Request Size, Max Paylod Size, and Max Number of SLI Tags in use
1779 union cvmx_dpi_sli_prtx_cfg {
1781 struct cvmx_dpi_sli_prtx_cfg_s {
1782 #ifdef __BIG_ENDIAN_BITFIELD
1783 uint64_t reserved_25_63 : 39;
1784 uint64_t halt : 1; /**< When set, HALT indicates that the MAC has detected
1785 a reset condition. No further instructions that
1786 reference the MAC from any instruction Q will be
1787 issued until the MAC comes out of reset and HALT
1788 is cleared in SLI_CTL_PORTx[DIS_PORT]. */
1789 uint64_t qlm_cfg : 4; /**< QLM_CFG is a function of MIO_QLMx_CFG[QLM_CFG]
1790 QLM_CFG may contain values that are not normally
1791 used for DMA and/or packet operations.
1792 QLM_CFG does not indicate if a port is disabled.
1793 MIO_QLMx_CFG can be used for more complete QLM
1794 configuration information.
1795 0000 = MAC is PCIe 1x4 (QLM) or 1x2 (DLM)
1796 0001 = MAC is PCIe 2x1 (DLM only)
1799 all other encodings are RESERVED */
1800 uint64_t reserved_17_19 : 3;
1801 uint64_t rd_mode : 1; /**< Read Mode
1803 If the port is a PCIe port, the HW reads on a
1804 4B granularity. In this mode, the HW may break
1805 a given read into 3 operations to satisify
1807 If the port is a SRIO port, the HW follows the
1808 SRIO read rules from the SRIO specification and
1809 only issues 32*n, 16, and 8 byte operations
1812 The HW will read more data than requested in
1813 order to minimize the number of operations
1814 necessary to complete the operation.
1815 The memory region must be memory like. */
1816 uint64_t reserved_14_15 : 2;
1817 uint64_t molr : 6; /**< Max Outstanding Load Requests
1818 Limits the number of oustanding load requests on
1819 the port by restricting the number of tags
1820 used by the SLI to track load responses. This
1821 value can range from 1 to 32 depending on the MAC
1822 type and number of lanes.
1823 MAC == PCIe: Max is 32
1824 MAC == sRio / 4 lanes: Max is 32
1825 MAC == sRio / 2 lanes: Max is 16
1826 MAC == sRio / 1 lane: Max is 8
1827 Reset value is computed based on the MAC config.
1828 Setting MOLR to a value of 0 will halt all read
1829 traffic to the port. There are no restrictions
1830 on when this value can be changed. */
1831 uint64_t mps_lim : 1; /**< MAC memory space write requests cannot cross the
1832 (naturally-aligned) MPS boundary.
1833 When clear, DPI is allowed to issue a MAC memory
1834 space read that crosses the naturally-aligned
1835 boundary of size defined by MPS. (DPI will still
1836 only cross the boundary when it would eliminate a
1838 When set, DPI will never issue a MAC memory space
1839 write that crosses the naturally-aligned boundary
1840 of size defined by MPS. */
1841 uint64_t reserved_5_6 : 2;
1842 uint64_t mps : 1; /**< Max Payload Size
1845 For PCIe MACs, this MPS size must not exceed
1846 the size selected by PCIE*_CFG030[MPS].
1847 For sRIO MACs, all MPS values are allowed. */
1848 uint64_t mrrs_lim : 1; /**< MAC memory space read requests cannot cross the
1849 (naturally-aligned) MRRS boundary.
1850 When clear, DPI is allowed to issue a MAC memory
1851 space read that crosses the naturally-aligned
1852 boundary of size defined by MRRS. (DPI will still
1853 only cross the boundary when it would eliminate a
1855 When set, DPI will never issue a MAC memory space
1856 read that crosses the naturally-aligned boundary
1857 of size defined by MRRS. */
1858 uint64_t reserved_2_2 : 1;
1859 uint64_t mrrs : 2; /**< Max Read Request Size
1864 For PCIe MACs, this MRRS size must not exceed
1865 the size selected by PCIE*_CFG030[MRRS].
1866 For sRIO MACs, this MRRS size must be <= 256B. */
1869 uint64_t reserved_2_2 : 1;
1870 uint64_t mrrs_lim : 1;
1872 uint64_t reserved_5_6 : 2;
1873 uint64_t mps_lim : 1;
1875 uint64_t reserved_14_15 : 2;
1876 uint64_t rd_mode : 1;
1877 uint64_t reserved_17_19 : 3;
1878 uint64_t qlm_cfg : 4;
1880 uint64_t reserved_25_63 : 39;
1883 struct cvmx_dpi_sli_prtx_cfg_s cn61xx;
1884 struct cvmx_dpi_sli_prtx_cfg_cn63xx {
1885 #ifdef __BIG_ENDIAN_BITFIELD
1886 uint64_t reserved_25_63 : 39;
1887 uint64_t halt : 1; /**< When set, HALT indicates that the MAC has detected
1888 a reset condition. No further instructions that
1889 reference the MAC from any instruction Q will be
1890 issued until the MAC comes out of reset and HALT
1891 is cleared in SLI_CTL_PORTx[DIS_PORT]. */
1892 uint64_t reserved_21_23 : 3;
1893 uint64_t qlm_cfg : 1; /**< Read only copy of the QLM CFG pin
1894 Since QLM_CFG is simply a copy of the QLM CFG
1895 pins, it may reflect values that are not normal
1896 for DMA or packet operations. QLM_CFG does not
1897 indicate if a port is disabled.
1900 uint64_t reserved_17_19 : 3;
1901 uint64_t rd_mode : 1; /**< Read Mode
1903 If the port is a PCIe port, the HW reads on a
1904 4B granularity. In this mode, the HW may break
1905 a given read into 3 operations to satisify
1907 If the port is a SRIO port, the HW follows the
1908 SRIO read rules from the SRIO specification and
1909 only issues 32*n, 16, and 8 byte operations
1912 The HW will read more data than requested in
1913 order to minimize the number of operations
1914 necessary to complete the operation.
1915 The memory region must be memory like. */
1916 uint64_t reserved_14_15 : 2;
1917 uint64_t molr : 6; /**< Max Outstanding Load Requests
1918 Limits the number of oustanding load requests on
1919 the port by restricting the number of tags
1920 used by the SLI to track load responses. This
1921 value can range from 1 to 32. Setting a value of
1922 0 will halt all read traffic to the port. There
1923 are no restrictions on when this value
1925 uint64_t mps_lim : 1; /**< MAC memory space write requests cannot cross the
1926 (naturally-aligned) MPS boundary.
1927 When clear, DPI is allowed to issue a MAC memory
1928 space read that crosses the naturally-aligned
1929 boundary of size defined by MPS. (DPI will still
1930 only cross the boundary when it would eliminate a
1932 When set, DPI will never issue a MAC memory space
1933 write that crosses the naturally-aligned boundary
1934 of size defined by MPS. */
1935 uint64_t reserved_5_6 : 2;
1936 uint64_t mps : 1; /**< Max Payload Size
1939 For PCIe MACs, this MPS size must not exceed
1940 the size selected by PCIE*_CFG030[MPS].
1941 For sRIO MACs, all MPS values are allowed. */
1942 uint64_t mrrs_lim : 1; /**< MAC memory space read requests cannot cross the
1943 (naturally-aligned) MRRS boundary.
1944 When clear, DPI is allowed to issue a MAC memory
1945 space read that crosses the naturally-aligned
1946 boundary of size defined by MRRS. (DPI will still
1947 only cross the boundary when it would eliminate a
1949 When set, DPI will never issue a MAC memory space
1950 read that crosses the naturally-aligned boundary
1951 of size defined by MRRS. */
1952 uint64_t reserved_2_2 : 1;
1953 uint64_t mrrs : 2; /**< Max Read Request Size
1958 For PCIe MACs, this MRRS size must not exceed
1959 the size selected by PCIE*_CFG030[MRRS].
1960 For sRIO MACs, this MRRS size must be <= 256B. */
1963 uint64_t reserved_2_2 : 1;
1964 uint64_t mrrs_lim : 1;
1966 uint64_t reserved_5_6 : 2;
1967 uint64_t mps_lim : 1;
1969 uint64_t reserved_14_15 : 2;
1970 uint64_t rd_mode : 1;
1971 uint64_t reserved_17_19 : 3;
1972 uint64_t qlm_cfg : 1;
1973 uint64_t reserved_21_23 : 3;
1975 uint64_t reserved_25_63 : 39;
1978 struct cvmx_dpi_sli_prtx_cfg_cn63xx cn63xxp1;
1979 struct cvmx_dpi_sli_prtx_cfg_s cn66xx;
1980 struct cvmx_dpi_sli_prtx_cfg_cn63xx cn68xx;
1981 struct cvmx_dpi_sli_prtx_cfg_cn63xx cn68xxp1;
1982 struct cvmx_dpi_sli_prtx_cfg_s cnf71xx;
1984 typedef union cvmx_dpi_sli_prtx_cfg cvmx_dpi_sli_prtx_cfg_t;
1987 * cvmx_dpi_sli_prt#_err
1989 * DPI_SLI_PRTx_ERR = DPI SLI Port Error Info
1991 * Logs the Address and Request Queue associated with the reported SLI error response
1993 union cvmx_dpi_sli_prtx_err {
1995 struct cvmx_dpi_sli_prtx_err_s {
1996 #ifdef __BIG_ENDIAN_BITFIELD
1997 uint64_t addr : 61; /**< Address of the failed load request.
1998 Address is locked along with the
1999 DPI_SLI_PRTx_ERR_INFO register.
2000 See the DPI_SLI_PRTx_ERR_INFO[LOCK] description
2001 for further information. */
2002 uint64_t reserved_0_2 : 3;
2004 uint64_t reserved_0_2 : 3;
2008 struct cvmx_dpi_sli_prtx_err_s cn61xx;
2009 struct cvmx_dpi_sli_prtx_err_s cn63xx;
2010 struct cvmx_dpi_sli_prtx_err_s cn63xxp1;
2011 struct cvmx_dpi_sli_prtx_err_s cn66xx;
2012 struct cvmx_dpi_sli_prtx_err_s cn68xx;
2013 struct cvmx_dpi_sli_prtx_err_s cn68xxp1;
2014 struct cvmx_dpi_sli_prtx_err_s cnf71xx;
2016 typedef union cvmx_dpi_sli_prtx_err cvmx_dpi_sli_prtx_err_t;
2019 * cvmx_dpi_sli_prt#_err_info
2021 * DPI_SLI_PRTx_ERR_INFO = DPI SLI Port Error Info
2023 * Logs the Address and Request Queue associated with the reported SLI error response
2025 union cvmx_dpi_sli_prtx_err_info {
2027 struct cvmx_dpi_sli_prtx_err_info_s {
2028 #ifdef __BIG_ENDIAN_BITFIELD
2029 uint64_t reserved_9_63 : 55;
2030 uint64_t lock : 1; /**< DPI_SLI_PRTx_ERR and DPI_SLI_PRTx_ERR_INFO have
2031 captured and locked contents.
2032 When Octeon first detects an ErrorResponse, the
2033 TYPE, REQQ, and ADDR of the error is saved and an
2034 internal lock state is set so the data associated
2035 with the initial error is perserved.
2036 Subsequent ErrorResponses will optionally raise
2037 an interrupt, but will not modify the TYPE, REQQ,
2038 or ADDR fields until the internal lock state is
2040 SW can clear the internal lock state by writting
2041 a '1' to the appropriate bit in either
2042 DPI_REQ_ERR_RSP or DPI_PKT_ERR_RSP depending on
2044 Once the internal lock state is cleared,
2045 the next ErrorResponse will set the TYPE, REQQ,
2046 and ADDR for the new transaction. */
2047 uint64_t reserved_5_7 : 3;
2048 uint64_t type : 1; /**< Type of transaction that caused the ErrorResponse.
2050 1=PKT Instruction */
2051 uint64_t reserved_3_3 : 1;
2052 uint64_t reqq : 3; /**< Request queue that made the failed load request. */
2055 uint64_t reserved_3_3 : 1;
2057 uint64_t reserved_5_7 : 3;
2059 uint64_t reserved_9_63 : 55;
2062 struct cvmx_dpi_sli_prtx_err_info_s cn61xx;
2063 struct cvmx_dpi_sli_prtx_err_info_s cn63xx;
2064 struct cvmx_dpi_sli_prtx_err_info_s cn63xxp1;
2065 struct cvmx_dpi_sli_prtx_err_info_s cn66xx;
2066 struct cvmx_dpi_sli_prtx_err_info_s cn68xx;
2067 struct cvmx_dpi_sli_prtx_err_info_s cn68xxp1;
2068 struct cvmx_dpi_sli_prtx_err_info_s cnf71xx;
2070 typedef union cvmx_dpi_sli_prtx_err_info cvmx_dpi_sli_prtx_err_info_t;