1 /***********************license start***************
2 * Copyright (c) 2003-2012 Cavium Inc. ([email protected]). All rights
3 * reserved.
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17
18 * * Neither the name of Cavium Inc. nor the names of
19 * its contributors may be used to endorse or promote products
20 * derived from this software without specific prior written
21 * permission.
22
23 * This Software, including technical data, may be subject to U.S. export control
24 * laws, including the U.S. Export Administration Act and its associated
25 * regulations, and may be subject to export or import regulations in other
26 * countries.
27
28 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29 * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
31 * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
32 * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
33 * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
34 * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35 * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
36 * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
37 * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38 ***********************license end**************************************/
39
40
41 /**
42 * cvmx-pescx-defs.h
43 *
44 * Configuration and status register (CSR) type definitions for
45 * Octeon pescx.
46 *
47 * This file is auto generated. Do not edit.
48 *
49 * <hr>$Revision$<hr>
50 *
51 */
52 #ifndef __CVMX_PESCX_DEFS_H__
53 #define __CVMX_PESCX_DEFS_H__
54
55 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_BIST_STATUS(unsigned long block_id)56 static inline uint64_t CVMX_PESCX_BIST_STATUS(unsigned long block_id)
57 {
58 if (!(
59 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
60 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
61 cvmx_warn("CVMX_PESCX_BIST_STATUS(%lu) is invalid on this chip\n", block_id);
62 return CVMX_ADD_IO_SEG(0x00011800C8000018ull) + ((block_id) & 1) * 0x8000000ull;
63 }
64 #else
65 #define CVMX_PESCX_BIST_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000018ull) + ((block_id) & 1) * 0x8000000ull)
66 #endif
67 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_BIST_STATUS2(unsigned long block_id)68 static inline uint64_t CVMX_PESCX_BIST_STATUS2(unsigned long block_id)
69 {
70 if (!(
71 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
72 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
73 cvmx_warn("CVMX_PESCX_BIST_STATUS2(%lu) is invalid on this chip\n", block_id);
74 return CVMX_ADD_IO_SEG(0x00011800C8000418ull) + ((block_id) & 1) * 0x8000000ull;
75 }
76 #else
77 #define CVMX_PESCX_BIST_STATUS2(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000418ull) + ((block_id) & 1) * 0x8000000ull)
78 #endif
79 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_CFG_RD(unsigned long block_id)80 static inline uint64_t CVMX_PESCX_CFG_RD(unsigned long block_id)
81 {
82 if (!(
83 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
84 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
85 cvmx_warn("CVMX_PESCX_CFG_RD(%lu) is invalid on this chip\n", block_id);
86 return CVMX_ADD_IO_SEG(0x00011800C8000030ull) + ((block_id) & 1) * 0x8000000ull;
87 }
88 #else
89 #define CVMX_PESCX_CFG_RD(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000030ull) + ((block_id) & 1) * 0x8000000ull)
90 #endif
91 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_CFG_WR(unsigned long block_id)92 static inline uint64_t CVMX_PESCX_CFG_WR(unsigned long block_id)
93 {
94 if (!(
95 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
96 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
97 cvmx_warn("CVMX_PESCX_CFG_WR(%lu) is invalid on this chip\n", block_id);
98 return CVMX_ADD_IO_SEG(0x00011800C8000028ull) + ((block_id) & 1) * 0x8000000ull;
99 }
100 #else
101 #define CVMX_PESCX_CFG_WR(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000028ull) + ((block_id) & 1) * 0x8000000ull)
102 #endif
103 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_CPL_LUT_VALID(unsigned long block_id)104 static inline uint64_t CVMX_PESCX_CPL_LUT_VALID(unsigned long block_id)
105 {
106 if (!(
107 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
108 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
109 cvmx_warn("CVMX_PESCX_CPL_LUT_VALID(%lu) is invalid on this chip\n", block_id);
110 return CVMX_ADD_IO_SEG(0x00011800C8000098ull) + ((block_id) & 1) * 0x8000000ull;
111 }
112 #else
113 #define CVMX_PESCX_CPL_LUT_VALID(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000098ull) + ((block_id) & 1) * 0x8000000ull)
114 #endif
115 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_CTL_STATUS(unsigned long block_id)116 static inline uint64_t CVMX_PESCX_CTL_STATUS(unsigned long block_id)
117 {
118 if (!(
119 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
120 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
121 cvmx_warn("CVMX_PESCX_CTL_STATUS(%lu) is invalid on this chip\n", block_id);
122 return CVMX_ADD_IO_SEG(0x00011800C8000000ull) + ((block_id) & 1) * 0x8000000ull;
123 }
124 #else
125 #define CVMX_PESCX_CTL_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000000ull) + ((block_id) & 1) * 0x8000000ull)
126 #endif
127 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_CTL_STATUS2(unsigned long block_id)128 static inline uint64_t CVMX_PESCX_CTL_STATUS2(unsigned long block_id)
129 {
130 if (!(
131 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
132 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
133 cvmx_warn("CVMX_PESCX_CTL_STATUS2(%lu) is invalid on this chip\n", block_id);
134 return CVMX_ADD_IO_SEG(0x00011800C8000400ull) + ((block_id) & 1) * 0x8000000ull;
135 }
136 #else
137 #define CVMX_PESCX_CTL_STATUS2(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000400ull) + ((block_id) & 1) * 0x8000000ull)
138 #endif
139 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_DBG_INFO(unsigned long block_id)140 static inline uint64_t CVMX_PESCX_DBG_INFO(unsigned long block_id)
141 {
142 if (!(
143 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
144 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
145 cvmx_warn("CVMX_PESCX_DBG_INFO(%lu) is invalid on this chip\n", block_id);
146 return CVMX_ADD_IO_SEG(0x00011800C8000008ull) + ((block_id) & 1) * 0x8000000ull;
147 }
148 #else
149 #define CVMX_PESCX_DBG_INFO(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000008ull) + ((block_id) & 1) * 0x8000000ull)
150 #endif
151 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_DBG_INFO_EN(unsigned long block_id)152 static inline uint64_t CVMX_PESCX_DBG_INFO_EN(unsigned long block_id)
153 {
154 if (!(
155 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
156 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
157 cvmx_warn("CVMX_PESCX_DBG_INFO_EN(%lu) is invalid on this chip\n", block_id);
158 return CVMX_ADD_IO_SEG(0x00011800C80000A0ull) + ((block_id) & 1) * 0x8000000ull;
159 }
160 #else
161 #define CVMX_PESCX_DBG_INFO_EN(block_id) (CVMX_ADD_IO_SEG(0x00011800C80000A0ull) + ((block_id) & 1) * 0x8000000ull)
162 #endif
163 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_DIAG_STATUS(unsigned long block_id)164 static inline uint64_t CVMX_PESCX_DIAG_STATUS(unsigned long block_id)
165 {
166 if (!(
167 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
168 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
169 cvmx_warn("CVMX_PESCX_DIAG_STATUS(%lu) is invalid on this chip\n", block_id);
170 return CVMX_ADD_IO_SEG(0x00011800C8000020ull) + ((block_id) & 1) * 0x8000000ull;
171 }
172 #else
173 #define CVMX_PESCX_DIAG_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000020ull) + ((block_id) & 1) * 0x8000000ull)
174 #endif
175 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_P2N_BAR0_START(unsigned long block_id)176 static inline uint64_t CVMX_PESCX_P2N_BAR0_START(unsigned long block_id)
177 {
178 if (!(
179 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
180 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
181 cvmx_warn("CVMX_PESCX_P2N_BAR0_START(%lu) is invalid on this chip\n", block_id);
182 return CVMX_ADD_IO_SEG(0x00011800C8000080ull) + ((block_id) & 1) * 0x8000000ull;
183 }
184 #else
185 #define CVMX_PESCX_P2N_BAR0_START(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000080ull) + ((block_id) & 1) * 0x8000000ull)
186 #endif
187 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_P2N_BAR1_START(unsigned long block_id)188 static inline uint64_t CVMX_PESCX_P2N_BAR1_START(unsigned long block_id)
189 {
190 if (!(
191 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
192 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
193 cvmx_warn("CVMX_PESCX_P2N_BAR1_START(%lu) is invalid on this chip\n", block_id);
194 return CVMX_ADD_IO_SEG(0x00011800C8000088ull) + ((block_id) & 1) * 0x8000000ull;
195 }
196 #else
197 #define CVMX_PESCX_P2N_BAR1_START(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000088ull) + ((block_id) & 1) * 0x8000000ull)
198 #endif
199 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_P2N_BAR2_START(unsigned long block_id)200 static inline uint64_t CVMX_PESCX_P2N_BAR2_START(unsigned long block_id)
201 {
202 if (!(
203 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
204 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
205 cvmx_warn("CVMX_PESCX_P2N_BAR2_START(%lu) is invalid on this chip\n", block_id);
206 return CVMX_ADD_IO_SEG(0x00011800C8000090ull) + ((block_id) & 1) * 0x8000000ull;
207 }
208 #else
209 #define CVMX_PESCX_P2N_BAR2_START(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000090ull) + ((block_id) & 1) * 0x8000000ull)
210 #endif
211 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_P2P_BARX_END(unsigned long offset,unsigned long block_id)212 static inline uint64_t CVMX_PESCX_P2P_BARX_END(unsigned long offset, unsigned long block_id)
213 {
214 if (!(
215 (OCTEON_IS_MODEL(OCTEON_CN52XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
216 (OCTEON_IS_MODEL(OCTEON_CN56XX) && (((offset <= 3)) && ((block_id <= 1))))))
217 cvmx_warn("CVMX_PESCX_P2P_BARX_END(%lu,%lu) is invalid on this chip\n", offset, block_id);
218 return CVMX_ADD_IO_SEG(0x00011800C8000048ull) + (((offset) & 3) + ((block_id) & 1) * 0x800000ull) * 16;
219 }
220 #else
221 #define CVMX_PESCX_P2P_BARX_END(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C8000048ull) + (((offset) & 3) + ((block_id) & 1) * 0x800000ull) * 16)
222 #endif
223 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_P2P_BARX_START(unsigned long offset,unsigned long block_id)224 static inline uint64_t CVMX_PESCX_P2P_BARX_START(unsigned long offset, unsigned long block_id)
225 {
226 if (!(
227 (OCTEON_IS_MODEL(OCTEON_CN52XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
228 (OCTEON_IS_MODEL(OCTEON_CN56XX) && (((offset <= 3)) && ((block_id <= 1))))))
229 cvmx_warn("CVMX_PESCX_P2P_BARX_START(%lu,%lu) is invalid on this chip\n", offset, block_id);
230 return CVMX_ADD_IO_SEG(0x00011800C8000040ull) + (((offset) & 3) + ((block_id) & 1) * 0x800000ull) * 16;
231 }
232 #else
233 #define CVMX_PESCX_P2P_BARX_START(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C8000040ull) + (((offset) & 3) + ((block_id) & 1) * 0x800000ull) * 16)
234 #endif
235 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
CVMX_PESCX_TLP_CREDITS(unsigned long block_id)236 static inline uint64_t CVMX_PESCX_TLP_CREDITS(unsigned long block_id)
237 {
238 if (!(
239 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
240 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id <= 1)))))
241 cvmx_warn("CVMX_PESCX_TLP_CREDITS(%lu) is invalid on this chip\n", block_id);
242 return CVMX_ADD_IO_SEG(0x00011800C8000038ull) + ((block_id) & 1) * 0x8000000ull;
243 }
244 #else
245 #define CVMX_PESCX_TLP_CREDITS(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000038ull) + ((block_id) & 1) * 0x8000000ull)
246 #endif
247
248 /**
249 * cvmx_pesc#_bist_status
250 *
251 * PESC_BIST_STATUS = PESC Bist Status
252 *
253 * Contains the diffrent interrupt summary bits of the PESC.
254 */
255 union cvmx_pescx_bist_status {
256 uint64_t u64;
257 struct cvmx_pescx_bist_status_s {
258 #ifdef __BIG_ENDIAN_BITFIELD
259 uint64_t reserved_13_63 : 51;
260 uint64_t rqdata5 : 1; /**< Rx Queue Data Memory5. */
261 uint64_t ctlp_or : 1; /**< C-TLP Order Fifo. */
262 uint64_t ntlp_or : 1; /**< N-TLP Order Fifo. */
263 uint64_t ptlp_or : 1; /**< P-TLP Order Fifo. */
264 uint64_t retry : 1; /**< Retry Buffer. */
265 uint64_t rqdata0 : 1; /**< Rx Queue Data Memory0. */
266 uint64_t rqdata1 : 1; /**< Rx Queue Data Memory1. */
267 uint64_t rqdata2 : 1; /**< Rx Queue Data Memory2. */
268 uint64_t rqdata3 : 1; /**< Rx Queue Data Memory3. */
269 uint64_t rqdata4 : 1; /**< Rx Queue Data Memory4. */
270 uint64_t rqhdr1 : 1; /**< Rx Queue Header1. */
271 uint64_t rqhdr0 : 1; /**< Rx Queue Header0. */
272 uint64_t sot : 1; /**< SOT Buffer. */
273 #else
274 uint64_t sot : 1;
275 uint64_t rqhdr0 : 1;
276 uint64_t rqhdr1 : 1;
277 uint64_t rqdata4 : 1;
278 uint64_t rqdata3 : 1;
279 uint64_t rqdata2 : 1;
280 uint64_t rqdata1 : 1;
281 uint64_t rqdata0 : 1;
282 uint64_t retry : 1;
283 uint64_t ptlp_or : 1;
284 uint64_t ntlp_or : 1;
285 uint64_t ctlp_or : 1;
286 uint64_t rqdata5 : 1;
287 uint64_t reserved_13_63 : 51;
288 #endif
289 } s;
290 struct cvmx_pescx_bist_status_s cn52xx;
291 struct cvmx_pescx_bist_status_cn52xxp1 {
292 #ifdef __BIG_ENDIAN_BITFIELD
293 uint64_t reserved_12_63 : 52;
294 uint64_t ctlp_or : 1; /**< C-TLP Order Fifo. */
295 uint64_t ntlp_or : 1; /**< N-TLP Order Fifo. */
296 uint64_t ptlp_or : 1; /**< P-TLP Order Fifo. */
297 uint64_t retry : 1; /**< Retry Buffer. */
298 uint64_t rqdata0 : 1; /**< Rx Queue Data Memory0. */
299 uint64_t rqdata1 : 1; /**< Rx Queue Data Memory1. */
300 uint64_t rqdata2 : 1; /**< Rx Queue Data Memory2. */
301 uint64_t rqdata3 : 1; /**< Rx Queue Data Memory3. */
302 uint64_t rqdata4 : 1; /**< Rx Queue Data Memory4. */
303 uint64_t rqhdr1 : 1; /**< Rx Queue Header1. */
304 uint64_t rqhdr0 : 1; /**< Rx Queue Header0. */
305 uint64_t sot : 1; /**< SOT Buffer. */
306 #else
307 uint64_t sot : 1;
308 uint64_t rqhdr0 : 1;
309 uint64_t rqhdr1 : 1;
310 uint64_t rqdata4 : 1;
311 uint64_t rqdata3 : 1;
312 uint64_t rqdata2 : 1;
313 uint64_t rqdata1 : 1;
314 uint64_t rqdata0 : 1;
315 uint64_t retry : 1;
316 uint64_t ptlp_or : 1;
317 uint64_t ntlp_or : 1;
318 uint64_t ctlp_or : 1;
319 uint64_t reserved_12_63 : 52;
320 #endif
321 } cn52xxp1;
322 struct cvmx_pescx_bist_status_s cn56xx;
323 struct cvmx_pescx_bist_status_cn52xxp1 cn56xxp1;
324 };
325 typedef union cvmx_pescx_bist_status cvmx_pescx_bist_status_t;
326
327 /**
328 * cvmx_pesc#_bist_status2
329 *
330 * PESC(0..1)_BIST_STATUS2 = PESC BIST Status Register
331 *
332 * Results from BIST runs of PESC's memories.
333 */
334 union cvmx_pescx_bist_status2 {
335 uint64_t u64;
336 struct cvmx_pescx_bist_status2_s {
337 #ifdef __BIG_ENDIAN_BITFIELD
338 uint64_t reserved_14_63 : 50;
339 uint64_t cto_p2e : 1; /**< BIST Status for the cto_p2e_fifo */
340 uint64_t e2p_cpl : 1; /**< BIST Status for the e2p_cpl_fifo */
341 uint64_t e2p_n : 1; /**< BIST Status for the e2p_n_fifo */
342 uint64_t e2p_p : 1; /**< BIST Status for the e2p_p_fifo */
343 uint64_t e2p_rsl : 1; /**< BIST Status for the e2p_rsl__fifo */
344 uint64_t dbg_p2e : 1; /**< BIST Status for the dbg_p2e_fifo */
345 uint64_t peai_p2e : 1; /**< BIST Status for the peai__pesc_fifo */
346 uint64_t rsl_p2e : 1; /**< BIST Status for the rsl_p2e_fifo */
347 uint64_t pef_tpf1 : 1; /**< BIST Status for the pef_tlp_p_fifo1 */
348 uint64_t pef_tpf0 : 1; /**< BIST Status for the pef_tlp_p_fifo0 */
349 uint64_t pef_tnf : 1; /**< BIST Status for the pef_tlp_n_fifo */
350 uint64_t pef_tcf1 : 1; /**< BIST Status for the pef_tlp_cpl_fifo1 */
351 uint64_t pef_tc0 : 1; /**< BIST Status for the pef_tlp_cpl_fifo0 */
352 uint64_t ppf : 1; /**< BIST Status for the ppf_fifo */
353 #else
354 uint64_t ppf : 1;
355 uint64_t pef_tc0 : 1;
356 uint64_t pef_tcf1 : 1;
357 uint64_t pef_tnf : 1;
358 uint64_t pef_tpf0 : 1;
359 uint64_t pef_tpf1 : 1;
360 uint64_t rsl_p2e : 1;
361 uint64_t peai_p2e : 1;
362 uint64_t dbg_p2e : 1;
363 uint64_t e2p_rsl : 1;
364 uint64_t e2p_p : 1;
365 uint64_t e2p_n : 1;
366 uint64_t e2p_cpl : 1;
367 uint64_t cto_p2e : 1;
368 uint64_t reserved_14_63 : 50;
369 #endif
370 } s;
371 struct cvmx_pescx_bist_status2_s cn52xx;
372 struct cvmx_pescx_bist_status2_s cn52xxp1;
373 struct cvmx_pescx_bist_status2_s cn56xx;
374 struct cvmx_pescx_bist_status2_s cn56xxp1;
375 };
376 typedef union cvmx_pescx_bist_status2 cvmx_pescx_bist_status2_t;
377
378 /**
379 * cvmx_pesc#_cfg_rd
380 *
381 * PESC_CFG_RD = PESC Configuration Read
382 *
383 * Allows read access to the configuration in the PCIe Core.
384 */
385 union cvmx_pescx_cfg_rd {
386 uint64_t u64;
387 struct cvmx_pescx_cfg_rd_s {
388 #ifdef __BIG_ENDIAN_BITFIELD
389 uint64_t data : 32; /**< Data. */
390 uint64_t addr : 32; /**< Address to read. A write to this register
391 starts a read operation. */
392 #else
393 uint64_t addr : 32;
394 uint64_t data : 32;
395 #endif
396 } s;
397 struct cvmx_pescx_cfg_rd_s cn52xx;
398 struct cvmx_pescx_cfg_rd_s cn52xxp1;
399 struct cvmx_pescx_cfg_rd_s cn56xx;
400 struct cvmx_pescx_cfg_rd_s cn56xxp1;
401 };
402 typedef union cvmx_pescx_cfg_rd cvmx_pescx_cfg_rd_t;
403
404 /**
405 * cvmx_pesc#_cfg_wr
406 *
407 * PESC_CFG_WR = PESC Configuration Write
408 *
409 * Allows write access to the configuration in the PCIe Core.
410 */
411 union cvmx_pescx_cfg_wr {
412 uint64_t u64;
413 struct cvmx_pescx_cfg_wr_s {
414 #ifdef __BIG_ENDIAN_BITFIELD
415 uint64_t data : 32; /**< Data to write. A write to this register starts
416 a write operation. */
417 uint64_t addr : 32; /**< Address to write. A write to this register starts
418 a write operation. */
419 #else
420 uint64_t addr : 32;
421 uint64_t data : 32;
422 #endif
423 } s;
424 struct cvmx_pescx_cfg_wr_s cn52xx;
425 struct cvmx_pescx_cfg_wr_s cn52xxp1;
426 struct cvmx_pescx_cfg_wr_s cn56xx;
427 struct cvmx_pescx_cfg_wr_s cn56xxp1;
428 };
429 typedef union cvmx_pescx_cfg_wr cvmx_pescx_cfg_wr_t;
430
431 /**
432 * cvmx_pesc#_cpl_lut_valid
433 *
434 * PESC_CPL_LUT_VALID = PESC Cmpletion Lookup Table Valid
435 *
436 * Bit set for outstanding tag read.
437 */
438 union cvmx_pescx_cpl_lut_valid {
439 uint64_t u64;
440 struct cvmx_pescx_cpl_lut_valid_s {
441 #ifdef __BIG_ENDIAN_BITFIELD
442 uint64_t reserved_32_63 : 32;
443 uint64_t tag : 32; /**< Bit vector set cooresponds to an outstanding tag
444 expecting a completion. */
445 #else
446 uint64_t tag : 32;
447 uint64_t reserved_32_63 : 32;
448 #endif
449 } s;
450 struct cvmx_pescx_cpl_lut_valid_s cn52xx;
451 struct cvmx_pescx_cpl_lut_valid_s cn52xxp1;
452 struct cvmx_pescx_cpl_lut_valid_s cn56xx;
453 struct cvmx_pescx_cpl_lut_valid_s cn56xxp1;
454 };
455 typedef union cvmx_pescx_cpl_lut_valid cvmx_pescx_cpl_lut_valid_t;
456
457 /**
458 * cvmx_pesc#_ctl_status
459 *
460 * PESC_CTL_STATUS = PESC Control Status
461 *
462 * General control and status of the PESC.
463 */
464 union cvmx_pescx_ctl_status {
465 uint64_t u64;
466 struct cvmx_pescx_ctl_status_s {
467 #ifdef __BIG_ENDIAN_BITFIELD
468 uint64_t reserved_28_63 : 36;
469 uint64_t dnum : 5; /**< Primary bus device number. */
470 uint64_t pbus : 8; /**< Primary bus number. */
471 uint64_t qlm_cfg : 2; /**< The QLM configuration pad bits. */
472 uint64_t lane_swp : 1; /**< Lane Swap. For PEDC1, when 0 NO LANE SWAP when '1'
473 enables LANE SWAP. THis bit has no effect on PEDC0.
474 This bit should be set before enabling PEDC1. */
475 uint64_t pm_xtoff : 1; /**< When WRITTEN with a '1' a single cycle pulse is
476 to the PCIe core pm_xmt_turnoff port. RC mode. */
477 uint64_t pm_xpme : 1; /**< When WRITTEN with a '1' a single cycle pulse is
478 to the PCIe core pm_xmt_pme port. EP mode. */
479 uint64_t ob_p_cmd : 1; /**< When WRITTEN with a '1' a single cycle pulse is
480 to the PCIe core outband_pwrup_cmd port. EP mode. */
481 uint64_t reserved_7_8 : 2;
482 uint64_t nf_ecrc : 1; /**< Do not forward peer-to-peer ECRC TLPs. */
483 uint64_t dly_one : 1; /**< When set the output client state machines will
484 wait one cycle before starting a new TLP out. */
485 uint64_t lnk_enb : 1; /**< When set '1' the link is enabled when '0' the
486 link is disabled. This bit only is active when in
487 RC mode. */
488 uint64_t ro_ctlp : 1; /**< When set '1' C-TLPs that have the RO bit set will
489 not wait for P-TLPs that normaly would be sent
490 first. */
491 uint64_t reserved_2_2 : 1;
492 uint64_t inv_ecrc : 1; /**< When '1' causes the LSB of the ECRC to be inverted. */
493 uint64_t inv_lcrc : 1; /**< When '1' causes the LSB of the LCRC to be inverted. */
494 #else
495 uint64_t inv_lcrc : 1;
496 uint64_t inv_ecrc : 1;
497 uint64_t reserved_2_2 : 1;
498 uint64_t ro_ctlp : 1;
499 uint64_t lnk_enb : 1;
500 uint64_t dly_one : 1;
501 uint64_t nf_ecrc : 1;
502 uint64_t reserved_7_8 : 2;
503 uint64_t ob_p_cmd : 1;
504 uint64_t pm_xpme : 1;
505 uint64_t pm_xtoff : 1;
506 uint64_t lane_swp : 1;
507 uint64_t qlm_cfg : 2;
508 uint64_t pbus : 8;
509 uint64_t dnum : 5;
510 uint64_t reserved_28_63 : 36;
511 #endif
512 } s;
513 struct cvmx_pescx_ctl_status_s cn52xx;
514 struct cvmx_pescx_ctl_status_s cn52xxp1;
515 struct cvmx_pescx_ctl_status_cn56xx {
516 #ifdef __BIG_ENDIAN_BITFIELD
517 uint64_t reserved_28_63 : 36;
518 uint64_t dnum : 5; /**< Primary bus device number. */
519 uint64_t pbus : 8; /**< Primary bus number. */
520 uint64_t qlm_cfg : 2; /**< The QLM configuration pad bits. */
521 uint64_t reserved_12_12 : 1;
522 uint64_t pm_xtoff : 1; /**< When WRITTEN with a '1' a single cycle pulse is
523 to the PCIe core pm_xmt_turnoff port. RC mode. */
524 uint64_t pm_xpme : 1; /**< When WRITTEN with a '1' a single cycle pulse is
525 to the PCIe core pm_xmt_pme port. EP mode. */
526 uint64_t ob_p_cmd : 1; /**< When WRITTEN with a '1' a single cycle pulse is
527 to the PCIe core outband_pwrup_cmd port. EP mode. */
528 uint64_t reserved_7_8 : 2;
529 uint64_t nf_ecrc : 1; /**< Do not forward peer-to-peer ECRC TLPs. */
530 uint64_t dly_one : 1; /**< When set the output client state machines will
531 wait one cycle before starting a new TLP out. */
532 uint64_t lnk_enb : 1; /**< When set '1' the link is enabled when '0' the
533 link is disabled. This bit only is active when in
534 RC mode. */
535 uint64_t ro_ctlp : 1; /**< When set '1' C-TLPs that have the RO bit set will
536 not wait for P-TLPs that normaly would be sent
537 first. */
538 uint64_t reserved_2_2 : 1;
539 uint64_t inv_ecrc : 1; /**< When '1' causes the LSB of the ECRC to be inverted. */
540 uint64_t inv_lcrc : 1; /**< When '1' causes the LSB of the LCRC to be inverted. */
541 #else
542 uint64_t inv_lcrc : 1;
543 uint64_t inv_ecrc : 1;
544 uint64_t reserved_2_2 : 1;
545 uint64_t ro_ctlp : 1;
546 uint64_t lnk_enb : 1;
547 uint64_t dly_one : 1;
548 uint64_t nf_ecrc : 1;
549 uint64_t reserved_7_8 : 2;
550 uint64_t ob_p_cmd : 1;
551 uint64_t pm_xpme : 1;
552 uint64_t pm_xtoff : 1;
553 uint64_t reserved_12_12 : 1;
554 uint64_t qlm_cfg : 2;
555 uint64_t pbus : 8;
556 uint64_t dnum : 5;
557 uint64_t reserved_28_63 : 36;
558 #endif
559 } cn56xx;
560 struct cvmx_pescx_ctl_status_cn56xx cn56xxp1;
561 };
562 typedef union cvmx_pescx_ctl_status cvmx_pescx_ctl_status_t;
563
564 /**
565 * cvmx_pesc#_ctl_status2
566 *
567 * Below are in PESC
568 *
569 * PESC(0..1)_BIST_STATUS2 = PESC BIST Status Register
570 *
571 * Results from BIST runs of PESC's memories.
572 */
573 union cvmx_pescx_ctl_status2 {
574 uint64_t u64;
575 struct cvmx_pescx_ctl_status2_s {
576 #ifdef __BIG_ENDIAN_BITFIELD
577 uint64_t reserved_2_63 : 62;
578 uint64_t pclk_run : 1; /**< When the pce_clk is running this bit will be '1'.
579 Writing a '1' to this location will cause the
580 bit to be cleared, but if the pce_clk is running
581 this bit will be re-set. */
582 uint64_t pcierst : 1; /**< Set to '1' when PCIe is in reset. */
583 #else
584 uint64_t pcierst : 1;
585 uint64_t pclk_run : 1;
586 uint64_t reserved_2_63 : 62;
587 #endif
588 } s;
589 struct cvmx_pescx_ctl_status2_s cn52xx;
590 struct cvmx_pescx_ctl_status2_cn52xxp1 {
591 #ifdef __BIG_ENDIAN_BITFIELD
592 uint64_t reserved_1_63 : 63;
593 uint64_t pcierst : 1; /**< Set to '1' when PCIe is in reset. */
594 #else
595 uint64_t pcierst : 1;
596 uint64_t reserved_1_63 : 63;
597 #endif
598 } cn52xxp1;
599 struct cvmx_pescx_ctl_status2_s cn56xx;
600 struct cvmx_pescx_ctl_status2_cn52xxp1 cn56xxp1;
601 };
602 typedef union cvmx_pescx_ctl_status2 cvmx_pescx_ctl_status2_t;
603
604 /**
605 * cvmx_pesc#_dbg_info
606 *
607 * PESC(0..1)_DBG_INFO = PESC Debug Information
608 *
609 * General debug info.
610 */
611 union cvmx_pescx_dbg_info {
612 uint64_t u64;
613 struct cvmx_pescx_dbg_info_s {
614 #ifdef __BIG_ENDIAN_BITFIELD
615 uint64_t reserved_31_63 : 33;
616 uint64_t ecrc_e : 1; /**< Received a ECRC error.
617 radm_ecrc_err */
618 uint64_t rawwpp : 1; /**< Received a write with poisoned payload
619 radm_rcvd_wreq_poisoned */
620 uint64_t racpp : 1; /**< Received a completion with poisoned payload
621 radm_rcvd_cpl_poisoned */
622 uint64_t ramtlp : 1; /**< Received a malformed TLP
623 radm_mlf_tlp_err */
624 uint64_t rarwdns : 1; /**< Recieved a request which device does not support
625 radm_rcvd_ur_req */
626 uint64_t caar : 1; /**< Completer aborted a request
627 radm_rcvd_ca_req
628 This bit will never be set because Octeon does
629 not generate Completer Aborts. */
630 uint64_t racca : 1; /**< Received a completion with CA status
631 radm_rcvd_cpl_ca */
632 uint64_t racur : 1; /**< Received a completion with UR status
633 radm_rcvd_cpl_ur */
634 uint64_t rauc : 1; /**< Received an unexpected completion
635 radm_unexp_cpl_err */
636 uint64_t rqo : 1; /**< Receive queue overflow. Normally happens only when
637 flow control advertisements are ignored
638 radm_qoverflow */
639 uint64_t fcuv : 1; /**< Flow Control Update Violation (opt. checks)
640 int_xadm_fc_prot_err */
641 uint64_t rpe : 1; /**< When the PHY reports 8B/10B decode error
642 (RxStatus = 3b100) or disparity error
643 (RxStatus = 3b111), the signal rmlh_rcvd_err will
644 be asserted.
645 rmlh_rcvd_err */
646 uint64_t fcpvwt : 1; /**< Flow Control Protocol Violation (Watchdog Timer)
647 rtlh_fc_prot_err */
648 uint64_t dpeoosd : 1; /**< DLLP protocol error (out of sequence DLLP)
649 rdlh_prot_err */
650 uint64_t rtwdle : 1; /**< Received TLP with DataLink Layer Error
651 rdlh_bad_tlp_err */
652 uint64_t rdwdle : 1; /**< Received DLLP with DataLink Layer Error
653 rdlh_bad_dllp_err */
654 uint64_t mre : 1; /**< Max Retries Exceeded
655 xdlh_replay_num_rlover_err */
656 uint64_t rte : 1; /**< Replay Timer Expired
657 xdlh_replay_timeout_err
658 This bit is set when the REPLAY_TIMER expires in
659 the PCIE core. The probability of this bit being
660 set will increase with the traffic load. */
661 uint64_t acto : 1; /**< A Completion Timeout Occured
662 pedc_radm_cpl_timeout */
663 uint64_t rvdm : 1; /**< Received Vendor-Defined Message
664 pedc_radm_vendor_msg */
665 uint64_t rumep : 1; /**< Received Unlock Message (EP Mode Only)
666 pedc_radm_msg_unlock */
667 uint64_t rptamrc : 1; /**< Received PME Turnoff Acknowledge Message
668 (RC Mode only)
669 pedc_radm_pm_to_ack */
670 uint64_t rpmerc : 1; /**< Received PME Message (RC Mode only)
671 pedc_radm_pm_pme */
672 uint64_t rfemrc : 1; /**< Received Fatal Error Message (RC Mode only)
673 pedc_radm_fatal_err
674 Bit set when a message with ERR_FATAL is set. */
675 uint64_t rnfemrc : 1; /**< Received Non-Fatal Error Message (RC Mode only)
676 pedc_radm_nonfatal_err */
677 uint64_t rcemrc : 1; /**< Received Correctable Error Message (RC Mode only)
678 pedc_radm_correctable_err */
679 uint64_t rpoison : 1; /**< Received Poisoned TLP
680 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv */
681 uint64_t recrce : 1; /**< Received ECRC Error
682 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot */
683 uint64_t rtlplle : 1; /**< Received TLP has link layer error
684 pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot */
685 uint64_t rtlpmal : 1; /**< Received TLP is malformed or a message.
686 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot
687 If the core receives a MSG (or Vendor Message)
688 this bit will be set. */
689 uint64_t spoison : 1; /**< Poisoned TLP sent
690 peai__client0_tlp_ep & peai__client0_tlp_hv */
691 #else
692 uint64_t spoison : 1;
693 uint64_t rtlpmal : 1;
694 uint64_t rtlplle : 1;
695 uint64_t recrce : 1;
696 uint64_t rpoison : 1;
697 uint64_t rcemrc : 1;
698 uint64_t rnfemrc : 1;
699 uint64_t rfemrc : 1;
700 uint64_t rpmerc : 1;
701 uint64_t rptamrc : 1;
702 uint64_t rumep : 1;
703 uint64_t rvdm : 1;
704 uint64_t acto : 1;
705 uint64_t rte : 1;
706 uint64_t mre : 1;
707 uint64_t rdwdle : 1;
708 uint64_t rtwdle : 1;
709 uint64_t dpeoosd : 1;
710 uint64_t fcpvwt : 1;
711 uint64_t rpe : 1;
712 uint64_t fcuv : 1;
713 uint64_t rqo : 1;
714 uint64_t rauc : 1;
715 uint64_t racur : 1;
716 uint64_t racca : 1;
717 uint64_t caar : 1;
718 uint64_t rarwdns : 1;
719 uint64_t ramtlp : 1;
720 uint64_t racpp : 1;
721 uint64_t rawwpp : 1;
722 uint64_t ecrc_e : 1;
723 uint64_t reserved_31_63 : 33;
724 #endif
725 } s;
726 struct cvmx_pescx_dbg_info_s cn52xx;
727 struct cvmx_pescx_dbg_info_s cn52xxp1;
728 struct cvmx_pescx_dbg_info_s cn56xx;
729 struct cvmx_pescx_dbg_info_s cn56xxp1;
730 };
731 typedef union cvmx_pescx_dbg_info cvmx_pescx_dbg_info_t;
732
733 /**
734 * cvmx_pesc#_dbg_info_en
735 *
736 * PESC(0..1)_DBG_INFO_EN = PESC Debug Information Enable
737 *
738 * Allows PESC_DBG_INFO to generate interrupts when cooresponding enable bit is set.
739 */
740 union cvmx_pescx_dbg_info_en {
741 uint64_t u64;
742 struct cvmx_pescx_dbg_info_en_s {
743 #ifdef __BIG_ENDIAN_BITFIELD
744 uint64_t reserved_31_63 : 33;
745 uint64_t ecrc_e : 1; /**< Allows PESC_DBG_INFO[30] to generate an interrupt. */
746 uint64_t rawwpp : 1; /**< Allows PESC_DBG_INFO[29] to generate an interrupt. */
747 uint64_t racpp : 1; /**< Allows PESC_DBG_INFO[28] to generate an interrupt. */
748 uint64_t ramtlp : 1; /**< Allows PESC_DBG_INFO[27] to generate an interrupt. */
749 uint64_t rarwdns : 1; /**< Allows PESC_DBG_INFO[26] to generate an interrupt. */
750 uint64_t caar : 1; /**< Allows PESC_DBG_INFO[25] to generate an interrupt. */
751 uint64_t racca : 1; /**< Allows PESC_DBG_INFO[24] to generate an interrupt. */
752 uint64_t racur : 1; /**< Allows PESC_DBG_INFO[23] to generate an interrupt. */
753 uint64_t rauc : 1; /**< Allows PESC_DBG_INFO[22] to generate an interrupt. */
754 uint64_t rqo : 1; /**< Allows PESC_DBG_INFO[21] to generate an interrupt. */
755 uint64_t fcuv : 1; /**< Allows PESC_DBG_INFO[20] to generate an interrupt. */
756 uint64_t rpe : 1; /**< Allows PESC_DBG_INFO[19] to generate an interrupt. */
757 uint64_t fcpvwt : 1; /**< Allows PESC_DBG_INFO[18] to generate an interrupt. */
758 uint64_t dpeoosd : 1; /**< Allows PESC_DBG_INFO[17] to generate an interrupt. */
759 uint64_t rtwdle : 1; /**< Allows PESC_DBG_INFO[16] to generate an interrupt. */
760 uint64_t rdwdle : 1; /**< Allows PESC_DBG_INFO[15] to generate an interrupt. */
761 uint64_t mre : 1; /**< Allows PESC_DBG_INFO[14] to generate an interrupt. */
762 uint64_t rte : 1; /**< Allows PESC_DBG_INFO[13] to generate an interrupt. */
763 uint64_t acto : 1; /**< Allows PESC_DBG_INFO[12] to generate an interrupt. */
764 uint64_t rvdm : 1; /**< Allows PESC_DBG_INFO[11] to generate an interrupt. */
765 uint64_t rumep : 1; /**< Allows PESC_DBG_INFO[10] to generate an interrupt. */
766 uint64_t rptamrc : 1; /**< Allows PESC_DBG_INFO[9] to generate an interrupt. */
767 uint64_t rpmerc : 1; /**< Allows PESC_DBG_INFO[8] to generate an interrupt. */
768 uint64_t rfemrc : 1; /**< Allows PESC_DBG_INFO[7] to generate an interrupt. */
769 uint64_t rnfemrc : 1; /**< Allows PESC_DBG_INFO[6] to generate an interrupt. */
770 uint64_t rcemrc : 1; /**< Allows PESC_DBG_INFO[5] to generate an interrupt. */
771 uint64_t rpoison : 1; /**< Allows PESC_DBG_INFO[4] to generate an interrupt. */
772 uint64_t recrce : 1; /**< Allows PESC_DBG_INFO[3] to generate an interrupt. */
773 uint64_t rtlplle : 1; /**< Allows PESC_DBG_INFO[2] to generate an interrupt. */
774 uint64_t rtlpmal : 1; /**< Allows PESC_DBG_INFO[1] to generate an interrupt. */
775 uint64_t spoison : 1; /**< Allows PESC_DBG_INFO[0] to generate an interrupt. */
776 #else
777 uint64_t spoison : 1;
778 uint64_t rtlpmal : 1;
779 uint64_t rtlplle : 1;
780 uint64_t recrce : 1;
781 uint64_t rpoison : 1;
782 uint64_t rcemrc : 1;
783 uint64_t rnfemrc : 1;
784 uint64_t rfemrc : 1;
785 uint64_t rpmerc : 1;
786 uint64_t rptamrc : 1;
787 uint64_t rumep : 1;
788 uint64_t rvdm : 1;
789 uint64_t acto : 1;
790 uint64_t rte : 1;
791 uint64_t mre : 1;
792 uint64_t rdwdle : 1;
793 uint64_t rtwdle : 1;
794 uint64_t dpeoosd : 1;
795 uint64_t fcpvwt : 1;
796 uint64_t rpe : 1;
797 uint64_t fcuv : 1;
798 uint64_t rqo : 1;
799 uint64_t rauc : 1;
800 uint64_t racur : 1;
801 uint64_t racca : 1;
802 uint64_t caar : 1;
803 uint64_t rarwdns : 1;
804 uint64_t ramtlp : 1;
805 uint64_t racpp : 1;
806 uint64_t rawwpp : 1;
807 uint64_t ecrc_e : 1;
808 uint64_t reserved_31_63 : 33;
809 #endif
810 } s;
811 struct cvmx_pescx_dbg_info_en_s cn52xx;
812 struct cvmx_pescx_dbg_info_en_s cn52xxp1;
813 struct cvmx_pescx_dbg_info_en_s cn56xx;
814 struct cvmx_pescx_dbg_info_en_s cn56xxp1;
815 };
816 typedef union cvmx_pescx_dbg_info_en cvmx_pescx_dbg_info_en_t;
817
818 /**
819 * cvmx_pesc#_diag_status
820 *
821 * PESC_DIAG_STATUS = PESC Diagnostic Status
822 *
823 * Selection control for the cores diagnostic bus.
824 */
825 union cvmx_pescx_diag_status {
826 uint64_t u64;
827 struct cvmx_pescx_diag_status_s {
828 #ifdef __BIG_ENDIAN_BITFIELD
829 uint64_t reserved_4_63 : 60;
830 uint64_t pm_dst : 1; /**< Current power management DSTATE. */
831 uint64_t pm_stat : 1; /**< Power Management Status. */
832 uint64_t pm_en : 1; /**< Power Management Event Enable. */
833 uint64_t aux_en : 1; /**< Auxilary Power Enable. */
834 #else
835 uint64_t aux_en : 1;
836 uint64_t pm_en : 1;
837 uint64_t pm_stat : 1;
838 uint64_t pm_dst : 1;
839 uint64_t reserved_4_63 : 60;
840 #endif
841 } s;
842 struct cvmx_pescx_diag_status_s cn52xx;
843 struct cvmx_pescx_diag_status_s cn52xxp1;
844 struct cvmx_pescx_diag_status_s cn56xx;
845 struct cvmx_pescx_diag_status_s cn56xxp1;
846 };
847 typedef union cvmx_pescx_diag_status cvmx_pescx_diag_status_t;
848
849 /**
850 * cvmx_pesc#_p2n_bar0_start
851 *
852 * PESC_P2N_BAR0_START = PESC PCIe to Npei BAR0 Start
853 *
854 * The starting address for addresses to forwarded to the NPEI in RC Mode.
855 */
856 union cvmx_pescx_p2n_bar0_start {
857 uint64_t u64;
858 struct cvmx_pescx_p2n_bar0_start_s {
859 #ifdef __BIG_ENDIAN_BITFIELD
860 uint64_t addr : 50; /**< The starting address of the 16KB address space that
861 is the BAR0 address space. */
862 uint64_t reserved_0_13 : 14;
863 #else
864 uint64_t reserved_0_13 : 14;
865 uint64_t addr : 50;
866 #endif
867 } s;
868 struct cvmx_pescx_p2n_bar0_start_s cn52xx;
869 struct cvmx_pescx_p2n_bar0_start_s cn52xxp1;
870 struct cvmx_pescx_p2n_bar0_start_s cn56xx;
871 struct cvmx_pescx_p2n_bar0_start_s cn56xxp1;
872 };
873 typedef union cvmx_pescx_p2n_bar0_start cvmx_pescx_p2n_bar0_start_t;
874
875 /**
876 * cvmx_pesc#_p2n_bar1_start
877 *
878 * PESC_P2N_BAR1_START = PESC PCIe to Npei BAR1 Start
879 *
880 * The starting address for addresses to forwarded to the NPEI in RC Mode.
881 */
882 union cvmx_pescx_p2n_bar1_start {
883 uint64_t u64;
884 struct cvmx_pescx_p2n_bar1_start_s {
885 #ifdef __BIG_ENDIAN_BITFIELD
886 uint64_t addr : 38; /**< The starting address of the 64KB address space
887 that is the BAR1 address space. */
888 uint64_t reserved_0_25 : 26;
889 #else
890 uint64_t reserved_0_25 : 26;
891 uint64_t addr : 38;
892 #endif
893 } s;
894 struct cvmx_pescx_p2n_bar1_start_s cn52xx;
895 struct cvmx_pescx_p2n_bar1_start_s cn52xxp1;
896 struct cvmx_pescx_p2n_bar1_start_s cn56xx;
897 struct cvmx_pescx_p2n_bar1_start_s cn56xxp1;
898 };
899 typedef union cvmx_pescx_p2n_bar1_start cvmx_pescx_p2n_bar1_start_t;
900
901 /**
902 * cvmx_pesc#_p2n_bar2_start
903 *
904 * PESC_P2N_BAR2_START = PESC PCIe to Npei BAR2 Start
905 *
906 * The starting address for addresses to forwarded to the NPEI in RC Mode.
907 */
908 union cvmx_pescx_p2n_bar2_start {
909 uint64_t u64;
910 struct cvmx_pescx_p2n_bar2_start_s {
911 #ifdef __BIG_ENDIAN_BITFIELD
912 uint64_t addr : 25; /**< The starting address of the 2^39 address space
913 that is the BAR2 address space. */
914 uint64_t reserved_0_38 : 39;
915 #else
916 uint64_t reserved_0_38 : 39;
917 uint64_t addr : 25;
918 #endif
919 } s;
920 struct cvmx_pescx_p2n_bar2_start_s cn52xx;
921 struct cvmx_pescx_p2n_bar2_start_s cn52xxp1;
922 struct cvmx_pescx_p2n_bar2_start_s cn56xx;
923 struct cvmx_pescx_p2n_bar2_start_s cn56xxp1;
924 };
925 typedef union cvmx_pescx_p2n_bar2_start cvmx_pescx_p2n_bar2_start_t;
926
927 /**
928 * cvmx_pesc#_p2p_bar#_end
929 *
930 * PESC_P2P_BAR#_END = PESC Peer-To-Peer BAR0 End
931 *
932 * The ending address for addresses to forwarded to the PCIe peer port.
933 */
934 union cvmx_pescx_p2p_barx_end {
935 uint64_t u64;
936 struct cvmx_pescx_p2p_barx_end_s {
937 #ifdef __BIG_ENDIAN_BITFIELD
938 uint64_t addr : 52; /**< The ending address of the address window created
939 this field and the PESC_P2P_BAR0_START[63:12]
940 field. The full 64-bits of address are created by:
941 [ADDR[63:12], 12'b0]. */
942 uint64_t reserved_0_11 : 12;
943 #else
944 uint64_t reserved_0_11 : 12;
945 uint64_t addr : 52;
946 #endif
947 } s;
948 struct cvmx_pescx_p2p_barx_end_s cn52xx;
949 struct cvmx_pescx_p2p_barx_end_s cn52xxp1;
950 struct cvmx_pescx_p2p_barx_end_s cn56xx;
951 struct cvmx_pescx_p2p_barx_end_s cn56xxp1;
952 };
953 typedef union cvmx_pescx_p2p_barx_end cvmx_pescx_p2p_barx_end_t;
954
955 /**
956 * cvmx_pesc#_p2p_bar#_start
957 *
958 * PESC_P2P_BAR#_START = PESC Peer-To-Peer BAR0 Start
959 *
960 * The starting address and enable for addresses to forwarded to the PCIe peer port.
961 */
962 union cvmx_pescx_p2p_barx_start {
963 uint64_t u64;
964 struct cvmx_pescx_p2p_barx_start_s {
965 #ifdef __BIG_ENDIAN_BITFIELD
966 uint64_t addr : 52; /**< The starting address of the address window created
967 this field and the PESC_P2P_BAR0_END[63:12] field.
968 The full 64-bits of address are created by:
969 [ADDR[63:12], 12'b0]. */
970 uint64_t reserved_0_11 : 12;
971 #else
972 uint64_t reserved_0_11 : 12;
973 uint64_t addr : 52;
974 #endif
975 } s;
976 struct cvmx_pescx_p2p_barx_start_s cn52xx;
977 struct cvmx_pescx_p2p_barx_start_s cn52xxp1;
978 struct cvmx_pescx_p2p_barx_start_s cn56xx;
979 struct cvmx_pescx_p2p_barx_start_s cn56xxp1;
980 };
981 typedef union cvmx_pescx_p2p_barx_start cvmx_pescx_p2p_barx_start_t;
982
983 /**
984 * cvmx_pesc#_tlp_credits
985 *
986 * PESC_TLP_CREDITS = PESC TLP Credits
987 *
988 * Specifies the number of credits the PESC for use in moving TLPs. When this register is written the credit values are
989 * reset to the register value. A write to this register should take place BEFORE traffic flow starts.
990 */
991 union cvmx_pescx_tlp_credits {
992 uint64_t u64;
993 struct cvmx_pescx_tlp_credits_s {
994 #ifdef __BIG_ENDIAN_BITFIELD
995 uint64_t reserved_0_63 : 64;
996 #else
997 uint64_t reserved_0_63 : 64;
998 #endif
999 } s;
1000 struct cvmx_pescx_tlp_credits_cn52xx {
1001 #ifdef __BIG_ENDIAN_BITFIELD
1002 uint64_t reserved_56_63 : 8;
1003 uint64_t peai_ppf : 8; /**< TLP credits for Completion TLPs in the Peer.
1004 Legal values are 0x24 to 0x80. */
1005 uint64_t pesc_cpl : 8; /**< TLP credits for Completion TLPs in the Peer.
1006 Legal values are 0x24 to 0x80. */
1007 uint64_t pesc_np : 8; /**< TLP credits for Non-Posted TLPs in the Peer.
1008 Legal values are 0x4 to 0x10. */
1009 uint64_t pesc_p : 8; /**< TLP credits for Posted TLPs in the Peer.
1010 Legal values are 0x24 to 0x80. */
1011 uint64_t npei_cpl : 8; /**< TLP credits for Completion TLPs in the NPEI.
1012 Legal values are 0x24 to 0x80. */
1013 uint64_t npei_np : 8; /**< TLP credits for Non-Posted TLPs in the NPEI.
1014 Legal values are 0x4 to 0x10. */
1015 uint64_t npei_p : 8; /**< TLP credits for Posted TLPs in the NPEI.
1016 Legal values are 0x24 to 0x80. */
1017 #else
1018 uint64_t npei_p : 8;
1019 uint64_t npei_np : 8;
1020 uint64_t npei_cpl : 8;
1021 uint64_t pesc_p : 8;
1022 uint64_t pesc_np : 8;
1023 uint64_t pesc_cpl : 8;
1024 uint64_t peai_ppf : 8;
1025 uint64_t reserved_56_63 : 8;
1026 #endif
1027 } cn52xx;
1028 struct cvmx_pescx_tlp_credits_cn52xxp1 {
1029 #ifdef __BIG_ENDIAN_BITFIELD
1030 uint64_t reserved_38_63 : 26;
1031 uint64_t peai_ppf : 8; /**< TLP credits in core clk pre-buffer that holds TLPs
1032 being sent from PCIe Core to NPEI or PEER. */
1033 uint64_t pesc_cpl : 5; /**< TLP credits for Completion TLPs in the Peer. */
1034 uint64_t pesc_np : 5; /**< TLP credits for Non-Posted TLPs in the Peer. */
1035 uint64_t pesc_p : 5; /**< TLP credits for Posted TLPs in the Peer. */
1036 uint64_t npei_cpl : 5; /**< TLP credits for Completion TLPs in the NPEI. */
1037 uint64_t npei_np : 5; /**< TLP credits for Non-Posted TLPs in the NPEI. */
1038 uint64_t npei_p : 5; /**< TLP credits for Posted TLPs in the NPEI. */
1039 #else
1040 uint64_t npei_p : 5;
1041 uint64_t npei_np : 5;
1042 uint64_t npei_cpl : 5;
1043 uint64_t pesc_p : 5;
1044 uint64_t pesc_np : 5;
1045 uint64_t pesc_cpl : 5;
1046 uint64_t peai_ppf : 8;
1047 uint64_t reserved_38_63 : 26;
1048 #endif
1049 } cn52xxp1;
1050 struct cvmx_pescx_tlp_credits_cn52xx cn56xx;
1051 struct cvmx_pescx_tlp_credits_cn52xxp1 cn56xxp1;
1052 };
1053 typedef union cvmx_pescx_tlp_credits cvmx_pescx_tlp_credits_t;
1054
1055 #endif
1056