1 #ifndef __BDK_CSRS_PEM_H__
2 #define __BDK_CSRS_PEM_H__
3 /* This file is auto-generated. Do not edit */
4
5 /***********************license start***************
6 * Copyright (c) 2003-2017 Cavium Inc. ([email protected]). All rights
7 * reserved.
8 *
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions are
12 * met:
13 *
14 * * Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 *
17 * * Redistributions in binary form must reproduce the above
18 * copyright notice, this list of conditions and the following
19 * disclaimer in the documentation and/or other materials provided
20 * with the distribution.
21
22 * * Neither the name of Cavium Inc. nor the names of
23 * its contributors may be used to endorse or promote products
24 * derived from this software without specific prior written
25 * permission.
26
27 * This Software, including technical data, may be subject to U.S. export control
28 * laws, including the U.S. Export Administration Act and its associated
29 * regulations, and may be subject to export or import regulations in other
30 * countries.
31
32 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
33 * AND WITH ALL FAULTS AND CAVIUM NETWORKS MAKES NO PROMISES, REPRESENTATIONS OR
34 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
35 * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
36 * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
37 * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
38 * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
39 * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
40 * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
41 * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
42 ***********************license end**************************************/
43
44
45 /**
46 * @file
47 *
48 * Configuration and status register (CSR) address and type definitions for
49 * Cavium PEM.
50 *
51 * This file is auto generated. Do not edit.
52 *
53 */
54
55 /**
56 * Enumeration pem_bar_e
57 *
58 * PEM Base Address Register Enumeration
59 * Enumerates the base address registers.
60 */
61 #define BDK_PEM_BAR_E_PEMX_PF_BAR0_CN8(a) (0x87e0c0000000ll + 0x1000000ll * (a))
62 #define BDK_PEM_BAR_E_PEMX_PF_BAR0_CN8_SIZE 0x800000ull
63 #define BDK_PEM_BAR_E_PEMX_PF_BAR0_CN9(a) (0x8e0000000000ll + 0x1000000000ll * (a))
64 #define BDK_PEM_BAR_E_PEMX_PF_BAR0_CN9_SIZE 0x40000000ull
65 #define BDK_PEM_BAR_E_PEMX_PF_BAR4_CN8(a) (0x87e0c0f00000ll + 0x1000000ll * (a))
66 #define BDK_PEM_BAR_E_PEMX_PF_BAR4_CN8_SIZE 0x100000ull
67 #define BDK_PEM_BAR_E_PEMX_PF_BAR4_CN9(a) (0x8e0f00000000ll + 0x1000000000ll * (a))
68 #define BDK_PEM_BAR_E_PEMX_PF_BAR4_CN9_SIZE 0x100000ull
69
70 /**
71 * Enumeration pem_ep_functions_e
72 *
73 * PEM EP Mode Function Number Enumeration
74 * Enumerates the function numbers that an EP PEM masters.
75 */
76 #define BDK_PEM_EP_FUNCTIONS_E_PF0 (0)
77 #define BDK_PEM_EP_FUNCTIONS_E_PF0_VFX(a) (0 + (a))
78
79 /**
80 * Enumeration pem_int_vec_e
81 *
82 * PEM MSI-X Vector Enumeration
83 * Enumerates the MSI-X interrupt vectors.
84 */
85 #define BDK_PEM_INT_VEC_E_DBG_INFO_CN81XX (0xb)
86 #define BDK_PEM_INT_VEC_E_DBG_INFO_CN88XX (0xd)
87 #define BDK_PEM_INT_VEC_E_DBG_INFO_CN83XX (0xb)
88 #define BDK_PEM_INT_VEC_E_ERROR_AERI (0)
89 #define BDK_PEM_INT_VEC_E_ERROR_AERI_CLEAR (1)
90 #define BDK_PEM_INT_VEC_E_ERROR_PMEI (2)
91 #define BDK_PEM_INT_VEC_E_ERROR_PMEI_CLEAR (3)
92 #define BDK_PEM_INT_VEC_E_HP_INT (0xe)
93 #define BDK_PEM_INT_VEC_E_HP_INT_CLEAR (0xf)
94 #define BDK_PEM_INT_VEC_E_HP_PMEI (1)
95 #define BDK_PEM_INT_VEC_E_INTA_CN9 (0)
96 #define BDK_PEM_INT_VEC_E_INTA_CN81XX (2)
97 #define BDK_PEM_INT_VEC_E_INTA_CN88XX (4)
98 #define BDK_PEM_INT_VEC_E_INTA_CN83XX (2)
99 #define BDK_PEM_INT_VEC_E_INTA_CLEAR_CN9 (1)
100 #define BDK_PEM_INT_VEC_E_INTA_CLEAR_CN81XX (3)
101 #define BDK_PEM_INT_VEC_E_INTA_CLEAR_CN88XX (5)
102 #define BDK_PEM_INT_VEC_E_INTA_CLEAR_CN83XX (3)
103 #define BDK_PEM_INT_VEC_E_INTB_CN9 (2)
104 #define BDK_PEM_INT_VEC_E_INTB_CN81XX (4)
105 #define BDK_PEM_INT_VEC_E_INTB_CN88XX (6)
106 #define BDK_PEM_INT_VEC_E_INTB_CN83XX (4)
107 #define BDK_PEM_INT_VEC_E_INTB_CLEAR_CN9 (3)
108 #define BDK_PEM_INT_VEC_E_INTB_CLEAR_CN81XX (5)
109 #define BDK_PEM_INT_VEC_E_INTB_CLEAR_CN88XX (7)
110 #define BDK_PEM_INT_VEC_E_INTB_CLEAR_CN83XX (5)
111 #define BDK_PEM_INT_VEC_E_INTC_CN9 (4)
112 #define BDK_PEM_INT_VEC_E_INTC_CN81XX (6)
113 #define BDK_PEM_INT_VEC_E_INTC_CN88XX (8)
114 #define BDK_PEM_INT_VEC_E_INTC_CN83XX (6)
115 #define BDK_PEM_INT_VEC_E_INTC_CLEAR_CN9 (5)
116 #define BDK_PEM_INT_VEC_E_INTC_CLEAR_CN81XX (7)
117 #define BDK_PEM_INT_VEC_E_INTC_CLEAR_CN88XX (9)
118 #define BDK_PEM_INT_VEC_E_INTC_CLEAR_CN83XX (7)
119 #define BDK_PEM_INT_VEC_E_INTD_CN9 (6)
120 #define BDK_PEM_INT_VEC_E_INTD_CN81XX (8)
121 #define BDK_PEM_INT_VEC_E_INTD_CN88XX (0xa)
122 #define BDK_PEM_INT_VEC_E_INTD_CN83XX (8)
123 #define BDK_PEM_INT_VEC_E_INTD_CLEAR_CN9 (7)
124 #define BDK_PEM_INT_VEC_E_INTD_CLEAR_CN81XX (9)
125 #define BDK_PEM_INT_VEC_E_INTD_CLEAR_CN88XX (0xb)
126 #define BDK_PEM_INT_VEC_E_INTD_CLEAR_CN83XX (9)
127 #define BDK_PEM_INT_VEC_E_INT_SUM_CN9 (8)
128 #define BDK_PEM_INT_VEC_E_INT_SUM_CN81XX (0xa)
129 #define BDK_PEM_INT_VEC_E_INT_SUM_CN88XX (0xc)
130 #define BDK_PEM_INT_VEC_E_INT_SUM_CN83XX (0xa)
131
132 /**
133 * Register (RSL) pem#_bar1_index#
134 *
135 * PEM BAR1 Index 0-15 Register
136 * This register contains the address index and control bits for access to memory ranges of BAR1.
137 * The index is selected from the PCIe address depending on the programmed BAR-1 size.
138 */
139 union bdk_pemx_bar1_indexx
140 {
141 uint64_t u;
142 struct bdk_pemx_bar1_indexx_s
143 {
144 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
145 uint64_t reserved_31_63 : 33;
146 uint64_t addr_idx : 27; /**< [ 30: 4](R/W) Address index. Address bits [48:22] sent to L2C. */
147 uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in L2. */
148 uint64_t end_swp : 2; /**< [ 2: 1](R/W) Endian-swap mode. */
149 uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */
150 #else /* Word 0 - Little Endian */
151 uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */
152 uint64_t end_swp : 2; /**< [ 2: 1](R/W) Endian-swap mode. */
153 uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in L2. */
154 uint64_t addr_idx : 27; /**< [ 30: 4](R/W) Address index. Address bits [48:22] sent to L2C. */
155 uint64_t reserved_31_63 : 33;
156 #endif /* Word 0 - End */
157 } s;
158 struct bdk_pemx_bar1_indexx_cn81xx
159 {
160 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
161 uint64_t reserved_31_63 : 33;
162 uint64_t addr_idx : 27; /**< [ 30: 4](R/W) Address index. Address bits [48:22] sent to L2C. */
163 uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in L2. */
164 uint64_t reserved_1_2 : 2;
165 uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */
166 #else /* Word 0 - Little Endian */
167 uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */
168 uint64_t reserved_1_2 : 2;
169 uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in L2. */
170 uint64_t addr_idx : 27; /**< [ 30: 4](R/W) Address index. Address bits [48:22] sent to L2C. */
171 uint64_t reserved_31_63 : 33;
172 #endif /* Word 0 - End */
173 } cn81xx;
174 /* struct bdk_pemx_bar1_indexx_cn81xx cn88xx; */
175 /* struct bdk_pemx_bar1_indexx_s cn83xx; */
176 };
177 typedef union bdk_pemx_bar1_indexx bdk_pemx_bar1_indexx_t;
178
179 static inline uint64_t BDK_PEMX_BAR1_INDEXX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_BAR1_INDEXX(unsigned long a,unsigned long b)180 static inline uint64_t BDK_PEMX_BAR1_INDEXX(unsigned long a, unsigned long b)
181 {
182 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a<=2) && (b<=15)))
183 return 0x87e0c0000100ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf);
184 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=15)))
185 return 0x87e0c0000100ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf);
186 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && ((a<=5) && (b<=15)))
187 return 0x87e0c0000100ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0xf);
188 __bdk_csr_fatal("PEMX_BAR1_INDEXX", 2, a, b, 0, 0);
189 }
190
191 #define typedef_BDK_PEMX_BAR1_INDEXX(a,b) bdk_pemx_bar1_indexx_t
192 #define bustype_BDK_PEMX_BAR1_INDEXX(a,b) BDK_CSR_TYPE_RSL
193 #define basename_BDK_PEMX_BAR1_INDEXX(a,b) "PEMX_BAR1_INDEXX"
194 #define device_bar_BDK_PEMX_BAR1_INDEXX(a,b) 0x0 /* PF_BAR0 */
195 #define busnum_BDK_PEMX_BAR1_INDEXX(a,b) (a)
196 #define arguments_BDK_PEMX_BAR1_INDEXX(a,b) (a),(b),-1,-1
197
198 /**
199 * Register (NCB) pem#_bar2_mask
200 *
201 * PEM BAR2 Mask Register
202 * This register contains the mask pattern that is ANDed with the address from the PCIe core for
203 * inbound PF BAR2 hits in either RC or EP mode. This mask is only applied if
204 * PEM()_EBUS_CTL[PF_BAR2_SEL] is clear and the address hits in the PCIEEP_BAR2L / PCIEEP_BAR2U
205 * registers (EP mode) or PEM()_P2N_BAR2_START / PEM()_BAR_CTL[BAR2_SIZ] registers (RC mode).
206 *
207 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
208 *
209 * This register is reset on PEM domain reset.
210 */
211 union bdk_pemx_bar2_mask
212 {
213 uint64_t u;
214 struct bdk_pemx_bar2_mask_s
215 {
216 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
217 uint64_t reserved_53_63 : 11;
218 uint64_t mask : 49; /**< [ 52: 4](R/W) The value to be ANDED with the address sent to memory. */
219 uint64_t reserved_0_3 : 4;
220 #else /* Word 0 - Little Endian */
221 uint64_t reserved_0_3 : 4;
222 uint64_t mask : 49; /**< [ 52: 4](R/W) The value to be ANDED with the address sent to memory. */
223 uint64_t reserved_53_63 : 11;
224 #endif /* Word 0 - End */
225 } s;
226 struct bdk_pemx_bar2_mask_cn9
227 {
228 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
229 uint64_t reserved_53_63 : 11;
230 uint64_t mask : 49; /**< [ 52: 4](R/W) The value to be ANDed with the address sent to memory (to IOB). */
231 uint64_t reserved_0_3 : 4;
232 #else /* Word 0 - Little Endian */
233 uint64_t reserved_0_3 : 4;
234 uint64_t mask : 49; /**< [ 52: 4](R/W) The value to be ANDed with the address sent to memory (to IOB). */
235 uint64_t reserved_53_63 : 11;
236 #endif /* Word 0 - End */
237 } cn9;
238 struct bdk_pemx_bar2_mask_cn81xx
239 {
240 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
241 uint64_t reserved_49_63 : 15;
242 uint64_t mask : 45; /**< [ 48: 4](R/W) The value to be ANDED with the address sent to memory. */
243 uint64_t reserved_0_3 : 4;
244 #else /* Word 0 - Little Endian */
245 uint64_t reserved_0_3 : 4;
246 uint64_t mask : 45; /**< [ 48: 4](R/W) The value to be ANDED with the address sent to memory. */
247 uint64_t reserved_49_63 : 15;
248 #endif /* Word 0 - End */
249 } cn81xx;
250 /* struct bdk_pemx_bar2_mask_cn81xx cn88xx; */
251 struct bdk_pemx_bar2_mask_cn83xx
252 {
253 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
254 uint64_t reserved_49_63 : 15;
255 uint64_t mask : 45; /**< [ 48: 4](R/W) The value to be ANDed with the address sent to memory (to IOB). */
256 uint64_t reserved_0_3 : 4;
257 #else /* Word 0 - Little Endian */
258 uint64_t reserved_0_3 : 4;
259 uint64_t mask : 45; /**< [ 48: 4](R/W) The value to be ANDed with the address sent to memory (to IOB). */
260 uint64_t reserved_49_63 : 15;
261 #endif /* Word 0 - End */
262 } cn83xx;
263 };
264 typedef union bdk_pemx_bar2_mask bdk_pemx_bar2_mask_t;
265
266 static inline uint64_t BDK_PEMX_BAR2_MASK(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_BAR2_MASK(unsigned long a)267 static inline uint64_t BDK_PEMX_BAR2_MASK(unsigned long a)
268 {
269 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
270 return 0x87e0c00000b0ll + 0x1000000ll * ((a) & 0x3);
271 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
272 return 0x87e0c00000b0ll + 0x1000000ll * ((a) & 0x3);
273 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
274 return 0x87e0c00000b0ll + 0x1000000ll * ((a) & 0x7);
275 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
276 return 0x8e0000000040ll + 0x1000000000ll * ((a) & 0x3);
277 __bdk_csr_fatal("PEMX_BAR2_MASK", 1, a, 0, 0, 0);
278 }
279
280 #define typedef_BDK_PEMX_BAR2_MASK(a) bdk_pemx_bar2_mask_t
281 #define bustype_BDK_PEMX_BAR2_MASK(a) BDK_CSR_TYPE_NCB
282 #define basename_BDK_PEMX_BAR2_MASK(a) "PEMX_BAR2_MASK"
283 #define device_bar_BDK_PEMX_BAR2_MASK(a) 0x0 /* PF_BAR0 */
284 #define busnum_BDK_PEMX_BAR2_MASK(a) (a)
285 #define arguments_BDK_PEMX_BAR2_MASK(a) (a),-1,-1,-1
286
287 /**
288 * Register (NCB) pem#_bar4_index#
289 *
290 * PEM BAR4 Index 0-15 Register
291 * This register contains the address index and control bits for access to memory ranges of BAR4.
292 * The index is built from the PCI inbound address \<25:22\>. The bits in this register only apply to
293 * inbound accesses targeting the NCB bus in both RC and EP modes, this register is ignored
294 * when PEM()_EBUS_CTL[PF_BAR4_SEL] is set.
295 *
296 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
297 *
298 * This register is reset on PEM domain reset.
299 */
300 union bdk_pemx_bar4_indexx
301 {
302 uint64_t u;
303 struct bdk_pemx_bar4_indexx_s
304 {
305 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
306 uint64_t reserved_35_63 : 29;
307 uint64_t addr_idx : 31; /**< [ 34: 4](R/W) Address index. IOVA \<52:22\> sent to NCB. */
308 uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in LLC. */
309 uint64_t reserved_1_2 : 2;
310 uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */
311 #else /* Word 0 - Little Endian */
312 uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */
313 uint64_t reserved_1_2 : 2;
314 uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in LLC. */
315 uint64_t addr_idx : 31; /**< [ 34: 4](R/W) Address index. IOVA \<52:22\> sent to NCB. */
316 uint64_t reserved_35_63 : 29;
317 #endif /* Word 0 - End */
318 } s;
319 /* struct bdk_pemx_bar4_indexx_s cn; */
320 };
321 typedef union bdk_pemx_bar4_indexx bdk_pemx_bar4_indexx_t;
322
323 static inline uint64_t BDK_PEMX_BAR4_INDEXX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_BAR4_INDEXX(unsigned long a,unsigned long b)324 static inline uint64_t BDK_PEMX_BAR4_INDEXX(unsigned long a, unsigned long b)
325 {
326 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15)))
327 return 0x8e0000000700ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf);
328 __bdk_csr_fatal("PEMX_BAR4_INDEXX", 2, a, b, 0, 0);
329 }
330
331 #define typedef_BDK_PEMX_BAR4_INDEXX(a,b) bdk_pemx_bar4_indexx_t
332 #define bustype_BDK_PEMX_BAR4_INDEXX(a,b) BDK_CSR_TYPE_NCB
333 #define basename_BDK_PEMX_BAR4_INDEXX(a,b) "PEMX_BAR4_INDEXX"
334 #define device_bar_BDK_PEMX_BAR4_INDEXX(a,b) 0x0 /* PF_BAR0 */
335 #define busnum_BDK_PEMX_BAR4_INDEXX(a,b) (a)
336 #define arguments_BDK_PEMX_BAR4_INDEXX(a,b) (a),(b),-1,-1
337
338 /**
339 * Register (NCB) pem#_bar_ctl
340 *
341 * PEM BAR Control Register
342 * This register contains control for BAR accesses. This control always
343 * applies to memory accesses targeting the NCBI bus. Some of the fields also
344 * apply to accesses targeting EBUS in RC mode only, see the individual field
345 * descriptions for more detail.
346 *
347 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
348 *
349 * This register is reset on PEM domain reset.
350 */
351 union bdk_pemx_bar_ctl
352 {
353 uint64_t u;
354 struct bdk_pemx_bar_ctl_s
355 {
356 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
357 uint64_t reserved_38_63 : 26;
358 uint64_t vf_bar4_enb : 1; /**< [ 37: 37](R/W) This bit controls whether BAR4 for all virtual functions is enabled.
359
360 In RC mode:
361 * VF BAR4 does not exist. This bit has no effect.
362
363 In EP mode:
364
365 * VF BAR4 hits are based on a combination of this bit and
366 config registers PCIEEP_SRIOV_BAR4U, PCIEEP_SRIOV_BAR4L, and
367 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
368 bit must be set to enable a VF BAR4 hit to the PCI address
369 specified by PCIEEP_SRIOV_BAR4U / PCIEEP_SRIOV_BAR4L. */
370 uint64_t vf_bar2_enb : 1; /**< [ 36: 36](R/W) This bit controls whether BAR2 for all virtual functions is enabled.
371
372 In RC mode:
373 * VF BAR2 does not exist. This bit has no effect.
374
375 In EP mode:
376
377 * VF BAR2 hits are based on a combination of this bit and
378 config registers PCIEEP_SRIOV_BAR2U, PCIEEP_SRIOV_BAR2L, and
379 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
380 bit must be set to enable a VF BAR2 hit to the PCI address
381 specified by PCIEEP_SRIOV_BAR2U / PCIEEP_SRIOV_BAR2L. */
382 uint64_t vf_bar0_enb : 1; /**< [ 35: 35](R/W) This bit controls whether BAR0 for all virtual functions is enabled.
383
384 In RC mode:
385 * VF BAR0 does not exist. This bit has no effect.
386
387 In EP mode:
388
389 * VF BAR0 hits are based on a combination of this bit and
390 config registers PCIEEP_SRIOV_BAR0U, PCIEEP_SRIOV_BAR0L, and
391 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
392 bit must be set to enable a VF BAR0 hit to the PCI address
393 specified by PCIEEP_SRIOV_BAR0U / PCIEEP_SRIOV_BAR0L. */
394 uint64_t erom_siz : 3; /**< [ 34: 32](R/W) PCIe EROM BAR size. Used to mask off upper bits of address
395 when sending to NCBI or via private EROM interface to MIO.
396
397 0x0 = Reserved.
398 0x1 = 64 KB; 2^16.
399 0x2 = 128 KB; 2^17.
400 0x3 = 256 KB; 2^18.
401 0x4 = 512 KB; 2^19.
402 0x5 = 1 MB; 2^20.
403 0x6 = 2 MB; 2^21.
404 0x7 = 4 MB; 2^22. */
405 uint64_t bar4_enb : 1; /**< [ 31: 31](R/W) In RC mode:
406 0 = BAR4 access will cause UR responses. This applies no
407 matter the value of PEM()_EBUS_CTL[PF_BAR4_SEL].
408 1 = BAR4 is enabled and will respond if the corresponding
409 bits in PEM()_BAR4_INDEX() are set and the address matches
410 an enabled indexed address range.
411
412 In EP mode:
413
414 * If PEM()_EBUS_CTL[PF_BAR4_SEL] is set, BAR4 hits are based on
415 a combination of this bit and config registers PCIEEP_BAR4U / PCIEEP_BAR4L.
416 Both enable bits must be set to enable a BAR4 hit.
417 * If PEM()_EBUS_CTL[PF_BAR4_SEL] is clear, BAR4 hits are based
418 on a combination of this bit, the config registers PCIEEP_BAR4U /
419 PCIEEP_BAR4L, and the PEM()_BAR4_INDEX() registers.
420 Both enable bits must be set along with the appropriate bits in
421 PEM()_BAR4_INDEX() in order for a BAR4 access to respond. */
422 uint64_t bar0_siz : 5; /**< [ 30: 26](R/W) PCIe BAR0 size.
423 0x0 = Reserved.
424 0x1 = 64 KB; 2^16.
425 0x2 = 128 KB; 2^17.
426 0x3 = 256 KB; 2^18.
427 0x4 = 512 KB; 2^19.
428 0x5 = 1 MB; 2^20.
429 0x6 = 2 MB; 2^21.
430 0x7 = 4 MB; 2^22.
431 0x8 = 8 MB; 2^23.
432 0x9 = 16 MB; 2^24.
433 0xA = 32 MB; 2^25.
434 0xB = 64 MB; 2^26.
435 0xC - 0x1F = Reserved. */
436 uint64_t bar0_enb : 1; /**< [ 25: 25](R/W) In RC mode:
437 0 = BAR0 access will cause UR responses. This applies no
438 matter the value of PEM()_EBUS_CTL[PF_BAR0_SEL].
439 1 = BAR0 is enabled and will respond.
440
441 In EP mode:
442
443 * BAR0 hits are based on a combination of this bit and
444 config registers PCIEEP_BAR0U / PCIEEP_BAR0L. Both enable
445 bits must be set to enable a BAR0 hit. */
446 uint64_t bar2_ebit : 6; /**< [ 24: 19](R/W) Address bits for ESX\<1:0\> in a PCIe BAR2 address.
447
448 When [BAR2_EBIT] is zero, a PCIe BAR2 address does not contain an ESX\<1:0\> field,
449 and [BAR2_ESX] is the endian-swap used for all BAR2 requests.
450
451 When [BAR2_EBIT] is non-zero, it places ESX\<1:0\> (ESX\<0\> is at PCIe BAR2 address bit
452 [BAR2_EBIT], and ESX\<1\> is at PCIe BAR2 address bit [BAR2_EBIT]+1). [BAR2_EBIT] must
453 be in the range 16 .. [BAR2_SIZ]+18 and must not conflict with a non-zero
454 [BAR2_CBIT] in this case. [BAR2_ESX] XOR ESX\<1:0\> is the endian-swap
455 used for BAR2 requests in this case. If [BAR2_EBIT] \<= 48 in this case, then
456 one or two PCIe BAR2 address ESX field bit(s) are in the address forwarded to
457 SLI and the SMMU, in the same position. */
458 uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit for CAX in a PCIe BAR2 address.
459
460 When [BAR2_CBIT] is zero, a PCIe BAR2 address does not contain a CAX bit,
461 and [BAR2_CAX] is the cache allocation for all BAR2 requests.
462
463 When [BAR2_CBIT] is non-zero, the CAX bit is at bit [BAR2_CBIT] in the PCIe
464 BAR2 address. [BAR2_CBIT] must be in the range 16 .. [BAR2_SIZ]+19 and must
465 not conflict with a non-zero [BAR2_EBIT] in this case. [BAR2_CBIT] XOR CAX is
466 the cache allocation for BAR2 requests. If [BAR2_CBIT] \<= 48 in this
467 case, then the PCIe BAR2 address CAX bit is in the address forwarded to
468 SLI and the SMMU, in the same position. */
469 uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded identically to PCIEEP()_CFG190[RBARS]. Resets to 0x1D (512 TB).
470
471 In EP mode, [BAR2_SIZ] must equal the corresponding PCIEEP()_CFG190[RBARS].
472
473 In RC mode, [BAR2_SIZ] determines the PEM()_P2N_BAR2_START[ADDR] bits used/compared
474 to an incoming PCIe address.
475
476 On a BAR2 match, PEM zeroes the PCIe address bits outside [BAR2_SIZ], applies
477 [BAR2_EBIT,BAR2_CBIT], and forwards the request to SLI and the SMMU. */
478 uint64_t reserved_4_6 : 3;
479 uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */
480 uint64_t bar2_esx : 2; /**< [ 2: 1](R/W) Value is XORed with PCIe addresses as defined by [BAR2_EBIT] to determine the
481 endian swap mode. */
482 uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address \<49\> to determine the L2 cache attribute. Not cached in
483 L2 if XOR result is 1. */
484 #else /* Word 0 - Little Endian */
485 uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address \<49\> to determine the L2 cache attribute. Not cached in
486 L2 if XOR result is 1. */
487 uint64_t bar2_esx : 2; /**< [ 2: 1](R/W) Value is XORed with PCIe addresses as defined by [BAR2_EBIT] to determine the
488 endian swap mode. */
489 uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */
490 uint64_t reserved_4_6 : 3;
491 uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded identically to PCIEEP()_CFG190[RBARS]. Resets to 0x1D (512 TB).
492
493 In EP mode, [BAR2_SIZ] must equal the corresponding PCIEEP()_CFG190[RBARS].
494
495 In RC mode, [BAR2_SIZ] determines the PEM()_P2N_BAR2_START[ADDR] bits used/compared
496 to an incoming PCIe address.
497
498 On a BAR2 match, PEM zeroes the PCIe address bits outside [BAR2_SIZ], applies
499 [BAR2_EBIT,BAR2_CBIT], and forwards the request to SLI and the SMMU. */
500 uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit for CAX in a PCIe BAR2 address.
501
502 When [BAR2_CBIT] is zero, a PCIe BAR2 address does not contain a CAX bit,
503 and [BAR2_CAX] is the cache allocation for all BAR2 requests.
504
505 When [BAR2_CBIT] is non-zero, the CAX bit is at bit [BAR2_CBIT] in the PCIe
506 BAR2 address. [BAR2_CBIT] must be in the range 16 .. [BAR2_SIZ]+19 and must
507 not conflict with a non-zero [BAR2_EBIT] in this case. [BAR2_CBIT] XOR CAX is
508 the cache allocation for BAR2 requests. If [BAR2_CBIT] \<= 48 in this
509 case, then the PCIe BAR2 address CAX bit is in the address forwarded to
510 SLI and the SMMU, in the same position. */
511 uint64_t bar2_ebit : 6; /**< [ 24: 19](R/W) Address bits for ESX\<1:0\> in a PCIe BAR2 address.
512
513 When [BAR2_EBIT] is zero, a PCIe BAR2 address does not contain an ESX\<1:0\> field,
514 and [BAR2_ESX] is the endian-swap used for all BAR2 requests.
515
516 When [BAR2_EBIT] is non-zero, it places ESX\<1:0\> (ESX\<0\> is at PCIe BAR2 address bit
517 [BAR2_EBIT], and ESX\<1\> is at PCIe BAR2 address bit [BAR2_EBIT]+1). [BAR2_EBIT] must
518 be in the range 16 .. [BAR2_SIZ]+18 and must not conflict with a non-zero
519 [BAR2_CBIT] in this case. [BAR2_ESX] XOR ESX\<1:0\> is the endian-swap
520 used for BAR2 requests in this case. If [BAR2_EBIT] \<= 48 in this case, then
521 one or two PCIe BAR2 address ESX field bit(s) are in the address forwarded to
522 SLI and the SMMU, in the same position. */
523 uint64_t bar0_enb : 1; /**< [ 25: 25](R/W) In RC mode:
524 0 = BAR0 access will cause UR responses. This applies no
525 matter the value of PEM()_EBUS_CTL[PF_BAR0_SEL].
526 1 = BAR0 is enabled and will respond.
527
528 In EP mode:
529
530 * BAR0 hits are based on a combination of this bit and
531 config registers PCIEEP_BAR0U / PCIEEP_BAR0L. Both enable
532 bits must be set to enable a BAR0 hit. */
533 uint64_t bar0_siz : 5; /**< [ 30: 26](R/W) PCIe BAR0 size.
534 0x0 = Reserved.
535 0x1 = 64 KB; 2^16.
536 0x2 = 128 KB; 2^17.
537 0x3 = 256 KB; 2^18.
538 0x4 = 512 KB; 2^19.
539 0x5 = 1 MB; 2^20.
540 0x6 = 2 MB; 2^21.
541 0x7 = 4 MB; 2^22.
542 0x8 = 8 MB; 2^23.
543 0x9 = 16 MB; 2^24.
544 0xA = 32 MB; 2^25.
545 0xB = 64 MB; 2^26.
546 0xC - 0x1F = Reserved. */
547 uint64_t bar4_enb : 1; /**< [ 31: 31](R/W) In RC mode:
548 0 = BAR4 access will cause UR responses. This applies no
549 matter the value of PEM()_EBUS_CTL[PF_BAR4_SEL].
550 1 = BAR4 is enabled and will respond if the corresponding
551 bits in PEM()_BAR4_INDEX() are set and the address matches
552 an enabled indexed address range.
553
554 In EP mode:
555
556 * If PEM()_EBUS_CTL[PF_BAR4_SEL] is set, BAR4 hits are based on
557 a combination of this bit and config registers PCIEEP_BAR4U / PCIEEP_BAR4L.
558 Both enable bits must be set to enable a BAR4 hit.
559 * If PEM()_EBUS_CTL[PF_BAR4_SEL] is clear, BAR4 hits are based
560 on a combination of this bit, the config registers PCIEEP_BAR4U /
561 PCIEEP_BAR4L, and the PEM()_BAR4_INDEX() registers.
562 Both enable bits must be set along with the appropriate bits in
563 PEM()_BAR4_INDEX() in order for a BAR4 access to respond. */
564 uint64_t erom_siz : 3; /**< [ 34: 32](R/W) PCIe EROM BAR size. Used to mask off upper bits of address
565 when sending to NCBI or via private EROM interface to MIO.
566
567 0x0 = Reserved.
568 0x1 = 64 KB; 2^16.
569 0x2 = 128 KB; 2^17.
570 0x3 = 256 KB; 2^18.
571 0x4 = 512 KB; 2^19.
572 0x5 = 1 MB; 2^20.
573 0x6 = 2 MB; 2^21.
574 0x7 = 4 MB; 2^22. */
575 uint64_t vf_bar0_enb : 1; /**< [ 35: 35](R/W) This bit controls whether BAR0 for all virtual functions is enabled.
576
577 In RC mode:
578 * VF BAR0 does not exist. This bit has no effect.
579
580 In EP mode:
581
582 * VF BAR0 hits are based on a combination of this bit and
583 config registers PCIEEP_SRIOV_BAR0U, PCIEEP_SRIOV_BAR0L, and
584 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
585 bit must be set to enable a VF BAR0 hit to the PCI address
586 specified by PCIEEP_SRIOV_BAR0U / PCIEEP_SRIOV_BAR0L. */
587 uint64_t vf_bar2_enb : 1; /**< [ 36: 36](R/W) This bit controls whether BAR2 for all virtual functions is enabled.
588
589 In RC mode:
590 * VF BAR2 does not exist. This bit has no effect.
591
592 In EP mode:
593
594 * VF BAR2 hits are based on a combination of this bit and
595 config registers PCIEEP_SRIOV_BAR2U, PCIEEP_SRIOV_BAR2L, and
596 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
597 bit must be set to enable a VF BAR2 hit to the PCI address
598 specified by PCIEEP_SRIOV_BAR2U / PCIEEP_SRIOV_BAR2L. */
599 uint64_t vf_bar4_enb : 1; /**< [ 37: 37](R/W) This bit controls whether BAR4 for all virtual functions is enabled.
600
601 In RC mode:
602 * VF BAR4 does not exist. This bit has no effect.
603
604 In EP mode:
605
606 * VF BAR4 hits are based on a combination of this bit and
607 config registers PCIEEP_SRIOV_BAR4U, PCIEEP_SRIOV_BAR4L, and
608 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
609 bit must be set to enable a VF BAR4 hit to the PCI address
610 specified by PCIEEP_SRIOV_BAR4U / PCIEEP_SRIOV_BAR4L. */
611 uint64_t reserved_38_63 : 26;
612 #endif /* Word 0 - End */
613 } s;
614 struct bdk_pemx_bar_ctl_cn9
615 {
616 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
617 uint64_t reserved_38_63 : 26;
618 uint64_t vf_bar4_enb : 1; /**< [ 37: 37](R/W) This bit controls whether BAR4 for all virtual functions is enabled.
619
620 In RC mode:
621 * VF BAR4 does not exist. This bit has no effect.
622
623 In EP mode:
624
625 * VF BAR4 hits are based on a combination of this bit and
626 config registers PCIEEP_SRIOV_BAR4U, PCIEEP_SRIOV_BAR4L, and
627 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
628 bit must be set to enable a VF BAR4 hit to the PCI address
629 specified by PCIEEP_SRIOV_BAR4U / PCIEEP_SRIOV_BAR4L. */
630 uint64_t vf_bar2_enb : 1; /**< [ 36: 36](R/W) This bit controls whether BAR2 for all virtual functions is enabled.
631
632 In RC mode:
633 * VF BAR2 does not exist. This bit has no effect.
634
635 In EP mode:
636
637 * VF BAR2 hits are based on a combination of this bit and
638 config registers PCIEEP_SRIOV_BAR2U, PCIEEP_SRIOV_BAR2L, and
639 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
640 bit must be set to enable a VF BAR2 hit to the PCI address
641 specified by PCIEEP_SRIOV_BAR2U / PCIEEP_SRIOV_BAR2L. */
642 uint64_t vf_bar0_enb : 1; /**< [ 35: 35](R/W) This bit controls whether BAR0 for all virtual functions is enabled.
643
644 In RC mode:
645 * VF BAR0 does not exist. This bit has no effect.
646
647 In EP mode:
648
649 * VF BAR0 hits are based on a combination of this bit and
650 config registers PCIEEP_SRIOV_BAR0U, PCIEEP_SRIOV_BAR0L, and
651 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
652 bit must be set to enable a VF BAR0 hit to the PCI address
653 specified by PCIEEP_SRIOV_BAR0U / PCIEEP_SRIOV_BAR0L. */
654 uint64_t erom_siz : 3; /**< [ 34: 32](R/W) PCIe EROM BAR size. Used to mask off upper bits of address
655 when sending to NCBI or via private EROM interface to MIO.
656
657 0x0 = Reserved.
658 0x1 = 64 KB; 2^16.
659 0x2 = 128 KB; 2^17.
660 0x3 = 256 KB; 2^18.
661 0x4 = 512 KB; 2^19.
662 0x5 = 1 MB; 2^20.
663 0x6 = 2 MB; 2^21.
664 0x7 = 4 MB; 2^22. */
665 uint64_t bar4_enb : 1; /**< [ 31: 31](R/W) In RC mode:
666 0 = BAR4 access will cause UR responses. This applies no
667 matter the value of PEM()_EBUS_CTL[PF_BAR4_SEL].
668 1 = BAR4 is enabled and will respond if the corresponding
669 bits in PEM()_BAR4_INDEX() are set and the address matches
670 an enabled indexed address range.
671
672 In EP mode:
673
674 * If PEM()_EBUS_CTL[PF_BAR4_SEL] is set, BAR4 hits are based on
675 a combination of this bit and config registers PCIEEP_BAR4U / PCIEEP_BAR4L.
676 Both enable bits must be set to enable a BAR4 hit.
677 * If PEM()_EBUS_CTL[PF_BAR4_SEL] is clear, BAR4 hits are based
678 on a combination of this bit, the config registers PCIEEP_BAR4U /
679 PCIEEP_BAR4L, and the PEM()_BAR4_INDEX() registers.
680 Both enable bits must be set along with the appropriate bits in
681 PEM()_BAR4_INDEX() in order for a BAR4 access to respond. */
682 uint64_t bar0_siz : 5; /**< [ 30: 26](R/W) PCIe BAR0 size.
683 0x0 = Reserved.
684 0x1 = 64 KB; 2^16.
685 0x2 = 128 KB; 2^17.
686 0x3 = 256 KB; 2^18.
687 0x4 = 512 KB; 2^19.
688 0x5 = 1 MB; 2^20.
689 0x6 = 2 MB; 2^21.
690 0x7 = 4 MB; 2^22.
691 0x8 = 8 MB; 2^23.
692 0x9 = 16 MB; 2^24.
693 0xA = 32 MB; 2^25.
694 0xB = 64 MB; 2^26.
695 0xC - 0x1F = Reserved. */
696 uint64_t bar0_enb : 1; /**< [ 25: 25](R/W) In RC mode:
697 0 = BAR0 access will cause UR responses. This applies no
698 matter the value of PEM()_EBUS_CTL[PF_BAR0_SEL].
699 1 = BAR0 is enabled and will respond.
700
701 In EP mode:
702
703 * BAR0 hits are based on a combination of this bit and
704 config registers PCIEEP_BAR0U / PCIEEP_BAR0L. Both enable
705 bits must be set to enable a BAR0 hit. */
706 uint64_t reserved_19_24 : 6;
707 uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit to be mapped to BAR2's CAX. When 0x0, BAR2's CAX is disabled;
708 otherwise must be 16 to 63 inclusive. Not used if PEM()_EBUS_CTL[PF_BAR2_SEL]
709 is set. */
710 uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded similar to PCIEEP_RBAR_CTL[RBARS]. Used in RC mode to create
711 a mask that is ANDED with the address prior to applying
712 [BAR2_CAX]. Defaults to 0x21 (8192 TB). */
713 uint64_t bar4_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR4 size.
714 0x0 = Reserved.
715 0x1 = 64 MB; 2^26.
716 0x2 = 128 MB; 2^27.
717 0x3 = 256 MB; 2^28.
718 0x4 = 512 MB; 2^29.
719 0x5 = 1024 MB; 2^30.
720 0x6 = 2048 MB; 2^31.
721 0x7 = Reserved. */
722 uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) In RC mode:
723 0 = BAR2 access will cause UR responses. This applies no
724 matter the value of PEM()_EBUS_CTL[PF_BAR2_SEL].
725 1 = BAR2 is enabled and will respond.
726
727 In EP mode:
728
729 * BAR2 hits are based on a combination of this bit and
730 config registers PCIEEP_BAR2U / PCIEEP_BAR2L. Both enable
731 bits must be set to enable a BAR2 hit. */
732 uint64_t reserved_1_2 : 2;
733 uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address as defined by [BAR2_CBIT] to determine the LLC
734 cache attribute. Not cached in LLC if XOR result is 1. Not used if PEM()_EBUS_CTL[PF_BAR2_SEL]
735 is set. */
736 #else /* Word 0 - Little Endian */
737 uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address as defined by [BAR2_CBIT] to determine the LLC
738 cache attribute. Not cached in LLC if XOR result is 1. Not used if PEM()_EBUS_CTL[PF_BAR2_SEL]
739 is set. */
740 uint64_t reserved_1_2 : 2;
741 uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) In RC mode:
742 0 = BAR2 access will cause UR responses. This applies no
743 matter the value of PEM()_EBUS_CTL[PF_BAR2_SEL].
744 1 = BAR2 is enabled and will respond.
745
746 In EP mode:
747
748 * BAR2 hits are based on a combination of this bit and
749 config registers PCIEEP_BAR2U / PCIEEP_BAR2L. Both enable
750 bits must be set to enable a BAR2 hit. */
751 uint64_t bar4_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR4 size.
752 0x0 = Reserved.
753 0x1 = 64 MB; 2^26.
754 0x2 = 128 MB; 2^27.
755 0x3 = 256 MB; 2^28.
756 0x4 = 512 MB; 2^29.
757 0x5 = 1024 MB; 2^30.
758 0x6 = 2048 MB; 2^31.
759 0x7 = Reserved. */
760 uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded similar to PCIEEP_RBAR_CTL[RBARS]. Used in RC mode to create
761 a mask that is ANDED with the address prior to applying
762 [BAR2_CAX]. Defaults to 0x21 (8192 TB). */
763 uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit to be mapped to BAR2's CAX. When 0x0, BAR2's CAX is disabled;
764 otherwise must be 16 to 63 inclusive. Not used if PEM()_EBUS_CTL[PF_BAR2_SEL]
765 is set. */
766 uint64_t reserved_19_24 : 6;
767 uint64_t bar0_enb : 1; /**< [ 25: 25](R/W) In RC mode:
768 0 = BAR0 access will cause UR responses. This applies no
769 matter the value of PEM()_EBUS_CTL[PF_BAR0_SEL].
770 1 = BAR0 is enabled and will respond.
771
772 In EP mode:
773
774 * BAR0 hits are based on a combination of this bit and
775 config registers PCIEEP_BAR0U / PCIEEP_BAR0L. Both enable
776 bits must be set to enable a BAR0 hit. */
777 uint64_t bar0_siz : 5; /**< [ 30: 26](R/W) PCIe BAR0 size.
778 0x0 = Reserved.
779 0x1 = 64 KB; 2^16.
780 0x2 = 128 KB; 2^17.
781 0x3 = 256 KB; 2^18.
782 0x4 = 512 KB; 2^19.
783 0x5 = 1 MB; 2^20.
784 0x6 = 2 MB; 2^21.
785 0x7 = 4 MB; 2^22.
786 0x8 = 8 MB; 2^23.
787 0x9 = 16 MB; 2^24.
788 0xA = 32 MB; 2^25.
789 0xB = 64 MB; 2^26.
790 0xC - 0x1F = Reserved. */
791 uint64_t bar4_enb : 1; /**< [ 31: 31](R/W) In RC mode:
792 0 = BAR4 access will cause UR responses. This applies no
793 matter the value of PEM()_EBUS_CTL[PF_BAR4_SEL].
794 1 = BAR4 is enabled and will respond if the corresponding
795 bits in PEM()_BAR4_INDEX() are set and the address matches
796 an enabled indexed address range.
797
798 In EP mode:
799
800 * If PEM()_EBUS_CTL[PF_BAR4_SEL] is set, BAR4 hits are based on
801 a combination of this bit and config registers PCIEEP_BAR4U / PCIEEP_BAR4L.
802 Both enable bits must be set to enable a BAR4 hit.
803 * If PEM()_EBUS_CTL[PF_BAR4_SEL] is clear, BAR4 hits are based
804 on a combination of this bit, the config registers PCIEEP_BAR4U /
805 PCIEEP_BAR4L, and the PEM()_BAR4_INDEX() registers.
806 Both enable bits must be set along with the appropriate bits in
807 PEM()_BAR4_INDEX() in order for a BAR4 access to respond. */
808 uint64_t erom_siz : 3; /**< [ 34: 32](R/W) PCIe EROM BAR size. Used to mask off upper bits of address
809 when sending to NCBI or via private EROM interface to MIO.
810
811 0x0 = Reserved.
812 0x1 = 64 KB; 2^16.
813 0x2 = 128 KB; 2^17.
814 0x3 = 256 KB; 2^18.
815 0x4 = 512 KB; 2^19.
816 0x5 = 1 MB; 2^20.
817 0x6 = 2 MB; 2^21.
818 0x7 = 4 MB; 2^22. */
819 uint64_t vf_bar0_enb : 1; /**< [ 35: 35](R/W) This bit controls whether BAR0 for all virtual functions is enabled.
820
821 In RC mode:
822 * VF BAR0 does not exist. This bit has no effect.
823
824 In EP mode:
825
826 * VF BAR0 hits are based on a combination of this bit and
827 config registers PCIEEP_SRIOV_BAR0U, PCIEEP_SRIOV_BAR0L, and
828 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
829 bit must be set to enable a VF BAR0 hit to the PCI address
830 specified by PCIEEP_SRIOV_BAR0U / PCIEEP_SRIOV_BAR0L. */
831 uint64_t vf_bar2_enb : 1; /**< [ 36: 36](R/W) This bit controls whether BAR2 for all virtual functions is enabled.
832
833 In RC mode:
834 * VF BAR2 does not exist. This bit has no effect.
835
836 In EP mode:
837
838 * VF BAR2 hits are based on a combination of this bit and
839 config registers PCIEEP_SRIOV_BAR2U, PCIEEP_SRIOV_BAR2L, and
840 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
841 bit must be set to enable a VF BAR2 hit to the PCI address
842 specified by PCIEEP_SRIOV_BAR2U / PCIEEP_SRIOV_BAR2L. */
843 uint64_t vf_bar4_enb : 1; /**< [ 37: 37](R/W) This bit controls whether BAR4 for all virtual functions is enabled.
844
845 In RC mode:
846 * VF BAR4 does not exist. This bit has no effect.
847
848 In EP mode:
849
850 * VF BAR4 hits are based on a combination of this bit and
851 config registers PCIEEP_SRIOV_BAR4U, PCIEEP_SRIOV_BAR4L, and
852 PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this
853 bit must be set to enable a VF BAR4 hit to the PCI address
854 specified by PCIEEP_SRIOV_BAR4U / PCIEEP_SRIOV_BAR4L. */
855 uint64_t reserved_38_63 : 26;
856 #endif /* Word 0 - End */
857 } cn9;
858 struct bdk_pemx_bar_ctl_cn81xx
859 {
860 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
861 uint64_t reserved_7_63 : 57;
862 uint64_t bar1_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR1 size.
863 0x0 = Reserved.
864 0x1 = 64 MB; 2^26.
865 0x2 = 128 MB; 2^27.
866 0x3 = 256 MB; 2^28.
867 0x4 = 512 MB; 2^29.
868 0x5 = 1024 MB; 2^30.
869 0x6 = 2048 MB; 2^31.
870 0x7 = Reserved. */
871 uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */
872 uint64_t reserved_1_2 : 2;
873 uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address \<49\> to determine the L2 cache attribute. Not cached in
874 L2 if XOR result is 1. */
875 #else /* Word 0 - Little Endian */
876 uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address \<49\> to determine the L2 cache attribute. Not cached in
877 L2 if XOR result is 1. */
878 uint64_t reserved_1_2 : 2;
879 uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */
880 uint64_t bar1_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR1 size.
881 0x0 = Reserved.
882 0x1 = 64 MB; 2^26.
883 0x2 = 128 MB; 2^27.
884 0x3 = 256 MB; 2^28.
885 0x4 = 512 MB; 2^29.
886 0x5 = 1024 MB; 2^30.
887 0x6 = 2048 MB; 2^31.
888 0x7 = Reserved. */
889 uint64_t reserved_7_63 : 57;
890 #endif /* Word 0 - End */
891 } cn81xx;
892 /* struct bdk_pemx_bar_ctl_cn81xx cn88xx; */
893 struct bdk_pemx_bar_ctl_cn83xx
894 {
895 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
896 uint64_t reserved_25_63 : 39;
897 uint64_t bar2_ebit : 6; /**< [ 24: 19](R/W) Address bits for ESX\<1:0\> in a PCIe BAR2 address.
898
899 When [BAR2_EBIT] is zero, a PCIe BAR2 address does not contain an ESX\<1:0\> field,
900 and [BAR2_ESX] is the endian-swap used for all BAR2 requests.
901
902 When [BAR2_EBIT] is non-zero, it places ESX\<1:0\> (ESX\<0\> is at PCIe BAR2 address bit
903 [BAR2_EBIT], and ESX\<1\> is at PCIe BAR2 address bit [BAR2_EBIT]+1). [BAR2_EBIT] must
904 be in the range 16 .. [BAR2_SIZ]+18 and must not conflict with a non-zero
905 [BAR2_CBIT] in this case. [BAR2_ESX] XOR ESX\<1:0\> is the endian-swap
906 used for BAR2 requests in this case. If [BAR2_EBIT] \<= 48 in this case, then
907 one or two PCIe BAR2 address ESX field bit(s) are in the address forwarded to
908 SLI and the SMMU, in the same position. */
909 uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit for CAX in a PCIe BAR2 address.
910
911 When [BAR2_CBIT] is zero, a PCIe BAR2 address does not contain a CAX bit,
912 and [BAR2_CAX] is the cache allocation for all BAR2 requests.
913
914 When [BAR2_CBIT] is non-zero, the CAX bit is at bit [BAR2_CBIT] in the PCIe
915 BAR2 address. [BAR2_CBIT] must be in the range 16 .. [BAR2_SIZ]+19 and must
916 not conflict with a non-zero [BAR2_EBIT] in this case. [BAR2_CBIT] XOR CAX is
917 the cache allocation for BAR2 requests. If [BAR2_CBIT] \<= 48 in this
918 case, then the PCIe BAR2 address CAX bit is in the address forwarded to
919 SLI and the SMMU, in the same position. */
920 uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded identically to PCIEEP()_CFG190[RBARS]. Resets to 0x1D (512 TB).
921
922 In EP mode, [BAR2_SIZ] must equal the corresponding PCIEEP()_CFG190[RBARS].
923
924 In RC mode, [BAR2_SIZ] determines the PEM()_P2N_BAR2_START[ADDR] bits used/compared
925 to an incoming PCIe address.
926
927 On a BAR2 match, PEM zeroes the PCIe address bits outside [BAR2_SIZ], applies
928 [BAR2_EBIT,BAR2_CBIT], and forwards the request to SLI and the SMMU. */
929 uint64_t bar1_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR1 size.
930 0x0 = Reserved.
931 0x1 = 64 MB; 2^26.
932 0x2 = 128 MB; 2^27.
933 0x3 = 256 MB; 2^28.
934 0x4 = 512 MB; 2^29.
935 0x5 = 1024 MB; 2^30.
936 0x6 = 2048 MB; 2^31.
937 0x7 = Reserved. */
938 uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */
939 uint64_t bar2_esx : 2; /**< [ 2: 1](R/W) Value is XORed with PCIe addresses as defined by [BAR2_EBIT] to determine the
940 endian swap mode. */
941 uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address as defined by [BAR2_CBIT] to determine the L2
942 cache attribute. Not cached in L2 if XOR result is 1. */
943 #else /* Word 0 - Little Endian */
944 uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address as defined by [BAR2_CBIT] to determine the L2
945 cache attribute. Not cached in L2 if XOR result is 1. */
946 uint64_t bar2_esx : 2; /**< [ 2: 1](R/W) Value is XORed with PCIe addresses as defined by [BAR2_EBIT] to determine the
947 endian swap mode. */
948 uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */
949 uint64_t bar1_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR1 size.
950 0x0 = Reserved.
951 0x1 = 64 MB; 2^26.
952 0x2 = 128 MB; 2^27.
953 0x3 = 256 MB; 2^28.
954 0x4 = 512 MB; 2^29.
955 0x5 = 1024 MB; 2^30.
956 0x6 = 2048 MB; 2^31.
957 0x7 = Reserved. */
958 uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded identically to PCIEEP()_CFG190[RBARS]. Resets to 0x1D (512 TB).
959
960 In EP mode, [BAR2_SIZ] must equal the corresponding PCIEEP()_CFG190[RBARS].
961
962 In RC mode, [BAR2_SIZ] determines the PEM()_P2N_BAR2_START[ADDR] bits used/compared
963 to an incoming PCIe address.
964
965 On a BAR2 match, PEM zeroes the PCIe address bits outside [BAR2_SIZ], applies
966 [BAR2_EBIT,BAR2_CBIT], and forwards the request to SLI and the SMMU. */
967 uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit for CAX in a PCIe BAR2 address.
968
969 When [BAR2_CBIT] is zero, a PCIe BAR2 address does not contain a CAX bit,
970 and [BAR2_CAX] is the cache allocation for all BAR2 requests.
971
972 When [BAR2_CBIT] is non-zero, the CAX bit is at bit [BAR2_CBIT] in the PCIe
973 BAR2 address. [BAR2_CBIT] must be in the range 16 .. [BAR2_SIZ]+19 and must
974 not conflict with a non-zero [BAR2_EBIT] in this case. [BAR2_CBIT] XOR CAX is
975 the cache allocation for BAR2 requests. If [BAR2_CBIT] \<= 48 in this
976 case, then the PCIe BAR2 address CAX bit is in the address forwarded to
977 SLI and the SMMU, in the same position. */
978 uint64_t bar2_ebit : 6; /**< [ 24: 19](R/W) Address bits for ESX\<1:0\> in a PCIe BAR2 address.
979
980 When [BAR2_EBIT] is zero, a PCIe BAR2 address does not contain an ESX\<1:0\> field,
981 and [BAR2_ESX] is the endian-swap used for all BAR2 requests.
982
983 When [BAR2_EBIT] is non-zero, it places ESX\<1:0\> (ESX\<0\> is at PCIe BAR2 address bit
984 [BAR2_EBIT], and ESX\<1\> is at PCIe BAR2 address bit [BAR2_EBIT]+1). [BAR2_EBIT] must
985 be in the range 16 .. [BAR2_SIZ]+18 and must not conflict with a non-zero
986 [BAR2_CBIT] in this case. [BAR2_ESX] XOR ESX\<1:0\> is the endian-swap
987 used for BAR2 requests in this case. If [BAR2_EBIT] \<= 48 in this case, then
988 one or two PCIe BAR2 address ESX field bit(s) are in the address forwarded to
989 SLI and the SMMU, in the same position. */
990 uint64_t reserved_25_63 : 39;
991 #endif /* Word 0 - End */
992 } cn83xx;
993 };
994 typedef union bdk_pemx_bar_ctl bdk_pemx_bar_ctl_t;
995
996 static inline uint64_t BDK_PEMX_BAR_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_BAR_CTL(unsigned long a)997 static inline uint64_t BDK_PEMX_BAR_CTL(unsigned long a)
998 {
999 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1000 return 0x87e0c00000a8ll + 0x1000000ll * ((a) & 0x3);
1001 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1002 return 0x87e0c00000a8ll + 0x1000000ll * ((a) & 0x3);
1003 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1004 return 0x87e0c00000a8ll + 0x1000000ll * ((a) & 0x7);
1005 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
1006 return 0x8e0000000158ll + 0x1000000000ll * ((a) & 0x3);
1007 __bdk_csr_fatal("PEMX_BAR_CTL", 1, a, 0, 0, 0);
1008 }
1009
1010 #define typedef_BDK_PEMX_BAR_CTL(a) bdk_pemx_bar_ctl_t
1011 #define bustype_BDK_PEMX_BAR_CTL(a) BDK_CSR_TYPE_NCB
1012 #define basename_BDK_PEMX_BAR_CTL(a) "PEMX_BAR_CTL"
1013 #define device_bar_BDK_PEMX_BAR_CTL(a) 0x0 /* PF_BAR0 */
1014 #define busnum_BDK_PEMX_BAR_CTL(a) (a)
1015 #define arguments_BDK_PEMX_BAR_CTL(a) (a),-1,-1,-1
1016
1017 /**
1018 * Register (RSL) pem#_bist_status
1019 *
1020 * PEM BIST Status Register
1021 * This register contains results from BIST runs of PEM's memories.
1022 */
1023 union bdk_pemx_bist_status
1024 {
1025 uint64_t u;
1026 struct bdk_pemx_bist_status_s
1027 {
1028 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1029 uint64_t reserved_10_63 : 54;
1030 uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */
1031 uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */
1032 uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */
1033 uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */
1034 uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */
1035 uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */
1036 uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */
1037 uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */
1038 uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */
1039 uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */
1040 #else /* Word 0 - Little Endian */
1041 uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */
1042 uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */
1043 uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */
1044 uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */
1045 uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */
1046 uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */
1047 uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */
1048 uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */
1049 uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */
1050 uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */
1051 uint64_t reserved_10_63 : 54;
1052 #endif /* Word 0 - End */
1053 } s;
1054 struct bdk_pemx_bist_status_cn88xxp1
1055 {
1056 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1057 uint64_t reserved_26_63 : 38;
1058 uint64_t retryc : 1; /**< [ 25: 25](RO) Retry buffer memory C. */
1059 uint64_t sot : 1; /**< [ 24: 24](RO) Start of transfer memory. */
1060 uint64_t rqhdrb0 : 1; /**< [ 23: 23](RO) RX queue header memory buffer 0. */
1061 uint64_t rqhdrb1 : 1; /**< [ 22: 22](RO) RX queue header memory buffer 1. */
1062 uint64_t rqdatab0 : 1; /**< [ 21: 21](RO) RX queue data buffer 0. */
1063 uint64_t rqdatab1 : 1; /**< [ 20: 20](RO) RX queue data buffer 1. */
1064 uint64_t tlpan_d0 : 1; /**< [ 19: 19](RO) BIST Status for the tlp_n_afifo_data0. */
1065 uint64_t tlpan_d1 : 1; /**< [ 18: 18](RO) BIST Status for the tlp_n_afifo_data1. */
1066 uint64_t tlpan_ctl : 1; /**< [ 17: 17](RO) BIST Status for the tlp_n_afifo_ctl. */
1067 uint64_t tlpap_d0 : 1; /**< [ 16: 16](RO) BIST Status for the tlp_p_afifo_data0. */
1068 uint64_t tlpap_d1 : 1; /**< [ 15: 15](RO) BIST Status for the tlp_p_afifo_data1. */
1069 uint64_t tlpap_ctl : 1; /**< [ 14: 14](RO) BIST Status for the tlp_p_afifo_ctl. */
1070 uint64_t tlpac_d0 : 1; /**< [ 13: 13](RO) BIST Status for the tlp_c_afifo_data0. */
1071 uint64_t tlpac_d1 : 1; /**< [ 12: 12](RO) BIST Status for the tlp_c_afifo_data1. */
1072 uint64_t tlpac_ctl : 1; /**< [ 11: 11](RO) BIST Status for the tlp_c_afifo_ctl. */
1073 uint64_t peai_p2e : 1; /**< [ 10: 10](RO) BIST Status for the peai__pesc_fifo. */
1074 uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */
1075 uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */
1076 uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */
1077 uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */
1078 uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */
1079 uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */
1080 uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */
1081 uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */
1082 uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */
1083 uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */
1084 #else /* Word 0 - Little Endian */
1085 uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */
1086 uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */
1087 uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */
1088 uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */
1089 uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */
1090 uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */
1091 uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */
1092 uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */
1093 uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */
1094 uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */
1095 uint64_t peai_p2e : 1; /**< [ 10: 10](RO) BIST Status for the peai__pesc_fifo. */
1096 uint64_t tlpac_ctl : 1; /**< [ 11: 11](RO) BIST Status for the tlp_c_afifo_ctl. */
1097 uint64_t tlpac_d1 : 1; /**< [ 12: 12](RO) BIST Status for the tlp_c_afifo_data1. */
1098 uint64_t tlpac_d0 : 1; /**< [ 13: 13](RO) BIST Status for the tlp_c_afifo_data0. */
1099 uint64_t tlpap_ctl : 1; /**< [ 14: 14](RO) BIST Status for the tlp_p_afifo_ctl. */
1100 uint64_t tlpap_d1 : 1; /**< [ 15: 15](RO) BIST Status for the tlp_p_afifo_data1. */
1101 uint64_t tlpap_d0 : 1; /**< [ 16: 16](RO) BIST Status for the tlp_p_afifo_data0. */
1102 uint64_t tlpan_ctl : 1; /**< [ 17: 17](RO) BIST Status for the tlp_n_afifo_ctl. */
1103 uint64_t tlpan_d1 : 1; /**< [ 18: 18](RO) BIST Status for the tlp_n_afifo_data1. */
1104 uint64_t tlpan_d0 : 1; /**< [ 19: 19](RO) BIST Status for the tlp_n_afifo_data0. */
1105 uint64_t rqdatab1 : 1; /**< [ 20: 20](RO) RX queue data buffer 1. */
1106 uint64_t rqdatab0 : 1; /**< [ 21: 21](RO) RX queue data buffer 0. */
1107 uint64_t rqhdrb1 : 1; /**< [ 22: 22](RO) RX queue header memory buffer 1. */
1108 uint64_t rqhdrb0 : 1; /**< [ 23: 23](RO) RX queue header memory buffer 0. */
1109 uint64_t sot : 1; /**< [ 24: 24](RO) Start of transfer memory. */
1110 uint64_t retryc : 1; /**< [ 25: 25](RO) Retry buffer memory C. */
1111 uint64_t reserved_26_63 : 38;
1112 #endif /* Word 0 - End */
1113 } cn88xxp1;
1114 struct bdk_pemx_bist_status_cn81xx
1115 {
1116 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1117 uint64_t reserved_26_63 : 38;
1118 uint64_t retryc : 1; /**< [ 25: 25](RO) Retry buffer memory C. */
1119 uint64_t sot : 1; /**< [ 24: 24](RO) Start of transfer memory. */
1120 uint64_t rqhdrb0 : 1; /**< [ 23: 23](RO) RX queue header memory buffer 0. */
1121 uint64_t rqhdrb1 : 1; /**< [ 22: 22](RO) RX queue header memory buffer 1. */
1122 uint64_t rqdatab0 : 1; /**< [ 21: 21](RO) RX queue data buffer 0. */
1123 uint64_t rqdatab1 : 1; /**< [ 20: 20](RO) RX queue data buffer 1. */
1124 uint64_t tlpan_d0 : 1; /**< [ 19: 19](RO) Reserved. */
1125 uint64_t tlpan_d1 : 1; /**< [ 18: 18](RO) Reserved. */
1126 uint64_t tlpan_ctl : 1; /**< [ 17: 17](RO) Reserved. */
1127 uint64_t tlpap_d0 : 1; /**< [ 16: 16](RO) Reserved. */
1128 uint64_t tlpap_d1 : 1; /**< [ 15: 15](RO) Reserved. */
1129 uint64_t tlpap_ctl : 1; /**< [ 14: 14](RO) Reserved. */
1130 uint64_t tlpac_d0 : 1; /**< [ 13: 13](RO) Reserved. */
1131 uint64_t tlpac_d1 : 1; /**< [ 12: 12](RO) Reserved. */
1132 uint64_t tlpac_ctl : 1; /**< [ 11: 11](RO) Reserved. */
1133 uint64_t peai_p2e : 1; /**< [ 10: 10](RO) Reserved. */
1134 uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */
1135 uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */
1136 uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */
1137 uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */
1138 uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */
1139 uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */
1140 uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */
1141 uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */
1142 uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */
1143 uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */
1144 #else /* Word 0 - Little Endian */
1145 uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */
1146 uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */
1147 uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */
1148 uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */
1149 uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */
1150 uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */
1151 uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */
1152 uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */
1153 uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */
1154 uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */
1155 uint64_t peai_p2e : 1; /**< [ 10: 10](RO) Reserved. */
1156 uint64_t tlpac_ctl : 1; /**< [ 11: 11](RO) Reserved. */
1157 uint64_t tlpac_d1 : 1; /**< [ 12: 12](RO) Reserved. */
1158 uint64_t tlpac_d0 : 1; /**< [ 13: 13](RO) Reserved. */
1159 uint64_t tlpap_ctl : 1; /**< [ 14: 14](RO) Reserved. */
1160 uint64_t tlpap_d1 : 1; /**< [ 15: 15](RO) Reserved. */
1161 uint64_t tlpap_d0 : 1; /**< [ 16: 16](RO) Reserved. */
1162 uint64_t tlpan_ctl : 1; /**< [ 17: 17](RO) Reserved. */
1163 uint64_t tlpan_d1 : 1; /**< [ 18: 18](RO) Reserved. */
1164 uint64_t tlpan_d0 : 1; /**< [ 19: 19](RO) Reserved. */
1165 uint64_t rqdatab1 : 1; /**< [ 20: 20](RO) RX queue data buffer 1. */
1166 uint64_t rqdatab0 : 1; /**< [ 21: 21](RO) RX queue data buffer 0. */
1167 uint64_t rqhdrb1 : 1; /**< [ 22: 22](RO) RX queue header memory buffer 1. */
1168 uint64_t rqhdrb0 : 1; /**< [ 23: 23](RO) RX queue header memory buffer 0. */
1169 uint64_t sot : 1; /**< [ 24: 24](RO) Start of transfer memory. */
1170 uint64_t retryc : 1; /**< [ 25: 25](RO) Retry buffer memory C. */
1171 uint64_t reserved_26_63 : 38;
1172 #endif /* Word 0 - End */
1173 } cn81xx;
1174 struct bdk_pemx_bist_status_cn83xx
1175 {
1176 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1177 uint64_t reserved_16_63 : 48;
1178 uint64_t retryc : 1; /**< [ 15: 15](RO) Retry buffer memory C. */
1179 uint64_t sot : 1; /**< [ 14: 14](RO) Start of transfer memory. */
1180 uint64_t rqhdrb0 : 1; /**< [ 13: 13](RO) RX queue header memory buffer 0. */
1181 uint64_t rqhdrb1 : 1; /**< [ 12: 12](RO) RX queue header memory buffer 1. */
1182 uint64_t rqdatab0 : 1; /**< [ 11: 11](RO) RX queue data buffer 0. */
1183 uint64_t rqdatab1 : 1; /**< [ 10: 10](RO) RX queue data buffer 1. */
1184 uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */
1185 uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */
1186 uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */
1187 uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */
1188 uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */
1189 uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */
1190 uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */
1191 uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */
1192 uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */
1193 uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */
1194 #else /* Word 0 - Little Endian */
1195 uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */
1196 uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */
1197 uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */
1198 uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */
1199 uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */
1200 uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */
1201 uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */
1202 uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */
1203 uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */
1204 uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */
1205 uint64_t rqdatab1 : 1; /**< [ 10: 10](RO) RX queue data buffer 1. */
1206 uint64_t rqdatab0 : 1; /**< [ 11: 11](RO) RX queue data buffer 0. */
1207 uint64_t rqhdrb1 : 1; /**< [ 12: 12](RO) RX queue header memory buffer 1. */
1208 uint64_t rqhdrb0 : 1; /**< [ 13: 13](RO) RX queue header memory buffer 0. */
1209 uint64_t sot : 1; /**< [ 14: 14](RO) Start of transfer memory. */
1210 uint64_t retryc : 1; /**< [ 15: 15](RO) Retry buffer memory C. */
1211 uint64_t reserved_16_63 : 48;
1212 #endif /* Word 0 - End */
1213 } cn83xx;
1214 /* struct bdk_pemx_bist_status_cn81xx cn88xxp2; */
1215 };
1216 typedef union bdk_pemx_bist_status bdk_pemx_bist_status_t;
1217
1218 static inline uint64_t BDK_PEMX_BIST_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_BIST_STATUS(unsigned long a)1219 static inline uint64_t BDK_PEMX_BIST_STATUS(unsigned long a)
1220 {
1221 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1222 return 0x87e0c0000468ll + 0x1000000ll * ((a) & 0x3);
1223 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1224 return 0x87e0c0000468ll + 0x1000000ll * ((a) & 0x3);
1225 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1226 return 0x87e0c0000468ll + 0x1000000ll * ((a) & 0x7);
1227 __bdk_csr_fatal("PEMX_BIST_STATUS", 1, a, 0, 0, 0);
1228 }
1229
1230 #define typedef_BDK_PEMX_BIST_STATUS(a) bdk_pemx_bist_status_t
1231 #define bustype_BDK_PEMX_BIST_STATUS(a) BDK_CSR_TYPE_RSL
1232 #define basename_BDK_PEMX_BIST_STATUS(a) "PEMX_BIST_STATUS"
1233 #define device_bar_BDK_PEMX_BIST_STATUS(a) 0x0 /* PF_BAR0 */
1234 #define busnum_BDK_PEMX_BIST_STATUS(a) (a)
1235 #define arguments_BDK_PEMX_BIST_STATUS(a) (a),-1,-1,-1
1236
1237 /**
1238 * Register (NCB) pem#_bp_test0
1239 *
1240 * INTERNAL: PEM Backpressure Test Register 0
1241 *
1242 * This register is for diagnostic use only.
1243 *
1244 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1245 *
1246 * This register is reset on PEM domain reset.
1247 */
1248 union bdk_pemx_bp_test0
1249 {
1250 uint64_t u;
1251 struct bdk_pemx_bp_test0_s
1252 {
1253 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1254 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1255 Internal:
1256 Once a bit is set, random backpressure is generated
1257 at the corresponding point to allow for more frequent backpressure.
1258 \<63\> = Limit the NCBI posted FIFO, backpressure doing posted requests to ncb_gnt.
1259 \<62\> = Limit the NCBI nonposted FIFO, backpressure doing nonposted requests to ncb_gnt.
1260 \<61\> = Limit the NCBI completion FIFO, backpressure doing completion requests to ncb_gnt.
1261 \<60\> = Limit the NCBI CSR completion FIFO, backpressure doing requests for CSR responses
1262 to ncb_gnt. */
1263 uint64_t reserved_24_59 : 36;
1264 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1265 Internal:
1266 There are 2 backpressure configuration bits per enable, with the two bits
1267 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1268 0x3=25% of the time.
1269 \<23:22\> = Config 3.
1270 \<21:20\> = Config 2.
1271 \<19:18\> = Config 1.
1272 \<17:16\> = Config 0. */
1273 uint64_t reserved_12_15 : 4;
1274 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1275 #else /* Word 0 - Little Endian */
1276 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1277 uint64_t reserved_12_15 : 4;
1278 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1279 Internal:
1280 There are 2 backpressure configuration bits per enable, with the two bits
1281 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1282 0x3=25% of the time.
1283 \<23:22\> = Config 3.
1284 \<21:20\> = Config 2.
1285 \<19:18\> = Config 1.
1286 \<17:16\> = Config 0. */
1287 uint64_t reserved_24_59 : 36;
1288 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1289 Internal:
1290 Once a bit is set, random backpressure is generated
1291 at the corresponding point to allow for more frequent backpressure.
1292 \<63\> = Limit the NCBI posted FIFO, backpressure doing posted requests to ncb_gnt.
1293 \<62\> = Limit the NCBI nonposted FIFO, backpressure doing nonposted requests to ncb_gnt.
1294 \<61\> = Limit the NCBI completion FIFO, backpressure doing completion requests to ncb_gnt.
1295 \<60\> = Limit the NCBI CSR completion FIFO, backpressure doing requests for CSR responses
1296 to ncb_gnt. */
1297 #endif /* Word 0 - End */
1298 } s;
1299 /* struct bdk_pemx_bp_test0_s cn; */
1300 };
1301 typedef union bdk_pemx_bp_test0 bdk_pemx_bp_test0_t;
1302
1303 static inline uint64_t BDK_PEMX_BP_TEST0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_BP_TEST0(unsigned long a)1304 static inline uint64_t BDK_PEMX_BP_TEST0(unsigned long a)
1305 {
1306 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
1307 return 0x8e00000001d0ll + 0x1000000000ll * ((a) & 0x3);
1308 __bdk_csr_fatal("PEMX_BP_TEST0", 1, a, 0, 0, 0);
1309 }
1310
1311 #define typedef_BDK_PEMX_BP_TEST0(a) bdk_pemx_bp_test0_t
1312 #define bustype_BDK_PEMX_BP_TEST0(a) BDK_CSR_TYPE_NCB
1313 #define basename_BDK_PEMX_BP_TEST0(a) "PEMX_BP_TEST0"
1314 #define device_bar_BDK_PEMX_BP_TEST0(a) 0x0 /* PF_BAR0 */
1315 #define busnum_BDK_PEMX_BP_TEST0(a) (a)
1316 #define arguments_BDK_PEMX_BP_TEST0(a) (a),-1,-1,-1
1317
1318 /**
1319 * Register (NCB) pem#_bp_test1
1320 *
1321 * INTERNAL: PEM Backpressure Test Register 1
1322 *
1323 * This register is for diagnostic use only.
1324 *
1325 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1326 *
1327 * This register is reset on PEM domain reset.
1328 */
1329 union bdk_pemx_bp_test1
1330 {
1331 uint64_t u;
1332 struct bdk_pemx_bp_test1_s
1333 {
1334 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1335 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1336 Internal:
1337 Once a bit is set, random backpressure is generated
1338 at the corresponding point to allow for more frequent backpressure.
1339 \<63\> = Reserved.
1340 \<62\> = Reserved.
1341 \<61\> = Reserved.
1342 \<60\> = Limit the MAC core incoming TLP FIFO; backpressure taking data from this FIFO. */
1343 uint64_t reserved_24_59 : 36;
1344 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1345 Internal:
1346 There are 2 backpressure configuration bits per enable, with the two bits
1347 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1348 0x3=25% of the time.
1349 \<23:22\> = Config 3.
1350 \<21:20\> = Config 2.
1351 \<19:18\> = Config 1.
1352 \<17:16\> = Config 0. */
1353 uint64_t reserved_12_15 : 4;
1354 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1355 #else /* Word 0 - Little Endian */
1356 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1357 uint64_t reserved_12_15 : 4;
1358 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1359 Internal:
1360 There are 2 backpressure configuration bits per enable, with the two bits
1361 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1362 0x3=25% of the time.
1363 \<23:22\> = Config 3.
1364 \<21:20\> = Config 2.
1365 \<19:18\> = Config 1.
1366 \<17:16\> = Config 0. */
1367 uint64_t reserved_24_59 : 36;
1368 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1369 Internal:
1370 Once a bit is set, random backpressure is generated
1371 at the corresponding point to allow for more frequent backpressure.
1372 \<63\> = Reserved.
1373 \<62\> = Reserved.
1374 \<61\> = Reserved.
1375 \<60\> = Limit the MAC core incoming TLP FIFO; backpressure taking data from this FIFO. */
1376 #endif /* Word 0 - End */
1377 } s;
1378 /* struct bdk_pemx_bp_test1_s cn; */
1379 };
1380 typedef union bdk_pemx_bp_test1 bdk_pemx_bp_test1_t;
1381
1382 static inline uint64_t BDK_PEMX_BP_TEST1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_BP_TEST1(unsigned long a)1383 static inline uint64_t BDK_PEMX_BP_TEST1(unsigned long a)
1384 {
1385 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
1386 return 0x8e00000001d8ll + 0x1000000000ll * ((a) & 0x3);
1387 __bdk_csr_fatal("PEMX_BP_TEST1", 1, a, 0, 0, 0);
1388 }
1389
1390 #define typedef_BDK_PEMX_BP_TEST1(a) bdk_pemx_bp_test1_t
1391 #define bustype_BDK_PEMX_BP_TEST1(a) BDK_CSR_TYPE_NCB
1392 #define basename_BDK_PEMX_BP_TEST1(a) "PEMX_BP_TEST1"
1393 #define device_bar_BDK_PEMX_BP_TEST1(a) 0x0 /* PF_BAR0 */
1394 #define busnum_BDK_PEMX_BP_TEST1(a) (a)
1395 #define arguments_BDK_PEMX_BP_TEST1(a) (a),-1,-1,-1
1396
1397 /**
1398 * Register (NCB) pem#_bp_test2
1399 *
1400 * INTERNAL: PEM Backpressure Test Register 2
1401 *
1402 * This register is for diagnostic use only.
1403 *
1404 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1405 *
1406 * This register is reset on PEM domain reset.
1407 */
1408 union bdk_pemx_bp_test2
1409 {
1410 uint64_t u;
1411 struct bdk_pemx_bp_test2_s
1412 {
1413 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1414 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1415 Internal:
1416 Once a bit is set, random backpressure is generated
1417 at the corresponding point to allow for more frequent backpressure.
1418 NOTE: Test backpressure will only be applied at an NCBO transaction boundary.
1419 \<63\> = Limit the draining of NCBO CSR offloading FIFO.
1420 \<62\> = Reserved
1421 \<61\> = Limit the draining of NCBO Non-posted offloading FIFO.
1422 \<60\> = Limit the draining of NCBO Posted offloading FIFO. */
1423 uint64_t reserved_24_59 : 36;
1424 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1425 Internal:
1426 There are 2 backpressure configuration bits per enable, with the two bits
1427 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1428 0x3=25% of the time.
1429 \<23:22\> = Config 3.
1430 \<21:20\> = Config 2.
1431 \<19:18\> = Config 1.
1432 \<17:16\> = Config 0. */
1433 uint64_t reserved_12_15 : 4;
1434 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1435 #else /* Word 0 - Little Endian */
1436 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1437 uint64_t reserved_12_15 : 4;
1438 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1439 Internal:
1440 There are 2 backpressure configuration bits per enable, with the two bits
1441 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1442 0x3=25% of the time.
1443 \<23:22\> = Config 3.
1444 \<21:20\> = Config 2.
1445 \<19:18\> = Config 1.
1446 \<17:16\> = Config 0. */
1447 uint64_t reserved_24_59 : 36;
1448 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1449 Internal:
1450 Once a bit is set, random backpressure is generated
1451 at the corresponding point to allow for more frequent backpressure.
1452 NOTE: Test backpressure will only be applied at an NCBO transaction boundary.
1453 \<63\> = Limit the draining of NCBO CSR offloading FIFO.
1454 \<62\> = Reserved
1455 \<61\> = Limit the draining of NCBO Non-posted offloading FIFO.
1456 \<60\> = Limit the draining of NCBO Posted offloading FIFO. */
1457 #endif /* Word 0 - End */
1458 } s;
1459 /* struct bdk_pemx_bp_test2_s cn; */
1460 };
1461 typedef union bdk_pemx_bp_test2 bdk_pemx_bp_test2_t;
1462
1463 static inline uint64_t BDK_PEMX_BP_TEST2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_BP_TEST2(unsigned long a)1464 static inline uint64_t BDK_PEMX_BP_TEST2(unsigned long a)
1465 {
1466 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
1467 return 0x8e00000001e8ll + 0x1000000000ll * ((a) & 0x3);
1468 __bdk_csr_fatal("PEMX_BP_TEST2", 1, a, 0, 0, 0);
1469 }
1470
1471 #define typedef_BDK_PEMX_BP_TEST2(a) bdk_pemx_bp_test2_t
1472 #define bustype_BDK_PEMX_BP_TEST2(a) BDK_CSR_TYPE_NCB
1473 #define basename_BDK_PEMX_BP_TEST2(a) "PEMX_BP_TEST2"
1474 #define device_bar_BDK_PEMX_BP_TEST2(a) 0x0 /* PF_BAR0 */
1475 #define busnum_BDK_PEMX_BP_TEST2(a) (a)
1476 #define arguments_BDK_PEMX_BP_TEST2(a) (a),-1,-1,-1
1477
1478 /**
1479 * Register (NCB) pem#_bp_test3
1480 *
1481 * INTERNAL: PEM Backpressure Test Register 3
1482 *
1483 * This register is for diagnostic use only.
1484 *
1485 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1486 *
1487 * This register is reset on PEM domain reset.
1488 */
1489 union bdk_pemx_bp_test3
1490 {
1491 uint64_t u;
1492 struct bdk_pemx_bp_test3_s
1493 {
1494 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1495 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1496 Internal:
1497 Once a bit is set, random backpressure is generated
1498 at the corresponding point to allow for more frequent backpressure.
1499 NOTE: Test backpressure will only be applied at a TLP boundary.
1500 \<63\> = Reserved.
1501 \<62\> = Limit the transfers of Completion TLPs from pemm to pemc.
1502 \<61\> = Limit the transfers of Non-posted TLPs from pemm to pemc.
1503 \<60\> = Limit the transfers of Posted TLPs from pemm to pemc. */
1504 uint64_t reserved_24_59 : 36;
1505 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1506 Internal:
1507 There are 2 backpressure configuration bits per enable, with the two bits
1508 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1509 0x3=25% of the time.
1510 \<23:22\> = Config 3.
1511 \<21:20\> = Config 2.
1512 \<19:18\> = Config 1.
1513 \<17:16\> = Config 0. */
1514 uint64_t reserved_12_15 : 4;
1515 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1516 #else /* Word 0 - Little Endian */
1517 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1518 uint64_t reserved_12_15 : 4;
1519 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1520 Internal:
1521 There are 2 backpressure configuration bits per enable, with the two bits
1522 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1523 0x3=25% of the time.
1524 \<23:22\> = Config 3.
1525 \<21:20\> = Config 2.
1526 \<19:18\> = Config 1.
1527 \<17:16\> = Config 0. */
1528 uint64_t reserved_24_59 : 36;
1529 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1530 Internal:
1531 Once a bit is set, random backpressure is generated
1532 at the corresponding point to allow for more frequent backpressure.
1533 NOTE: Test backpressure will only be applied at a TLP boundary.
1534 \<63\> = Reserved.
1535 \<62\> = Limit the transfers of Completion TLPs from pemm to pemc.
1536 \<61\> = Limit the transfers of Non-posted TLPs from pemm to pemc.
1537 \<60\> = Limit the transfers of Posted TLPs from pemm to pemc. */
1538 #endif /* Word 0 - End */
1539 } s;
1540 /* struct bdk_pemx_bp_test3_s cn; */
1541 };
1542 typedef union bdk_pemx_bp_test3 bdk_pemx_bp_test3_t;
1543
1544 static inline uint64_t BDK_PEMX_BP_TEST3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_BP_TEST3(unsigned long a)1545 static inline uint64_t BDK_PEMX_BP_TEST3(unsigned long a)
1546 {
1547 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
1548 return 0x8e00000001f0ll + 0x1000000000ll * ((a) & 0x3);
1549 __bdk_csr_fatal("PEMX_BP_TEST3", 1, a, 0, 0, 0);
1550 }
1551
1552 #define typedef_BDK_PEMX_BP_TEST3(a) bdk_pemx_bp_test3_t
1553 #define bustype_BDK_PEMX_BP_TEST3(a) BDK_CSR_TYPE_NCB
1554 #define basename_BDK_PEMX_BP_TEST3(a) "PEMX_BP_TEST3"
1555 #define device_bar_BDK_PEMX_BP_TEST3(a) 0x0 /* PF_BAR0 */
1556 #define busnum_BDK_PEMX_BP_TEST3(a) (a)
1557 #define arguments_BDK_PEMX_BP_TEST3(a) (a),-1,-1,-1
1558
1559 /**
1560 * Register (NCB) pem#_bp_test4
1561 *
1562 * INTERNAL: PEM Backpressure Test Register 4
1563 *
1564 * This register is for diagnostic use only.
1565 *
1566 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1567 *
1568 * This register is reset on PEM domain reset.
1569 */
1570 union bdk_pemx_bp_test4
1571 {
1572 uint64_t u;
1573 struct bdk_pemx_bp_test4_s
1574 {
1575 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1576 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1577 Internal:
1578 Once a bit is set, random backpressure is generated
1579 at the corresponding point to allow for more frequent backpressure.
1580 \<63\> = Limit the EBI posted FIFO.
1581 \<62\> = Limit the EBI nonposted FIFO.
1582 \<61\> = Limit the EBI completion FIFO.
1583 \<60\> = Limit the EBI completion fault FIFO. */
1584 uint64_t reserved_24_59 : 36;
1585 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1586 Internal:
1587 There are 2 backpressure configuration bits per enable, with the two bits
1588 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1589 0x3=25% of the time.
1590 \<23:22\> = Config 3.
1591 \<21:20\> = Config 2.
1592 \<19:18\> = Config 1.
1593 \<17:16\> = Config 0. */
1594 uint64_t reserved_12_15 : 4;
1595 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1596 #else /* Word 0 - Little Endian */
1597 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1598 uint64_t reserved_12_15 : 4;
1599 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1600 Internal:
1601 There are 2 backpressure configuration bits per enable, with the two bits
1602 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1603 0x3=25% of the time.
1604 \<23:22\> = Config 3.
1605 \<21:20\> = Config 2.
1606 \<19:18\> = Config 1.
1607 \<17:16\> = Config 0. */
1608 uint64_t reserved_24_59 : 36;
1609 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1610 Internal:
1611 Once a bit is set, random backpressure is generated
1612 at the corresponding point to allow for more frequent backpressure.
1613 \<63\> = Limit the EBI posted FIFO.
1614 \<62\> = Limit the EBI nonposted FIFO.
1615 \<61\> = Limit the EBI completion FIFO.
1616 \<60\> = Limit the EBI completion fault FIFO. */
1617 #endif /* Word 0 - End */
1618 } s;
1619 /* struct bdk_pemx_bp_test4_s cn; */
1620 };
1621 typedef union bdk_pemx_bp_test4 bdk_pemx_bp_test4_t;
1622
1623 static inline uint64_t BDK_PEMX_BP_TEST4(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_BP_TEST4(unsigned long a)1624 static inline uint64_t BDK_PEMX_BP_TEST4(unsigned long a)
1625 {
1626 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
1627 return 0x8e00000001f8ll + 0x1000000000ll * ((a) & 0x3);
1628 __bdk_csr_fatal("PEMX_BP_TEST4", 1, a, 0, 0, 0);
1629 }
1630
1631 #define typedef_BDK_PEMX_BP_TEST4(a) bdk_pemx_bp_test4_t
1632 #define bustype_BDK_PEMX_BP_TEST4(a) BDK_CSR_TYPE_NCB
1633 #define basename_BDK_PEMX_BP_TEST4(a) "PEMX_BP_TEST4"
1634 #define device_bar_BDK_PEMX_BP_TEST4(a) 0x0 /* PF_BAR0 */
1635 #define busnum_BDK_PEMX_BP_TEST4(a) (a)
1636 #define arguments_BDK_PEMX_BP_TEST4(a) (a),-1,-1,-1
1637
1638 /**
1639 * Register (NCB) pem#_bp_test5
1640 *
1641 * INTERNAL: PEM Backpressure Test Register 5
1642 *
1643 * This register is for diagnostic use only.
1644 *
1645 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1646 *
1647 * This register is reset on PEM domain reset.
1648 */
1649 union bdk_pemx_bp_test5
1650 {
1651 uint64_t u;
1652 struct bdk_pemx_bp_test5_s
1653 {
1654 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1655 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1656 Internal:
1657 Once a bit is set, random backpressure is generated
1658 at the corresponding point to allow for more frequent backpressure.
1659 Note backpressure will only be applied at an EBO transaction boundary.
1660 \<63\> = Reserved.
1661 \<62\> = Limit the draining of EBO Completion offloading buffer.
1662 \<61\> = Limit the draining of EBO Non-posted offloading FIFO.
1663 \<60\> = Limit the draining of EBO Posted offloading FIFO. */
1664 uint64_t reserved_24_59 : 36;
1665 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1666 Internal:
1667 There are 2 backpressure configuration bits per enable, with the two bits
1668 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1669 0x3=25% of the time.
1670 \<23:22\> = Config 3.
1671 \<21:20\> = Config 2.
1672 \<19:18\> = Config 1.
1673 \<17:16\> = Config 0. */
1674 uint64_t reserved_12_15 : 4;
1675 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1676 #else /* Word 0 - Little Endian */
1677 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1678 uint64_t reserved_12_15 : 4;
1679 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1680 Internal:
1681 There are 2 backpressure configuration bits per enable, with the two bits
1682 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1683 0x3=25% of the time.
1684 \<23:22\> = Config 3.
1685 \<21:20\> = Config 2.
1686 \<19:18\> = Config 1.
1687 \<17:16\> = Config 0. */
1688 uint64_t reserved_24_59 : 36;
1689 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1690 Internal:
1691 Once a bit is set, random backpressure is generated
1692 at the corresponding point to allow for more frequent backpressure.
1693 Note backpressure will only be applied at an EBO transaction boundary.
1694 \<63\> = Reserved.
1695 \<62\> = Limit the draining of EBO Completion offloading buffer.
1696 \<61\> = Limit the draining of EBO Non-posted offloading FIFO.
1697 \<60\> = Limit the draining of EBO Posted offloading FIFO. */
1698 #endif /* Word 0 - End */
1699 } s;
1700 /* struct bdk_pemx_bp_test5_s cn; */
1701 };
1702 typedef union bdk_pemx_bp_test5 bdk_pemx_bp_test5_t;
1703
1704 static inline uint64_t BDK_PEMX_BP_TEST5(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_BP_TEST5(unsigned long a)1705 static inline uint64_t BDK_PEMX_BP_TEST5(unsigned long a)
1706 {
1707 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
1708 return 0x8e0000000200ll + 0x1000000000ll * ((a) & 0x3);
1709 __bdk_csr_fatal("PEMX_BP_TEST5", 1, a, 0, 0, 0);
1710 }
1711
1712 #define typedef_BDK_PEMX_BP_TEST5(a) bdk_pemx_bp_test5_t
1713 #define bustype_BDK_PEMX_BP_TEST5(a) BDK_CSR_TYPE_NCB
1714 #define basename_BDK_PEMX_BP_TEST5(a) "PEMX_BP_TEST5"
1715 #define device_bar_BDK_PEMX_BP_TEST5(a) 0x0 /* PF_BAR0 */
1716 #define busnum_BDK_PEMX_BP_TEST5(a) (a)
1717 #define arguments_BDK_PEMX_BP_TEST5(a) (a),-1,-1,-1
1718
1719 /**
1720 * Register (NCB) pem#_bp_test6
1721 *
1722 * INTERNAL: PEM Backpressure Test Register 6
1723 *
1724 * This register is for diagnostic use only.
1725 *
1726 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1727 *
1728 * This register is reset on PEM domain reset.
1729 */
1730 union bdk_pemx_bp_test6
1731 {
1732 uint64_t u;
1733 struct bdk_pemx_bp_test6_s
1734 {
1735 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1736 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1737 Internal:
1738 Once a bit is set, random backpressure is generated
1739 at the corresponding point to allow for more frequent backpressure.
1740 \<63\> = Reserved.
1741 \<62\> = Limit the PSPI nonposted FIFO.
1742 \<61\> = Reserved.
1743 \<60\> = Reserved. */
1744 uint64_t reserved_24_59 : 36;
1745 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1746 Internal:
1747 There are 2 backpressure configuration bits per enable, with the two bits
1748 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1749 0x3=25% of the time.
1750 \<23:22\> = Config 3.
1751 \<21:20\> = Config 2.
1752 \<19:18\> = Config 1.
1753 \<17:16\> = Config 0. */
1754 uint64_t reserved_12_15 : 4;
1755 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1756 #else /* Word 0 - Little Endian */
1757 uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */
1758 uint64_t reserved_12_15 : 4;
1759 uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only.
1760 Internal:
1761 There are 2 backpressure configuration bits per enable, with the two bits
1762 defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time,
1763 0x3=25% of the time.
1764 \<23:22\> = Config 3.
1765 \<21:20\> = Config 2.
1766 \<19:18\> = Config 1.
1767 \<17:16\> = Config 0. */
1768 uint64_t reserved_24_59 : 36;
1769 uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only.
1770 Internal:
1771 Once a bit is set, random backpressure is generated
1772 at the corresponding point to allow for more frequent backpressure.
1773 \<63\> = Reserved.
1774 \<62\> = Limit the PSPI nonposted FIFO.
1775 \<61\> = Reserved.
1776 \<60\> = Reserved. */
1777 #endif /* Word 0 - End */
1778 } s;
1779 /* struct bdk_pemx_bp_test6_s cn; */
1780 };
1781 typedef union bdk_pemx_bp_test6 bdk_pemx_bp_test6_t;
1782
1783 static inline uint64_t BDK_PEMX_BP_TEST6(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_BP_TEST6(unsigned long a)1784 static inline uint64_t BDK_PEMX_BP_TEST6(unsigned long a)
1785 {
1786 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
1787 return 0x8e0000000208ll + 0x1000000000ll * ((a) & 0x3);
1788 __bdk_csr_fatal("PEMX_BP_TEST6", 1, a, 0, 0, 0);
1789 }
1790
1791 #define typedef_BDK_PEMX_BP_TEST6(a) bdk_pemx_bp_test6_t
1792 #define bustype_BDK_PEMX_BP_TEST6(a) BDK_CSR_TYPE_NCB
1793 #define basename_BDK_PEMX_BP_TEST6(a) "PEMX_BP_TEST6"
1794 #define device_bar_BDK_PEMX_BP_TEST6(a) 0x0 /* PF_BAR0 */
1795 #define busnum_BDK_PEMX_BP_TEST6(a) (a)
1796 #define arguments_BDK_PEMX_BP_TEST6(a) (a),-1,-1,-1
1797
1798 /**
1799 * Register (NCB) pem#_cfg
1800 *
1801 * PEM Application Configuration Register
1802 * This register configures the PCIe application.
1803 *
1804 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1805 *
1806 * This register is reset on cold reset.
1807 */
1808 union bdk_pemx_cfg
1809 {
1810 uint64_t u;
1811 struct bdk_pemx_cfg_s
1812 {
1813 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1814 uint64_t reserved_0_63 : 64;
1815 #else /* Word 0 - Little Endian */
1816 uint64_t reserved_0_63 : 64;
1817 #endif /* Word 0 - End */
1818 } s;
1819 struct bdk_pemx_cfg_cn9
1820 {
1821 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1822 uint64_t reserved_8_63 : 56;
1823 uint64_t pipe_grp_ptr : 3; /**< [ 7: 5](R/W/H) Each PEM brings in 24 lanes of RX Pipe.
1824 Configures the PEM to point to the RX Pipe quad containing
1825 Lane 0.
1826 0x0 = grp0 (lane 0).
1827 0x1 = grp1 (lane 4).
1828 0x2 = grp2 (lane 8).
1829 0x3 = grp3 (lane 12).
1830 0x4 = grp4 (lane 16).
1831 0x5 = grp5 (lane 20).
1832 0x6 - 0x7 = Reserved.
1833
1834 CN93XX configuration:
1835 \<pre\>
1836 PEM0: Configure to grp0 (QLM0/1/2/3).
1837 PEM1: Configure to grp0 (QLM1).
1838 Configure to grp1 (DLM4/5).
1839 PEM2: Configure to grp0 (QLM3).
1840 Configure to grp1 (DLM5).
1841 Configure to grp2 (QLM6/7).
1842 PEM3: Configure to grp0 (QLM2/3).
1843 \</pre\> */
1844 uint64_t pipe : 2; /**< [ 4: 3](R/W/H) Configures the PEM pipe sources.
1845 0x0 = Pipe 0.
1846 0x1 = Pipe 1.
1847 0x2 = Pipe 2.
1848 0x3 = Reserved.
1849
1850 CN93XX configuration:
1851 \<pre\>
1852 PEM0: Configure to Pipe 0 (QLM0/1/2/3).
1853 PEM1: Configure to Pipe 0 (QLM1).
1854 Configure to Pipe 1 (DLM4/5).
1855 PEM2: Configure to Pipe 0 (QLM3).
1856 Configure to Pipe 1 (DLM5).
1857 Configure to Pipe 2 (QLM6/7).
1858 PEM3: Configure to Pipe 0 (QLM2/3).
1859 \</pre\> */
1860 uint64_t lanes : 2; /**< [ 2: 1](R/W/H) Ties off RX Pipe for unused lanes.
1861 0x0 = 2 lanes.
1862 0x1 = 4 lanes.
1863 0x2 = 8 lanes.
1864 0x3 = 16 lanes.
1865
1866 CN93XX configuration:
1867 \<pre\>
1868 PEM0: Configure to 16 Lanes (QLM0/1/2/3).
1869 Configure to 8 Lanes (QLM0/1).
1870 Configure to 4 Lanes (QLM0).
1871 PEM1: Configure to 4 Lanes (QLM1 or DLM4/5).
1872 Configure to 2 Lanes (DLM4).
1873 PEM2: Configure to 4 Lanes (QLM3).
1874 Configure to 2 Lanes (DLM5).
1875 Configure to 8 Lanes (QLM6/7).
1876 Configure to 4 Lanes (QLM6).
1877 PEM3: Configure to 8 Lanes (QLM2/3 or QLM6/7).
1878 Configure to 4 Lanes (QLM 2 or QLM6).
1879 \</pre\> */
1880 uint64_t hostmd : 1; /**< [ 0: 0](R/W/H) Host mode.
1881 0 = PEM is configured to be an end point (EP mode).
1882 1 = PEM is configured to be a root complex (RC mode). */
1883 #else /* Word 0 - Little Endian */
1884 uint64_t hostmd : 1; /**< [ 0: 0](R/W/H) Host mode.
1885 0 = PEM is configured to be an end point (EP mode).
1886 1 = PEM is configured to be a root complex (RC mode). */
1887 uint64_t lanes : 2; /**< [ 2: 1](R/W/H) Ties off RX Pipe for unused lanes.
1888 0x0 = 2 lanes.
1889 0x1 = 4 lanes.
1890 0x2 = 8 lanes.
1891 0x3 = 16 lanes.
1892
1893 CN93XX configuration:
1894 \<pre\>
1895 PEM0: Configure to 16 Lanes (QLM0/1/2/3).
1896 Configure to 8 Lanes (QLM0/1).
1897 Configure to 4 Lanes (QLM0).
1898 PEM1: Configure to 4 Lanes (QLM1 or DLM4/5).
1899 Configure to 2 Lanes (DLM4).
1900 PEM2: Configure to 4 Lanes (QLM3).
1901 Configure to 2 Lanes (DLM5).
1902 Configure to 8 Lanes (QLM6/7).
1903 Configure to 4 Lanes (QLM6).
1904 PEM3: Configure to 8 Lanes (QLM2/3 or QLM6/7).
1905 Configure to 4 Lanes (QLM 2 or QLM6).
1906 \</pre\> */
1907 uint64_t pipe : 2; /**< [ 4: 3](R/W/H) Configures the PEM pipe sources.
1908 0x0 = Pipe 0.
1909 0x1 = Pipe 1.
1910 0x2 = Pipe 2.
1911 0x3 = Reserved.
1912
1913 CN93XX configuration:
1914 \<pre\>
1915 PEM0: Configure to Pipe 0 (QLM0/1/2/3).
1916 PEM1: Configure to Pipe 0 (QLM1).
1917 Configure to Pipe 1 (DLM4/5).
1918 PEM2: Configure to Pipe 0 (QLM3).
1919 Configure to Pipe 1 (DLM5).
1920 Configure to Pipe 2 (QLM6/7).
1921 PEM3: Configure to Pipe 0 (QLM2/3).
1922 \</pre\> */
1923 uint64_t pipe_grp_ptr : 3; /**< [ 7: 5](R/W/H) Each PEM brings in 24 lanes of RX Pipe.
1924 Configures the PEM to point to the RX Pipe quad containing
1925 Lane 0.
1926 0x0 = grp0 (lane 0).
1927 0x1 = grp1 (lane 4).
1928 0x2 = grp2 (lane 8).
1929 0x3 = grp3 (lane 12).
1930 0x4 = grp4 (lane 16).
1931 0x5 = grp5 (lane 20).
1932 0x6 - 0x7 = Reserved.
1933
1934 CN93XX configuration:
1935 \<pre\>
1936 PEM0: Configure to grp0 (QLM0/1/2/3).
1937 PEM1: Configure to grp0 (QLM1).
1938 Configure to grp1 (DLM4/5).
1939 PEM2: Configure to grp0 (QLM3).
1940 Configure to grp1 (DLM5).
1941 Configure to grp2 (QLM6/7).
1942 PEM3: Configure to grp0 (QLM2/3).
1943 \</pre\> */
1944 uint64_t reserved_8_63 : 56;
1945 #endif /* Word 0 - End */
1946 } cn9;
1947 struct bdk_pemx_cfg_cn81xx
1948 {
1949 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1950 uint64_t reserved_6_63 : 58;
1951 uint64_t lanes4 : 1; /**< [ 5: 5](R/W) Determines the number of lanes.
1952 When set, the PEM is configured for a maximum of 4 lanes. When clear, the PEM is
1953 configured for a maximum of 2 lanes. This value is used to set the maximum link width
1954 field in the core's link capabilities register (CFG031) to indicate the maximum number of
1955 lanes supported. Note that less lanes than the specified maximum can be configured for use
1956 via the core's link control register (CFG032) negotiated link width field. */
1957 uint64_t laneswap : 1; /**< [ 4: 4](R/W) Determines lane swapping. When set, lane swapping is
1958 performed to/from the SerDes. When clear, no lane swapping is performed. */
1959 uint64_t reserved_2_3 : 2;
1960 uint64_t md : 2; /**< [ 1: 0](R/W) Determines the speed.
1961 0x0 = Gen1 speed.
1962 0x1 = Gen2 speed.
1963 0x2 = Gen3 speed.
1964 0x3 = Gen3 speed. */
1965 #else /* Word 0 - Little Endian */
1966 uint64_t md : 2; /**< [ 1: 0](R/W) Determines the speed.
1967 0x0 = Gen1 speed.
1968 0x1 = Gen2 speed.
1969 0x2 = Gen3 speed.
1970 0x3 = Gen3 speed. */
1971 uint64_t reserved_2_3 : 2;
1972 uint64_t laneswap : 1; /**< [ 4: 4](R/W) Determines lane swapping. When set, lane swapping is
1973 performed to/from the SerDes. When clear, no lane swapping is performed. */
1974 uint64_t lanes4 : 1; /**< [ 5: 5](R/W) Determines the number of lanes.
1975 When set, the PEM is configured for a maximum of 4 lanes. When clear, the PEM is
1976 configured for a maximum of 2 lanes. This value is used to set the maximum link width
1977 field in the core's link capabilities register (CFG031) to indicate the maximum number of
1978 lanes supported. Note that less lanes than the specified maximum can be configured for use
1979 via the core's link control register (CFG032) negotiated link width field. */
1980 uint64_t reserved_6_63 : 58;
1981 #endif /* Word 0 - End */
1982 } cn81xx;
1983 struct bdk_pemx_cfg_cn88xx
1984 {
1985 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1986 uint64_t reserved_5_63 : 59;
1987 uint64_t laneswap : 1; /**< [ 4: 4](R/W/H) Determines lane swapping. When set, lane swapping is
1988 performed to/from the SerDes. When clear, no lane swapping is performed. */
1989 uint64_t lanes8 : 1; /**< [ 3: 3](R/W/H) Determines the number of lanes.
1990 When set, the PEM is configured for a maximum of 8 lanes. When clear, the PEM is
1991 configured for a maximum of 4 lanes. This value is used to set the maximum link width
1992 field in the core's link capabilities register (CFG031) to indicate the maximum number of
1993 lanes supported. Note that less lanes than the specified maximum can be configured for use
1994 via the core's link control register (CFG032) negotiated link width field. */
1995 uint64_t reserved_2 : 1;
1996 uint64_t md : 2; /**< [ 1: 0](R/W/H) Determines the speed.
1997 0x0 = Gen1 speed.
1998 0x1 = Gen2 speed.
1999 0x2 = Gen3 speed.
2000 0x3 = Gen3 speed. */
2001 #else /* Word 0 - Little Endian */
2002 uint64_t md : 2; /**< [ 1: 0](R/W/H) Determines the speed.
2003 0x0 = Gen1 speed.
2004 0x1 = Gen2 speed.
2005 0x2 = Gen3 speed.
2006 0x3 = Gen3 speed. */
2007 uint64_t reserved_2 : 1;
2008 uint64_t lanes8 : 1; /**< [ 3: 3](R/W/H) Determines the number of lanes.
2009 When set, the PEM is configured for a maximum of 8 lanes. When clear, the PEM is
2010 configured for a maximum of 4 lanes. This value is used to set the maximum link width
2011 field in the core's link capabilities register (CFG031) to indicate the maximum number of
2012 lanes supported. Note that less lanes than the specified maximum can be configured for use
2013 via the core's link control register (CFG032) negotiated link width field. */
2014 uint64_t laneswap : 1; /**< [ 4: 4](R/W/H) Determines lane swapping. When set, lane swapping is
2015 performed to/from the SerDes. When clear, no lane swapping is performed. */
2016 uint64_t reserved_5_63 : 59;
2017 #endif /* Word 0 - End */
2018 } cn88xx;
2019 struct bdk_pemx_cfg_cn83xx
2020 {
2021 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2022 uint64_t reserved_5_63 : 59;
2023 uint64_t laneswap : 1; /**< [ 4: 4](R/W/H) Enables overwriting the value for lane swapping. The reset value is captured on
2024 cold reset by the pin straps (see PEM()_STRAP[PILANESWAP]). When set, lane swapping is
2025 performed to/from the SerDes. When clear, no lane swapping is performed. */
2026 uint64_t lanes8 : 1; /**< [ 3: 3](R/W/H) Enables overwriting the value for the maximum number of lanes. The reset value
2027 is captured on cold reset by the pin straps (see PEM()_STRAP[PILANES8]). When set, the
2028 PEM is configured for a maximum of 8 lanes. When clear, the PEM is configured for a
2029 maximum of 4 or 2 lanes. This value is used to set the maximum link width field in the
2030 core's
2031 link capabilities register (CFG031) to indicate the maximum number of lanes
2032 supported. Note that less lanes than the specified maximum can be configured for use via
2033 the core's link control register (CFG032) negotiated link width field. */
2034 uint64_t hostmd : 1; /**< [ 2: 2](R/W/H) Enables overwriting the value for host mode. The reset value is captured on
2035 cold reset by the pin straps. (See PEM()_STRAP[PIMODE]. The HOSTMD reset value is the
2036 bit-wise AND of the PIMODE straps. When set, the PEM is configured to be a root complex.
2037 When clear, the PEM is configured to be an end point. */
2038 uint64_t md : 2; /**< [ 1: 0](R/W/H) Enables overwriting the value for speed. The reset value is captured on cold
2039 reset by the pin straps (see PEM()_STRAP[PIMODE]). For a root complex configuration
2040 that is not running at Gen3 speed, the HOSTMD bit of this register must be set when this
2041 field is changed.
2042 0x0 = Gen1 speed.
2043 0x1 = Gen2 speed.
2044 0x2 = Gen3 speed.
2045 0x3 = Reserved. */
2046 #else /* Word 0 - Little Endian */
2047 uint64_t md : 2; /**< [ 1: 0](R/W/H) Enables overwriting the value for speed. The reset value is captured on cold
2048 reset by the pin straps (see PEM()_STRAP[PIMODE]). For a root complex configuration
2049 that is not running at Gen3 speed, the HOSTMD bit of this register must be set when this
2050 field is changed.
2051 0x0 = Gen1 speed.
2052 0x1 = Gen2 speed.
2053 0x2 = Gen3 speed.
2054 0x3 = Reserved. */
2055 uint64_t hostmd : 1; /**< [ 2: 2](R/W/H) Enables overwriting the value for host mode. The reset value is captured on
2056 cold reset by the pin straps. (See PEM()_STRAP[PIMODE]. The HOSTMD reset value is the
2057 bit-wise AND of the PIMODE straps. When set, the PEM is configured to be a root complex.
2058 When clear, the PEM is configured to be an end point. */
2059 uint64_t lanes8 : 1; /**< [ 3: 3](R/W/H) Enables overwriting the value for the maximum number of lanes. The reset value
2060 is captured on cold reset by the pin straps (see PEM()_STRAP[PILANES8]). When set, the
2061 PEM is configured for a maximum of 8 lanes. When clear, the PEM is configured for a
2062 maximum of 4 or 2 lanes. This value is used to set the maximum link width field in the
2063 core's
2064 link capabilities register (CFG031) to indicate the maximum number of lanes
2065 supported. Note that less lanes than the specified maximum can be configured for use via
2066 the core's link control register (CFG032) negotiated link width field. */
2067 uint64_t laneswap : 1; /**< [ 4: 4](R/W/H) Enables overwriting the value for lane swapping. The reset value is captured on
2068 cold reset by the pin straps (see PEM()_STRAP[PILANESWAP]). When set, lane swapping is
2069 performed to/from the SerDes. When clear, no lane swapping is performed. */
2070 uint64_t reserved_5_63 : 59;
2071 #endif /* Word 0 - End */
2072 } cn83xx;
2073 };
2074 typedef union bdk_pemx_cfg bdk_pemx_cfg_t;
2075
2076 static inline uint64_t BDK_PEMX_CFG(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CFG(unsigned long a)2077 static inline uint64_t BDK_PEMX_CFG(unsigned long a)
2078 {
2079 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2080 return 0x87e0c0000410ll + 0x1000000ll * ((a) & 0x3);
2081 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2082 return 0x87e0c0000410ll + 0x1000000ll * ((a) & 0x3);
2083 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2084 return 0x87e0c0000410ll + 0x1000000ll * ((a) & 0x7);
2085 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
2086 return 0x8e00000000c8ll + 0x1000000000ll * ((a) & 0x3);
2087 __bdk_csr_fatal("PEMX_CFG", 1, a, 0, 0, 0);
2088 }
2089
2090 #define typedef_BDK_PEMX_CFG(a) bdk_pemx_cfg_t
2091 #define bustype_BDK_PEMX_CFG(a) BDK_CSR_TYPE_NCB
2092 #define basename_BDK_PEMX_CFG(a) "PEMX_CFG"
2093 #define device_bar_BDK_PEMX_CFG(a) 0x0 /* PF_BAR0 */
2094 #define busnum_BDK_PEMX_CFG(a) (a)
2095 #define arguments_BDK_PEMX_CFG(a) (a),-1,-1,-1
2096
2097 /**
2098 * Register (NCB) pem#_cfg_rd
2099 *
2100 * PEM Configuration Read Register
2101 * This register allows read access to the configuration in the PCIe core, but is for
2102 * legacy application use. PEM()_PF()_CS()_PFCFG() and PEM()_PF()_VF()_VFCFG() should
2103 * typically be used instead.
2104 *
2105 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2106 *
2107 * This register is reset on MAC reset.
2108 */
2109 union bdk_pemx_cfg_rd
2110 {
2111 uint64_t u;
2112 struct bdk_pemx_cfg_rd_s
2113 {
2114 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2115 uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */
2116 uint64_t addr : 32; /**< [ 31: 0](R/W/H) Address to read. A write to this register starts a read operation.
2117 Following are the sub-fields of the ADDR field.
2118
2119 \<11:0\> The offset of the PCIe core CFG register being accessed. */
2120 #else /* Word 0 - Little Endian */
2121 uint64_t addr : 32; /**< [ 31: 0](R/W/H) Address to read. A write to this register starts a read operation.
2122 Following are the sub-fields of the ADDR field.
2123
2124 \<11:0\> The offset of the PCIe core CFG register being accessed. */
2125 uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */
2126 #endif /* Word 0 - End */
2127 } s;
2128 struct bdk_pemx_cfg_rd_cn9
2129 {
2130 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2131 uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */
2132 uint64_t addr : 32; /**< [ 31: 0](R/W) Address to read. A write to this register starts a read operation.
2133 Following are the subfields of [ADDR].
2134
2135 \<31:30\> = Reserved. Must be zero.
2136
2137 \<29:22\> = The selected virtual function. Must be zero when \<17\> is
2138 clear. Must be zero in RC mode.
2139
2140 \<21:18\> = The selected physical function. Must be zero in RC mode.
2141
2142 \<17\> = When clear, the write accesses the physical function. When set,
2143 the write accesses the virtual function selected by \<29:22\>.
2144 Must be zero when SR-IOV is not used in the physical function.
2145 Must be zero in RC mode.
2146
2147 \<16\> = When clear, the write is the same as a config space write received
2148 from external. When set, the write can modify more fields than
2149 an external write could (i.e. configuration mask register).
2150
2151 Corresponds to the CS2 field in Byte2 of the EEPROM.
2152
2153 \<15\> = Must be 1.
2154
2155 \<14:12\> = Reserved. Must be zero.
2156
2157 \<11:0\> = Selects the PCIe config space register being written in the
2158 function.
2159
2160 Internal:
2161 \<16\> = asserts dbi_cs2 at PCIe core.
2162 \<17\> = dbi_vfunc_active to the core.
2163 \<29:22\> = dbi_vfunc_num to the core. */
2164 #else /* Word 0 - Little Endian */
2165 uint64_t addr : 32; /**< [ 31: 0](R/W) Address to read. A write to this register starts a read operation.
2166 Following are the subfields of [ADDR].
2167
2168 \<31:30\> = Reserved. Must be zero.
2169
2170 \<29:22\> = The selected virtual function. Must be zero when \<17\> is
2171 clear. Must be zero in RC mode.
2172
2173 \<21:18\> = The selected physical function. Must be zero in RC mode.
2174
2175 \<17\> = When clear, the write accesses the physical function. When set,
2176 the write accesses the virtual function selected by \<29:22\>.
2177 Must be zero when SR-IOV is not used in the physical function.
2178 Must be zero in RC mode.
2179
2180 \<16\> = When clear, the write is the same as a config space write received
2181 from external. When set, the write can modify more fields than
2182 an external write could (i.e. configuration mask register).
2183
2184 Corresponds to the CS2 field in Byte2 of the EEPROM.
2185
2186 \<15\> = Must be 1.
2187
2188 \<14:12\> = Reserved. Must be zero.
2189
2190 \<11:0\> = Selects the PCIe config space register being written in the
2191 function.
2192
2193 Internal:
2194 \<16\> = asserts dbi_cs2 at PCIe core.
2195 \<17\> = dbi_vfunc_active to the core.
2196 \<29:22\> = dbi_vfunc_num to the core. */
2197 uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */
2198 #endif /* Word 0 - End */
2199 } cn9;
2200 /* struct bdk_pemx_cfg_rd_s cn81xx; */
2201 /* struct bdk_pemx_cfg_rd_s cn88xx; */
2202 struct bdk_pemx_cfg_rd_cn83xx
2203 {
2204 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2205 uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */
2206 uint64_t addr : 32; /**< [ 31: 0](R/W) Address to read. A write to this register starts a read operation.
2207 Following are the subfields of the ADDR field.
2208
2209 \<31:24\> = Reserved. Must be zero.
2210
2211 \<23\> = When clear, the read accesses the physical function. When set,
2212 the read accesses the virtual function selected by \<22:12\>.
2213 Must be zero when SR-IOV is not used in the physical function.
2214 Must be zero in RC mode.
2215
2216 \<22:18\> = Reserved. Must be zero.
2217
2218 \<17:12\> = The selected virtual function. Must be zero when \<23\> is
2219 clear. Must be zero in RC mode.
2220
2221 \<11:0\> = Selects the PCIe config space register being read in the
2222 function.
2223
2224 Internal:
2225 \<31\> = asserts dbi_cs2 at PCIe core.
2226 \<23\> = dbi_vfunc_active to the core.
2227 \<22:12\> = dbi_vfunc_num to the core. */
2228 #else /* Word 0 - Little Endian */
2229 uint64_t addr : 32; /**< [ 31: 0](R/W) Address to read. A write to this register starts a read operation.
2230 Following are the subfields of the ADDR field.
2231
2232 \<31:24\> = Reserved. Must be zero.
2233
2234 \<23\> = When clear, the read accesses the physical function. When set,
2235 the read accesses the virtual function selected by \<22:12\>.
2236 Must be zero when SR-IOV is not used in the physical function.
2237 Must be zero in RC mode.
2238
2239 \<22:18\> = Reserved. Must be zero.
2240
2241 \<17:12\> = The selected virtual function. Must be zero when \<23\> is
2242 clear. Must be zero in RC mode.
2243
2244 \<11:0\> = Selects the PCIe config space register being read in the
2245 function.
2246
2247 Internal:
2248 \<31\> = asserts dbi_cs2 at PCIe core.
2249 \<23\> = dbi_vfunc_active to the core.
2250 \<22:12\> = dbi_vfunc_num to the core. */
2251 uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */
2252 #endif /* Word 0 - End */
2253 } cn83xx;
2254 };
2255 typedef union bdk_pemx_cfg_rd bdk_pemx_cfg_rd_t;
2256
2257 static inline uint64_t BDK_PEMX_CFG_RD(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CFG_RD(unsigned long a)2258 static inline uint64_t BDK_PEMX_CFG_RD(unsigned long a)
2259 {
2260 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2261 return 0x87e0c0000030ll + 0x1000000ll * ((a) & 0x3);
2262 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2263 return 0x87e0c0000030ll + 0x1000000ll * ((a) & 0x3);
2264 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2265 return 0x87e0c0000030ll + 0x1000000ll * ((a) & 0x7);
2266 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
2267 return 0x8e0000000020ll + 0x1000000000ll * ((a) & 0x3);
2268 __bdk_csr_fatal("PEMX_CFG_RD", 1, a, 0, 0, 0);
2269 }
2270
2271 #define typedef_BDK_PEMX_CFG_RD(a) bdk_pemx_cfg_rd_t
2272 #define bustype_BDK_PEMX_CFG_RD(a) BDK_CSR_TYPE_NCB
2273 #define basename_BDK_PEMX_CFG_RD(a) "PEMX_CFG_RD"
2274 #define device_bar_BDK_PEMX_CFG_RD(a) 0x0 /* PF_BAR0 */
2275 #define busnum_BDK_PEMX_CFG_RD(a) (a)
2276 #define arguments_BDK_PEMX_CFG_RD(a) (a),-1,-1,-1
2277
2278 /**
2279 * Register (NCB) pem#_cfg_tbl#
2280 *
2281 * PEM Configuration Table Registers
2282 * Software managed table with list of config registers to update when
2283 * PEM()_CTL_STATUS[LNK_ENB] is written with a 1. Typically the last
2284 * table action should be to set PEM()_CTL_STATUS[SCR_DONE].
2285 *
2286 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2287 *
2288 * This register is reset on cold reset.
2289 */
2290 union bdk_pemx_cfg_tblx
2291 {
2292 uint64_t u;
2293 struct bdk_pemx_cfg_tblx_s
2294 {
2295 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2296 uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. */
2297 uint64_t broadcast : 1; /**< [ 31: 31](R/W) When set, [PF] field is ignored and the write will occur to every Physical Function.
2298 When set and [VF_ACTIVE] is set, write will occur to VF0 within every Physical Function. */
2299 uint64_t reserved_30 : 1;
2300 uint64_t vf : 8; /**< [ 29: 22](R/W) The selected virtual function. Must be zero when [VF_ACTIVE] is clear, or when configured
2301 for RC mode. */
2302 uint64_t pf : 4; /**< [ 21: 18](R/W) Physical function number associated with this access. In RC mode, this
2303 field must be zero. */
2304 uint64_t vf_active : 1; /**< [ 17: 17](R/W) VF active.
2305 0 = Write accesses the physical function.
2306 1 = Write accesses the virtual function selected by [VF] belonging to [PF].
2307
2308 Must be zero when SR-IOV is not used in the physical function.
2309 Must be zero in RC mode. */
2310 uint64_t shadow : 1; /**< [ 16: 16](R/W) Shadow space.
2311 0 = The destination CSR is the standard PCI configuration write register.
2312 This may write WRSL fields.
2313 1 = The destination is the shadow CSR space, e.g. PCIEEP_BAR0_MASKL. */
2314 uint64_t wmask : 4; /**< [ 15: 12](R/W) Byte mask to apply when writing data. If set, the corresponding byte will be written. */
2315 uint64_t offset : 12; /**< [ 11: 0](R/W) Selects the PCIe config space register being written in the function. */
2316 #else /* Word 0 - Little Endian */
2317 uint64_t offset : 12; /**< [ 11: 0](R/W) Selects the PCIe config space register being written in the function. */
2318 uint64_t wmask : 4; /**< [ 15: 12](R/W) Byte mask to apply when writing data. If set, the corresponding byte will be written. */
2319 uint64_t shadow : 1; /**< [ 16: 16](R/W) Shadow space.
2320 0 = The destination CSR is the standard PCI configuration write register.
2321 This may write WRSL fields.
2322 1 = The destination is the shadow CSR space, e.g. PCIEEP_BAR0_MASKL. */
2323 uint64_t vf_active : 1; /**< [ 17: 17](R/W) VF active.
2324 0 = Write accesses the physical function.
2325 1 = Write accesses the virtual function selected by [VF] belonging to [PF].
2326
2327 Must be zero when SR-IOV is not used in the physical function.
2328 Must be zero in RC mode. */
2329 uint64_t pf : 4; /**< [ 21: 18](R/W) Physical function number associated with this access. In RC mode, this
2330 field must be zero. */
2331 uint64_t vf : 8; /**< [ 29: 22](R/W) The selected virtual function. Must be zero when [VF_ACTIVE] is clear, or when configured
2332 for RC mode. */
2333 uint64_t reserved_30 : 1;
2334 uint64_t broadcast : 1; /**< [ 31: 31](R/W) When set, [PF] field is ignored and the write will occur to every Physical Function.
2335 When set and [VF_ACTIVE] is set, write will occur to VF0 within every Physical Function. */
2336 uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. */
2337 #endif /* Word 0 - End */
2338 } s;
2339 /* struct bdk_pemx_cfg_tblx_s cn; */
2340 };
2341 typedef union bdk_pemx_cfg_tblx bdk_pemx_cfg_tblx_t;
2342
2343 static inline uint64_t BDK_PEMX_CFG_TBLX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_CFG_TBLX(unsigned long a,unsigned long b)2344 static inline uint64_t BDK_PEMX_CFG_TBLX(unsigned long a, unsigned long b)
2345 {
2346 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=1023)))
2347 return 0x8e0000002000ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0x3ff);
2348 __bdk_csr_fatal("PEMX_CFG_TBLX", 2, a, b, 0, 0);
2349 }
2350
2351 #define typedef_BDK_PEMX_CFG_TBLX(a,b) bdk_pemx_cfg_tblx_t
2352 #define bustype_BDK_PEMX_CFG_TBLX(a,b) BDK_CSR_TYPE_NCB
2353 #define basename_BDK_PEMX_CFG_TBLX(a,b) "PEMX_CFG_TBLX"
2354 #define device_bar_BDK_PEMX_CFG_TBLX(a,b) 0x0 /* PF_BAR0 */
2355 #define busnum_BDK_PEMX_CFG_TBLX(a,b) (a)
2356 #define arguments_BDK_PEMX_CFG_TBLX(a,b) (a),(b),-1,-1
2357
2358 /**
2359 * Register (NCB) pem#_cfg_tbl_size
2360 *
2361 * PEM Configuration Table Size Register
2362 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2363 *
2364 * This register is reset on cold reset.
2365 */
2366 union bdk_pemx_cfg_tbl_size
2367 {
2368 uint64_t u;
2369 struct bdk_pemx_cfg_tbl_size_s
2370 {
2371 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2372 uint64_t reserved_11_63 : 53;
2373 uint64_t size : 11; /**< [ 10: 0](R/W) The number of valid entries in PEM()_CFG_TBL(). When hardware plays out the
2374 PEM()_CFG_TBL() table, it will read PEM()_CFG_TBL() entries 0x0 through
2375 [SIZE]-1, or take no action if [SIZE] is 0x0.
2376
2377 Software, before rewriting PEM()_CFG_TBL(), should clear [SIZE], write all of
2378 the desired entries, then write the [SIZE] with the number of written entries. */
2379 #else /* Word 0 - Little Endian */
2380 uint64_t size : 11; /**< [ 10: 0](R/W) The number of valid entries in PEM()_CFG_TBL(). When hardware plays out the
2381 PEM()_CFG_TBL() table, it will read PEM()_CFG_TBL() entries 0x0 through
2382 [SIZE]-1, or take no action if [SIZE] is 0x0.
2383
2384 Software, before rewriting PEM()_CFG_TBL(), should clear [SIZE], write all of
2385 the desired entries, then write the [SIZE] with the number of written entries. */
2386 uint64_t reserved_11_63 : 53;
2387 #endif /* Word 0 - End */
2388 } s;
2389 /* struct bdk_pemx_cfg_tbl_size_s cn; */
2390 };
2391 typedef union bdk_pemx_cfg_tbl_size bdk_pemx_cfg_tbl_size_t;
2392
2393 static inline uint64_t BDK_PEMX_CFG_TBL_SIZE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CFG_TBL_SIZE(unsigned long a)2394 static inline uint64_t BDK_PEMX_CFG_TBL_SIZE(unsigned long a)
2395 {
2396 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
2397 return 0x8e0000000218ll + 0x1000000000ll * ((a) & 0x3);
2398 __bdk_csr_fatal("PEMX_CFG_TBL_SIZE", 1, a, 0, 0, 0);
2399 }
2400
2401 #define typedef_BDK_PEMX_CFG_TBL_SIZE(a) bdk_pemx_cfg_tbl_size_t
2402 #define bustype_BDK_PEMX_CFG_TBL_SIZE(a) BDK_CSR_TYPE_NCB
2403 #define basename_BDK_PEMX_CFG_TBL_SIZE(a) "PEMX_CFG_TBL_SIZE"
2404 #define device_bar_BDK_PEMX_CFG_TBL_SIZE(a) 0x0 /* PF_BAR0 */
2405 #define busnum_BDK_PEMX_CFG_TBL_SIZE(a) (a)
2406 #define arguments_BDK_PEMX_CFG_TBL_SIZE(a) (a),-1,-1,-1
2407
2408 /**
2409 * Register (NCB) pem#_cfg_wr
2410 *
2411 * PEM Configuration Write Register
2412 * This register allows write access to the configuration in the PCIe core, but is for
2413 * legacy application use. PEM()_PF()_CS()_PFCFG() and PEM()_PF()_VF()_VFCFG() should
2414 * typically be used instead.
2415 *
2416 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2417 *
2418 * This register is reset on MAC reset.
2419 */
2420 union bdk_pemx_cfg_wr
2421 {
2422 uint64_t u;
2423 struct bdk_pemx_cfg_wr_s
2424 {
2425 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2426 uint64_t data : 32; /**< [ 63: 32](R/W/H) Data to write. A write to this register starts a write operation. */
2427 uint64_t addr : 32; /**< [ 31: 0](R/W/H) Address to write. A write to this register starts a write operation.
2428 Following are the sub-fields of the ADDR field.
2429
2430 \<31\> When set, asserts dbi_cs2 at PCIe core.
2431 \<11:0\> The offset of the PCIe core CFG register being accessed. */
2432 #else /* Word 0 - Little Endian */
2433 uint64_t addr : 32; /**< [ 31: 0](R/W/H) Address to write. A write to this register starts a write operation.
2434 Following are the sub-fields of the ADDR field.
2435
2436 \<31\> When set, asserts dbi_cs2 at PCIe core.
2437 \<11:0\> The offset of the PCIe core CFG register being accessed. */
2438 uint64_t data : 32; /**< [ 63: 32](R/W/H) Data to write. A write to this register starts a write operation. */
2439 #endif /* Word 0 - End */
2440 } s;
2441 struct bdk_pemx_cfg_wr_cn9
2442 {
2443 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2444 uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. A write to this register starts a write operation. */
2445 uint64_t addr : 32; /**< [ 31: 0](R/W) Address to write. A write to this register starts a write operation.
2446 Following are the subfields of [ADDR].
2447
2448 \<31:30\> = Reserved. Must be zero.
2449
2450 \<29:22\> = The selected virtual function. Must be zero when \<17\> is
2451 clear. Must be zero in RC mode.
2452
2453 \<21:18\> = The selected physical function. Must be zero in RC mode.
2454
2455 \<17\> = When clear, the write accesses the physical function. When set,
2456 the write accesses the virtual function selected by \<29:22\>.
2457 Must be zero when SR-IOV is not used in the physical function.
2458 Must be zero in RC mode.
2459
2460 \<16\> = When clear, the write is the same as a config space write received
2461 from external. When set, the write can modify more fields than
2462 an external write could (i.e. configuration mask register).
2463
2464 Corresponds to the CS2 field in Byte2 of the EEPROM.
2465
2466 \<15\> = Must be 1.
2467
2468 \<14:12\> = Reserved. Must be zero.
2469
2470 \<11:0\> = Selects the PCIe config space register being written in the
2471 function.
2472
2473 Internal:
2474 \<16\> = asserts dbi_cs2 at PCIe core.
2475 \<17\> = dbi_vfunc_active to the core.
2476 \<29:22\> = dbi_vfunc_num to the core. */
2477 #else /* Word 0 - Little Endian */
2478 uint64_t addr : 32; /**< [ 31: 0](R/W) Address to write. A write to this register starts a write operation.
2479 Following are the subfields of [ADDR].
2480
2481 \<31:30\> = Reserved. Must be zero.
2482
2483 \<29:22\> = The selected virtual function. Must be zero when \<17\> is
2484 clear. Must be zero in RC mode.
2485
2486 \<21:18\> = The selected physical function. Must be zero in RC mode.
2487
2488 \<17\> = When clear, the write accesses the physical function. When set,
2489 the write accesses the virtual function selected by \<29:22\>.
2490 Must be zero when SR-IOV is not used in the physical function.
2491 Must be zero in RC mode.
2492
2493 \<16\> = When clear, the write is the same as a config space write received
2494 from external. When set, the write can modify more fields than
2495 an external write could (i.e. configuration mask register).
2496
2497 Corresponds to the CS2 field in Byte2 of the EEPROM.
2498
2499 \<15\> = Must be 1.
2500
2501 \<14:12\> = Reserved. Must be zero.
2502
2503 \<11:0\> = Selects the PCIe config space register being written in the
2504 function.
2505
2506 Internal:
2507 \<16\> = asserts dbi_cs2 at PCIe core.
2508 \<17\> = dbi_vfunc_active to the core.
2509 \<29:22\> = dbi_vfunc_num to the core. */
2510 uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. A write to this register starts a write operation. */
2511 #endif /* Word 0 - End */
2512 } cn9;
2513 /* struct bdk_pemx_cfg_wr_s cn81xx; */
2514 /* struct bdk_pemx_cfg_wr_s cn88xx; */
2515 struct bdk_pemx_cfg_wr_cn83xx
2516 {
2517 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2518 uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. A write to this register starts a write operation. */
2519 uint64_t addr : 32; /**< [ 31: 0](R/W) Address to write. A write to this register starts a write operation.
2520 Following are the subfields of the ADDR field.
2521
2522 \<31\> = When clear, the write is the same as a config space write received
2523 from external. When set, the write can modify more fields than
2524 an external write could (i.e. configuration mask register).
2525
2526 Corresponds to the CS2 field in Byte2 of the EEPROM.
2527
2528 \<30:24\> = Reserved. Must be zero.
2529
2530 \<23\> = When clear, the write accesses the physical function. When set,
2531 the write accesses the virtual function selected by \<22:12\>.
2532 Must be zero when SR-IOV is not used in the physical function.
2533 Must be zero in RC mode.
2534
2535 \<22:18\> = Reserved. Must be zero.
2536
2537 \<17:12\> = The selected virtual function. Must be zero when \<23\> is
2538 clear. Must be zero in RC mode.
2539
2540 \<11:0\> = Selects the PCIe config space register being written in the
2541 function.
2542
2543 Internal:
2544 \<31\> = asserts dbi_cs2 at PCIe core.
2545 \<23\> = dbi_vfunc_active to the core.
2546 \<22:12\> = dbi_vfunc_num to the core. */
2547 #else /* Word 0 - Little Endian */
2548 uint64_t addr : 32; /**< [ 31: 0](R/W) Address to write. A write to this register starts a write operation.
2549 Following are the subfields of the ADDR field.
2550
2551 \<31\> = When clear, the write is the same as a config space write received
2552 from external. When set, the write can modify more fields than
2553 an external write could (i.e. configuration mask register).
2554
2555 Corresponds to the CS2 field in Byte2 of the EEPROM.
2556
2557 \<30:24\> = Reserved. Must be zero.
2558
2559 \<23\> = When clear, the write accesses the physical function. When set,
2560 the write accesses the virtual function selected by \<22:12\>.
2561 Must be zero when SR-IOV is not used in the physical function.
2562 Must be zero in RC mode.
2563
2564 \<22:18\> = Reserved. Must be zero.
2565
2566 \<17:12\> = The selected virtual function. Must be zero when \<23\> is
2567 clear. Must be zero in RC mode.
2568
2569 \<11:0\> = Selects the PCIe config space register being written in the
2570 function.
2571
2572 Internal:
2573 \<31\> = asserts dbi_cs2 at PCIe core.
2574 \<23\> = dbi_vfunc_active to the core.
2575 \<22:12\> = dbi_vfunc_num to the core. */
2576 uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. A write to this register starts a write operation. */
2577 #endif /* Word 0 - End */
2578 } cn83xx;
2579 };
2580 typedef union bdk_pemx_cfg_wr bdk_pemx_cfg_wr_t;
2581
2582 static inline uint64_t BDK_PEMX_CFG_WR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CFG_WR(unsigned long a)2583 static inline uint64_t BDK_PEMX_CFG_WR(unsigned long a)
2584 {
2585 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2586 return 0x87e0c0000028ll + 0x1000000ll * ((a) & 0x3);
2587 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2588 return 0x87e0c0000028ll + 0x1000000ll * ((a) & 0x3);
2589 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2590 return 0x87e0c0000028ll + 0x1000000ll * ((a) & 0x7);
2591 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
2592 return 0x8e0000000018ll + 0x1000000000ll * ((a) & 0x3);
2593 __bdk_csr_fatal("PEMX_CFG_WR", 1, a, 0, 0, 0);
2594 }
2595
2596 #define typedef_BDK_PEMX_CFG_WR(a) bdk_pemx_cfg_wr_t
2597 #define bustype_BDK_PEMX_CFG_WR(a) BDK_CSR_TYPE_NCB
2598 #define basename_BDK_PEMX_CFG_WR(a) "PEMX_CFG_WR"
2599 #define device_bar_BDK_PEMX_CFG_WR(a) 0x0 /* PF_BAR0 */
2600 #define busnum_BDK_PEMX_CFG_WR(a) (a)
2601 #define arguments_BDK_PEMX_CFG_WR(a) (a),-1,-1,-1
2602
2603 /**
2604 * Register (NCB) pem#_clk_en
2605 *
2606 * PEM Clock Enable Register
2607 * This register contains the clock enable for CSCLK and PCE_CLK.
2608 *
2609 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2610 *
2611 * This register is reset on cold reset.
2612 */
2613 union bdk_pemx_clk_en
2614 {
2615 uint64_t u;
2616 struct bdk_pemx_clk_en_s
2617 {
2618 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2619 uint64_t reserved_5_63 : 59;
2620 uint64_t pemc_pceclkx_force : 1; /**< [ 4: 4](R/W) When set, the pclk is forced on at all times to the PEM core MAC memories.
2621 When clear, the pclk to the PEM core MAC memories can be gated in hardware. */
2622 uint64_t pemc_macclk_force : 1; /**< [ 3: 3](R/W) When set, aux_clk & radm_clk are forced on at all times to the PEM core MAC.
2623 When clear, aux_clk & radm_clk can be gated by the PEM core MAC. */
2624 uint64_t reserved_0_2 : 3;
2625 #else /* Word 0 - Little Endian */
2626 uint64_t reserved_0_2 : 3;
2627 uint64_t pemc_macclk_force : 1; /**< [ 3: 3](R/W) When set, aux_clk & radm_clk are forced on at all times to the PEM core MAC.
2628 When clear, aux_clk & radm_clk can be gated by the PEM core MAC. */
2629 uint64_t pemc_pceclkx_force : 1; /**< [ 4: 4](R/W) When set, the pclk is forced on at all times to the PEM core MAC memories.
2630 When clear, the pclk to the PEM core MAC memories can be gated in hardware. */
2631 uint64_t reserved_5_63 : 59;
2632 #endif /* Word 0 - End */
2633 } s;
2634 struct bdk_pemx_clk_en_cn9
2635 {
2636 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2637 uint64_t reserved_5_63 : 59;
2638 uint64_t pemc_pceclkx_force : 1; /**< [ 4: 4](R/W) When set, the pclk is forced on at all times to the PEM core MAC memories.
2639 When clear, the pclk to the PEM core MAC memories can be gated in hardware. */
2640 uint64_t pemc_macclk_force : 1; /**< [ 3: 3](R/W) When set, aux_clk & radm_clk are forced on at all times to the PEM core MAC.
2641 When clear, aux_clk & radm_clk can be gated by the PEM core MAC. */
2642 uint64_t pceclk_gate : 1; /**< [ 2: 2](R/W) When set, PCE_CLK is gated off in PEM core.
2643 When clear, PCE_CLK is enabled in PEM core. */
2644 uint64_t pemc_csclk_gate : 1; /**< [ 1: 1](R/W) When set, SCLK is gated off in PEM core.
2645 When clear, SCLK is enabled in PEM core. */
2646 uint64_t pemm_csclk_force : 1; /**< [ 0: 0](R/W) When set, CSCLK is forced on at all times in PEM main.
2647 When clear, CSCLK gating in PEM main is controlled by hardware. */
2648 #else /* Word 0 - Little Endian */
2649 uint64_t pemm_csclk_force : 1; /**< [ 0: 0](R/W) When set, CSCLK is forced on at all times in PEM main.
2650 When clear, CSCLK gating in PEM main is controlled by hardware. */
2651 uint64_t pemc_csclk_gate : 1; /**< [ 1: 1](R/W) When set, SCLK is gated off in PEM core.
2652 When clear, SCLK is enabled in PEM core. */
2653 uint64_t pceclk_gate : 1; /**< [ 2: 2](R/W) When set, PCE_CLK is gated off in PEM core.
2654 When clear, PCE_CLK is enabled in PEM core. */
2655 uint64_t pemc_macclk_force : 1; /**< [ 3: 3](R/W) When set, aux_clk & radm_clk are forced on at all times to the PEM core MAC.
2656 When clear, aux_clk & radm_clk can be gated by the PEM core MAC. */
2657 uint64_t pemc_pceclkx_force : 1; /**< [ 4: 4](R/W) When set, the pclk is forced on at all times to the PEM core MAC memories.
2658 When clear, the pclk to the PEM core MAC memories can be gated in hardware. */
2659 uint64_t reserved_5_63 : 59;
2660 #endif /* Word 0 - End */
2661 } cn9;
2662 struct bdk_pemx_clk_en_cn81xx
2663 {
2664 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2665 uint64_t reserved_2_63 : 62;
2666 uint64_t pceclk_gate : 1; /**< [ 1: 1](R/W/H) When set, PCE_CLK is gated off. When clear, PCE_CLK is enabled.
2667 Software should set this bit when the PEM is in reset or otherwise not
2668 being used in order to reduce power. */
2669 uint64_t csclk_gate : 1; /**< [ 0: 0](R/W/H) When set, CSCLK is gated off. When clear, CSCLK is enabled.
2670 Software should set this bit when the PEM is in reset or otherwise not
2671 being used in order to reduce power. */
2672 #else /* Word 0 - Little Endian */
2673 uint64_t csclk_gate : 1; /**< [ 0: 0](R/W/H) When set, CSCLK is gated off. When clear, CSCLK is enabled.
2674 Software should set this bit when the PEM is in reset or otherwise not
2675 being used in order to reduce power. */
2676 uint64_t pceclk_gate : 1; /**< [ 1: 1](R/W/H) When set, PCE_CLK is gated off. When clear, PCE_CLK is enabled.
2677 Software should set this bit when the PEM is in reset or otherwise not
2678 being used in order to reduce power. */
2679 uint64_t reserved_2_63 : 62;
2680 #endif /* Word 0 - End */
2681 } cn81xx;
2682 /* struct bdk_pemx_clk_en_cn81xx cn88xx; */
2683 struct bdk_pemx_clk_en_cn83xx
2684 {
2685 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2686 uint64_t reserved_2_63 : 62;
2687 uint64_t pceclk_gate : 1; /**< [ 1: 1](R/W/H) When set, PCE_CLK is gated off. When clear, PCE_CLK is enabled.
2688 PEM0 & PEM2 will come up with clocks disabled when configured as
2689 an RC i.e. PEM()_STRAP[PIMODE] set to 0x3.
2690 PEM1 & PEM3 always come up with clocks disabled. */
2691 uint64_t csclk_gate : 1; /**< [ 0: 0](R/W/H) When set, ECLK is gated off. When clear, ECLK is enabled.
2692 PEM0 & PEM2 will come up with clocks disabled when configured as
2693 an RC i.e. PEM()_STRAP[PIMODE] set to 0x3.
2694 PEM1 & PEM3 always come up with clocks disabled. */
2695 #else /* Word 0 - Little Endian */
2696 uint64_t csclk_gate : 1; /**< [ 0: 0](R/W/H) When set, ECLK is gated off. When clear, ECLK is enabled.
2697 PEM0 & PEM2 will come up with clocks disabled when configured as
2698 an RC i.e. PEM()_STRAP[PIMODE] set to 0x3.
2699 PEM1 & PEM3 always come up with clocks disabled. */
2700 uint64_t pceclk_gate : 1; /**< [ 1: 1](R/W/H) When set, PCE_CLK is gated off. When clear, PCE_CLK is enabled.
2701 PEM0 & PEM2 will come up with clocks disabled when configured as
2702 an RC i.e. PEM()_STRAP[PIMODE] set to 0x3.
2703 PEM1 & PEM3 always come up with clocks disabled. */
2704 uint64_t reserved_2_63 : 62;
2705 #endif /* Word 0 - End */
2706 } cn83xx;
2707 };
2708 typedef union bdk_pemx_clk_en bdk_pemx_clk_en_t;
2709
2710 static inline uint64_t BDK_PEMX_CLK_EN(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CLK_EN(unsigned long a)2711 static inline uint64_t BDK_PEMX_CLK_EN(unsigned long a)
2712 {
2713 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2714 return 0x87e0c0000400ll + 0x1000000ll * ((a) & 0x3);
2715 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2716 return 0x87e0c0000400ll + 0x1000000ll * ((a) & 0x3);
2717 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2718 return 0x87e0c0000400ll + 0x1000000ll * ((a) & 0x7);
2719 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
2720 return 0x8e00000000b8ll + 0x1000000000ll * ((a) & 0x3);
2721 __bdk_csr_fatal("PEMX_CLK_EN", 1, a, 0, 0, 0);
2722 }
2723
2724 #define typedef_BDK_PEMX_CLK_EN(a) bdk_pemx_clk_en_t
2725 #define bustype_BDK_PEMX_CLK_EN(a) BDK_CSR_TYPE_NCB
2726 #define basename_BDK_PEMX_CLK_EN(a) "PEMX_CLK_EN"
2727 #define device_bar_BDK_PEMX_CLK_EN(a) 0x0 /* PF_BAR0 */
2728 #define busnum_BDK_PEMX_CLK_EN(a) (a)
2729 #define arguments_BDK_PEMX_CLK_EN(a) (a),-1,-1,-1
2730
2731 /**
2732 * Register (NCB) pem#_cmerge_merged_pc
2733 *
2734 * PEM Merge Completions Merged Performance Counter Register
2735 * This register is a performance counter of how many completions merged within the
2736 * outbound completion merge units.
2737 *
2738 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2739 *
2740 * This register is reset on PEM domain reset.
2741 */
2742 union bdk_pemx_cmerge_merged_pc
2743 {
2744 uint64_t u;
2745 struct bdk_pemx_cmerge_merged_pc_s
2746 {
2747 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2748 uint64_t cmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO completion operation that merges with a previous
2749 read will increment this count. */
2750 #else /* Word 0 - Little Endian */
2751 uint64_t cmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO completion operation that merges with a previous
2752 read will increment this count. */
2753 #endif /* Word 0 - End */
2754 } s;
2755 /* struct bdk_pemx_cmerge_merged_pc_s cn; */
2756 };
2757 typedef union bdk_pemx_cmerge_merged_pc bdk_pemx_cmerge_merged_pc_t;
2758
2759 static inline uint64_t BDK_PEMX_CMERGE_MERGED_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CMERGE_MERGED_PC(unsigned long a)2760 static inline uint64_t BDK_PEMX_CMERGE_MERGED_PC(unsigned long a)
2761 {
2762 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
2763 return 0x8e00000001a8ll + 0x1000000000ll * ((a) & 0x3);
2764 __bdk_csr_fatal("PEMX_CMERGE_MERGED_PC", 1, a, 0, 0, 0);
2765 }
2766
2767 #define typedef_BDK_PEMX_CMERGE_MERGED_PC(a) bdk_pemx_cmerge_merged_pc_t
2768 #define bustype_BDK_PEMX_CMERGE_MERGED_PC(a) BDK_CSR_TYPE_NCB
2769 #define basename_BDK_PEMX_CMERGE_MERGED_PC(a) "PEMX_CMERGE_MERGED_PC"
2770 #define device_bar_BDK_PEMX_CMERGE_MERGED_PC(a) 0x0 /* PF_BAR0 */
2771 #define busnum_BDK_PEMX_CMERGE_MERGED_PC(a) (a)
2772 #define arguments_BDK_PEMX_CMERGE_MERGED_PC(a) (a),-1,-1,-1
2773
2774 /**
2775 * Register (NCB) pem#_cmerge_received_pc
2776 *
2777 * PEM Merge Completions Received Performance Counter Register
2778 * This register reports the number of reads that enter the outbound read merge unit.
2779 *
2780 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2781 *
2782 * This register is reset on PEM domain reset.
2783 */
2784 union bdk_pemx_cmerge_received_pc
2785 {
2786 uint64_t u;
2787 struct bdk_pemx_cmerge_received_pc_s
2788 {
2789 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2790 uint64_t cmerge_reads : 64; /**< [ 63: 0](R/W/H) Each NCBO completion operation increments this count. */
2791 #else /* Word 0 - Little Endian */
2792 uint64_t cmerge_reads : 64; /**< [ 63: 0](R/W/H) Each NCBO completion operation increments this count. */
2793 #endif /* Word 0 - End */
2794 } s;
2795 /* struct bdk_pemx_cmerge_received_pc_s cn; */
2796 };
2797 typedef union bdk_pemx_cmerge_received_pc bdk_pemx_cmerge_received_pc_t;
2798
2799 static inline uint64_t BDK_PEMX_CMERGE_RECEIVED_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CMERGE_RECEIVED_PC(unsigned long a)2800 static inline uint64_t BDK_PEMX_CMERGE_RECEIVED_PC(unsigned long a)
2801 {
2802 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
2803 return 0x8e00000001a0ll + 0x1000000000ll * ((a) & 0x3);
2804 __bdk_csr_fatal("PEMX_CMERGE_RECEIVED_PC", 1, a, 0, 0, 0);
2805 }
2806
2807 #define typedef_BDK_PEMX_CMERGE_RECEIVED_PC(a) bdk_pemx_cmerge_received_pc_t
2808 #define bustype_BDK_PEMX_CMERGE_RECEIVED_PC(a) BDK_CSR_TYPE_NCB
2809 #define basename_BDK_PEMX_CMERGE_RECEIVED_PC(a) "PEMX_CMERGE_RECEIVED_PC"
2810 #define device_bar_BDK_PEMX_CMERGE_RECEIVED_PC(a) 0x0 /* PF_BAR0 */
2811 #define busnum_BDK_PEMX_CMERGE_RECEIVED_PC(a) (a)
2812 #define arguments_BDK_PEMX_CMERGE_RECEIVED_PC(a) (a),-1,-1,-1
2813
2814 /**
2815 * Register (NCB) pem#_const_acc
2816 *
2817 * PEM Constant ACC Register
2818 * Contains contant attributes related to the PEM ACC tables.
2819 */
2820 union bdk_pemx_const_acc
2821 {
2822 uint64_t u;
2823 struct bdk_pemx_const_acc_s
2824 {
2825 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2826 uint64_t bits_huge : 16; /**< [ 63: 48](RO) Number of bits in the address aperture for a huge-sized ACC table entry. See
2827 PEM()_REG_HUGE()_ACC. */
2828 uint64_t num_huge : 16; /**< [ 47: 32](RO) Number of huge-sized ACC table entries. See PEM()_REG_HUGE()_ACC. */
2829 uint64_t bits_norm : 16; /**< [ 31: 16](RO) Number of bits in the address aperture for a normal-sized ACC table entry. See
2830 PEM()_REG_NORM()_ACC. */
2831 uint64_t num_norm : 16; /**< [ 15: 0](RO) Number of normal-sized ACC table entries. See PEM()_REG_NORM()_ACC. */
2832 #else /* Word 0 - Little Endian */
2833 uint64_t num_norm : 16; /**< [ 15: 0](RO) Number of normal-sized ACC table entries. See PEM()_REG_NORM()_ACC. */
2834 uint64_t bits_norm : 16; /**< [ 31: 16](RO) Number of bits in the address aperture for a normal-sized ACC table entry. See
2835 PEM()_REG_NORM()_ACC. */
2836 uint64_t num_huge : 16; /**< [ 47: 32](RO) Number of huge-sized ACC table entries. See PEM()_REG_HUGE()_ACC. */
2837 uint64_t bits_huge : 16; /**< [ 63: 48](RO) Number of bits in the address aperture for a huge-sized ACC table entry. See
2838 PEM()_REG_HUGE()_ACC. */
2839 #endif /* Word 0 - End */
2840 } s;
2841 /* struct bdk_pemx_const_acc_s cn; */
2842 };
2843 typedef union bdk_pemx_const_acc bdk_pemx_const_acc_t;
2844
2845 static inline uint64_t BDK_PEMX_CONST_ACC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CONST_ACC(unsigned long a)2846 static inline uint64_t BDK_PEMX_CONST_ACC(unsigned long a)
2847 {
2848 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
2849 return 0x8e0000000210ll + 0x1000000000ll * ((a) & 0x3);
2850 __bdk_csr_fatal("PEMX_CONST_ACC", 1, a, 0, 0, 0);
2851 }
2852
2853 #define typedef_BDK_PEMX_CONST_ACC(a) bdk_pemx_const_acc_t
2854 #define bustype_BDK_PEMX_CONST_ACC(a) BDK_CSR_TYPE_NCB
2855 #define basename_BDK_PEMX_CONST_ACC(a) "PEMX_CONST_ACC"
2856 #define device_bar_BDK_PEMX_CONST_ACC(a) 0x0 /* PF_BAR0 */
2857 #define busnum_BDK_PEMX_CONST_ACC(a) (a)
2858 #define arguments_BDK_PEMX_CONST_ACC(a) (a),-1,-1,-1
2859
2860 /**
2861 * Register (NCB) pem#_cpl_lut_valid
2862 *
2863 * PEM Completion Lookup Table Valid Register
2864 * This register specifies how many tags are outstanding for reads.
2865 *
2866 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2867 *
2868 * This register is reset on MAC reset.
2869 */
2870 union bdk_pemx_cpl_lut_valid
2871 {
2872 uint64_t u;
2873 struct bdk_pemx_cpl_lut_valid_s
2874 {
2875 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2876 uint64_t tag : 64; /**< [ 63: 0](RO/H) Bit vector set corresponds to an outstanding tag. */
2877 #else /* Word 0 - Little Endian */
2878 uint64_t tag : 64; /**< [ 63: 0](RO/H) Bit vector set corresponds to an outstanding tag. */
2879 #endif /* Word 0 - End */
2880 } s;
2881 /* struct bdk_pemx_cpl_lut_valid_s cn8; */
2882 struct bdk_pemx_cpl_lut_valid_cn9
2883 {
2884 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2885 uint64_t reserved_10_63 : 54;
2886 uint64_t tag : 10; /**< [ 9: 0](RO/H) Number of read tags outstanding for outbound reads on PCIe. */
2887 #else /* Word 0 - Little Endian */
2888 uint64_t tag : 10; /**< [ 9: 0](RO/H) Number of read tags outstanding for outbound reads on PCIe. */
2889 uint64_t reserved_10_63 : 54;
2890 #endif /* Word 0 - End */
2891 } cn9;
2892 };
2893 typedef union bdk_pemx_cpl_lut_valid bdk_pemx_cpl_lut_valid_t;
2894
2895 static inline uint64_t BDK_PEMX_CPL_LUT_VALID(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CPL_LUT_VALID(unsigned long a)2896 static inline uint64_t BDK_PEMX_CPL_LUT_VALID(unsigned long a)
2897 {
2898 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2899 return 0x87e0c0000098ll + 0x1000000ll * ((a) & 0x3);
2900 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2901 return 0x87e0c0000098ll + 0x1000000ll * ((a) & 0x3);
2902 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2903 return 0x87e0c0000098ll + 0x1000000ll * ((a) & 0x7);
2904 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
2905 return 0x8e0000000038ll + 0x1000000000ll * ((a) & 0x3);
2906 __bdk_csr_fatal("PEMX_CPL_LUT_VALID", 1, a, 0, 0, 0);
2907 }
2908
2909 #define typedef_BDK_PEMX_CPL_LUT_VALID(a) bdk_pemx_cpl_lut_valid_t
2910 #define bustype_BDK_PEMX_CPL_LUT_VALID(a) BDK_CSR_TYPE_NCB
2911 #define basename_BDK_PEMX_CPL_LUT_VALID(a) "PEMX_CPL_LUT_VALID"
2912 #define device_bar_BDK_PEMX_CPL_LUT_VALID(a) 0x0 /* PF_BAR0 */
2913 #define busnum_BDK_PEMX_CPL_LUT_VALID(a) (a)
2914 #define arguments_BDK_PEMX_CPL_LUT_VALID(a) (a),-1,-1,-1
2915
2916 /**
2917 * Register (NCB) pem#_csclk_active_pc
2918 *
2919 * PEM Conditional Coprocessor Clock Counter Register
2920 * This register counts conditional clocks for power management.
2921 *
2922 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2923 *
2924 * This register is reset on PEM domain reset.
2925 */
2926 union bdk_pemx_csclk_active_pc
2927 {
2928 uint64_t u;
2929 struct bdk_pemx_csclk_active_pc_s
2930 {
2931 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2932 uint64_t count : 64; /**< [ 63: 0](R/W/H) Count of conditional coprocessor-clock cycles since reset. */
2933 #else /* Word 0 - Little Endian */
2934 uint64_t count : 64; /**< [ 63: 0](R/W/H) Count of conditional coprocessor-clock cycles since reset. */
2935 #endif /* Word 0 - End */
2936 } s;
2937 /* struct bdk_pemx_csclk_active_pc_s cn; */
2938 };
2939 typedef union bdk_pemx_csclk_active_pc bdk_pemx_csclk_active_pc_t;
2940
2941 static inline uint64_t BDK_PEMX_CSCLK_ACTIVE_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CSCLK_ACTIVE_PC(unsigned long a)2942 static inline uint64_t BDK_PEMX_CSCLK_ACTIVE_PC(unsigned long a)
2943 {
2944 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
2945 return 0x8e0000000050ll + 0x1000000000ll * ((a) & 0x3);
2946 __bdk_csr_fatal("PEMX_CSCLK_ACTIVE_PC", 1, a, 0, 0, 0);
2947 }
2948
2949 #define typedef_BDK_PEMX_CSCLK_ACTIVE_PC(a) bdk_pemx_csclk_active_pc_t
2950 #define bustype_BDK_PEMX_CSCLK_ACTIVE_PC(a) BDK_CSR_TYPE_NCB
2951 #define basename_BDK_PEMX_CSCLK_ACTIVE_PC(a) "PEMX_CSCLK_ACTIVE_PC"
2952 #define device_bar_BDK_PEMX_CSCLK_ACTIVE_PC(a) 0x0 /* PF_BAR0 */
2953 #define busnum_BDK_PEMX_CSCLK_ACTIVE_PC(a) (a)
2954 #define arguments_BDK_PEMX_CSCLK_ACTIVE_PC(a) (a),-1,-1,-1
2955
2956 /**
2957 * Register (NCB) pem#_ctl_status
2958 *
2959 * PEM Control Status Register
2960 * This is a general control and status register of the PEM.
2961 *
2962 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2963 *
2964 * This register is reset on MAC cold reset. Note this differs from PEM()_CTL_STATUS2's reset.
2965 */
2966 union bdk_pemx_ctl_status
2967 {
2968 uint64_t u;
2969 struct bdk_pemx_ctl_status_s
2970 {
2971 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2972 uint64_t reserved_55_63 : 9;
2973 uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM. */
2974 uint64_t rd_flt : 1; /**< [ 51: 51](RO) Read fault.
2975
2976 0 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will
2977 return to the NCB/cores all-ones and non-fault.
2978 This is compatible with CN88XX pass 1.0.
2979 1 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will
2980 return to the NCB/cores all-ones and fault. In the case of a read by a core,
2981 this fault will cause a synchronous external abort in the core.
2982
2983 Config reads which are terminated by PCIe with an error (UR, etc), or config reads
2984 when the PEM is disabled or link is down, will return to the NCB/cores all-ones and
2985 non-fault regardless of this bit. */
2986 uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM
2987 block to force a parity error when it is later read. */
2988 uint64_t reserved_32_49 : 18;
2989 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a
2990 configuration read that does not carry a retry status. Until such time that the
2991 timeout occurs and retry status is received for a configuration read, the read
2992 will be resent. A value of 0 disables retries and treats a CPL retry as a CPL
2993 UR.
2994
2995 To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or
2996 less, although the PCI Express Base Specification allows up to 900ms for a
2997 device to send a successful completion. When enabled, only one CFG RD may be
2998 issued until either successful completion or CPL UR. */
2999 uint64_t reserved_12_15 : 4;
3000 uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */
3001 uint64_t pm_xpme : 1; /**< [ 10: 10](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_pme port. EP mode. */
3002 uint64_t ob_p_cmd : 1; /**< [ 9: 9](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core outband_pwrup_cmd
3003 port. EP mode. */
3004 uint64_t clk_req_n : 1; /**< [ 8: 8](R/W) Indicates that the application logic is ready to have reference clock
3005 removed. The application should set this signal when it is ready to
3006 have reference clock removed trhough either L1 PM Sub-states or L1 CPM.
3007 If the application does not want to remove reference clock it should
3008 set this clear this bit.
3009
3010 Internal:
3011 Controls app_clk_req_n input to the DW core. */
3012 uint64_t rdy_entr_l23 : 1; /**< [ 7: 7](R/W) Application ready to enter L23. Indication that the application is
3013 ready to enter the L23 state. This provides control of the L23 entry
3014 (in case certain tasks must be performed before going into L23).
3015 The Mac delays sending PM_Enter_L23 (in response to PM_Turn_Off)
3016 until this signal becomes active. When this signal has been asserted
3017 by the application, it must be kept asserted until L2 entry has completed
3018
3019 Internal:
3020 Controls app_ready_entr_l23 input to the DW core. */
3021 uint64_t reserved_5_6 : 2;
3022 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is
3023 active when in RC mode. */
3024 uint64_t reserved_3 : 1;
3025 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */
3026 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */
3027 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */
3028 #else /* Word 0 - Little Endian */
3029 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */
3030 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */
3031 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */
3032 uint64_t reserved_3 : 1;
3033 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is
3034 active when in RC mode. */
3035 uint64_t reserved_5_6 : 2;
3036 uint64_t rdy_entr_l23 : 1; /**< [ 7: 7](R/W) Application ready to enter L23. Indication that the application is
3037 ready to enter the L23 state. This provides control of the L23 entry
3038 (in case certain tasks must be performed before going into L23).
3039 The Mac delays sending PM_Enter_L23 (in response to PM_Turn_Off)
3040 until this signal becomes active. When this signal has been asserted
3041 by the application, it must be kept asserted until L2 entry has completed
3042
3043 Internal:
3044 Controls app_ready_entr_l23 input to the DW core. */
3045 uint64_t clk_req_n : 1; /**< [ 8: 8](R/W) Indicates that the application logic is ready to have reference clock
3046 removed. The application should set this signal when it is ready to
3047 have reference clock removed trhough either L1 PM Sub-states or L1 CPM.
3048 If the application does not want to remove reference clock it should
3049 set this clear this bit.
3050
3051 Internal:
3052 Controls app_clk_req_n input to the DW core. */
3053 uint64_t ob_p_cmd : 1; /**< [ 9: 9](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core outband_pwrup_cmd
3054 port. EP mode. */
3055 uint64_t pm_xpme : 1; /**< [ 10: 10](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_pme port. EP mode. */
3056 uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */
3057 uint64_t reserved_12_15 : 4;
3058 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a
3059 configuration read that does not carry a retry status. Until such time that the
3060 timeout occurs and retry status is received for a configuration read, the read
3061 will be resent. A value of 0 disables retries and treats a CPL retry as a CPL
3062 UR.
3063
3064 To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or
3065 less, although the PCI Express Base Specification allows up to 900ms for a
3066 device to send a successful completion. When enabled, only one CFG RD may be
3067 issued until either successful completion or CPL UR. */
3068 uint64_t reserved_32_49 : 18;
3069 uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM
3070 block to force a parity error when it is later read. */
3071 uint64_t rd_flt : 1; /**< [ 51: 51](RO) Read fault.
3072
3073 0 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will
3074 return to the NCB/cores all-ones and non-fault.
3075 This is compatible with CN88XX pass 1.0.
3076 1 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will
3077 return to the NCB/cores all-ones and fault. In the case of a read by a core,
3078 this fault will cause a synchronous external abort in the core.
3079
3080 Config reads which are terminated by PCIe with an error (UR, etc), or config reads
3081 when the PEM is disabled or link is down, will return to the NCB/cores all-ones and
3082 non-fault regardless of this bit. */
3083 uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM. */
3084 uint64_t reserved_55_63 : 9;
3085 #endif /* Word 0 - End */
3086 } s;
3087 struct bdk_pemx_ctl_status_cn88xxp1
3088 {
3089 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3090 uint64_t reserved_52_63 : 12;
3091 uint64_t rd_flt : 1; /**< [ 51: 51](RO) Read fault.
3092
3093 0 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will
3094 return to the NCB/cores all-ones and non-fault.
3095 This is compatible with CN88XX pass 1.0.
3096 1 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will
3097 return to the NCB/cores all-ones and fault. In the case of a read by a core,
3098 this fault will cause a synchronous external abort in the core.
3099
3100 Config reads which are terminated by PCIe with an error (UR, etc), or config reads
3101 when the PEM is disabled or link is down, will return to the NCB/cores all-ones and
3102 non-fault regardless of this bit. */
3103 uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM
3104 block to force a parity error when it is later read. */
3105 uint64_t reserved_48_49 : 2;
3106 uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */
3107 uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */
3108 uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */
3109 uint64_t reserved_32_33 : 2;
3110 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a
3111 configuration read that does not carry a retry status. Until such time that the
3112 timeout occurs and retry status is received for a configuration read, the read
3113 will be resent. A value of 0 disables retries and treats a CPL retry as a CPL
3114 UR.
3115
3116 To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or
3117 less, although the PCI Express Base Specification allows up to 900ms for a
3118 device to send a successful completion. When enabled, only one CFG RD may be
3119 issued until either successful completion or CPL UR. */
3120 uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */
3121 uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */
3122 uint64_t reserved_6_10 : 5;
3123 uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */
3124 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is
3125 active when in RC mode. */
3126 uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */
3127 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */
3128 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */
3129 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */
3130 #else /* Word 0 - Little Endian */
3131 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */
3132 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */
3133 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */
3134 uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */
3135 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is
3136 active when in RC mode. */
3137 uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */
3138 uint64_t reserved_6_10 : 5;
3139 uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */
3140 uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */
3141 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a
3142 configuration read that does not carry a retry status. Until such time that the
3143 timeout occurs and retry status is received for a configuration read, the read
3144 will be resent. A value of 0 disables retries and treats a CPL retry as a CPL
3145 UR.
3146
3147 To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or
3148 less, although the PCI Express Base Specification allows up to 900ms for a
3149 device to send a successful completion. When enabled, only one CFG RD may be
3150 issued until either successful completion or CPL UR. */
3151 uint64_t reserved_32_33 : 2;
3152 uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */
3153 uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */
3154 uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */
3155 uint64_t reserved_48_49 : 2;
3156 uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM
3157 block to force a parity error when it is later read. */
3158 uint64_t rd_flt : 1; /**< [ 51: 51](RO) Read fault.
3159
3160 0 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will
3161 return to the NCB/cores all-ones and non-fault.
3162 This is compatible with CN88XX pass 1.0.
3163 1 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will
3164 return to the NCB/cores all-ones and fault. In the case of a read by a core,
3165 this fault will cause a synchronous external abort in the core.
3166
3167 Config reads which are terminated by PCIe with an error (UR, etc), or config reads
3168 when the PEM is disabled or link is down, will return to the NCB/cores all-ones and
3169 non-fault regardless of this bit. */
3170 uint64_t reserved_52_63 : 12;
3171 #endif /* Word 0 - End */
3172 } cn88xxp1;
3173 struct bdk_pemx_ctl_status_cn9
3174 {
3175 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3176 uint64_t reserved_46_63 : 18;
3177 uint64_t auto_sd : 1; /**< [ 45: 45](RO/H) Link hardware autonomous speed disable. */
3178 uint64_t dnum : 5; /**< [ 44: 40](RO/H) Primary bus device number. */
3179 uint64_t pbus : 8; /**< [ 39: 32](RO/H) Primary bus number. */
3180 uint64_t reserved_16_31 : 16;
3181 uint64_t spares : 3; /**< [ 15: 13](R/W) Spare flops. */
3182 uint64_t scr_done : 1; /**< [ 12: 12](R/W) The ROM script (if present) can test this bit to see if the ROM script has
3183 already run. Typical usage is for the ROM script to test [SCR_DONE] and exit if
3184 true, else at the end of the ROM script, the script sets this bit. */
3185 uint64_t pm_xtoff : 1; /**< [ 11: 11](WO) When written with one, a single cycle pulse to request from application
3186 to generate a PM_Turn_Off message. RC mode.
3187
3188 Internal:
3189 Controls apps_pm_xmt_turnoff input to the DW core. */
3190 uint64_t reserved_9_10 : 2;
3191 uint64_t clk_req_n : 1; /**< [ 8: 8](R/W) Indicates that the application logic is ready to have reference clock
3192 removed. The application should set this signal when it is ready to
3193 have reference clock removed trhough either L1 PM Sub-states or L1 CPM.
3194 If the application does not want to remove reference clock it should
3195 set this clear this bit.
3196
3197 Internal:
3198 Controls app_clk_req_n input to the DW core. */
3199 uint64_t rdy_entr_l23 : 1; /**< [ 7: 7](R/W) Application ready to enter L23. Indication that the application is
3200 ready to enter the L23 state. This provides control of the L23 entry
3201 (in case certain tasks must be performed before going into L23).
3202 The Mac delays sending PM_Enter_L23 (in response to PM_Turn_Off)
3203 until this signal becomes active. When this signal has been asserted
3204 by the application, it must be kept asserted until L2 entry has completed
3205
3206 Internal:
3207 Controls app_ready_entr_l23 input to the DW core. */
3208 uint64_t margin_rdy : 1; /**< [ 6: 6](R/W) Margining ready. Indicates when the PHY ready to accept margining commands. This
3209 signal is reflected in PCIEEP_MRG_PORT_CAP_STAT[M_RDY] /
3210 PCIERC_MRG_PORT_CAP_STAT[M_RDY].
3211
3212 Internal:
3213 Controls app_margining_ready input to the DW core. */
3214 uint64_t frc_retry : 1; /**< [ 5: 5](R/W) When set, forces CRS status to be returned for any config access.
3215 Internal:
3216 Controls app_req_retry_en input to the DW core. */
3217 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear the link is disabled.
3218 Once set, can only be cleared by a MAC power reset.
3219
3220 Internal:
3221 Controls app_ltssm_en input to the DW core. */
3222 uint64_t l1_exit : 1; /**< [ 3: 3](R/W) L1 exit control.
3223 0 = Hardware is allowed to enter L1 power state and will only exit when woken
3224 up by the remote link partner or traffic arrives on NCBO or EBO busses.
3225 1 = Entry into L1 state is disabled and if already in L1 state, will force an
3226 exit.
3227
3228 Internal:
3229 Controls app_req_exit_l1 input high to the DW core. */
3230 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode.
3231 Internal:
3232 Controls diag_ctrl_bus[2] input to the DW core. */
3233 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted.
3234 Internal:
3235 Controls diag_ctrl_bus[1] input to the DW core. */
3236 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted.
3237 Internal:
3238 Controls diag_ctrl_bus[0] input to the DW core. */
3239 #else /* Word 0 - Little Endian */
3240 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted.
3241 Internal:
3242 Controls diag_ctrl_bus[0] input to the DW core. */
3243 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted.
3244 Internal:
3245 Controls diag_ctrl_bus[1] input to the DW core. */
3246 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode.
3247 Internal:
3248 Controls diag_ctrl_bus[2] input to the DW core. */
3249 uint64_t l1_exit : 1; /**< [ 3: 3](R/W) L1 exit control.
3250 0 = Hardware is allowed to enter L1 power state and will only exit when woken
3251 up by the remote link partner or traffic arrives on NCBO or EBO busses.
3252 1 = Entry into L1 state is disabled and if already in L1 state, will force an
3253 exit.
3254
3255 Internal:
3256 Controls app_req_exit_l1 input high to the DW core. */
3257 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear the link is disabled.
3258 Once set, can only be cleared by a MAC power reset.
3259
3260 Internal:
3261 Controls app_ltssm_en input to the DW core. */
3262 uint64_t frc_retry : 1; /**< [ 5: 5](R/W) When set, forces CRS status to be returned for any config access.
3263 Internal:
3264 Controls app_req_retry_en input to the DW core. */
3265 uint64_t margin_rdy : 1; /**< [ 6: 6](R/W) Margining ready. Indicates when the PHY ready to accept margining commands. This
3266 signal is reflected in PCIEEP_MRG_PORT_CAP_STAT[M_RDY] /
3267 PCIERC_MRG_PORT_CAP_STAT[M_RDY].
3268
3269 Internal:
3270 Controls app_margining_ready input to the DW core. */
3271 uint64_t rdy_entr_l23 : 1; /**< [ 7: 7](R/W) Application ready to enter L23. Indication that the application is
3272 ready to enter the L23 state. This provides control of the L23 entry
3273 (in case certain tasks must be performed before going into L23).
3274 The Mac delays sending PM_Enter_L23 (in response to PM_Turn_Off)
3275 until this signal becomes active. When this signal has been asserted
3276 by the application, it must be kept asserted until L2 entry has completed
3277
3278 Internal:
3279 Controls app_ready_entr_l23 input to the DW core. */
3280 uint64_t clk_req_n : 1; /**< [ 8: 8](R/W) Indicates that the application logic is ready to have reference clock
3281 removed. The application should set this signal when it is ready to
3282 have reference clock removed trhough either L1 PM Sub-states or L1 CPM.
3283 If the application does not want to remove reference clock it should
3284 set this clear this bit.
3285
3286 Internal:
3287 Controls app_clk_req_n input to the DW core. */
3288 uint64_t reserved_9_10 : 2;
3289 uint64_t pm_xtoff : 1; /**< [ 11: 11](WO) When written with one, a single cycle pulse to request from application
3290 to generate a PM_Turn_Off message. RC mode.
3291
3292 Internal:
3293 Controls apps_pm_xmt_turnoff input to the DW core. */
3294 uint64_t scr_done : 1; /**< [ 12: 12](R/W) The ROM script (if present) can test this bit to see if the ROM script has
3295 already run. Typical usage is for the ROM script to test [SCR_DONE] and exit if
3296 true, else at the end of the ROM script, the script sets this bit. */
3297 uint64_t spares : 3; /**< [ 15: 13](R/W) Spare flops. */
3298 uint64_t reserved_16_31 : 16;
3299 uint64_t pbus : 8; /**< [ 39: 32](RO/H) Primary bus number. */
3300 uint64_t dnum : 5; /**< [ 44: 40](RO/H) Primary bus device number. */
3301 uint64_t auto_sd : 1; /**< [ 45: 45](RO/H) Link hardware autonomous speed disable. */
3302 uint64_t reserved_46_63 : 18;
3303 #endif /* Word 0 - End */
3304 } cn9;
3305 struct bdk_pemx_ctl_status_cn81xx
3306 {
3307 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3308 uint64_t reserved_55_63 : 9;
3309 uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM.to improve
3310 small TLP performance. */
3311 uint64_t reserved_51 : 1;
3312 uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM
3313 block to force a parity error when it is later read. */
3314 uint64_t reserved_48_49 : 2;
3315 uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */
3316 uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */
3317 uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */
3318 uint64_t reserved_32_33 : 2;
3319 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a
3320 configuration read that does not carry a retry status. Until such time that the
3321 timeout occurs and retry status is received for a configuration read, the read
3322 will be resent. A value of 0 disables retries and treats a CPL retry as a CPL
3323 UR.
3324
3325 To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or
3326 less, although the PCI Express Base Specification allows up to 900ms for a
3327 device to send a successful completion. When enabled, only one CFG RD may be
3328 issued until either successful completion or CPL UR. */
3329 uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */
3330 uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */
3331 uint64_t reserved_6_10 : 5;
3332 uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */
3333 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is
3334 active when in RC mode. */
3335 uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */
3336 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */
3337 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */
3338 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */
3339 #else /* Word 0 - Little Endian */
3340 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */
3341 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */
3342 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */
3343 uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */
3344 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is
3345 active when in RC mode. */
3346 uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */
3347 uint64_t reserved_6_10 : 5;
3348 uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */
3349 uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */
3350 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a
3351 configuration read that does not carry a retry status. Until such time that the
3352 timeout occurs and retry status is received for a configuration read, the read
3353 will be resent. A value of 0 disables retries and treats a CPL retry as a CPL
3354 UR.
3355
3356 To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or
3357 less, although the PCI Express Base Specification allows up to 900ms for a
3358 device to send a successful completion. When enabled, only one CFG RD may be
3359 issued until either successful completion or CPL UR. */
3360 uint64_t reserved_32_33 : 2;
3361 uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */
3362 uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */
3363 uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */
3364 uint64_t reserved_48_49 : 2;
3365 uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM
3366 block to force a parity error when it is later read. */
3367 uint64_t reserved_51 : 1;
3368 uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM.to improve
3369 small TLP performance. */
3370 uint64_t reserved_55_63 : 9;
3371 #endif /* Word 0 - End */
3372 } cn81xx;
3373 struct bdk_pemx_ctl_status_cn83xx
3374 {
3375 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3376 uint64_t reserved_48_63 : 16;
3377 uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */
3378 uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */
3379 uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */
3380 uint64_t reserved_32_33 : 2;
3381 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a
3382 configuration read that does not carry a retry status. Until such time that the
3383 timeout occurs and retry status is received for a configuration read, the read
3384 will be resent. A value of 0 disables retries and treats a CPL retry as a CPL
3385 UR.
3386
3387 To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or
3388 less, although the PCI Express Base Specification allows up to 900ms for a
3389 device to send a successful completion. When enabled, only one CFG RD may be
3390 issued until either successful completion or CPL UR. */
3391 uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */
3392 uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */
3393 uint64_t pm_xpme : 1; /**< [ 10: 10](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_pme port. EP mode. */
3394 uint64_t ob_p_cmd : 1; /**< [ 9: 9](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core outband_pwrup_cmd
3395 port. EP mode. */
3396 uint64_t reserved_8 : 1;
3397 uint64_t reserved_7 : 1;
3398 uint64_t nf_ecrc : 1; /**< [ 6: 6](R/W) Do not forward peer-to-peer ECRC TLPs. */
3399 uint64_t reserved_5 : 1;
3400 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is
3401 active when in RC mode. */
3402 uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */
3403 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */
3404 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */
3405 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */
3406 #else /* Word 0 - Little Endian */
3407 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */
3408 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */
3409 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */
3410 uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */
3411 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is
3412 active when in RC mode. */
3413 uint64_t reserved_5 : 1;
3414 uint64_t nf_ecrc : 1; /**< [ 6: 6](R/W) Do not forward peer-to-peer ECRC TLPs. */
3415 uint64_t reserved_7 : 1;
3416 uint64_t reserved_8 : 1;
3417 uint64_t ob_p_cmd : 1; /**< [ 9: 9](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core outband_pwrup_cmd
3418 port. EP mode. */
3419 uint64_t pm_xpme : 1; /**< [ 10: 10](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_pme port. EP mode. */
3420 uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */
3421 uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */
3422 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a
3423 configuration read that does not carry a retry status. Until such time that the
3424 timeout occurs and retry status is received for a configuration read, the read
3425 will be resent. A value of 0 disables retries and treats a CPL retry as a CPL
3426 UR.
3427
3428 To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or
3429 less, although the PCI Express Base Specification allows up to 900ms for a
3430 device to send a successful completion. When enabled, only one CFG RD may be
3431 issued until either successful completion or CPL UR. */
3432 uint64_t reserved_32_33 : 2;
3433 uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */
3434 uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */
3435 uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */
3436 uint64_t reserved_48_63 : 16;
3437 #endif /* Word 0 - End */
3438 } cn83xx;
3439 struct bdk_pemx_ctl_status_cn88xxp2
3440 {
3441 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3442 uint64_t reserved_55_63 : 9;
3443 uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM. */
3444 uint64_t reserved_51 : 1;
3445 uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM
3446 block to force a parity error when it is later read. */
3447 uint64_t reserved_48_49 : 2;
3448 uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */
3449 uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */
3450 uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */
3451 uint64_t reserved_32_33 : 2;
3452 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a
3453 configuration read that does not carry a retry status. Until such time that the
3454 timeout occurs and retry status is received for a configuration read, the read
3455 will be resent. A value of 0 disables retries and treats a CPL retry as a CPL
3456 UR.
3457
3458 To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or
3459 less, although the PCI Express Base Specification allows up to 900ms for a
3460 device to send a successful completion. When enabled, only one CFG RD may be
3461 issued until either successful completion or CPL UR. */
3462 uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */
3463 uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */
3464 uint64_t reserved_6_10 : 5;
3465 uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */
3466 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is
3467 active when in RC mode. */
3468 uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */
3469 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */
3470 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */
3471 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */
3472 #else /* Word 0 - Little Endian */
3473 uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */
3474 uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */
3475 uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */
3476 uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */
3477 uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is
3478 active when in RC mode. */
3479 uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */
3480 uint64_t reserved_6_10 : 5;
3481 uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */
3482 uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */
3483 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a
3484 configuration read that does not carry a retry status. Until such time that the
3485 timeout occurs and retry status is received for a configuration read, the read
3486 will be resent. A value of 0 disables retries and treats a CPL retry as a CPL
3487 UR.
3488
3489 To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or
3490 less, although the PCI Express Base Specification allows up to 900ms for a
3491 device to send a successful completion. When enabled, only one CFG RD may be
3492 issued until either successful completion or CPL UR. */
3493 uint64_t reserved_32_33 : 2;
3494 uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */
3495 uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */
3496 uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */
3497 uint64_t reserved_48_49 : 2;
3498 uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM
3499 block to force a parity error when it is later read. */
3500 uint64_t reserved_51 : 1;
3501 uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM. */
3502 uint64_t reserved_55_63 : 9;
3503 #endif /* Word 0 - End */
3504 } cn88xxp2;
3505 };
3506 typedef union bdk_pemx_ctl_status bdk_pemx_ctl_status_t;
3507
3508 static inline uint64_t BDK_PEMX_CTL_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CTL_STATUS(unsigned long a)3509 static inline uint64_t BDK_PEMX_CTL_STATUS(unsigned long a)
3510 {
3511 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
3512 return 0x87e0c0000000ll + 0x1000000ll * ((a) & 0x3);
3513 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
3514 return 0x87e0c0000000ll + 0x1000000ll * ((a) & 0x3);
3515 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
3516 return 0x87e0c0000000ll + 0x1000000ll * ((a) & 0x7);
3517 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
3518 return 0x8e0000000000ll + 0x1000000000ll * ((a) & 0x3);
3519 __bdk_csr_fatal("PEMX_CTL_STATUS", 1, a, 0, 0, 0);
3520 }
3521
3522 #define typedef_BDK_PEMX_CTL_STATUS(a) bdk_pemx_ctl_status_t
3523 #define bustype_BDK_PEMX_CTL_STATUS(a) BDK_CSR_TYPE_NCB
3524 #define basename_BDK_PEMX_CTL_STATUS(a) "PEMX_CTL_STATUS"
3525 #define device_bar_BDK_PEMX_CTL_STATUS(a) 0x0 /* PF_BAR0 */
3526 #define busnum_BDK_PEMX_CTL_STATUS(a) (a)
3527 #define arguments_BDK_PEMX_CTL_STATUS(a) (a),-1,-1,-1
3528
3529 /**
3530 * Register (NCB) pem#_ctl_status2
3531 *
3532 * PEM Control Status 2 Register
3533 * This register contains additional general control and status of the PEM.
3534 *
3535 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3536 *
3537 * This register is reset on PEM domain reset. Note this differs from PEM()_CTL_STATUS's reset.
3538 */
3539 union bdk_pemx_ctl_status2
3540 {
3541 uint64_t u;
3542 struct bdk_pemx_ctl_status2_s
3543 {
3544 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3545 uint64_t reserved_33_63 : 31;
3546 uint64_t trgt1_ecc_cor_dis : 1; /**< [ 32: 32](R/W) Disable correction of single bit ECC errors on TRGT1 data from PEMC to PEMM. */
3547 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 655,360 ns clocks to wait for a CPL to an
3548 outbound configuration read that does not carry a retry status. Until such time
3549 that the timeout occurs and retry status is received for a configuration read,
3550 the read will be resent. A value of zero disables retries and treats a CPL retry
3551 as a CPL UR.
3552
3553 To use, it is recommended [CFG_RTRY] be set value corresponding to 200 ms or
3554 less, although the PCI express base specification allows up to 900 ms for a
3555 device to send a successful completion. When enabled, only one CFG RD may be
3556 issued until either successful completion or CPL UR. */
3557 uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time * 0x10000 in core clocks to wait for the TLP FIFOs to be able to unload an entry.
3558 If there is no forward progress, such that the timeout occurs, credits are returned to the
3559 SLI and an interrupt (if enabled) is asserted. Any more TLPs received are dropped on the
3560 floor and the credits associated with those TLPs are returned as well. Note that 0xFFFF is
3561 a reserved value that will put the PEM in the 'forward progress stopped' state
3562 immediately. This state holds until a MAC reset is received. */
3563 #else /* Word 0 - Little Endian */
3564 uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time * 0x10000 in core clocks to wait for the TLP FIFOs to be able to unload an entry.
3565 If there is no forward progress, such that the timeout occurs, credits are returned to the
3566 SLI and an interrupt (if enabled) is asserted. Any more TLPs received are dropped on the
3567 floor and the credits associated with those TLPs are returned as well. Note that 0xFFFF is
3568 a reserved value that will put the PEM in the 'forward progress stopped' state
3569 immediately. This state holds until a MAC reset is received. */
3570 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 655,360 ns clocks to wait for a CPL to an
3571 outbound configuration read that does not carry a retry status. Until such time
3572 that the timeout occurs and retry status is received for a configuration read,
3573 the read will be resent. A value of zero disables retries and treats a CPL retry
3574 as a CPL UR.
3575
3576 To use, it is recommended [CFG_RTRY] be set value corresponding to 200 ms or
3577 less, although the PCI express base specification allows up to 900 ms for a
3578 device to send a successful completion. When enabled, only one CFG RD may be
3579 issued until either successful completion or CPL UR. */
3580 uint64_t trgt1_ecc_cor_dis : 1; /**< [ 32: 32](R/W) Disable correction of single bit ECC errors on TRGT1 data from PEMC to PEMM. */
3581 uint64_t reserved_33_63 : 31;
3582 #endif /* Word 0 - End */
3583 } s;
3584 struct bdk_pemx_ctl_status2_cn8
3585 {
3586 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3587 uint64_t reserved_16_63 : 48;
3588 uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time * 0x10000 in core clocks to wait for the TLP FIFOs to be able to unload an entry.
3589 If there is no forward progress, such that the timeout occurs, credits are returned to the
3590 SLI and an interrupt (if enabled) is asserted. Any more TLPs received are dropped on the
3591 floor and the credits associated with those TLPs are returned as well. Note that 0xFFFF is
3592 a reserved value that will put the PEM in the 'forward progress stopped' state
3593 immediately. This state holds until a MAC reset is received. */
3594 #else /* Word 0 - Little Endian */
3595 uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time * 0x10000 in core clocks to wait for the TLP FIFOs to be able to unload an entry.
3596 If there is no forward progress, such that the timeout occurs, credits are returned to the
3597 SLI and an interrupt (if enabled) is asserted. Any more TLPs received are dropped on the
3598 floor and the credits associated with those TLPs are returned as well. Note that 0xFFFF is
3599 a reserved value that will put the PEM in the 'forward progress stopped' state
3600 immediately. This state holds until a MAC reset is received. */
3601 uint64_t reserved_16_63 : 48;
3602 #endif /* Word 0 - End */
3603 } cn8;
3604 struct bdk_pemx_ctl_status2_cn9
3605 {
3606 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3607 uint64_t reserved_33_63 : 31;
3608 uint64_t trgt1_ecc_cor_dis : 1; /**< [ 32: 32](R/W) Disable correction of single bit ECC errors on TRGT1 data from PEMC to PEMM. */
3609 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 655,360 ns clocks to wait for a CPL to an
3610 outbound configuration read that does not carry a retry status. Until such time
3611 that the timeout occurs and retry status is received for a configuration read,
3612 the read will be resent. A value of zero disables retries and treats a CPL retry
3613 as a CPL UR.
3614
3615 To use, it is recommended [CFG_RTRY] be set value corresponding to 200 ms or
3616 less, although the PCI express base specification allows up to 900 ms for a
3617 device to send a successful completion. When enabled, only one CFG RD may be
3618 issued until either successful completion or CPL UR. */
3619 uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time in units of 655,360 ns clocks to wait for the TLP FIFOs to be able to
3620 unload an outbound entry. If there is no forward progress, such that the timeout
3621 occurs, credits are returned to the originating bus and an interrupt (if enabled)
3622 is asserted. Further TLPs received are dropped on the floor and the credits
3623 associated with those TLPs are returned as well. Non-Posted are dropped with a
3624 completion returned (all 1's if config else completion with fault). Note that 0x0000
3625 will block detection of no forward progress. Note that 0xFFFF is a reserved value
3626 that will immediately place the PEM into the 'forward progress stopped' state.
3627 This state holds until a MAC reset is received. */
3628 #else /* Word 0 - Little Endian */
3629 uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time in units of 655,360 ns clocks to wait for the TLP FIFOs to be able to
3630 unload an outbound entry. If there is no forward progress, such that the timeout
3631 occurs, credits are returned to the originating bus and an interrupt (if enabled)
3632 is asserted. Further TLPs received are dropped on the floor and the credits
3633 associated with those TLPs are returned as well. Non-Posted are dropped with a
3634 completion returned (all 1's if config else completion with fault). Note that 0x0000
3635 will block detection of no forward progress. Note that 0xFFFF is a reserved value
3636 that will immediately place the PEM into the 'forward progress stopped' state.
3637 This state holds until a MAC reset is received. */
3638 uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 655,360 ns clocks to wait for a CPL to an
3639 outbound configuration read that does not carry a retry status. Until such time
3640 that the timeout occurs and retry status is received for a configuration read,
3641 the read will be resent. A value of zero disables retries and treats a CPL retry
3642 as a CPL UR.
3643
3644 To use, it is recommended [CFG_RTRY] be set value corresponding to 200 ms or
3645 less, although the PCI express base specification allows up to 900 ms for a
3646 device to send a successful completion. When enabled, only one CFG RD may be
3647 issued until either successful completion or CPL UR. */
3648 uint64_t trgt1_ecc_cor_dis : 1; /**< [ 32: 32](R/W) Disable correction of single bit ECC errors on TRGT1 data from PEMC to PEMM. */
3649 uint64_t reserved_33_63 : 31;
3650 #endif /* Word 0 - End */
3651 } cn9;
3652 };
3653 typedef union bdk_pemx_ctl_status2 bdk_pemx_ctl_status2_t;
3654
3655 static inline uint64_t BDK_PEMX_CTL_STATUS2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CTL_STATUS2(unsigned long a)3656 static inline uint64_t BDK_PEMX_CTL_STATUS2(unsigned long a)
3657 {
3658 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
3659 return 0x87e0c0000008ll + 0x1000000ll * ((a) & 0x3);
3660 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
3661 return 0x87e0c0000008ll + 0x1000000ll * ((a) & 0x3);
3662 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
3663 return 0x87e0c0000008ll + 0x1000000ll * ((a) & 0x7);
3664 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
3665 return 0x8e0000000120ll + 0x1000000000ll * ((a) & 0x3);
3666 __bdk_csr_fatal("PEMX_CTL_STATUS2", 1, a, 0, 0, 0);
3667 }
3668
3669 #define typedef_BDK_PEMX_CTL_STATUS2(a) bdk_pemx_ctl_status2_t
3670 #define bustype_BDK_PEMX_CTL_STATUS2(a) BDK_CSR_TYPE_NCB
3671 #define basename_BDK_PEMX_CTL_STATUS2(a) "PEMX_CTL_STATUS2"
3672 #define device_bar_BDK_PEMX_CTL_STATUS2(a) 0x0 /* PF_BAR0 */
3673 #define busnum_BDK_PEMX_CTL_STATUS2(a) (a)
3674 #define arguments_BDK_PEMX_CTL_STATUS2(a) (a),-1,-1,-1
3675
3676 /**
3677 * Register (RSL) pem#_ctl_stream
3678 *
3679 * PEM EP Mode Stream Register
3680 * This register is used to generate the SMMU stream ID when in endpoint mode.
3681 */
3682 union bdk_pemx_ctl_stream
3683 {
3684 uint64_t u;
3685 struct bdk_pemx_ctl_stream_s
3686 {
3687 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3688 uint64_t reserved_32_63 : 32;
3689 uint64_t epsbmax : 16; /**< [ 31: 16](R/W) The maximum SSU stream ID that will be generated by inbound endpoint
3690 transactions. See [EPSBBASE]. Resets to PCC_DEV_CON_E::PCIERC({a}) where {a} is
3691 the PEM number. */
3692 uint64_t epsbbase : 16; /**< [ 15: 0](R/W) The base SMMU stream ID that will be generated by inbound endpoint
3693 transactions. Resets to PCC_DEV_CON_E::PCIERC({a}) where {a} is the PEM number.
3694
3695 When in EP mode:
3696 _ stream id = min( (PCI_stream_id\<15:0\> + [EPSBBASE]), [EPSBMAX]).
3697
3698 When [EPSBBASE]/[EPSBMAX] are changed from the reset values then:
3699
3700 * Different endpoint requestors will map to different SMMU streams, enabling the
3701 possibility of having different SMMU translations for each endpoint requestor.
3702
3703 * Software must ensure that [EPSBBASE]...[EPSBMAX] are non-overlapping between
3704 all endpoint PEMs and non-overlapping with existing PCC devices.
3705
3706 * IOBN()_SLITAG()_CONTROL[BITS_DIS] must be set. */
3707 #else /* Word 0 - Little Endian */
3708 uint64_t epsbbase : 16; /**< [ 15: 0](R/W) The base SMMU stream ID that will be generated by inbound endpoint
3709 transactions. Resets to PCC_DEV_CON_E::PCIERC({a}) where {a} is the PEM number.
3710
3711 When in EP mode:
3712 _ stream id = min( (PCI_stream_id\<15:0\> + [EPSBBASE]), [EPSBMAX]).
3713
3714 When [EPSBBASE]/[EPSBMAX] are changed from the reset values then:
3715
3716 * Different endpoint requestors will map to different SMMU streams, enabling the
3717 possibility of having different SMMU translations for each endpoint requestor.
3718
3719 * Software must ensure that [EPSBBASE]...[EPSBMAX] are non-overlapping between
3720 all endpoint PEMs and non-overlapping with existing PCC devices.
3721
3722 * IOBN()_SLITAG()_CONTROL[BITS_DIS] must be set. */
3723 uint64_t epsbmax : 16; /**< [ 31: 16](R/W) The maximum SSU stream ID that will be generated by inbound endpoint
3724 transactions. See [EPSBBASE]. Resets to PCC_DEV_CON_E::PCIERC({a}) where {a} is
3725 the PEM number. */
3726 uint64_t reserved_32_63 : 32;
3727 #endif /* Word 0 - End */
3728 } s;
3729 /* struct bdk_pemx_ctl_stream_s cn; */
3730 };
3731 typedef union bdk_pemx_ctl_stream bdk_pemx_ctl_stream_t;
3732
3733 static inline uint64_t BDK_PEMX_CTL_STREAM(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_CTL_STREAM(unsigned long a)3734 static inline uint64_t BDK_PEMX_CTL_STREAM(unsigned long a)
3735 {
3736 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
3737 return 0x87e0c00004d0ll + 0x1000000ll * ((a) & 0x3);
3738 __bdk_csr_fatal("PEMX_CTL_STREAM", 1, a, 0, 0, 0);
3739 }
3740
3741 #define typedef_BDK_PEMX_CTL_STREAM(a) bdk_pemx_ctl_stream_t
3742 #define bustype_BDK_PEMX_CTL_STREAM(a) BDK_CSR_TYPE_RSL
3743 #define basename_BDK_PEMX_CTL_STREAM(a) "PEMX_CTL_STREAM"
3744 #define device_bar_BDK_PEMX_CTL_STREAM(a) 0x0 /* PF_BAR0 */
3745 #define busnum_BDK_PEMX_CTL_STREAM(a) (a)
3746 #define arguments_BDK_PEMX_CTL_STREAM(a) (a),-1,-1,-1
3747
3748 /**
3749 * Register (RSL) pem#_dbg_ena_w1c
3750 *
3751 * PEM Debug Information Enable Clear Register
3752 * This register clears interrupt enable bits.
3753 */
3754 union bdk_pemx_dbg_ena_w1c
3755 {
3756 uint64_t u;
3757 struct bdk_pemx_dbg_ena_w1c_s
3758 {
3759 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3760 uint64_t reserved_58_63 : 6;
3761 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[M2S_PE]. */
3762 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
3763 uint64_t reserved_51_55 : 5;
3764 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
3765 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
3766 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
3767 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
3768 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
3769 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
3770 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
3771 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
3772 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
3773 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
3774 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
3775 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
3776 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
3777 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
3778 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
3779 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
3780 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
3781 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
3782 uint64_t reserved_32 : 1;
3783 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */
3784 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
3785 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP].
3786 Internal:
3787 radm_rcvd_wreq_poisoned. */
3788 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP].
3789 Internal:
3790 radm_rcvd_cpl_poisoned. */
3791 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP].
3792 Internal:
3793 radm_mlf_tlp_err. */
3794 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS].
3795 Internal:
3796 radm_rcvd_ur_req. */
3797 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */
3798 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA].
3799 Internal:
3800 radm_rcvd_cpl_ca. */
3801 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR].
3802 Internal:
3803 radm_rcvd_cpl_ur. */
3804 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC].
3805 Internal:
3806 radm_unexp_cpl_err. */
3807 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO].
3808 Internal:
3809 radm_qoverflow. */
3810 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV].
3811 Internal:
3812 (opt. checks) int_xadm_fc_prot_err. */
3813 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE].
3814 Internal:
3815 rmlh_rcvd_err. */
3816 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT].
3817 Internal:
3818 rtlh_fc_prot_err. */
3819 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD].
3820 Internal:
3821 rdlh_prot_err. */
3822 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE].
3823 Internal:
3824 rdlh_bad_tlp_err. */
3825 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE].
3826 Internal:
3827 rdlh_bad_dllp_err. */
3828 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE].
3829 Internal:
3830 xdlh_replay_num_rlover_err. */
3831 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE].
3832 Internal:
3833 xdlh_replay_timeout_err. */
3834 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO].
3835 Internal:
3836 pedc_radm_cpl_timeout. */
3837 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM].
3838 Internal:
3839 pedc_radm_vendor_msg. */
3840 uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RUMEP].
3841 Internal:
3842 pedc_radm_msg_unlock. */
3843 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC].
3844 Internal:
3845 pedc_radm_pm_to_ack. */
3846 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC].
3847 Internal:
3848 pedc_radm_pm_pme. */
3849 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC].
3850 Internal:
3851 pedc_radm_fatal_err. */
3852 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC].
3853 Internal:
3854 pedc_radm_nonfatal_err. */
3855 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC].
3856 Internal:
3857 pedc_radm_correctable_err. */
3858 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON].
3859 Internal:
3860 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
3861 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE].
3862 Internal:
3863 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
3864 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE].
3865 Internal:
3866 pedc_radm_trgt1_dllp_abort &
3867 pedc__radm_trgt1_eot. */
3868 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL].
3869 Internal:
3870 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
3871 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON].
3872 Internal:
3873 peai__client0_tlp_ep & peai__client0_tlp_hv or
3874 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
3875 #else /* Word 0 - Little Endian */
3876 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON].
3877 Internal:
3878 peai__client0_tlp_ep & peai__client0_tlp_hv or
3879 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
3880 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL].
3881 Internal:
3882 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
3883 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE].
3884 Internal:
3885 pedc_radm_trgt1_dllp_abort &
3886 pedc__radm_trgt1_eot. */
3887 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE].
3888 Internal:
3889 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
3890 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON].
3891 Internal:
3892 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
3893 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC].
3894 Internal:
3895 pedc_radm_correctable_err. */
3896 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC].
3897 Internal:
3898 pedc_radm_nonfatal_err. */
3899 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC].
3900 Internal:
3901 pedc_radm_fatal_err. */
3902 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC].
3903 Internal:
3904 pedc_radm_pm_pme. */
3905 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC].
3906 Internal:
3907 pedc_radm_pm_to_ack. */
3908 uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RUMEP].
3909 Internal:
3910 pedc_radm_msg_unlock. */
3911 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM].
3912 Internal:
3913 pedc_radm_vendor_msg. */
3914 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO].
3915 Internal:
3916 pedc_radm_cpl_timeout. */
3917 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE].
3918 Internal:
3919 xdlh_replay_timeout_err. */
3920 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE].
3921 Internal:
3922 xdlh_replay_num_rlover_err. */
3923 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE].
3924 Internal:
3925 rdlh_bad_dllp_err. */
3926 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE].
3927 Internal:
3928 rdlh_bad_tlp_err. */
3929 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD].
3930 Internal:
3931 rdlh_prot_err. */
3932 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT].
3933 Internal:
3934 rtlh_fc_prot_err. */
3935 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE].
3936 Internal:
3937 rmlh_rcvd_err. */
3938 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV].
3939 Internal:
3940 (opt. checks) int_xadm_fc_prot_err. */
3941 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO].
3942 Internal:
3943 radm_qoverflow. */
3944 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC].
3945 Internal:
3946 radm_unexp_cpl_err. */
3947 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR].
3948 Internal:
3949 radm_rcvd_cpl_ur. */
3950 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA].
3951 Internal:
3952 radm_rcvd_cpl_ca. */
3953 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */
3954 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS].
3955 Internal:
3956 radm_rcvd_ur_req. */
3957 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP].
3958 Internal:
3959 radm_mlf_tlp_err. */
3960 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP].
3961 Internal:
3962 radm_rcvd_cpl_poisoned. */
3963 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP].
3964 Internal:
3965 radm_rcvd_wreq_poisoned. */
3966 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
3967 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */
3968 uint64_t reserved_32 : 1;
3969 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
3970 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
3971 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
3972 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
3973 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
3974 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
3975 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
3976 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
3977 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
3978 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
3979 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
3980 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
3981 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
3982 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
3983 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
3984 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
3985 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
3986 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
3987 uint64_t reserved_51_55 : 5;
3988 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
3989 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[M2S_PE]. */
3990 uint64_t reserved_58_63 : 6;
3991 #endif /* Word 0 - End */
3992 } s;
3993 struct bdk_pemx_dbg_ena_w1c_cn88xxp1
3994 {
3995 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3996 uint64_t reserved_57_63 : 7;
3997 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
3998 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
3999 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
4000 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
4001 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */
4002 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */
4003 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
4004 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
4005 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
4006 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
4007 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
4008 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
4009 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
4010 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
4011 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
4012 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
4013 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
4014 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
4015 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
4016 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
4017 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
4018 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
4019 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
4020 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
4021 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */
4022 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */
4023 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
4024 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP].
4025 Internal:
4026 radm_rcvd_wreq_poisoned. */
4027 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP].
4028 Internal:
4029 radm_rcvd_cpl_poisoned. */
4030 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP].
4031 Internal:
4032 radm_mlf_tlp_err. */
4033 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS].
4034 Internal:
4035 radm_rcvd_ur_req. */
4036 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */
4037 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA].
4038 Internal:
4039 radm_rcvd_cpl_ca. */
4040 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR].
4041 Internal:
4042 radm_rcvd_cpl_ur. */
4043 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC].
4044 Internal:
4045 radm_unexp_cpl_err. */
4046 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO].
4047 Internal:
4048 radm_qoverflow. */
4049 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV].
4050 Internal:
4051 (opt. checks) int_xadm_fc_prot_err. */
4052 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE].
4053 Internal:
4054 rmlh_rcvd_err. */
4055 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT].
4056 Internal:
4057 rtlh_fc_prot_err. */
4058 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD].
4059 Internal:
4060 rdlh_prot_err. */
4061 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE].
4062 Internal:
4063 rdlh_bad_tlp_err. */
4064 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE].
4065 Internal:
4066 rdlh_bad_dllp_err. */
4067 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE].
4068 Internal:
4069 xdlh_replay_num_rlover_err. */
4070 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE].
4071 Internal:
4072 xdlh_replay_timeout_err. */
4073 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO].
4074 Internal:
4075 pedc_radm_cpl_timeout. */
4076 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM].
4077 Internal:
4078 pedc_radm_vendor_msg. */
4079 uint64_t reserved_10 : 1;
4080 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC].
4081 Internal:
4082 pedc_radm_pm_to_ack. */
4083 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC].
4084 Internal:
4085 pedc_radm_pm_pme. */
4086 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC].
4087 Internal:
4088 pedc_radm_fatal_err. */
4089 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC].
4090 Internal:
4091 pedc_radm_nonfatal_err. */
4092 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC].
4093 Internal:
4094 pedc_radm_correctable_err. */
4095 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON].
4096 Internal:
4097 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
4098 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE].
4099 Internal:
4100 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
4101 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE].
4102 Internal:
4103 pedc_radm_trgt1_dllp_abort &
4104 pedc__radm_trgt1_eot. */
4105 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL].
4106 Internal:
4107 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
4108 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON].
4109 Internal:
4110 peai__client0_tlp_ep & peai__client0_tlp_hv or
4111 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
4112 #else /* Word 0 - Little Endian */
4113 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON].
4114 Internal:
4115 peai__client0_tlp_ep & peai__client0_tlp_hv or
4116 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
4117 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL].
4118 Internal:
4119 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
4120 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE].
4121 Internal:
4122 pedc_radm_trgt1_dllp_abort &
4123 pedc__radm_trgt1_eot. */
4124 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE].
4125 Internal:
4126 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
4127 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON].
4128 Internal:
4129 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
4130 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC].
4131 Internal:
4132 pedc_radm_correctable_err. */
4133 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC].
4134 Internal:
4135 pedc_radm_nonfatal_err. */
4136 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC].
4137 Internal:
4138 pedc_radm_fatal_err. */
4139 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC].
4140 Internal:
4141 pedc_radm_pm_pme. */
4142 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC].
4143 Internal:
4144 pedc_radm_pm_to_ack. */
4145 uint64_t reserved_10 : 1;
4146 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM].
4147 Internal:
4148 pedc_radm_vendor_msg. */
4149 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO].
4150 Internal:
4151 pedc_radm_cpl_timeout. */
4152 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE].
4153 Internal:
4154 xdlh_replay_timeout_err. */
4155 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE].
4156 Internal:
4157 xdlh_replay_num_rlover_err. */
4158 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE].
4159 Internal:
4160 rdlh_bad_dllp_err. */
4161 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE].
4162 Internal:
4163 rdlh_bad_tlp_err. */
4164 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD].
4165 Internal:
4166 rdlh_prot_err. */
4167 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT].
4168 Internal:
4169 rtlh_fc_prot_err. */
4170 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE].
4171 Internal:
4172 rmlh_rcvd_err. */
4173 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV].
4174 Internal:
4175 (opt. checks) int_xadm_fc_prot_err. */
4176 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO].
4177 Internal:
4178 radm_qoverflow. */
4179 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC].
4180 Internal:
4181 radm_unexp_cpl_err. */
4182 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR].
4183 Internal:
4184 radm_rcvd_cpl_ur. */
4185 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA].
4186 Internal:
4187 radm_rcvd_cpl_ca. */
4188 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */
4189 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS].
4190 Internal:
4191 radm_rcvd_ur_req. */
4192 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP].
4193 Internal:
4194 radm_mlf_tlp_err. */
4195 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP].
4196 Internal:
4197 radm_rcvd_cpl_poisoned. */
4198 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP].
4199 Internal:
4200 radm_rcvd_wreq_poisoned. */
4201 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
4202 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */
4203 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */
4204 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
4205 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
4206 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
4207 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
4208 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
4209 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
4210 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
4211 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
4212 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
4213 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
4214 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
4215 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
4216 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
4217 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
4218 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
4219 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
4220 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
4221 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
4222 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */
4223 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */
4224 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
4225 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
4226 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
4227 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
4228 uint64_t reserved_57_63 : 7;
4229 #endif /* Word 0 - End */
4230 } cn88xxp1;
4231 struct bdk_pemx_dbg_ena_w1c_cn81xx
4232 {
4233 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4234 uint64_t reserved_58_63 : 6;
4235 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[M2S_PE]. */
4236 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */
4237 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */
4238 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */
4239 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */
4240 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTRY_DBE]. */
4241 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTRY_SBE]. */
4242 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_C_DBE]. */
4243 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_C_SBE]. */
4244 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D1_DBE]. */
4245 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D1_SBE]. */
4246 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D0_DBE]. */
4247 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D0_SBE]. */
4248 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_C_DBE]. */
4249 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_C_SBE]. */
4250 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D1_DBE]. */
4251 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D1_SBE]. */
4252 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D0_DBE]. */
4253 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D0_SBE]. */
4254 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_C_DBE]. */
4255 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_C_SBE]. */
4256 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D1_DBE]. */
4257 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D1_SBE]. */
4258 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D0_DBE]. */
4259 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D0_SBE]. */
4260 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[DATQ_PE]. */
4261 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[LOFP]. */
4262 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[ECRC_E]. */
4263 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAWWPP].
4264 Internal:
4265 radm_rcvd_wreq_poisoned. */
4266 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACPP].
4267 Internal:
4268 radm_rcvd_cpl_poisoned. */
4269 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAMTLP].
4270 Internal:
4271 radm_mlf_tlp_err. */
4272 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RARWDNS].
4273 Internal:
4274 radm_rcvd_ur_req. */
4275 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[CAAR]. */
4276 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACCA].
4277 Internal:
4278 radm_rcvd_cpl_ca. */
4279 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACUR].
4280 Internal:
4281 radm_rcvd_cpl_ur. */
4282 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAUC].
4283 Internal:
4284 radm_unexp_cpl_err. */
4285 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RQO].
4286 Internal:
4287 radm_qoverflow. */
4288 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[FCUV].
4289 Internal:
4290 (opt. checks) int_xadm_fc_prot_err. */
4291 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPE].
4292 Internal:
4293 rmlh_rcvd_err. */
4294 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[FCPVWT].
4295 Internal:
4296 rtlh_fc_prot_err. */
4297 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[DPEOOSD].
4298 Internal:
4299 rdlh_prot_err. */
4300 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTWDLE].
4301 Internal:
4302 rdlh_bad_tlp_err. */
4303 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RDWDLE].
4304 Internal:
4305 rdlh_bad_dllp_err. */
4306 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[MRE].
4307 Internal:
4308 xdlh_replay_num_rlover_err. */
4309 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTE].
4310 Internal:
4311 xdlh_replay_timeout_err. */
4312 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[ACTO].
4313 Internal:
4314 pedc_radm_cpl_timeout. */
4315 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RVDM].
4316 Internal:
4317 pedc_radm_vendor_msg. */
4318 uint64_t reserved_10 : 1;
4319 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPTAMRC].
4320 Internal:
4321 pedc_radm_pm_to_ack. */
4322 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPMERC].
4323 Internal:
4324 pedc_radm_pm_pme. */
4325 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RFEMRC].
4326 Internal:
4327 pedc_radm_fatal_err. */
4328 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RNFEMRC].
4329 Internal:
4330 pedc_radm_nonfatal_err. */
4331 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RCEMRC].
4332 Internal:
4333 pedc_radm_correctable_err. */
4334 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPOISON].
4335 Internal:
4336 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
4337 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RECRCE].
4338 Internal:
4339 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
4340 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTLPLLE].
4341 Internal:
4342 pedc_radm_trgt1_dllp_abort &
4343 pedc__radm_trgt1_eot. */
4344 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTLPMAL].
4345 Internal:
4346 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
4347 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[SPOISON].
4348 Internal:
4349 peai__client0_tlp_ep & peai__client0_tlp_hv or
4350 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
4351 #else /* Word 0 - Little Endian */
4352 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[SPOISON].
4353 Internal:
4354 peai__client0_tlp_ep & peai__client0_tlp_hv or
4355 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
4356 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTLPMAL].
4357 Internal:
4358 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
4359 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTLPLLE].
4360 Internal:
4361 pedc_radm_trgt1_dllp_abort &
4362 pedc__radm_trgt1_eot. */
4363 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RECRCE].
4364 Internal:
4365 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
4366 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPOISON].
4367 Internal:
4368 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
4369 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RCEMRC].
4370 Internal:
4371 pedc_radm_correctable_err. */
4372 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RNFEMRC].
4373 Internal:
4374 pedc_radm_nonfatal_err. */
4375 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RFEMRC].
4376 Internal:
4377 pedc_radm_fatal_err. */
4378 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPMERC].
4379 Internal:
4380 pedc_radm_pm_pme. */
4381 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPTAMRC].
4382 Internal:
4383 pedc_radm_pm_to_ack. */
4384 uint64_t reserved_10 : 1;
4385 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RVDM].
4386 Internal:
4387 pedc_radm_vendor_msg. */
4388 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[ACTO].
4389 Internal:
4390 pedc_radm_cpl_timeout. */
4391 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTE].
4392 Internal:
4393 xdlh_replay_timeout_err. */
4394 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[MRE].
4395 Internal:
4396 xdlh_replay_num_rlover_err. */
4397 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RDWDLE].
4398 Internal:
4399 rdlh_bad_dllp_err. */
4400 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTWDLE].
4401 Internal:
4402 rdlh_bad_tlp_err. */
4403 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[DPEOOSD].
4404 Internal:
4405 rdlh_prot_err. */
4406 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[FCPVWT].
4407 Internal:
4408 rtlh_fc_prot_err. */
4409 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPE].
4410 Internal:
4411 rmlh_rcvd_err. */
4412 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[FCUV].
4413 Internal:
4414 (opt. checks) int_xadm_fc_prot_err. */
4415 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RQO].
4416 Internal:
4417 radm_qoverflow. */
4418 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAUC].
4419 Internal:
4420 radm_unexp_cpl_err. */
4421 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACUR].
4422 Internal:
4423 radm_rcvd_cpl_ur. */
4424 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACCA].
4425 Internal:
4426 radm_rcvd_cpl_ca. */
4427 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[CAAR]. */
4428 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RARWDNS].
4429 Internal:
4430 radm_rcvd_ur_req. */
4431 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAMTLP].
4432 Internal:
4433 radm_mlf_tlp_err. */
4434 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACPP].
4435 Internal:
4436 radm_rcvd_cpl_poisoned. */
4437 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAWWPP].
4438 Internal:
4439 radm_rcvd_wreq_poisoned. */
4440 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[ECRC_E]. */
4441 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[LOFP]. */
4442 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[DATQ_PE]. */
4443 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D0_SBE]. */
4444 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D0_DBE]. */
4445 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D1_SBE]. */
4446 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D1_DBE]. */
4447 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_C_SBE]. */
4448 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_C_DBE]. */
4449 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D0_SBE]. */
4450 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D0_DBE]. */
4451 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D1_SBE]. */
4452 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D1_DBE]. */
4453 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_C_SBE]. */
4454 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_C_DBE]. */
4455 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D0_SBE]. */
4456 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D0_DBE]. */
4457 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D1_SBE]. */
4458 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D1_DBE]. */
4459 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_C_SBE]. */
4460 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_C_DBE]. */
4461 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTRY_SBE]. */
4462 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTRY_DBE]. */
4463 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */
4464 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */
4465 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */
4466 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */
4467 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[M2S_PE]. */
4468 uint64_t reserved_58_63 : 6;
4469 #endif /* Word 0 - End */
4470 } cn81xx;
4471 struct bdk_pemx_dbg_ena_w1c_cn83xx
4472 {
4473 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4474 uint64_t reserved_56_63 : 8;
4475 uint64_t rasdp : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RASDP]. */
4476 uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_D_DBE]. */
4477 uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_D_SBE]. */
4478 uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_C_DBE]. */
4479 uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_C_SBE]. */
4480 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_C_DBE]. */
4481 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_C_SBE]. */
4482 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D1_DBE]. */
4483 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D1_SBE]. */
4484 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D0_DBE]. */
4485 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D0_SBE]. */
4486 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_C_DBE]. */
4487 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_C_SBE]. */
4488 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D1_DBE]. */
4489 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D1_SBE]. */
4490 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D0_DBE]. */
4491 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D0_SBE]. */
4492 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_C_DBE]. */
4493 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_C_SBE]. */
4494 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D1_DBE]. */
4495 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D1_SBE]. */
4496 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D0_DBE]. */
4497 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D0_SBE]. */
4498 uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[BMD_E]. */
4499 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[LOFP]. */
4500 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[ECRC_E]. */
4501 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAWWPP].
4502 Internal:
4503 radm_rcvd_wreq_poisoned. */
4504 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACPP].
4505 Internal:
4506 radm_rcvd_cpl_poisoned. */
4507 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAMTLP].
4508 Internal:
4509 radm_mlf_tlp_err. */
4510 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RARWDNS].
4511 Internal:
4512 radm_rcvd_ur_req. */
4513 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[CAAR]. */
4514 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACCA].
4515 Internal:
4516 radm_rcvd_cpl_ca. */
4517 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACUR].
4518 Internal:
4519 radm_rcvd_cpl_ur. */
4520 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAUC].
4521 Internal:
4522 radm_unexp_cpl_err. */
4523 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RQO].
4524 Internal:
4525 radm_qoverflow. */
4526 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[FCUV].
4527 Internal:
4528 (opt. checks) int_xadm_fc_prot_err. */
4529 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPE].
4530 Internal:
4531 rmlh_rcvd_err. */
4532 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[FCPVWT].
4533 Internal:
4534 rtlh_fc_prot_err. */
4535 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[DPEOOSD].
4536 Internal:
4537 rdlh_prot_err. */
4538 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTWDLE].
4539 Internal:
4540 rdlh_bad_tlp_err. */
4541 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RDWDLE].
4542 Internal:
4543 rdlh_bad_dllp_err. */
4544 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[MRE].
4545 Internal:
4546 xdlh_replay_num_rlover_err. */
4547 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTE].
4548 Internal:
4549 xdlh_replay_timeout_err. */
4550 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[ACTO].
4551 Internal:
4552 pedc_radm_cpl_timeout. */
4553 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RVDM].
4554 Internal:
4555 pedc_radm_vendor_msg. */
4556 uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RUMEP].
4557 Internal:
4558 pedc_radm_msg_unlock. */
4559 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPTAMRC].
4560 Internal:
4561 pedc_radm_pm_to_ack. */
4562 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPMERC].
4563 Internal:
4564 pedc_radm_pm_pme. */
4565 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RFEMRC].
4566 Internal:
4567 pedc_radm_fatal_err. */
4568 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RNFEMRC].
4569 Internal:
4570 pedc_radm_nonfatal_err. */
4571 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RCEMRC].
4572 Internal:
4573 pedc_radm_correctable_err. */
4574 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPOISON].
4575 Internal:
4576 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
4577 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RECRCE].
4578 Internal:
4579 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
4580 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTLPLLE].
4581 Internal:
4582 pedc_radm_trgt1_dllp_abort &
4583 pedc__radm_trgt1_eot. */
4584 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTLPMAL].
4585 Internal:
4586 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
4587 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[SPOISON]. */
4588 #else /* Word 0 - Little Endian */
4589 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[SPOISON]. */
4590 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTLPMAL].
4591 Internal:
4592 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
4593 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTLPLLE].
4594 Internal:
4595 pedc_radm_trgt1_dllp_abort &
4596 pedc__radm_trgt1_eot. */
4597 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RECRCE].
4598 Internal:
4599 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
4600 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPOISON].
4601 Internal:
4602 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
4603 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RCEMRC].
4604 Internal:
4605 pedc_radm_correctable_err. */
4606 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RNFEMRC].
4607 Internal:
4608 pedc_radm_nonfatal_err. */
4609 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RFEMRC].
4610 Internal:
4611 pedc_radm_fatal_err. */
4612 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPMERC].
4613 Internal:
4614 pedc_radm_pm_pme. */
4615 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPTAMRC].
4616 Internal:
4617 pedc_radm_pm_to_ack. */
4618 uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RUMEP].
4619 Internal:
4620 pedc_radm_msg_unlock. */
4621 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RVDM].
4622 Internal:
4623 pedc_radm_vendor_msg. */
4624 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[ACTO].
4625 Internal:
4626 pedc_radm_cpl_timeout. */
4627 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTE].
4628 Internal:
4629 xdlh_replay_timeout_err. */
4630 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[MRE].
4631 Internal:
4632 xdlh_replay_num_rlover_err. */
4633 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RDWDLE].
4634 Internal:
4635 rdlh_bad_dllp_err. */
4636 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTWDLE].
4637 Internal:
4638 rdlh_bad_tlp_err. */
4639 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[DPEOOSD].
4640 Internal:
4641 rdlh_prot_err. */
4642 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[FCPVWT].
4643 Internal:
4644 rtlh_fc_prot_err. */
4645 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPE].
4646 Internal:
4647 rmlh_rcvd_err. */
4648 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[FCUV].
4649 Internal:
4650 (opt. checks) int_xadm_fc_prot_err. */
4651 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RQO].
4652 Internal:
4653 radm_qoverflow. */
4654 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAUC].
4655 Internal:
4656 radm_unexp_cpl_err. */
4657 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACUR].
4658 Internal:
4659 radm_rcvd_cpl_ur. */
4660 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACCA].
4661 Internal:
4662 radm_rcvd_cpl_ca. */
4663 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[CAAR]. */
4664 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RARWDNS].
4665 Internal:
4666 radm_rcvd_ur_req. */
4667 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAMTLP].
4668 Internal:
4669 radm_mlf_tlp_err. */
4670 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACPP].
4671 Internal:
4672 radm_rcvd_cpl_poisoned. */
4673 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAWWPP].
4674 Internal:
4675 radm_rcvd_wreq_poisoned. */
4676 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[ECRC_E]. */
4677 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[LOFP]. */
4678 uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[BMD_E]. */
4679 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D0_SBE]. */
4680 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D0_DBE]. */
4681 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D1_SBE]. */
4682 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D1_DBE]. */
4683 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_C_SBE]. */
4684 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_C_DBE]. */
4685 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D0_SBE]. */
4686 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D0_DBE]. */
4687 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D1_SBE]. */
4688 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D1_DBE]. */
4689 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_C_SBE]. */
4690 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_C_DBE]. */
4691 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D0_SBE]. */
4692 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D0_DBE]. */
4693 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D1_SBE]. */
4694 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D1_DBE]. */
4695 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_C_SBE]. */
4696 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_C_DBE]. */
4697 uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_C_SBE]. */
4698 uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_C_DBE]. */
4699 uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_D_SBE]. */
4700 uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_D_DBE]. */
4701 uint64_t rasdp : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RASDP]. */
4702 uint64_t reserved_56_63 : 8;
4703 #endif /* Word 0 - End */
4704 } cn83xx;
4705 struct bdk_pemx_dbg_ena_w1c_cn88xxp2
4706 {
4707 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4708 uint64_t reserved_58_63 : 6;
4709 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[M2S_PE]. */
4710 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
4711 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
4712 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
4713 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
4714 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */
4715 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */
4716 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
4717 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
4718 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
4719 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
4720 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
4721 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
4722 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
4723 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
4724 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
4725 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
4726 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
4727 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
4728 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
4729 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
4730 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
4731 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
4732 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
4733 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
4734 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */
4735 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */
4736 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
4737 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP].
4738 Internal:
4739 radm_rcvd_wreq_poisoned. */
4740 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP].
4741 Internal:
4742 radm_rcvd_cpl_poisoned. */
4743 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP].
4744 Internal:
4745 radm_mlf_tlp_err. */
4746 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS].
4747 Internal:
4748 radm_rcvd_ur_req. */
4749 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */
4750 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA].
4751 Internal:
4752 radm_rcvd_cpl_ca. */
4753 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR].
4754 Internal:
4755 radm_rcvd_cpl_ur. */
4756 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC].
4757 Internal:
4758 radm_unexp_cpl_err. */
4759 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO].
4760 Internal:
4761 radm_qoverflow. */
4762 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV].
4763 Internal:
4764 (opt. checks) int_xadm_fc_prot_err. */
4765 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE].
4766 Internal:
4767 rmlh_rcvd_err. */
4768 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT].
4769 Internal:
4770 rtlh_fc_prot_err. */
4771 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD].
4772 Internal:
4773 rdlh_prot_err. */
4774 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE].
4775 Internal:
4776 rdlh_bad_tlp_err. */
4777 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE].
4778 Internal:
4779 rdlh_bad_dllp_err. */
4780 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE].
4781 Internal:
4782 xdlh_replay_num_rlover_err. */
4783 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE].
4784 Internal:
4785 xdlh_replay_timeout_err. */
4786 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO].
4787 Internal:
4788 pedc_radm_cpl_timeout. */
4789 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM].
4790 Internal:
4791 pedc_radm_vendor_msg. */
4792 uint64_t reserved_10 : 1;
4793 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC].
4794 Internal:
4795 pedc_radm_pm_to_ack. */
4796 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC].
4797 Internal:
4798 pedc_radm_pm_pme. */
4799 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC].
4800 Internal:
4801 pedc_radm_fatal_err. */
4802 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC].
4803 Internal:
4804 pedc_radm_nonfatal_err. */
4805 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC].
4806 Internal:
4807 pedc_radm_correctable_err. */
4808 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON].
4809 Internal:
4810 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
4811 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE].
4812 Internal:
4813 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
4814 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE].
4815 Internal:
4816 pedc_radm_trgt1_dllp_abort &
4817 pedc__radm_trgt1_eot. */
4818 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL].
4819 Internal:
4820 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
4821 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON].
4822 Internal:
4823 peai__client0_tlp_ep & peai__client0_tlp_hv or
4824 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
4825 #else /* Word 0 - Little Endian */
4826 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON].
4827 Internal:
4828 peai__client0_tlp_ep & peai__client0_tlp_hv or
4829 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
4830 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL].
4831 Internal:
4832 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
4833 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE].
4834 Internal:
4835 pedc_radm_trgt1_dllp_abort &
4836 pedc__radm_trgt1_eot. */
4837 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE].
4838 Internal:
4839 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
4840 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON].
4841 Internal:
4842 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
4843 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC].
4844 Internal:
4845 pedc_radm_correctable_err. */
4846 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC].
4847 Internal:
4848 pedc_radm_nonfatal_err. */
4849 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC].
4850 Internal:
4851 pedc_radm_fatal_err. */
4852 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC].
4853 Internal:
4854 pedc_radm_pm_pme. */
4855 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC].
4856 Internal:
4857 pedc_radm_pm_to_ack. */
4858 uint64_t reserved_10 : 1;
4859 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM].
4860 Internal:
4861 pedc_radm_vendor_msg. */
4862 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO].
4863 Internal:
4864 pedc_radm_cpl_timeout. */
4865 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE].
4866 Internal:
4867 xdlh_replay_timeout_err. */
4868 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE].
4869 Internal:
4870 xdlh_replay_num_rlover_err. */
4871 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE].
4872 Internal:
4873 rdlh_bad_dllp_err. */
4874 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE].
4875 Internal:
4876 rdlh_bad_tlp_err. */
4877 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD].
4878 Internal:
4879 rdlh_prot_err. */
4880 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT].
4881 Internal:
4882 rtlh_fc_prot_err. */
4883 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE].
4884 Internal:
4885 rmlh_rcvd_err. */
4886 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV].
4887 Internal:
4888 (opt. checks) int_xadm_fc_prot_err. */
4889 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO].
4890 Internal:
4891 radm_qoverflow. */
4892 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC].
4893 Internal:
4894 radm_unexp_cpl_err. */
4895 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR].
4896 Internal:
4897 radm_rcvd_cpl_ur. */
4898 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA].
4899 Internal:
4900 radm_rcvd_cpl_ca. */
4901 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */
4902 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS].
4903 Internal:
4904 radm_rcvd_ur_req. */
4905 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP].
4906 Internal:
4907 radm_mlf_tlp_err. */
4908 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP].
4909 Internal:
4910 radm_rcvd_cpl_poisoned. */
4911 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP].
4912 Internal:
4913 radm_rcvd_wreq_poisoned. */
4914 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
4915 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */
4916 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */
4917 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
4918 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
4919 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
4920 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
4921 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
4922 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
4923 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
4924 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
4925 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
4926 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
4927 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
4928 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
4929 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
4930 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
4931 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
4932 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
4933 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
4934 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
4935 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */
4936 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */
4937 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
4938 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
4939 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
4940 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
4941 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[M2S_PE]. */
4942 uint64_t reserved_58_63 : 6;
4943 #endif /* Word 0 - End */
4944 } cn88xxp2;
4945 };
4946 typedef union bdk_pemx_dbg_ena_w1c bdk_pemx_dbg_ena_w1c_t;
4947
4948 static inline uint64_t BDK_PEMX_DBG_ENA_W1C(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_DBG_ENA_W1C(unsigned long a)4949 static inline uint64_t BDK_PEMX_DBG_ENA_W1C(unsigned long a)
4950 {
4951 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
4952 return 0x87e0c0000458ll + 0x1000000ll * ((a) & 0x3);
4953 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
4954 return 0x87e0c0000458ll + 0x1000000ll * ((a) & 0x3);
4955 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
4956 return 0x87e0c0000458ll + 0x1000000ll * ((a) & 0x7);
4957 __bdk_csr_fatal("PEMX_DBG_ENA_W1C", 1, a, 0, 0, 0);
4958 }
4959
4960 #define typedef_BDK_PEMX_DBG_ENA_W1C(a) bdk_pemx_dbg_ena_w1c_t
4961 #define bustype_BDK_PEMX_DBG_ENA_W1C(a) BDK_CSR_TYPE_RSL
4962 #define basename_BDK_PEMX_DBG_ENA_W1C(a) "PEMX_DBG_ENA_W1C"
4963 #define device_bar_BDK_PEMX_DBG_ENA_W1C(a) 0x0 /* PF_BAR0 */
4964 #define busnum_BDK_PEMX_DBG_ENA_W1C(a) (a)
4965 #define arguments_BDK_PEMX_DBG_ENA_W1C(a) (a),-1,-1,-1
4966
4967 /**
4968 * Register (RSL) pem#_dbg_ena_w1s
4969 *
4970 * PEM Debug Information Enable Set Register
4971 * This register sets interrupt enable bits.
4972 */
4973 union bdk_pemx_dbg_ena_w1s
4974 {
4975 uint64_t u;
4976 struct bdk_pemx_dbg_ena_w1s_s
4977 {
4978 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4979 uint64_t reserved_58_63 : 6;
4980 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[M2S_PE]. */
4981 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
4982 uint64_t reserved_51_55 : 5;
4983 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
4984 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
4985 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
4986 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
4987 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
4988 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
4989 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
4990 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
4991 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
4992 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
4993 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
4994 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
4995 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
4996 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
4997 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
4998 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
4999 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
5000 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
5001 uint64_t reserved_32 : 1;
5002 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */
5003 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
5004 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP].
5005 Internal:
5006 radm_rcvd_wreq_poisoned. */
5007 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP].
5008 Internal:
5009 radm_rcvd_cpl_poisoned. */
5010 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP].
5011 Internal:
5012 radm_mlf_tlp_err. */
5013 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS].
5014 Internal:
5015 radm_rcvd_ur_req. */
5016 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */
5017 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA].
5018 Internal:
5019 radm_rcvd_cpl_ca. */
5020 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR].
5021 Internal:
5022 radm_rcvd_cpl_ur. */
5023 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC].
5024 Internal:
5025 radm_unexp_cpl_err. */
5026 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO].
5027 Internal:
5028 radm_qoverflow. */
5029 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV].
5030 Internal:
5031 (opt. checks) int_xadm_fc_prot_err. */
5032 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE].
5033 Internal:
5034 rmlh_rcvd_err. */
5035 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT].
5036 Internal:
5037 rtlh_fc_prot_err. */
5038 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD].
5039 Internal:
5040 rdlh_prot_err. */
5041 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE].
5042 Internal:
5043 rdlh_bad_tlp_err. */
5044 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE].
5045 Internal:
5046 rdlh_bad_dllp_err. */
5047 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE].
5048 Internal:
5049 xdlh_replay_num_rlover_err. */
5050 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE].
5051 Internal:
5052 xdlh_replay_timeout_err. */
5053 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO].
5054 Internal:
5055 pedc_radm_cpl_timeout. */
5056 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM].
5057 Internal:
5058 pedc_radm_vendor_msg. */
5059 uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RUMEP].
5060 Internal:
5061 pedc_radm_msg_unlock. */
5062 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC].
5063 Internal:
5064 pedc_radm_pm_to_ack. */
5065 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC].
5066 Internal:
5067 pedc_radm_pm_pme. */
5068 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC].
5069 Internal:
5070 pedc_radm_fatal_err. */
5071 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC].
5072 Internal:
5073 pedc_radm_nonfatal_err. */
5074 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC].
5075 Internal:
5076 pedc_radm_correctable_err. */
5077 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON].
5078 Internal:
5079 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
5080 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE].
5081 Internal:
5082 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
5083 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE].
5084 Internal:
5085 pedc_radm_trgt1_dllp_abort &
5086 pedc__radm_trgt1_eot. */
5087 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL].
5088 Internal:
5089 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
5090 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON].
5091 Internal:
5092 peai__client0_tlp_ep & peai__client0_tlp_hv or
5093 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
5094 #else /* Word 0 - Little Endian */
5095 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON].
5096 Internal:
5097 peai__client0_tlp_ep & peai__client0_tlp_hv or
5098 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
5099 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL].
5100 Internal:
5101 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
5102 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE].
5103 Internal:
5104 pedc_radm_trgt1_dllp_abort &
5105 pedc__radm_trgt1_eot. */
5106 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE].
5107 Internal:
5108 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
5109 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON].
5110 Internal:
5111 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
5112 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC].
5113 Internal:
5114 pedc_radm_correctable_err. */
5115 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC].
5116 Internal:
5117 pedc_radm_nonfatal_err. */
5118 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC].
5119 Internal:
5120 pedc_radm_fatal_err. */
5121 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC].
5122 Internal:
5123 pedc_radm_pm_pme. */
5124 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC].
5125 Internal:
5126 pedc_radm_pm_to_ack. */
5127 uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RUMEP].
5128 Internal:
5129 pedc_radm_msg_unlock. */
5130 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM].
5131 Internal:
5132 pedc_radm_vendor_msg. */
5133 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO].
5134 Internal:
5135 pedc_radm_cpl_timeout. */
5136 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE].
5137 Internal:
5138 xdlh_replay_timeout_err. */
5139 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE].
5140 Internal:
5141 xdlh_replay_num_rlover_err. */
5142 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE].
5143 Internal:
5144 rdlh_bad_dllp_err. */
5145 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE].
5146 Internal:
5147 rdlh_bad_tlp_err. */
5148 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD].
5149 Internal:
5150 rdlh_prot_err. */
5151 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT].
5152 Internal:
5153 rtlh_fc_prot_err. */
5154 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE].
5155 Internal:
5156 rmlh_rcvd_err. */
5157 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV].
5158 Internal:
5159 (opt. checks) int_xadm_fc_prot_err. */
5160 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO].
5161 Internal:
5162 radm_qoverflow. */
5163 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC].
5164 Internal:
5165 radm_unexp_cpl_err. */
5166 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR].
5167 Internal:
5168 radm_rcvd_cpl_ur. */
5169 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA].
5170 Internal:
5171 radm_rcvd_cpl_ca. */
5172 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */
5173 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS].
5174 Internal:
5175 radm_rcvd_ur_req. */
5176 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP].
5177 Internal:
5178 radm_mlf_tlp_err. */
5179 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP].
5180 Internal:
5181 radm_rcvd_cpl_poisoned. */
5182 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP].
5183 Internal:
5184 radm_rcvd_wreq_poisoned. */
5185 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
5186 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */
5187 uint64_t reserved_32 : 1;
5188 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
5189 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
5190 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
5191 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
5192 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
5193 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
5194 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
5195 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
5196 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
5197 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
5198 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
5199 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
5200 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
5201 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
5202 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
5203 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
5204 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
5205 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
5206 uint64_t reserved_51_55 : 5;
5207 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
5208 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[M2S_PE]. */
5209 uint64_t reserved_58_63 : 6;
5210 #endif /* Word 0 - End */
5211 } s;
5212 struct bdk_pemx_dbg_ena_w1s_cn88xxp1
5213 {
5214 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5215 uint64_t reserved_57_63 : 7;
5216 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
5217 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
5218 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
5219 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
5220 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */
5221 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */
5222 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
5223 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
5224 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
5225 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
5226 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
5227 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
5228 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
5229 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
5230 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
5231 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
5232 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
5233 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
5234 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
5235 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
5236 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
5237 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
5238 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
5239 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
5240 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */
5241 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */
5242 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
5243 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP].
5244 Internal:
5245 radm_rcvd_wreq_poisoned. */
5246 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP].
5247 Internal:
5248 radm_rcvd_cpl_poisoned. */
5249 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP].
5250 Internal:
5251 radm_mlf_tlp_err. */
5252 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS].
5253 Internal:
5254 radm_rcvd_ur_req. */
5255 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */
5256 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA].
5257 Internal:
5258 radm_rcvd_cpl_ca. */
5259 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR].
5260 Internal:
5261 radm_rcvd_cpl_ur. */
5262 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC].
5263 Internal:
5264 radm_unexp_cpl_err. */
5265 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO].
5266 Internal:
5267 radm_qoverflow. */
5268 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV].
5269 Internal:
5270 (opt. checks) int_xadm_fc_prot_err. */
5271 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE].
5272 Internal:
5273 rmlh_rcvd_err. */
5274 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT].
5275 Internal:
5276 rtlh_fc_prot_err. */
5277 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD].
5278 Internal:
5279 rdlh_prot_err. */
5280 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE].
5281 Internal:
5282 rdlh_bad_tlp_err. */
5283 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE].
5284 Internal:
5285 rdlh_bad_dllp_err. */
5286 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE].
5287 Internal:
5288 xdlh_replay_num_rlover_err. */
5289 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE].
5290 Internal:
5291 xdlh_replay_timeout_err. */
5292 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO].
5293 Internal:
5294 pedc_radm_cpl_timeout. */
5295 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM].
5296 Internal:
5297 pedc_radm_vendor_msg. */
5298 uint64_t reserved_10 : 1;
5299 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC].
5300 Internal:
5301 pedc_radm_pm_to_ack. */
5302 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC].
5303 Internal:
5304 pedc_radm_pm_pme. */
5305 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC].
5306 Internal:
5307 pedc_radm_fatal_err. */
5308 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC].
5309 Internal:
5310 pedc_radm_nonfatal_err. */
5311 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC].
5312 Internal:
5313 pedc_radm_correctable_err. */
5314 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON].
5315 Internal:
5316 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
5317 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE].
5318 Internal:
5319 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
5320 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE].
5321 Internal:
5322 pedc_radm_trgt1_dllp_abort &
5323 pedc__radm_trgt1_eot. */
5324 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL].
5325 Internal:
5326 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
5327 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON].
5328 Internal:
5329 peai__client0_tlp_ep & peai__client0_tlp_hv or
5330 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
5331 #else /* Word 0 - Little Endian */
5332 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON].
5333 Internal:
5334 peai__client0_tlp_ep & peai__client0_tlp_hv or
5335 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
5336 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL].
5337 Internal:
5338 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
5339 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE].
5340 Internal:
5341 pedc_radm_trgt1_dllp_abort &
5342 pedc__radm_trgt1_eot. */
5343 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE].
5344 Internal:
5345 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
5346 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON].
5347 Internal:
5348 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
5349 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC].
5350 Internal:
5351 pedc_radm_correctable_err. */
5352 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC].
5353 Internal:
5354 pedc_radm_nonfatal_err. */
5355 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC].
5356 Internal:
5357 pedc_radm_fatal_err. */
5358 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC].
5359 Internal:
5360 pedc_radm_pm_pme. */
5361 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC].
5362 Internal:
5363 pedc_radm_pm_to_ack. */
5364 uint64_t reserved_10 : 1;
5365 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM].
5366 Internal:
5367 pedc_radm_vendor_msg. */
5368 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO].
5369 Internal:
5370 pedc_radm_cpl_timeout. */
5371 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE].
5372 Internal:
5373 xdlh_replay_timeout_err. */
5374 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE].
5375 Internal:
5376 xdlh_replay_num_rlover_err. */
5377 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE].
5378 Internal:
5379 rdlh_bad_dllp_err. */
5380 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE].
5381 Internal:
5382 rdlh_bad_tlp_err. */
5383 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD].
5384 Internal:
5385 rdlh_prot_err. */
5386 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT].
5387 Internal:
5388 rtlh_fc_prot_err. */
5389 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE].
5390 Internal:
5391 rmlh_rcvd_err. */
5392 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV].
5393 Internal:
5394 (opt. checks) int_xadm_fc_prot_err. */
5395 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO].
5396 Internal:
5397 radm_qoverflow. */
5398 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC].
5399 Internal:
5400 radm_unexp_cpl_err. */
5401 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR].
5402 Internal:
5403 radm_rcvd_cpl_ur. */
5404 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA].
5405 Internal:
5406 radm_rcvd_cpl_ca. */
5407 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */
5408 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS].
5409 Internal:
5410 radm_rcvd_ur_req. */
5411 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP].
5412 Internal:
5413 radm_mlf_tlp_err. */
5414 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP].
5415 Internal:
5416 radm_rcvd_cpl_poisoned. */
5417 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP].
5418 Internal:
5419 radm_rcvd_wreq_poisoned. */
5420 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
5421 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */
5422 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */
5423 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
5424 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
5425 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
5426 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
5427 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
5428 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
5429 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
5430 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
5431 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
5432 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
5433 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
5434 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
5435 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
5436 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
5437 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
5438 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
5439 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
5440 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
5441 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */
5442 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */
5443 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
5444 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
5445 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
5446 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
5447 uint64_t reserved_57_63 : 7;
5448 #endif /* Word 0 - End */
5449 } cn88xxp1;
5450 struct bdk_pemx_dbg_ena_w1s_cn81xx
5451 {
5452 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5453 uint64_t reserved_58_63 : 6;
5454 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[M2S_PE]. */
5455 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */
5456 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */
5457 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */
5458 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */
5459 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTRY_DBE]. */
5460 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTRY_SBE]. */
5461 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_C_DBE]. */
5462 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_C_SBE]. */
5463 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D1_DBE]. */
5464 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D1_SBE]. */
5465 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D0_DBE]. */
5466 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D0_SBE]. */
5467 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_C_DBE]. */
5468 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_C_SBE]. */
5469 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D1_DBE]. */
5470 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D1_SBE]. */
5471 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D0_DBE]. */
5472 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D0_SBE]. */
5473 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_C_DBE]. */
5474 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_C_SBE]. */
5475 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D1_DBE]. */
5476 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D1_SBE]. */
5477 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D0_DBE]. */
5478 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D0_SBE]. */
5479 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[DATQ_PE]. */
5480 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[LOFP]. */
5481 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[ECRC_E]. */
5482 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAWWPP].
5483 Internal:
5484 radm_rcvd_wreq_poisoned. */
5485 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACPP].
5486 Internal:
5487 radm_rcvd_cpl_poisoned. */
5488 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAMTLP].
5489 Internal:
5490 radm_mlf_tlp_err. */
5491 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RARWDNS].
5492 Internal:
5493 radm_rcvd_ur_req. */
5494 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[CAAR]. */
5495 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACCA].
5496 Internal:
5497 radm_rcvd_cpl_ca. */
5498 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACUR].
5499 Internal:
5500 radm_rcvd_cpl_ur. */
5501 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAUC].
5502 Internal:
5503 radm_unexp_cpl_err. */
5504 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RQO].
5505 Internal:
5506 radm_qoverflow. */
5507 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[FCUV].
5508 Internal:
5509 (opt. checks) int_xadm_fc_prot_err. */
5510 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPE].
5511 Internal:
5512 rmlh_rcvd_err. */
5513 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[FCPVWT].
5514 Internal:
5515 rtlh_fc_prot_err. */
5516 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[DPEOOSD].
5517 Internal:
5518 rdlh_prot_err. */
5519 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTWDLE].
5520 Internal:
5521 rdlh_bad_tlp_err. */
5522 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RDWDLE].
5523 Internal:
5524 rdlh_bad_dllp_err. */
5525 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[MRE].
5526 Internal:
5527 xdlh_replay_num_rlover_err. */
5528 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTE].
5529 Internal:
5530 xdlh_replay_timeout_err. */
5531 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[ACTO].
5532 Internal:
5533 pedc_radm_cpl_timeout. */
5534 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RVDM].
5535 Internal:
5536 pedc_radm_vendor_msg. */
5537 uint64_t reserved_10 : 1;
5538 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPTAMRC].
5539 Internal:
5540 pedc_radm_pm_to_ack. */
5541 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPMERC].
5542 Internal:
5543 pedc_radm_pm_pme. */
5544 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RFEMRC].
5545 Internal:
5546 pedc_radm_fatal_err. */
5547 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RNFEMRC].
5548 Internal:
5549 pedc_radm_nonfatal_err. */
5550 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RCEMRC].
5551 Internal:
5552 pedc_radm_correctable_err. */
5553 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPOISON].
5554 Internal:
5555 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
5556 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RECRCE].
5557 Internal:
5558 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
5559 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTLPLLE].
5560 Internal:
5561 pedc_radm_trgt1_dllp_abort &
5562 pedc__radm_trgt1_eot. */
5563 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTLPMAL].
5564 Internal:
5565 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
5566 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[SPOISON].
5567 Internal:
5568 peai__client0_tlp_ep & peai__client0_tlp_hv or
5569 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
5570 #else /* Word 0 - Little Endian */
5571 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[SPOISON].
5572 Internal:
5573 peai__client0_tlp_ep & peai__client0_tlp_hv or
5574 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
5575 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTLPMAL].
5576 Internal:
5577 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
5578 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTLPLLE].
5579 Internal:
5580 pedc_radm_trgt1_dllp_abort &
5581 pedc__radm_trgt1_eot. */
5582 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RECRCE].
5583 Internal:
5584 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
5585 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPOISON].
5586 Internal:
5587 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
5588 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RCEMRC].
5589 Internal:
5590 pedc_radm_correctable_err. */
5591 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RNFEMRC].
5592 Internal:
5593 pedc_radm_nonfatal_err. */
5594 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RFEMRC].
5595 Internal:
5596 pedc_radm_fatal_err. */
5597 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPMERC].
5598 Internal:
5599 pedc_radm_pm_pme. */
5600 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPTAMRC].
5601 Internal:
5602 pedc_radm_pm_to_ack. */
5603 uint64_t reserved_10 : 1;
5604 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RVDM].
5605 Internal:
5606 pedc_radm_vendor_msg. */
5607 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[ACTO].
5608 Internal:
5609 pedc_radm_cpl_timeout. */
5610 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTE].
5611 Internal:
5612 xdlh_replay_timeout_err. */
5613 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[MRE].
5614 Internal:
5615 xdlh_replay_num_rlover_err. */
5616 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RDWDLE].
5617 Internal:
5618 rdlh_bad_dllp_err. */
5619 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTWDLE].
5620 Internal:
5621 rdlh_bad_tlp_err. */
5622 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[DPEOOSD].
5623 Internal:
5624 rdlh_prot_err. */
5625 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[FCPVWT].
5626 Internal:
5627 rtlh_fc_prot_err. */
5628 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPE].
5629 Internal:
5630 rmlh_rcvd_err. */
5631 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[FCUV].
5632 Internal:
5633 (opt. checks) int_xadm_fc_prot_err. */
5634 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RQO].
5635 Internal:
5636 radm_qoverflow. */
5637 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAUC].
5638 Internal:
5639 radm_unexp_cpl_err. */
5640 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACUR].
5641 Internal:
5642 radm_rcvd_cpl_ur. */
5643 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACCA].
5644 Internal:
5645 radm_rcvd_cpl_ca. */
5646 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[CAAR]. */
5647 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RARWDNS].
5648 Internal:
5649 radm_rcvd_ur_req. */
5650 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAMTLP].
5651 Internal:
5652 radm_mlf_tlp_err. */
5653 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACPP].
5654 Internal:
5655 radm_rcvd_cpl_poisoned. */
5656 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAWWPP].
5657 Internal:
5658 radm_rcvd_wreq_poisoned. */
5659 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[ECRC_E]. */
5660 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[LOFP]. */
5661 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[DATQ_PE]. */
5662 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D0_SBE]. */
5663 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D0_DBE]. */
5664 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D1_SBE]. */
5665 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D1_DBE]. */
5666 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_C_SBE]. */
5667 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_C_DBE]. */
5668 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D0_SBE]. */
5669 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D0_DBE]. */
5670 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D1_SBE]. */
5671 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D1_DBE]. */
5672 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_C_SBE]. */
5673 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_C_DBE]. */
5674 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D0_SBE]. */
5675 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D0_DBE]. */
5676 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D1_SBE]. */
5677 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D1_DBE]. */
5678 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_C_SBE]. */
5679 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_C_DBE]. */
5680 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTRY_SBE]. */
5681 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTRY_DBE]. */
5682 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */
5683 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */
5684 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */
5685 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */
5686 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[M2S_PE]. */
5687 uint64_t reserved_58_63 : 6;
5688 #endif /* Word 0 - End */
5689 } cn81xx;
5690 struct bdk_pemx_dbg_ena_w1s_cn83xx
5691 {
5692 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5693 uint64_t reserved_56_63 : 8;
5694 uint64_t rasdp : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RASDP]. */
5695 uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_D_DBE]. */
5696 uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_D_SBE]. */
5697 uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_C_DBE]. */
5698 uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_C_SBE]. */
5699 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_C_DBE]. */
5700 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_C_SBE]. */
5701 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D1_DBE]. */
5702 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D1_SBE]. */
5703 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D0_DBE]. */
5704 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D0_SBE]. */
5705 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_C_DBE]. */
5706 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_C_SBE]. */
5707 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D1_DBE]. */
5708 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D1_SBE]. */
5709 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D0_DBE]. */
5710 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D0_SBE]. */
5711 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_C_DBE]. */
5712 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_C_SBE]. */
5713 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D1_DBE]. */
5714 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D1_SBE]. */
5715 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D0_DBE]. */
5716 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D0_SBE]. */
5717 uint64_t bmd_e : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[BMD_E]. */
5718 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[LOFP]. */
5719 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[ECRC_E]. */
5720 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAWWPP].
5721 Internal:
5722 radm_rcvd_wreq_poisoned. */
5723 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACPP].
5724 Internal:
5725 radm_rcvd_cpl_poisoned. */
5726 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAMTLP].
5727 Internal:
5728 radm_mlf_tlp_err. */
5729 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RARWDNS].
5730 Internal:
5731 radm_rcvd_ur_req. */
5732 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[CAAR]. */
5733 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACCA].
5734 Internal:
5735 radm_rcvd_cpl_ca. */
5736 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACUR].
5737 Internal:
5738 radm_rcvd_cpl_ur. */
5739 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAUC].
5740 Internal:
5741 radm_unexp_cpl_err. */
5742 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RQO].
5743 Internal:
5744 radm_qoverflow. */
5745 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[FCUV].
5746 Internal:
5747 (opt. checks) int_xadm_fc_prot_err. */
5748 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPE].
5749 Internal:
5750 rmlh_rcvd_err. */
5751 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[FCPVWT].
5752 Internal:
5753 rtlh_fc_prot_err. */
5754 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[DPEOOSD].
5755 Internal:
5756 rdlh_prot_err. */
5757 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTWDLE].
5758 Internal:
5759 rdlh_bad_tlp_err. */
5760 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RDWDLE].
5761 Internal:
5762 rdlh_bad_dllp_err. */
5763 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[MRE].
5764 Internal:
5765 xdlh_replay_num_rlover_err. */
5766 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTE].
5767 Internal:
5768 xdlh_replay_timeout_err. */
5769 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[ACTO].
5770 Internal:
5771 pedc_radm_cpl_timeout. */
5772 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RVDM].
5773 Internal:
5774 pedc_radm_vendor_msg. */
5775 uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RUMEP].
5776 Internal:
5777 pedc_radm_msg_unlock. */
5778 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPTAMRC].
5779 Internal:
5780 pedc_radm_pm_to_ack. */
5781 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPMERC].
5782 Internal:
5783 pedc_radm_pm_pme. */
5784 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RFEMRC].
5785 Internal:
5786 pedc_radm_fatal_err. */
5787 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RNFEMRC].
5788 Internal:
5789 pedc_radm_nonfatal_err. */
5790 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RCEMRC].
5791 Internal:
5792 pedc_radm_correctable_err. */
5793 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPOISON].
5794 Internal:
5795 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
5796 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RECRCE].
5797 Internal:
5798 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
5799 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTLPLLE].
5800 Internal:
5801 pedc_radm_trgt1_dllp_abort &
5802 pedc__radm_trgt1_eot. */
5803 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTLPMAL].
5804 Internal:
5805 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
5806 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[SPOISON]. */
5807 #else /* Word 0 - Little Endian */
5808 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[SPOISON]. */
5809 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTLPMAL].
5810 Internal:
5811 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
5812 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTLPLLE].
5813 Internal:
5814 pedc_radm_trgt1_dllp_abort &
5815 pedc__radm_trgt1_eot. */
5816 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RECRCE].
5817 Internal:
5818 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
5819 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPOISON].
5820 Internal:
5821 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
5822 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RCEMRC].
5823 Internal:
5824 pedc_radm_correctable_err. */
5825 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RNFEMRC].
5826 Internal:
5827 pedc_radm_nonfatal_err. */
5828 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RFEMRC].
5829 Internal:
5830 pedc_radm_fatal_err. */
5831 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPMERC].
5832 Internal:
5833 pedc_radm_pm_pme. */
5834 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPTAMRC].
5835 Internal:
5836 pedc_radm_pm_to_ack. */
5837 uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RUMEP].
5838 Internal:
5839 pedc_radm_msg_unlock. */
5840 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RVDM].
5841 Internal:
5842 pedc_radm_vendor_msg. */
5843 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[ACTO].
5844 Internal:
5845 pedc_radm_cpl_timeout. */
5846 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTE].
5847 Internal:
5848 xdlh_replay_timeout_err. */
5849 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[MRE].
5850 Internal:
5851 xdlh_replay_num_rlover_err. */
5852 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RDWDLE].
5853 Internal:
5854 rdlh_bad_dllp_err. */
5855 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTWDLE].
5856 Internal:
5857 rdlh_bad_tlp_err. */
5858 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[DPEOOSD].
5859 Internal:
5860 rdlh_prot_err. */
5861 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[FCPVWT].
5862 Internal:
5863 rtlh_fc_prot_err. */
5864 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPE].
5865 Internal:
5866 rmlh_rcvd_err. */
5867 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[FCUV].
5868 Internal:
5869 (opt. checks) int_xadm_fc_prot_err. */
5870 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RQO].
5871 Internal:
5872 radm_qoverflow. */
5873 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAUC].
5874 Internal:
5875 radm_unexp_cpl_err. */
5876 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACUR].
5877 Internal:
5878 radm_rcvd_cpl_ur. */
5879 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACCA].
5880 Internal:
5881 radm_rcvd_cpl_ca. */
5882 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[CAAR]. */
5883 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RARWDNS].
5884 Internal:
5885 radm_rcvd_ur_req. */
5886 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAMTLP].
5887 Internal:
5888 radm_mlf_tlp_err. */
5889 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACPP].
5890 Internal:
5891 radm_rcvd_cpl_poisoned. */
5892 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAWWPP].
5893 Internal:
5894 radm_rcvd_wreq_poisoned. */
5895 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[ECRC_E]. */
5896 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[LOFP]. */
5897 uint64_t bmd_e : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[BMD_E]. */
5898 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D0_SBE]. */
5899 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D0_DBE]. */
5900 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D1_SBE]. */
5901 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D1_DBE]. */
5902 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_C_SBE]. */
5903 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_C_DBE]. */
5904 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D0_SBE]. */
5905 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D0_DBE]. */
5906 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D1_SBE]. */
5907 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D1_DBE]. */
5908 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_C_SBE]. */
5909 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_C_DBE]. */
5910 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D0_SBE]. */
5911 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D0_DBE]. */
5912 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D1_SBE]. */
5913 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D1_DBE]. */
5914 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_C_SBE]. */
5915 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_C_DBE]. */
5916 uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_C_SBE]. */
5917 uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_C_DBE]. */
5918 uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_D_SBE]. */
5919 uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_D_DBE]. */
5920 uint64_t rasdp : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RASDP]. */
5921 uint64_t reserved_56_63 : 8;
5922 #endif /* Word 0 - End */
5923 } cn83xx;
5924 struct bdk_pemx_dbg_ena_w1s_cn88xxp2
5925 {
5926 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5927 uint64_t reserved_58_63 : 6;
5928 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[M2S_PE]. */
5929 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
5930 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
5931 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
5932 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
5933 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */
5934 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */
5935 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
5936 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
5937 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
5938 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
5939 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
5940 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
5941 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
5942 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
5943 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
5944 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
5945 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
5946 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
5947 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
5948 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
5949 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
5950 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
5951 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
5952 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
5953 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */
5954 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */
5955 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
5956 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP].
5957 Internal:
5958 radm_rcvd_wreq_poisoned. */
5959 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP].
5960 Internal:
5961 radm_rcvd_cpl_poisoned. */
5962 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP].
5963 Internal:
5964 radm_mlf_tlp_err. */
5965 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS].
5966 Internal:
5967 radm_rcvd_ur_req. */
5968 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */
5969 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA].
5970 Internal:
5971 radm_rcvd_cpl_ca. */
5972 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR].
5973 Internal:
5974 radm_rcvd_cpl_ur. */
5975 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC].
5976 Internal:
5977 radm_unexp_cpl_err. */
5978 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO].
5979 Internal:
5980 radm_qoverflow. */
5981 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV].
5982 Internal:
5983 (opt. checks) int_xadm_fc_prot_err. */
5984 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE].
5985 Internal:
5986 rmlh_rcvd_err. */
5987 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT].
5988 Internal:
5989 rtlh_fc_prot_err. */
5990 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD].
5991 Internal:
5992 rdlh_prot_err. */
5993 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE].
5994 Internal:
5995 rdlh_bad_tlp_err. */
5996 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE].
5997 Internal:
5998 rdlh_bad_dllp_err. */
5999 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE].
6000 Internal:
6001 xdlh_replay_num_rlover_err. */
6002 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE].
6003 Internal:
6004 xdlh_replay_timeout_err. */
6005 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO].
6006 Internal:
6007 pedc_radm_cpl_timeout. */
6008 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM].
6009 Internal:
6010 pedc_radm_vendor_msg. */
6011 uint64_t reserved_10 : 1;
6012 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC].
6013 Internal:
6014 pedc_radm_pm_to_ack. */
6015 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC].
6016 Internal:
6017 pedc_radm_pm_pme. */
6018 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC].
6019 Internal:
6020 pedc_radm_fatal_err. */
6021 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC].
6022 Internal:
6023 pedc_radm_nonfatal_err. */
6024 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC].
6025 Internal:
6026 pedc_radm_correctable_err. */
6027 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON].
6028 Internal:
6029 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
6030 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE].
6031 Internal:
6032 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
6033 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE].
6034 Internal:
6035 pedc_radm_trgt1_dllp_abort &
6036 pedc__radm_trgt1_eot. */
6037 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL].
6038 Internal:
6039 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
6040 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON].
6041 Internal:
6042 peai__client0_tlp_ep & peai__client0_tlp_hv or
6043 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
6044 #else /* Word 0 - Little Endian */
6045 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON].
6046 Internal:
6047 peai__client0_tlp_ep & peai__client0_tlp_hv or
6048 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
6049 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL].
6050 Internal:
6051 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
6052 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE].
6053 Internal:
6054 pedc_radm_trgt1_dllp_abort &
6055 pedc__radm_trgt1_eot. */
6056 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE].
6057 Internal:
6058 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
6059 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON].
6060 Internal:
6061 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
6062 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC].
6063 Internal:
6064 pedc_radm_correctable_err. */
6065 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC].
6066 Internal:
6067 pedc_radm_nonfatal_err. */
6068 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC].
6069 Internal:
6070 pedc_radm_fatal_err. */
6071 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC].
6072 Internal:
6073 pedc_radm_pm_pme. */
6074 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC].
6075 Internal:
6076 pedc_radm_pm_to_ack. */
6077 uint64_t reserved_10 : 1;
6078 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM].
6079 Internal:
6080 pedc_radm_vendor_msg. */
6081 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO].
6082 Internal:
6083 pedc_radm_cpl_timeout. */
6084 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE].
6085 Internal:
6086 xdlh_replay_timeout_err. */
6087 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE].
6088 Internal:
6089 xdlh_replay_num_rlover_err. */
6090 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE].
6091 Internal:
6092 rdlh_bad_dllp_err. */
6093 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE].
6094 Internal:
6095 rdlh_bad_tlp_err. */
6096 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD].
6097 Internal:
6098 rdlh_prot_err. */
6099 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT].
6100 Internal:
6101 rtlh_fc_prot_err. */
6102 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE].
6103 Internal:
6104 rmlh_rcvd_err. */
6105 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV].
6106 Internal:
6107 (opt. checks) int_xadm_fc_prot_err. */
6108 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO].
6109 Internal:
6110 radm_qoverflow. */
6111 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC].
6112 Internal:
6113 radm_unexp_cpl_err. */
6114 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR].
6115 Internal:
6116 radm_rcvd_cpl_ur. */
6117 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA].
6118 Internal:
6119 radm_rcvd_cpl_ca. */
6120 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */
6121 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS].
6122 Internal:
6123 radm_rcvd_ur_req. */
6124 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP].
6125 Internal:
6126 radm_mlf_tlp_err. */
6127 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP].
6128 Internal:
6129 radm_rcvd_cpl_poisoned. */
6130 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP].
6131 Internal:
6132 radm_rcvd_wreq_poisoned. */
6133 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */
6134 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */
6135 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */
6136 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */
6137 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */
6138 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */
6139 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */
6140 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */
6141 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */
6142 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */
6143 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */
6144 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */
6145 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */
6146 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */
6147 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */
6148 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */
6149 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */
6150 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */
6151 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */
6152 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */
6153 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */
6154 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */
6155 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */
6156 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
6157 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
6158 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
6159 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
6160 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[M2S_PE]. */
6161 uint64_t reserved_58_63 : 6;
6162 #endif /* Word 0 - End */
6163 } cn88xxp2;
6164 };
6165 typedef union bdk_pemx_dbg_ena_w1s bdk_pemx_dbg_ena_w1s_t;
6166
6167 static inline uint64_t BDK_PEMX_DBG_ENA_W1S(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_DBG_ENA_W1S(unsigned long a)6168 static inline uint64_t BDK_PEMX_DBG_ENA_W1S(unsigned long a)
6169 {
6170 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
6171 return 0x87e0c0000460ll + 0x1000000ll * ((a) & 0x3);
6172 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
6173 return 0x87e0c0000460ll + 0x1000000ll * ((a) & 0x3);
6174 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
6175 return 0x87e0c0000460ll + 0x1000000ll * ((a) & 0x7);
6176 __bdk_csr_fatal("PEMX_DBG_ENA_W1S", 1, a, 0, 0, 0);
6177 }
6178
6179 #define typedef_BDK_PEMX_DBG_ENA_W1S(a) bdk_pemx_dbg_ena_w1s_t
6180 #define bustype_BDK_PEMX_DBG_ENA_W1S(a) BDK_CSR_TYPE_RSL
6181 #define basename_BDK_PEMX_DBG_ENA_W1S(a) "PEMX_DBG_ENA_W1S"
6182 #define device_bar_BDK_PEMX_DBG_ENA_W1S(a) 0x0 /* PF_BAR0 */
6183 #define busnum_BDK_PEMX_DBG_ENA_W1S(a) (a)
6184 #define arguments_BDK_PEMX_DBG_ENA_W1S(a) (a),-1,-1,-1
6185
6186 /**
6187 * Register (NCB) pem#_dbg_info
6188 *
6189 * PEM Debug Information Register
6190 * This is a debug information register of the PEM.
6191 *
6192 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
6193 *
6194 * This register is reset on PEM domain reset.
6195 */
6196 union bdk_pemx_dbg_info
6197 {
6198 uint64_t u;
6199 struct bdk_pemx_dbg_info_s
6200 {
6201 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6202 uint64_t reserved_58_63 : 6;
6203 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Detected a M2S FIFO parity error. */
6204 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */
6205 uint64_t reserved_32_55 : 24;
6206 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */
6207 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */
6208 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload.
6209 Internal:
6210 radm_rcvd_wreq_poisoned. */
6211 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload.
6212 Internal:
6213 radm_rcvd_cpl_poisoned. */
6214 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP.
6215 Internal:
6216 radm_mlf_tlp_err. */
6217 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support.
6218 Internal:
6219 radm_rcvd_ur_req. */
6220 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate
6221 completer aborts. */
6222 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status.
6223 Internal:
6224 radm_rcvd_cpl_ca. */
6225 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status.
6226 Internal:
6227 radm_rcvd_cpl_ur. */
6228 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion.
6229 Internal:
6230 radm_unexp_cpl_err. */
6231 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are
6232 ignored.
6233
6234 Internal:
6235 radm_qoverflow. */
6236 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation.
6237 Internal:
6238 (opt. checks) int_xadm_fc_prot_err. */
6239 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus =
6240 0x7).
6241
6242 Internal:
6243 rmlh_rcvd_err. */
6244 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer).
6245 Internal:
6246 rtlh_fc_prot_err. */
6247 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP).
6248 Internal:
6249 rdlh_prot_err. */
6250 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error.
6251 Internal:
6252 rdlh_bad_tlp_err. */
6253 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error.
6254 Internal:
6255 rdlh_bad_dllp_err. */
6256 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded.
6257 Internal:
6258 xdlh_replay_num_rlover_err. */
6259 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The
6260 probability of this bit being set increases with the traffic load.
6261
6262 Internal:
6263 xdlh_replay_timeout_err. */
6264 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred.
6265 Internal:
6266 pedc_radm_cpl_timeout. */
6267 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message.
6268 Internal:
6269 pedc_radm_vendor_msg. */
6270 uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only).
6271 Internal:
6272 pedc_radm_msg_unlock. */
6273 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only).
6274 Internal:
6275 pedc_radm_pm_to_ack. */
6276 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only).
6277 Internal:
6278 pedc_radm_pm_pme. */
6279 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL
6280 is set.
6281
6282 Internal:
6283 pedc_radm_fatal_err. */
6284 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only).
6285 Internal:
6286 pedc_radm_nonfatal_err. */
6287 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only).
6288 Internal:
6289 pedc_radm_correctable_err. */
6290 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP.
6291 Internal:
6292 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
6293 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error.
6294 Internal:
6295 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
6296 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error.
6297 Internal:
6298 pedc_radm_trgt1_dllp_abort &
6299 pedc__radm_trgt1_eot. */
6300 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or
6301 if a received AtomicOp violates address/length rules, this bit is set as well.
6302
6303 Internal:
6304 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
6305 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent.
6306 Internal:
6307 peai__client0_tlp_ep & peai__client0_tlp_hv or
6308 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
6309 #else /* Word 0 - Little Endian */
6310 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent.
6311 Internal:
6312 peai__client0_tlp_ep & peai__client0_tlp_hv or
6313 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
6314 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or
6315 if a received AtomicOp violates address/length rules, this bit is set as well.
6316
6317 Internal:
6318 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
6319 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error.
6320 Internal:
6321 pedc_radm_trgt1_dllp_abort &
6322 pedc__radm_trgt1_eot. */
6323 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error.
6324 Internal:
6325 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
6326 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP.
6327 Internal:
6328 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
6329 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only).
6330 Internal:
6331 pedc_radm_correctable_err. */
6332 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only).
6333 Internal:
6334 pedc_radm_nonfatal_err. */
6335 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL
6336 is set.
6337
6338 Internal:
6339 pedc_radm_fatal_err. */
6340 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only).
6341 Internal:
6342 pedc_radm_pm_pme. */
6343 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only).
6344 Internal:
6345 pedc_radm_pm_to_ack. */
6346 uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only).
6347 Internal:
6348 pedc_radm_msg_unlock. */
6349 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message.
6350 Internal:
6351 pedc_radm_vendor_msg. */
6352 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred.
6353 Internal:
6354 pedc_radm_cpl_timeout. */
6355 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The
6356 probability of this bit being set increases with the traffic load.
6357
6358 Internal:
6359 xdlh_replay_timeout_err. */
6360 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded.
6361 Internal:
6362 xdlh_replay_num_rlover_err. */
6363 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error.
6364 Internal:
6365 rdlh_bad_dllp_err. */
6366 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error.
6367 Internal:
6368 rdlh_bad_tlp_err. */
6369 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP).
6370 Internal:
6371 rdlh_prot_err. */
6372 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer).
6373 Internal:
6374 rtlh_fc_prot_err. */
6375 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus =
6376 0x7).
6377
6378 Internal:
6379 rmlh_rcvd_err. */
6380 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation.
6381 Internal:
6382 (opt. checks) int_xadm_fc_prot_err. */
6383 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are
6384 ignored.
6385
6386 Internal:
6387 radm_qoverflow. */
6388 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion.
6389 Internal:
6390 radm_unexp_cpl_err. */
6391 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status.
6392 Internal:
6393 radm_rcvd_cpl_ur. */
6394 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status.
6395 Internal:
6396 radm_rcvd_cpl_ca. */
6397 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate
6398 completer aborts. */
6399 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support.
6400 Internal:
6401 radm_rcvd_ur_req. */
6402 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP.
6403 Internal:
6404 radm_mlf_tlp_err. */
6405 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload.
6406 Internal:
6407 radm_rcvd_cpl_poisoned. */
6408 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload.
6409 Internal:
6410 radm_rcvd_wreq_poisoned. */
6411 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */
6412 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */
6413 uint64_t reserved_32_55 : 24;
6414 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */
6415 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Detected a M2S FIFO parity error. */
6416 uint64_t reserved_58_63 : 6;
6417 #endif /* Word 0 - End */
6418 } s;
6419 struct bdk_pemx_dbg_info_cn88xxp1
6420 {
6421 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6422 uint64_t reserved_57_63 : 7;
6423 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */
6424 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Detected a core header queue bank1 single-bit error. */
6425 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a core header queue bank0 double-bit error. */
6426 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a core header queue bank0 single-bit error. */
6427 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a core retry RAM double-bit error. */
6428 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a core retry RAM single-bit error. */
6429 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */
6430 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */
6431 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */
6432 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */
6433 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */
6434 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */
6435 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */
6436 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */
6437 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */
6438 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */
6439 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */
6440 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */
6441 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */
6442 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */
6443 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */
6444 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */
6445 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */
6446 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */
6447 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Detected a data queue RAM parity error. */
6448 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */
6449 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */
6450 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload.
6451 Internal:
6452 radm_rcvd_wreq_poisoned. */
6453 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload.
6454 Internal:
6455 radm_rcvd_cpl_poisoned. */
6456 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP.
6457 Internal:
6458 radm_mlf_tlp_err. */
6459 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support.
6460 Internal:
6461 radm_rcvd_ur_req. */
6462 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate
6463 completer aborts. */
6464 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status.
6465 Internal:
6466 radm_rcvd_cpl_ca. */
6467 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status.
6468 Internal:
6469 radm_rcvd_cpl_ur. */
6470 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion.
6471 Internal:
6472 radm_unexp_cpl_err. */
6473 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are
6474 ignored.
6475
6476 Internal:
6477 radm_qoverflow. */
6478 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation.
6479 Internal:
6480 (opt. checks) int_xadm_fc_prot_err. */
6481 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus =
6482 0x7).
6483
6484 Internal:
6485 rmlh_rcvd_err. */
6486 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer).
6487 Internal:
6488 rtlh_fc_prot_err. */
6489 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP).
6490 Internal:
6491 rdlh_prot_err. */
6492 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error.
6493 Internal:
6494 rdlh_bad_tlp_err. */
6495 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error.
6496 Internal:
6497 rdlh_bad_dllp_err. */
6498 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded.
6499 Internal:
6500 xdlh_replay_num_rlover_err. */
6501 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The
6502 probability of this bit being set increases with the traffic load.
6503
6504 Internal:
6505 xdlh_replay_timeout_err. */
6506 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred.
6507 Internal:
6508 pedc_radm_cpl_timeout. */
6509 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message.
6510 Internal:
6511 pedc_radm_vendor_msg. */
6512 uint64_t reserved_10 : 1;
6513 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only).
6514 Internal:
6515 pedc_radm_pm_to_ack. */
6516 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only).
6517 Internal:
6518 pedc_radm_pm_pme. */
6519 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL
6520 is set.
6521
6522 Internal:
6523 pedc_radm_fatal_err. */
6524 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only).
6525 Internal:
6526 pedc_radm_nonfatal_err. */
6527 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only).
6528 Internal:
6529 pedc_radm_correctable_err. */
6530 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP.
6531 Internal:
6532 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
6533 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error.
6534 Internal:
6535 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
6536 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error.
6537 Internal:
6538 pedc_radm_trgt1_dllp_abort &
6539 pedc__radm_trgt1_eot. */
6540 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or
6541 if a received AtomicOp violates address/length rules, this bit is set as well.
6542
6543 Internal:
6544 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
6545 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent.
6546 Internal:
6547 peai__client0_tlp_ep & peai__client0_tlp_hv or
6548 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
6549 #else /* Word 0 - Little Endian */
6550 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent.
6551 Internal:
6552 peai__client0_tlp_ep & peai__client0_tlp_hv or
6553 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
6554 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or
6555 if a received AtomicOp violates address/length rules, this bit is set as well.
6556
6557 Internal:
6558 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
6559 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error.
6560 Internal:
6561 pedc_radm_trgt1_dllp_abort &
6562 pedc__radm_trgt1_eot. */
6563 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error.
6564 Internal:
6565 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
6566 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP.
6567 Internal:
6568 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
6569 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only).
6570 Internal:
6571 pedc_radm_correctable_err. */
6572 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only).
6573 Internal:
6574 pedc_radm_nonfatal_err. */
6575 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL
6576 is set.
6577
6578 Internal:
6579 pedc_radm_fatal_err. */
6580 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only).
6581 Internal:
6582 pedc_radm_pm_pme. */
6583 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only).
6584 Internal:
6585 pedc_radm_pm_to_ack. */
6586 uint64_t reserved_10 : 1;
6587 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message.
6588 Internal:
6589 pedc_radm_vendor_msg. */
6590 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred.
6591 Internal:
6592 pedc_radm_cpl_timeout. */
6593 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The
6594 probability of this bit being set increases with the traffic load.
6595
6596 Internal:
6597 xdlh_replay_timeout_err. */
6598 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded.
6599 Internal:
6600 xdlh_replay_num_rlover_err. */
6601 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error.
6602 Internal:
6603 rdlh_bad_dllp_err. */
6604 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error.
6605 Internal:
6606 rdlh_bad_tlp_err. */
6607 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP).
6608 Internal:
6609 rdlh_prot_err. */
6610 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer).
6611 Internal:
6612 rtlh_fc_prot_err. */
6613 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus =
6614 0x7).
6615
6616 Internal:
6617 rmlh_rcvd_err. */
6618 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation.
6619 Internal:
6620 (opt. checks) int_xadm_fc_prot_err. */
6621 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are
6622 ignored.
6623
6624 Internal:
6625 radm_qoverflow. */
6626 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion.
6627 Internal:
6628 radm_unexp_cpl_err. */
6629 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status.
6630 Internal:
6631 radm_rcvd_cpl_ur. */
6632 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status.
6633 Internal:
6634 radm_rcvd_cpl_ca. */
6635 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate
6636 completer aborts. */
6637 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support.
6638 Internal:
6639 radm_rcvd_ur_req. */
6640 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP.
6641 Internal:
6642 radm_mlf_tlp_err. */
6643 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload.
6644 Internal:
6645 radm_rcvd_cpl_poisoned. */
6646 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload.
6647 Internal:
6648 radm_rcvd_wreq_poisoned. */
6649 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */
6650 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */
6651 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Detected a data queue RAM parity error. */
6652 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */
6653 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */
6654 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */
6655 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */
6656 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */
6657 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */
6658 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */
6659 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */
6660 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */
6661 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */
6662 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */
6663 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */
6664 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */
6665 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */
6666 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */
6667 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */
6668 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */
6669 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */
6670 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a core retry RAM single-bit error. */
6671 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a core retry RAM double-bit error. */
6672 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a core header queue bank0 single-bit error. */
6673 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a core header queue bank0 double-bit error. */
6674 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Detected a core header queue bank1 single-bit error. */
6675 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */
6676 uint64_t reserved_57_63 : 7;
6677 #endif /* Word 0 - End */
6678 } cn88xxp1;
6679 struct bdk_pemx_dbg_info_cn9
6680 {
6681 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6682 uint64_t reserved_34_63 : 30;
6683 uint64_t rasdp : 1; /**< [ 33: 33](R/W1C/H) Core entered RAS data protection error mode. */
6684 uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) A NP or P TLP was seen in the outbound path, but it was not allowed to master the bus.
6685 If a PF TLP and the PCIEEP_CMD[ME] is not set.
6686 For VF TLP, either the PCIEEP_CMD[ME]/PCIEEPVF_CMD[ME] are not set. */
6687 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */
6688 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */
6689 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload.
6690 Internal:
6691 radm_rcvd_wreq_poisoned. */
6692 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload.
6693 Internal:
6694 radm_rcvd_cpl_poisoned. */
6695 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP.
6696 Internal:
6697 radm_mlf_tlp_err. */
6698 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support.
6699 Internal:
6700 radm_rcvd_ur_req. */
6701 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate
6702 completer aborts. */
6703 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status.
6704 Internal:
6705 radm_rcvd_cpl_ca. */
6706 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status.
6707 Internal:
6708 radm_rcvd_cpl_ur. */
6709 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion.
6710 Internal:
6711 radm_unexp_cpl_err. */
6712 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are
6713 ignored.
6714
6715 Internal:
6716 radm_qoverflow. */
6717 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation.
6718 Internal:
6719 (opt. checks) int_xadm_fc_prot_err. */
6720 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus =
6721 0x7).
6722
6723 Internal:
6724 rmlh_rcvd_err. */
6725 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer).
6726 Internal:
6727 rtlh_fc_prot_err. */
6728 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP).
6729 Internal:
6730 rdlh_prot_err. */
6731 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error.
6732 Internal:
6733 rdlh_bad_tlp_err. */
6734 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error.
6735 Internal:
6736 rdlh_bad_dllp_err. */
6737 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded.
6738 Internal:
6739 xdlh_replay_num_rlover_err. */
6740 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the replay timer expires in the PCIe core. The
6741 probability of this bit being set increases with the traffic load.
6742
6743 Internal:
6744 xdlh_replay_timeout_err. */
6745 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred.
6746 Internal:
6747 pedc_radm_cpl_timeout. */
6748 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message.
6749 Internal:
6750 pedc_radm_vendor_msg. */
6751 uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only).
6752 Internal:
6753 pedc_radm_msg_unlock. */
6754 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only).
6755 Internal:
6756 pedc_radm_pm_to_ack. */
6757 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only).
6758 Internal:
6759 pedc_radm_pm_pme. */
6760 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message. This bit is set when a message with ERR_FATAL
6761 is received.
6762
6763 Internal:
6764 pedc_radm_fatal_err. */
6765 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message.
6766 Internal:
6767 pedc_radm_nonfatal_err. */
6768 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message.
6769 Internal:
6770 pedc_radm_correctable_err. */
6771 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP not to be forwarded to the peer.
6772 Internal:
6773 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
6774 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error.
6775 Internal:
6776 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
6777 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error.
6778 Internal:
6779 pedc_radm_trgt1_dllp_abort &
6780 pedc__radm_trgt1_eot. */
6781 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or vendor message) or
6782 if a received AtomicOp violates address/length rules, this bit is set as well.
6783
6784 Internal:
6785 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
6786 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. This legacy interrupt is deprecated and is never set. */
6787 #else /* Word 0 - Little Endian */
6788 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. This legacy interrupt is deprecated and is never set. */
6789 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or vendor message) or
6790 if a received AtomicOp violates address/length rules, this bit is set as well.
6791
6792 Internal:
6793 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
6794 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error.
6795 Internal:
6796 pedc_radm_trgt1_dllp_abort &
6797 pedc__radm_trgt1_eot. */
6798 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error.
6799 Internal:
6800 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
6801 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP not to be forwarded to the peer.
6802 Internal:
6803 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
6804 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message.
6805 Internal:
6806 pedc_radm_correctable_err. */
6807 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message.
6808 Internal:
6809 pedc_radm_nonfatal_err. */
6810 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message. This bit is set when a message with ERR_FATAL
6811 is received.
6812
6813 Internal:
6814 pedc_radm_fatal_err. */
6815 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only).
6816 Internal:
6817 pedc_radm_pm_pme. */
6818 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only).
6819 Internal:
6820 pedc_radm_pm_to_ack. */
6821 uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only).
6822 Internal:
6823 pedc_radm_msg_unlock. */
6824 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message.
6825 Internal:
6826 pedc_radm_vendor_msg. */
6827 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred.
6828 Internal:
6829 pedc_radm_cpl_timeout. */
6830 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the replay timer expires in the PCIe core. The
6831 probability of this bit being set increases with the traffic load.
6832
6833 Internal:
6834 xdlh_replay_timeout_err. */
6835 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded.
6836 Internal:
6837 xdlh_replay_num_rlover_err. */
6838 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error.
6839 Internal:
6840 rdlh_bad_dllp_err. */
6841 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error.
6842 Internal:
6843 rdlh_bad_tlp_err. */
6844 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP).
6845 Internal:
6846 rdlh_prot_err. */
6847 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer).
6848 Internal:
6849 rtlh_fc_prot_err. */
6850 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus =
6851 0x7).
6852
6853 Internal:
6854 rmlh_rcvd_err. */
6855 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation.
6856 Internal:
6857 (opt. checks) int_xadm_fc_prot_err. */
6858 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are
6859 ignored.
6860
6861 Internal:
6862 radm_qoverflow. */
6863 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion.
6864 Internal:
6865 radm_unexp_cpl_err. */
6866 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status.
6867 Internal:
6868 radm_rcvd_cpl_ur. */
6869 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status.
6870 Internal:
6871 radm_rcvd_cpl_ca. */
6872 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate
6873 completer aborts. */
6874 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support.
6875 Internal:
6876 radm_rcvd_ur_req. */
6877 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP.
6878 Internal:
6879 radm_mlf_tlp_err. */
6880 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload.
6881 Internal:
6882 radm_rcvd_cpl_poisoned. */
6883 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload.
6884 Internal:
6885 radm_rcvd_wreq_poisoned. */
6886 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */
6887 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */
6888 uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) A NP or P TLP was seen in the outbound path, but it was not allowed to master the bus.
6889 If a PF TLP and the PCIEEP_CMD[ME] is not set.
6890 For VF TLP, either the PCIEEP_CMD[ME]/PCIEEPVF_CMD[ME] are not set. */
6891 uint64_t rasdp : 1; /**< [ 33: 33](R/W1C/H) Core entered RAS data protection error mode. */
6892 uint64_t reserved_34_63 : 30;
6893 #endif /* Word 0 - End */
6894 } cn9;
6895 struct bdk_pemx_dbg_info_cn81xx
6896 {
6897 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6898 uint64_t reserved_58_63 : 6;
6899 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Detected a M2S FIFO parity error. */
6900 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */
6901 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Detected a core header queue bank1 single-bit error. */
6902 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a core header queue bank0 double-bit error. */
6903 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a core header queue bank0 single-bit error. */
6904 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a core retry RAM double-bit error. */
6905 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a core retry RAM single-bit error. */
6906 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */
6907 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */
6908 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */
6909 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */
6910 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */
6911 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */
6912 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */
6913 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */
6914 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */
6915 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */
6916 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */
6917 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */
6918 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */
6919 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */
6920 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */
6921 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */
6922 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */
6923 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */
6924 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Detected a data queue RAM parity error. */
6925 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */
6926 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */
6927 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload.
6928 Internal:
6929 radm_rcvd_wreq_poisoned. */
6930 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload.
6931 Internal:
6932 radm_rcvd_cpl_poisoned. */
6933 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP.
6934 Internal:
6935 radm_mlf_tlp_err. */
6936 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support.
6937 Internal:
6938 radm_rcvd_ur_req. */
6939 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate
6940 completer aborts. */
6941 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status.
6942 Internal:
6943 radm_rcvd_cpl_ca. */
6944 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status.
6945 Internal:
6946 radm_rcvd_cpl_ur. */
6947 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion.
6948 Internal:
6949 radm_unexp_cpl_err. */
6950 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are
6951 ignored.
6952
6953 Internal:
6954 radm_qoverflow. */
6955 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation.
6956 Internal:
6957 (opt. checks) int_xadm_fc_prot_err. */
6958 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus =
6959 0x7).
6960
6961 Internal:
6962 rmlh_rcvd_err. */
6963 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer).
6964 Internal:
6965 rtlh_fc_prot_err. */
6966 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP).
6967 Internal:
6968 rdlh_prot_err. */
6969 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error.
6970 Internal:
6971 rdlh_bad_tlp_err. */
6972 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error.
6973 Internal:
6974 rdlh_bad_dllp_err. */
6975 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded.
6976 Internal:
6977 xdlh_replay_num_rlover_err. */
6978 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The
6979 probability of this bit being set increases with the traffic load.
6980
6981 Internal:
6982 xdlh_replay_timeout_err. */
6983 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred.
6984 Internal:
6985 pedc_radm_cpl_timeout. */
6986 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message.
6987 Internal:
6988 pedc_radm_vendor_msg. */
6989 uint64_t reserved_10 : 1;
6990 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only).
6991 Internal:
6992 pedc_radm_pm_to_ack. */
6993 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only).
6994 Internal:
6995 pedc_radm_pm_pme. */
6996 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL
6997 is set.
6998
6999 Internal:
7000 pedc_radm_fatal_err. */
7001 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only).
7002 Internal:
7003 pedc_radm_nonfatal_err. */
7004 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only).
7005 Internal:
7006 pedc_radm_correctable_err. */
7007 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP.
7008 Internal:
7009 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
7010 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error.
7011 Internal:
7012 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
7013 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error.
7014 Internal:
7015 pedc_radm_trgt1_dllp_abort &
7016 pedc__radm_trgt1_eot. */
7017 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or
7018 if a received AtomicOp violates address/length rules, this bit is set as well.
7019
7020 Internal:
7021 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
7022 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent.
7023 Internal:
7024 peai__client0_tlp_ep & peai__client0_tlp_hv or
7025 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
7026 #else /* Word 0 - Little Endian */
7027 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent.
7028 Internal:
7029 peai__client0_tlp_ep & peai__client0_tlp_hv or
7030 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
7031 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or
7032 if a received AtomicOp violates address/length rules, this bit is set as well.
7033
7034 Internal:
7035 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
7036 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error.
7037 Internal:
7038 pedc_radm_trgt1_dllp_abort &
7039 pedc__radm_trgt1_eot. */
7040 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error.
7041 Internal:
7042 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
7043 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP.
7044 Internal:
7045 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
7046 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only).
7047 Internal:
7048 pedc_radm_correctable_err. */
7049 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only).
7050 Internal:
7051 pedc_radm_nonfatal_err. */
7052 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL
7053 is set.
7054
7055 Internal:
7056 pedc_radm_fatal_err. */
7057 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only).
7058 Internal:
7059 pedc_radm_pm_pme. */
7060 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only).
7061 Internal:
7062 pedc_radm_pm_to_ack. */
7063 uint64_t reserved_10 : 1;
7064 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message.
7065 Internal:
7066 pedc_radm_vendor_msg. */
7067 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred.
7068 Internal:
7069 pedc_radm_cpl_timeout. */
7070 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The
7071 probability of this bit being set increases with the traffic load.
7072
7073 Internal:
7074 xdlh_replay_timeout_err. */
7075 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded.
7076 Internal:
7077 xdlh_replay_num_rlover_err. */
7078 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error.
7079 Internal:
7080 rdlh_bad_dllp_err. */
7081 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error.
7082 Internal:
7083 rdlh_bad_tlp_err. */
7084 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP).
7085 Internal:
7086 rdlh_prot_err. */
7087 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer).
7088 Internal:
7089 rtlh_fc_prot_err. */
7090 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus =
7091 0x7).
7092
7093 Internal:
7094 rmlh_rcvd_err. */
7095 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation.
7096 Internal:
7097 (opt. checks) int_xadm_fc_prot_err. */
7098 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are
7099 ignored.
7100
7101 Internal:
7102 radm_qoverflow. */
7103 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion.
7104 Internal:
7105 radm_unexp_cpl_err. */
7106 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status.
7107 Internal:
7108 radm_rcvd_cpl_ur. */
7109 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status.
7110 Internal:
7111 radm_rcvd_cpl_ca. */
7112 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate
7113 completer aborts. */
7114 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support.
7115 Internal:
7116 radm_rcvd_ur_req. */
7117 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP.
7118 Internal:
7119 radm_mlf_tlp_err. */
7120 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload.
7121 Internal:
7122 radm_rcvd_cpl_poisoned. */
7123 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload.
7124 Internal:
7125 radm_rcvd_wreq_poisoned. */
7126 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */
7127 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */
7128 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Detected a data queue RAM parity error. */
7129 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */
7130 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */
7131 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */
7132 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */
7133 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */
7134 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */
7135 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */
7136 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */
7137 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */
7138 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */
7139 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */
7140 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */
7141 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */
7142 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */
7143 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */
7144 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */
7145 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */
7146 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */
7147 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a core retry RAM single-bit error. */
7148 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a core retry RAM double-bit error. */
7149 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a core header queue bank0 single-bit error. */
7150 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a core header queue bank0 double-bit error. */
7151 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Detected a core header queue bank1 single-bit error. */
7152 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */
7153 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Detected a M2S FIFO parity error. */
7154 uint64_t reserved_58_63 : 6;
7155 #endif /* Word 0 - End */
7156 } cn81xx;
7157 struct bdk_pemx_dbg_info_cn83xx
7158 {
7159 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7160 uint64_t reserved_56_63 : 8;
7161 uint64_t rasdp : 1; /**< [ 55: 55](R/W1C/H) Core entered RAS data protection error mode. */
7162 uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a M2S data fifo double bit error. */
7163 uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a M2S data fifo single bit error. */
7164 uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a M2S data fifo double bit error. */
7165 uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a M2S control fifo single bit error. */
7166 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */
7167 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */
7168 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */
7169 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */
7170 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */
7171 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */
7172 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */
7173 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */
7174 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */
7175 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */
7176 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */
7177 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */
7178 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */
7179 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */
7180 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */
7181 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */
7182 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */
7183 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */
7184 uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) A NP or P TLP was seen in the outbound path, but it was not allowed to master the bus.
7185 If a PF TLP and the PCIEEP()_CFG001[ME] is not set.
7186 For VF TLP, either the PCIEEP()_CFG001[ME]/PCIEEPVF()_CFG001[ME] are not set. */
7187 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */
7188 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */
7189 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload.
7190 Internal:
7191 radm_rcvd_wreq_poisoned. */
7192 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload.
7193 Internal:
7194 radm_rcvd_cpl_poisoned. */
7195 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP.
7196 Internal:
7197 radm_mlf_tlp_err. */
7198 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support.
7199 Internal:
7200 radm_rcvd_ur_req. */
7201 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate
7202 completer aborts. */
7203 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status.
7204 Internal:
7205 radm_rcvd_cpl_ca. */
7206 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status.
7207 Internal:
7208 radm_rcvd_cpl_ur. */
7209 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion.
7210 Internal:
7211 radm_unexp_cpl_err. */
7212 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are
7213 ignored.
7214
7215 Internal:
7216 radm_qoverflow. */
7217 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation.
7218 Internal:
7219 (opt. checks) int_xadm_fc_prot_err. */
7220 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus =
7221 0x7).
7222
7223 Internal:
7224 rmlh_rcvd_err. */
7225 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer).
7226 Internal:
7227 rtlh_fc_prot_err. */
7228 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP).
7229 Internal:
7230 rdlh_prot_err. */
7231 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error.
7232 Internal:
7233 rdlh_bad_tlp_err. */
7234 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error.
7235 Internal:
7236 rdlh_bad_dllp_err. */
7237 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded.
7238 Internal:
7239 xdlh_replay_num_rlover_err. */
7240 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The
7241 probability of this bit being set increases with the traffic load.
7242
7243 Internal:
7244 xdlh_replay_timeout_err. */
7245 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred.
7246 Internal:
7247 pedc_radm_cpl_timeout. */
7248 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message.
7249 Internal:
7250 pedc_radm_vendor_msg. */
7251 uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only).
7252 Internal:
7253 pedc_radm_msg_unlock. */
7254 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only).
7255 Internal:
7256 pedc_radm_pm_to_ack. */
7257 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only).
7258 Internal:
7259 pedc_radm_pm_pme. */
7260 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message. This bit is set when a message with ERR_FATAL
7261 is set.
7262
7263 Internal:
7264 pedc_radm_fatal_err. */
7265 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message.
7266 Internal:
7267 pedc_radm_nonfatal_err. */
7268 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message.
7269 Internal:
7270 pedc_radm_correctable_err. */
7271 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP not to be forwarded to the peer.
7272 Internal:
7273 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
7274 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error.
7275 Internal:
7276 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
7277 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error.
7278 Internal:
7279 pedc_radm_trgt1_dllp_abort &
7280 pedc__radm_trgt1_eot. */
7281 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or
7282 if a received AtomicOp violates address/length rules, this bit is set as well.
7283
7284 Internal:
7285 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
7286 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. This legacy interrupt is deprecated and is never set. */
7287 #else /* Word 0 - Little Endian */
7288 uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. This legacy interrupt is deprecated and is never set. */
7289 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or
7290 if a received AtomicOp violates address/length rules, this bit is set as well.
7291
7292 Internal:
7293 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
7294 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error.
7295 Internal:
7296 pedc_radm_trgt1_dllp_abort &
7297 pedc__radm_trgt1_eot. */
7298 uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error.
7299 Internal:
7300 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
7301 uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP not to be forwarded to the peer.
7302 Internal:
7303 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
7304 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message.
7305 Internal:
7306 pedc_radm_correctable_err. */
7307 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message.
7308 Internal:
7309 pedc_radm_nonfatal_err. */
7310 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message. This bit is set when a message with ERR_FATAL
7311 is set.
7312
7313 Internal:
7314 pedc_radm_fatal_err. */
7315 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only).
7316 Internal:
7317 pedc_radm_pm_pme. */
7318 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only).
7319 Internal:
7320 pedc_radm_pm_to_ack. */
7321 uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only).
7322 Internal:
7323 pedc_radm_msg_unlock. */
7324 uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message.
7325 Internal:
7326 pedc_radm_vendor_msg. */
7327 uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred.
7328 Internal:
7329 pedc_radm_cpl_timeout. */
7330 uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The
7331 probability of this bit being set increases with the traffic load.
7332
7333 Internal:
7334 xdlh_replay_timeout_err. */
7335 uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded.
7336 Internal:
7337 xdlh_replay_num_rlover_err. */
7338 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error.
7339 Internal:
7340 rdlh_bad_dllp_err. */
7341 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error.
7342 Internal:
7343 rdlh_bad_tlp_err. */
7344 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP).
7345 Internal:
7346 rdlh_prot_err. */
7347 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer).
7348 Internal:
7349 rtlh_fc_prot_err. */
7350 uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus =
7351 0x7).
7352
7353 Internal:
7354 rmlh_rcvd_err. */
7355 uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation.
7356 Internal:
7357 (opt. checks) int_xadm_fc_prot_err. */
7358 uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are
7359 ignored.
7360
7361 Internal:
7362 radm_qoverflow. */
7363 uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion.
7364 Internal:
7365 radm_unexp_cpl_err. */
7366 uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status.
7367 Internal:
7368 radm_rcvd_cpl_ur. */
7369 uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status.
7370 Internal:
7371 radm_rcvd_cpl_ca. */
7372 uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate
7373 completer aborts. */
7374 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support.
7375 Internal:
7376 radm_rcvd_ur_req. */
7377 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP.
7378 Internal:
7379 radm_mlf_tlp_err. */
7380 uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload.
7381 Internal:
7382 radm_rcvd_cpl_poisoned. */
7383 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload.
7384 Internal:
7385 radm_rcvd_wreq_poisoned. */
7386 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */
7387 uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */
7388 uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) A NP or P TLP was seen in the outbound path, but it was not allowed to master the bus.
7389 If a PF TLP and the PCIEEP()_CFG001[ME] is not set.
7390 For VF TLP, either the PCIEEP()_CFG001[ME]/PCIEEPVF()_CFG001[ME] are not set. */
7391 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */
7392 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */
7393 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */
7394 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */
7395 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */
7396 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */
7397 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */
7398 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */
7399 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */
7400 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */
7401 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */
7402 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */
7403 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */
7404 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */
7405 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */
7406 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */
7407 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */
7408 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */
7409 uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a M2S control fifo single bit error. */
7410 uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a M2S data fifo double bit error. */
7411 uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a M2S data fifo single bit error. */
7412 uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a M2S data fifo double bit error. */
7413 uint64_t rasdp : 1; /**< [ 55: 55](R/W1C/H) Core entered RAS data protection error mode. */
7414 uint64_t reserved_56_63 : 8;
7415 #endif /* Word 0 - End */
7416 } cn83xx;
7417 /* struct bdk_pemx_dbg_info_cn81xx cn88xxp2; */
7418 };
7419 typedef union bdk_pemx_dbg_info bdk_pemx_dbg_info_t;
7420
7421 static inline uint64_t BDK_PEMX_DBG_INFO(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_DBG_INFO(unsigned long a)7422 static inline uint64_t BDK_PEMX_DBG_INFO(unsigned long a)
7423 {
7424 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7425 return 0x87e0c0000448ll + 0x1000000ll * ((a) & 0x3);
7426 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7427 return 0x87e0c0000448ll + 0x1000000ll * ((a) & 0x3);
7428 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7429 return 0x87e0c0000448ll + 0x1000000ll * ((a) & 0x7);
7430 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
7431 return 0x8e00000000f8ll + 0x1000000000ll * ((a) & 0x3);
7432 __bdk_csr_fatal("PEMX_DBG_INFO", 1, a, 0, 0, 0);
7433 }
7434
7435 #define typedef_BDK_PEMX_DBG_INFO(a) bdk_pemx_dbg_info_t
7436 #define bustype_BDK_PEMX_DBG_INFO(a) BDK_CSR_TYPE_NCB
7437 #define basename_BDK_PEMX_DBG_INFO(a) "PEMX_DBG_INFO"
7438 #define device_bar_BDK_PEMX_DBG_INFO(a) 0x0 /* PF_BAR0 */
7439 #define busnum_BDK_PEMX_DBG_INFO(a) (a)
7440 #define arguments_BDK_PEMX_DBG_INFO(a) (a),-1,-1,-1
7441
7442 /**
7443 * Register (RSL) pem#_dbg_info_w1s
7444 *
7445 * PEM Debug Information Set Register
7446 * This register sets interrupt bits.
7447 */
7448 union bdk_pemx_dbg_info_w1s
7449 {
7450 uint64_t u;
7451 struct bdk_pemx_dbg_info_w1s_s
7452 {
7453 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7454 uint64_t reserved_58_63 : 6;
7455 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[M2S_PE]. */
7456 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
7457 uint64_t reserved_51_55 : 5;
7458 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */
7459 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */
7460 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */
7461 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */
7462 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */
7463 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */
7464 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */
7465 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */
7466 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */
7467 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */
7468 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */
7469 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */
7470 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */
7471 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */
7472 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */
7473 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */
7474 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */
7475 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */
7476 uint64_t reserved_32 : 1;
7477 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */
7478 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */
7479 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP].
7480 Internal:
7481 radm_rcvd_wreq_poisoned. */
7482 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP].
7483 Internal:
7484 radm_rcvd_cpl_poisoned. */
7485 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP].
7486 Internal:
7487 radm_mlf_tlp_err. */
7488 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS].
7489 Internal:
7490 radm_rcvd_ur_req. */
7491 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */
7492 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA].
7493 Internal:
7494 radm_rcvd_cpl_ca. */
7495 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR].
7496 Internal:
7497 radm_rcvd_cpl_ur. */
7498 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC].
7499 Internal:
7500 radm_unexp_cpl_err. */
7501 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO].
7502 Internal:
7503 radm_qoverflow. */
7504 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV].
7505 Internal:
7506 (opt. checks) int_xadm_fc_prot_err. */
7507 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE].
7508 Internal:
7509 rmlh_rcvd_err. */
7510 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT].
7511 Internal:
7512 rtlh_fc_prot_err. */
7513 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD].
7514 Internal:
7515 rdlh_prot_err. */
7516 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE].
7517 Internal:
7518 rdlh_bad_tlp_err. */
7519 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE].
7520 Internal:
7521 rdlh_bad_dllp_err. */
7522 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE].
7523 Internal:
7524 xdlh_replay_num_rlover_err. */
7525 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE].
7526 Internal:
7527 xdlh_replay_timeout_err. */
7528 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO].
7529 Internal:
7530 pedc_radm_cpl_timeout. */
7531 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM].
7532 Internal:
7533 pedc_radm_vendor_msg. */
7534 uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RUMEP].
7535 Internal:
7536 pedc_radm_msg_unlock. */
7537 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC].
7538 Internal:
7539 pedc_radm_pm_to_ack. */
7540 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC].
7541 Internal:
7542 pedc_radm_pm_pme. */
7543 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC].
7544 Internal:
7545 pedc_radm_fatal_err. */
7546 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC].
7547 Internal:
7548 pedc_radm_nonfatal_err. */
7549 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC].
7550 Internal:
7551 pedc_radm_correctable_err. */
7552 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON].
7553 Internal:
7554 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
7555 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE].
7556 Internal:
7557 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
7558 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE].
7559 Internal:
7560 pedc_radm_trgt1_dllp_abort &
7561 pedc__radm_trgt1_eot. */
7562 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL].
7563 Internal:
7564 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
7565 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON].
7566 Internal:
7567 peai__client0_tlp_ep & peai__client0_tlp_hv or
7568 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
7569 #else /* Word 0 - Little Endian */
7570 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON].
7571 Internal:
7572 peai__client0_tlp_ep & peai__client0_tlp_hv or
7573 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
7574 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL].
7575 Internal:
7576 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
7577 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE].
7578 Internal:
7579 pedc_radm_trgt1_dllp_abort &
7580 pedc__radm_trgt1_eot. */
7581 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE].
7582 Internal:
7583 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
7584 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON].
7585 Internal:
7586 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
7587 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC].
7588 Internal:
7589 pedc_radm_correctable_err. */
7590 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC].
7591 Internal:
7592 pedc_radm_nonfatal_err. */
7593 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC].
7594 Internal:
7595 pedc_radm_fatal_err. */
7596 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC].
7597 Internal:
7598 pedc_radm_pm_pme. */
7599 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC].
7600 Internal:
7601 pedc_radm_pm_to_ack. */
7602 uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RUMEP].
7603 Internal:
7604 pedc_radm_msg_unlock. */
7605 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM].
7606 Internal:
7607 pedc_radm_vendor_msg. */
7608 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO].
7609 Internal:
7610 pedc_radm_cpl_timeout. */
7611 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE].
7612 Internal:
7613 xdlh_replay_timeout_err. */
7614 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE].
7615 Internal:
7616 xdlh_replay_num_rlover_err. */
7617 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE].
7618 Internal:
7619 rdlh_bad_dllp_err. */
7620 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE].
7621 Internal:
7622 rdlh_bad_tlp_err. */
7623 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD].
7624 Internal:
7625 rdlh_prot_err. */
7626 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT].
7627 Internal:
7628 rtlh_fc_prot_err. */
7629 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE].
7630 Internal:
7631 rmlh_rcvd_err. */
7632 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV].
7633 Internal:
7634 (opt. checks) int_xadm_fc_prot_err. */
7635 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO].
7636 Internal:
7637 radm_qoverflow. */
7638 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC].
7639 Internal:
7640 radm_unexp_cpl_err. */
7641 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR].
7642 Internal:
7643 radm_rcvd_cpl_ur. */
7644 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA].
7645 Internal:
7646 radm_rcvd_cpl_ca. */
7647 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */
7648 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS].
7649 Internal:
7650 radm_rcvd_ur_req. */
7651 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP].
7652 Internal:
7653 radm_mlf_tlp_err. */
7654 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP].
7655 Internal:
7656 radm_rcvd_cpl_poisoned. */
7657 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP].
7658 Internal:
7659 radm_rcvd_wreq_poisoned. */
7660 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */
7661 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */
7662 uint64_t reserved_32 : 1;
7663 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */
7664 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */
7665 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */
7666 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */
7667 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */
7668 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */
7669 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */
7670 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */
7671 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */
7672 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */
7673 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */
7674 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */
7675 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */
7676 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */
7677 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */
7678 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */
7679 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */
7680 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */
7681 uint64_t reserved_51_55 : 5;
7682 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
7683 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[M2S_PE]. */
7684 uint64_t reserved_58_63 : 6;
7685 #endif /* Word 0 - End */
7686 } s;
7687 struct bdk_pemx_dbg_info_w1s_cn88xxp1
7688 {
7689 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7690 uint64_t reserved_57_63 : 7;
7691 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
7692 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
7693 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
7694 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
7695 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_DBE]. */
7696 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_SBE]. */
7697 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */
7698 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */
7699 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */
7700 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */
7701 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */
7702 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */
7703 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */
7704 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */
7705 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */
7706 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */
7707 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */
7708 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */
7709 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */
7710 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */
7711 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */
7712 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */
7713 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */
7714 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */
7715 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DATQ_PE]. */
7716 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */
7717 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */
7718 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP].
7719 Internal:
7720 radm_rcvd_wreq_poisoned. */
7721 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP].
7722 Internal:
7723 radm_rcvd_cpl_poisoned. */
7724 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP].
7725 Internal:
7726 radm_mlf_tlp_err. */
7727 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS].
7728 Internal:
7729 radm_rcvd_ur_req. */
7730 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */
7731 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA].
7732 Internal:
7733 radm_rcvd_cpl_ca. */
7734 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR].
7735 Internal:
7736 radm_rcvd_cpl_ur. */
7737 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC].
7738 Internal:
7739 radm_unexp_cpl_err. */
7740 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO].
7741 Internal:
7742 radm_qoverflow. */
7743 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV].
7744 Internal:
7745 (opt. checks) int_xadm_fc_prot_err. */
7746 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE].
7747 Internal:
7748 rmlh_rcvd_err. */
7749 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT].
7750 Internal:
7751 rtlh_fc_prot_err. */
7752 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD].
7753 Internal:
7754 rdlh_prot_err. */
7755 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE].
7756 Internal:
7757 rdlh_bad_tlp_err. */
7758 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE].
7759 Internal:
7760 rdlh_bad_dllp_err. */
7761 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE].
7762 Internal:
7763 xdlh_replay_num_rlover_err. */
7764 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE].
7765 Internal:
7766 xdlh_replay_timeout_err. */
7767 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO].
7768 Internal:
7769 pedc_radm_cpl_timeout. */
7770 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM].
7771 Internal:
7772 pedc_radm_vendor_msg. */
7773 uint64_t reserved_10 : 1;
7774 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC].
7775 Internal:
7776 pedc_radm_pm_to_ack. */
7777 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC].
7778 Internal:
7779 pedc_radm_pm_pme. */
7780 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC].
7781 Internal:
7782 pedc_radm_fatal_err. */
7783 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC].
7784 Internal:
7785 pedc_radm_nonfatal_err. */
7786 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC].
7787 Internal:
7788 pedc_radm_correctable_err. */
7789 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON].
7790 Internal:
7791 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
7792 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE].
7793 Internal:
7794 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
7795 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE].
7796 Internal:
7797 pedc_radm_trgt1_dllp_abort &
7798 pedc__radm_trgt1_eot. */
7799 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL].
7800 Internal:
7801 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
7802 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON].
7803 Internal:
7804 peai__client0_tlp_ep & peai__client0_tlp_hv or
7805 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
7806 #else /* Word 0 - Little Endian */
7807 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON].
7808 Internal:
7809 peai__client0_tlp_ep & peai__client0_tlp_hv or
7810 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
7811 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL].
7812 Internal:
7813 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
7814 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE].
7815 Internal:
7816 pedc_radm_trgt1_dllp_abort &
7817 pedc__radm_trgt1_eot. */
7818 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE].
7819 Internal:
7820 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
7821 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON].
7822 Internal:
7823 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
7824 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC].
7825 Internal:
7826 pedc_radm_correctable_err. */
7827 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC].
7828 Internal:
7829 pedc_radm_nonfatal_err. */
7830 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC].
7831 Internal:
7832 pedc_radm_fatal_err. */
7833 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC].
7834 Internal:
7835 pedc_radm_pm_pme. */
7836 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC].
7837 Internal:
7838 pedc_radm_pm_to_ack. */
7839 uint64_t reserved_10 : 1;
7840 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM].
7841 Internal:
7842 pedc_radm_vendor_msg. */
7843 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO].
7844 Internal:
7845 pedc_radm_cpl_timeout. */
7846 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE].
7847 Internal:
7848 xdlh_replay_timeout_err. */
7849 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE].
7850 Internal:
7851 xdlh_replay_num_rlover_err. */
7852 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE].
7853 Internal:
7854 rdlh_bad_dllp_err. */
7855 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE].
7856 Internal:
7857 rdlh_bad_tlp_err. */
7858 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD].
7859 Internal:
7860 rdlh_prot_err. */
7861 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT].
7862 Internal:
7863 rtlh_fc_prot_err. */
7864 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE].
7865 Internal:
7866 rmlh_rcvd_err. */
7867 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV].
7868 Internal:
7869 (opt. checks) int_xadm_fc_prot_err. */
7870 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO].
7871 Internal:
7872 radm_qoverflow. */
7873 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC].
7874 Internal:
7875 radm_unexp_cpl_err. */
7876 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR].
7877 Internal:
7878 radm_rcvd_cpl_ur. */
7879 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA].
7880 Internal:
7881 radm_rcvd_cpl_ca. */
7882 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */
7883 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS].
7884 Internal:
7885 radm_rcvd_ur_req. */
7886 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP].
7887 Internal:
7888 radm_mlf_tlp_err. */
7889 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP].
7890 Internal:
7891 radm_rcvd_cpl_poisoned. */
7892 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP].
7893 Internal:
7894 radm_rcvd_wreq_poisoned. */
7895 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */
7896 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */
7897 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DATQ_PE]. */
7898 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */
7899 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */
7900 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */
7901 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */
7902 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */
7903 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */
7904 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */
7905 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */
7906 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */
7907 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */
7908 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */
7909 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */
7910 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */
7911 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */
7912 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */
7913 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */
7914 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */
7915 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */
7916 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_SBE]. */
7917 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_DBE]. */
7918 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
7919 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
7920 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
7921 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
7922 uint64_t reserved_57_63 : 7;
7923 #endif /* Word 0 - End */
7924 } cn88xxp1;
7925 struct bdk_pemx_dbg_info_w1s_cn81xx
7926 {
7927 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7928 uint64_t reserved_58_63 : 6;
7929 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[M2S_PE]. */
7930 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */
7931 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */
7932 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */
7933 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */
7934 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTRY_DBE]. */
7935 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTRY_SBE]. */
7936 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_C_DBE]. */
7937 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_C_SBE]. */
7938 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D1_DBE]. */
7939 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D1_SBE]. */
7940 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D0_DBE]. */
7941 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D0_SBE]. */
7942 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_C_DBE]. */
7943 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_C_SBE]. */
7944 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D1_DBE]. */
7945 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D1_SBE]. */
7946 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D0_DBE]. */
7947 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D0_SBE]. */
7948 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_C_DBE]. */
7949 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_C_SBE]. */
7950 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D1_DBE]. */
7951 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D1_SBE]. */
7952 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D0_DBE]. */
7953 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D0_SBE]. */
7954 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[DATQ_PE]. */
7955 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[LOFP]. */
7956 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[ECRC_E]. */
7957 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAWWPP].
7958 Internal:
7959 radm_rcvd_wreq_poisoned. */
7960 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACPP].
7961 Internal:
7962 radm_rcvd_cpl_poisoned. */
7963 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAMTLP].
7964 Internal:
7965 radm_mlf_tlp_err. */
7966 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RARWDNS].
7967 Internal:
7968 radm_rcvd_ur_req. */
7969 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[CAAR]. */
7970 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACCA].
7971 Internal:
7972 radm_rcvd_cpl_ca. */
7973 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACUR].
7974 Internal:
7975 radm_rcvd_cpl_ur. */
7976 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAUC].
7977 Internal:
7978 radm_unexp_cpl_err. */
7979 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RQO].
7980 Internal:
7981 radm_qoverflow. */
7982 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[FCUV].
7983 Internal:
7984 (opt. checks) int_xadm_fc_prot_err. */
7985 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPE].
7986 Internal:
7987 rmlh_rcvd_err. */
7988 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[FCPVWT].
7989 Internal:
7990 rtlh_fc_prot_err. */
7991 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[DPEOOSD].
7992 Internal:
7993 rdlh_prot_err. */
7994 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTWDLE].
7995 Internal:
7996 rdlh_bad_tlp_err. */
7997 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RDWDLE].
7998 Internal:
7999 rdlh_bad_dllp_err. */
8000 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[MRE].
8001 Internal:
8002 xdlh_replay_num_rlover_err. */
8003 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTE].
8004 Internal:
8005 xdlh_replay_timeout_err. */
8006 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[ACTO].
8007 Internal:
8008 pedc_radm_cpl_timeout. */
8009 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RVDM].
8010 Internal:
8011 pedc_radm_vendor_msg. */
8012 uint64_t reserved_10 : 1;
8013 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPTAMRC].
8014 Internal:
8015 pedc_radm_pm_to_ack. */
8016 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPMERC].
8017 Internal:
8018 pedc_radm_pm_pme. */
8019 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RFEMRC].
8020 Internal:
8021 pedc_radm_fatal_err. */
8022 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RNFEMRC].
8023 Internal:
8024 pedc_radm_nonfatal_err. */
8025 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RCEMRC].
8026 Internal:
8027 pedc_radm_correctable_err. */
8028 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPOISON].
8029 Internal:
8030 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
8031 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RECRCE].
8032 Internal:
8033 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
8034 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTLPLLE].
8035 Internal:
8036 pedc_radm_trgt1_dllp_abort &
8037 pedc__radm_trgt1_eot. */
8038 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTLPMAL].
8039 Internal:
8040 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
8041 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[SPOISON].
8042 Internal:
8043 peai__client0_tlp_ep & peai__client0_tlp_hv or
8044 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
8045 #else /* Word 0 - Little Endian */
8046 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[SPOISON].
8047 Internal:
8048 peai__client0_tlp_ep & peai__client0_tlp_hv or
8049 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
8050 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTLPMAL].
8051 Internal:
8052 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
8053 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTLPLLE].
8054 Internal:
8055 pedc_radm_trgt1_dllp_abort &
8056 pedc__radm_trgt1_eot. */
8057 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RECRCE].
8058 Internal:
8059 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
8060 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPOISON].
8061 Internal:
8062 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
8063 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RCEMRC].
8064 Internal:
8065 pedc_radm_correctable_err. */
8066 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RNFEMRC].
8067 Internal:
8068 pedc_radm_nonfatal_err. */
8069 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RFEMRC].
8070 Internal:
8071 pedc_radm_fatal_err. */
8072 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPMERC].
8073 Internal:
8074 pedc_radm_pm_pme. */
8075 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPTAMRC].
8076 Internal:
8077 pedc_radm_pm_to_ack. */
8078 uint64_t reserved_10 : 1;
8079 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RVDM].
8080 Internal:
8081 pedc_radm_vendor_msg. */
8082 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[ACTO].
8083 Internal:
8084 pedc_radm_cpl_timeout. */
8085 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTE].
8086 Internal:
8087 xdlh_replay_timeout_err. */
8088 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[MRE].
8089 Internal:
8090 xdlh_replay_num_rlover_err. */
8091 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RDWDLE].
8092 Internal:
8093 rdlh_bad_dllp_err. */
8094 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTWDLE].
8095 Internal:
8096 rdlh_bad_tlp_err. */
8097 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[DPEOOSD].
8098 Internal:
8099 rdlh_prot_err. */
8100 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[FCPVWT].
8101 Internal:
8102 rtlh_fc_prot_err. */
8103 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPE].
8104 Internal:
8105 rmlh_rcvd_err. */
8106 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[FCUV].
8107 Internal:
8108 (opt. checks) int_xadm_fc_prot_err. */
8109 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RQO].
8110 Internal:
8111 radm_qoverflow. */
8112 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAUC].
8113 Internal:
8114 radm_unexp_cpl_err. */
8115 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACUR].
8116 Internal:
8117 radm_rcvd_cpl_ur. */
8118 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACCA].
8119 Internal:
8120 radm_rcvd_cpl_ca. */
8121 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[CAAR]. */
8122 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RARWDNS].
8123 Internal:
8124 radm_rcvd_ur_req. */
8125 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAMTLP].
8126 Internal:
8127 radm_mlf_tlp_err. */
8128 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACPP].
8129 Internal:
8130 radm_rcvd_cpl_poisoned. */
8131 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAWWPP].
8132 Internal:
8133 radm_rcvd_wreq_poisoned. */
8134 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[ECRC_E]. */
8135 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[LOFP]. */
8136 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[DATQ_PE]. */
8137 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D0_SBE]. */
8138 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D0_DBE]. */
8139 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D1_SBE]. */
8140 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D1_DBE]. */
8141 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_C_SBE]. */
8142 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_C_DBE]. */
8143 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D0_SBE]. */
8144 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D0_DBE]. */
8145 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D1_SBE]. */
8146 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D1_DBE]. */
8147 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_C_SBE]. */
8148 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_C_DBE]. */
8149 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D0_SBE]. */
8150 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D0_DBE]. */
8151 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D1_SBE]. */
8152 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D1_DBE]. */
8153 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_C_SBE]. */
8154 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_C_DBE]. */
8155 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTRY_SBE]. */
8156 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTRY_DBE]. */
8157 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */
8158 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */
8159 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */
8160 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */
8161 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[M2S_PE]. */
8162 uint64_t reserved_58_63 : 6;
8163 #endif /* Word 0 - End */
8164 } cn81xx;
8165 struct bdk_pemx_dbg_info_w1s_cn83xx
8166 {
8167 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8168 uint64_t reserved_56_63 : 8;
8169 uint64_t rasdp : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RASDP]. */
8170 uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_D_DBE]. */
8171 uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_D_SBE]. */
8172 uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_C_DBE]. */
8173 uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_C_SBE]. */
8174 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_C_DBE]. */
8175 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_C_SBE]. */
8176 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D1_DBE]. */
8177 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D1_SBE]. */
8178 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D0_DBE]. */
8179 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D0_SBE]. */
8180 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_C_DBE]. */
8181 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_C_SBE]. */
8182 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D1_DBE]. */
8183 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D1_SBE]. */
8184 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D0_DBE]. */
8185 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D0_SBE]. */
8186 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_C_DBE]. */
8187 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_C_SBE]. */
8188 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D1_DBE]. */
8189 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D1_SBE]. */
8190 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D0_DBE]. */
8191 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D0_SBE]. */
8192 uint64_t bmd_e : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[BMD_E]. */
8193 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[LOFP]. */
8194 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[ECRC_E]. */
8195 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAWWPP].
8196 Internal:
8197 radm_rcvd_wreq_poisoned. */
8198 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACPP].
8199 Internal:
8200 radm_rcvd_cpl_poisoned. */
8201 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAMTLP].
8202 Internal:
8203 radm_mlf_tlp_err. */
8204 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RARWDNS].
8205 Internal:
8206 radm_rcvd_ur_req. */
8207 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[CAAR]. */
8208 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACCA].
8209 Internal:
8210 radm_rcvd_cpl_ca. */
8211 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACUR].
8212 Internal:
8213 radm_rcvd_cpl_ur. */
8214 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAUC].
8215 Internal:
8216 radm_unexp_cpl_err. */
8217 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RQO].
8218 Internal:
8219 radm_qoverflow. */
8220 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[FCUV].
8221 Internal:
8222 (opt. checks) int_xadm_fc_prot_err. */
8223 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPE].
8224 Internal:
8225 rmlh_rcvd_err. */
8226 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[FCPVWT].
8227 Internal:
8228 rtlh_fc_prot_err. */
8229 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[DPEOOSD].
8230 Internal:
8231 rdlh_prot_err. */
8232 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTWDLE].
8233 Internal:
8234 rdlh_bad_tlp_err. */
8235 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RDWDLE].
8236 Internal:
8237 rdlh_bad_dllp_err. */
8238 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[MRE].
8239 Internal:
8240 xdlh_replay_num_rlover_err. */
8241 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTE].
8242 Internal:
8243 xdlh_replay_timeout_err. */
8244 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[ACTO].
8245 Internal:
8246 pedc_radm_cpl_timeout. */
8247 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RVDM].
8248 Internal:
8249 pedc_radm_vendor_msg. */
8250 uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RUMEP].
8251 Internal:
8252 pedc_radm_msg_unlock. */
8253 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPTAMRC].
8254 Internal:
8255 pedc_radm_pm_to_ack. */
8256 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPMERC].
8257 Internal:
8258 pedc_radm_pm_pme. */
8259 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RFEMRC].
8260 Internal:
8261 pedc_radm_fatal_err. */
8262 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RNFEMRC].
8263 Internal:
8264 pedc_radm_nonfatal_err. */
8265 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RCEMRC].
8266 Internal:
8267 pedc_radm_correctable_err. */
8268 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPOISON].
8269 Internal:
8270 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
8271 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RECRCE].
8272 Internal:
8273 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
8274 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTLPLLE].
8275 Internal:
8276 pedc_radm_trgt1_dllp_abort &
8277 pedc__radm_trgt1_eot. */
8278 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTLPMAL].
8279 Internal:
8280 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
8281 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[SPOISON]. */
8282 #else /* Word 0 - Little Endian */
8283 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[SPOISON]. */
8284 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTLPMAL].
8285 Internal:
8286 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
8287 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTLPLLE].
8288 Internal:
8289 pedc_radm_trgt1_dllp_abort &
8290 pedc__radm_trgt1_eot. */
8291 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RECRCE].
8292 Internal:
8293 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
8294 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPOISON].
8295 Internal:
8296 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
8297 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RCEMRC].
8298 Internal:
8299 pedc_radm_correctable_err. */
8300 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RNFEMRC].
8301 Internal:
8302 pedc_radm_nonfatal_err. */
8303 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RFEMRC].
8304 Internal:
8305 pedc_radm_fatal_err. */
8306 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPMERC].
8307 Internal:
8308 pedc_radm_pm_pme. */
8309 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPTAMRC].
8310 Internal:
8311 pedc_radm_pm_to_ack. */
8312 uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RUMEP].
8313 Internal:
8314 pedc_radm_msg_unlock. */
8315 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RVDM].
8316 Internal:
8317 pedc_radm_vendor_msg. */
8318 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[ACTO].
8319 Internal:
8320 pedc_radm_cpl_timeout. */
8321 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTE].
8322 Internal:
8323 xdlh_replay_timeout_err. */
8324 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[MRE].
8325 Internal:
8326 xdlh_replay_num_rlover_err. */
8327 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RDWDLE].
8328 Internal:
8329 rdlh_bad_dllp_err. */
8330 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTWDLE].
8331 Internal:
8332 rdlh_bad_tlp_err. */
8333 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[DPEOOSD].
8334 Internal:
8335 rdlh_prot_err. */
8336 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[FCPVWT].
8337 Internal:
8338 rtlh_fc_prot_err. */
8339 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPE].
8340 Internal:
8341 rmlh_rcvd_err. */
8342 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[FCUV].
8343 Internal:
8344 (opt. checks) int_xadm_fc_prot_err. */
8345 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RQO].
8346 Internal:
8347 radm_qoverflow. */
8348 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAUC].
8349 Internal:
8350 radm_unexp_cpl_err. */
8351 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACUR].
8352 Internal:
8353 radm_rcvd_cpl_ur. */
8354 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACCA].
8355 Internal:
8356 radm_rcvd_cpl_ca. */
8357 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[CAAR]. */
8358 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RARWDNS].
8359 Internal:
8360 radm_rcvd_ur_req. */
8361 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAMTLP].
8362 Internal:
8363 radm_mlf_tlp_err. */
8364 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACPP].
8365 Internal:
8366 radm_rcvd_cpl_poisoned. */
8367 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAWWPP].
8368 Internal:
8369 radm_rcvd_wreq_poisoned. */
8370 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[ECRC_E]. */
8371 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[LOFP]. */
8372 uint64_t bmd_e : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[BMD_E]. */
8373 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D0_SBE]. */
8374 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D0_DBE]. */
8375 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D1_SBE]. */
8376 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D1_DBE]. */
8377 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_C_SBE]. */
8378 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_C_DBE]. */
8379 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D0_SBE]. */
8380 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D0_DBE]. */
8381 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D1_SBE]. */
8382 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D1_DBE]. */
8383 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_C_SBE]. */
8384 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_C_DBE]. */
8385 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D0_SBE]. */
8386 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D0_DBE]. */
8387 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D1_SBE]. */
8388 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D1_DBE]. */
8389 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_C_SBE]. */
8390 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_C_DBE]. */
8391 uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_C_SBE]. */
8392 uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_C_DBE]. */
8393 uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_D_SBE]. */
8394 uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_D_DBE]. */
8395 uint64_t rasdp : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RASDP]. */
8396 uint64_t reserved_56_63 : 8;
8397 #endif /* Word 0 - End */
8398 } cn83xx;
8399 struct bdk_pemx_dbg_info_w1s_cn88xxp2
8400 {
8401 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8402 uint64_t reserved_58_63 : 6;
8403 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[M2S_PE]. */
8404 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
8405 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
8406 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
8407 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
8408 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_DBE]. */
8409 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_SBE]. */
8410 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */
8411 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */
8412 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */
8413 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */
8414 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */
8415 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */
8416 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */
8417 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */
8418 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */
8419 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */
8420 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */
8421 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */
8422 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */
8423 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */
8424 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */
8425 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */
8426 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */
8427 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */
8428 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DATQ_PE]. */
8429 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */
8430 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */
8431 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP].
8432 Internal:
8433 radm_rcvd_wreq_poisoned. */
8434 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP].
8435 Internal:
8436 radm_rcvd_cpl_poisoned. */
8437 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP].
8438 Internal:
8439 radm_mlf_tlp_err. */
8440 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS].
8441 Internal:
8442 radm_rcvd_ur_req. */
8443 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */
8444 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA].
8445 Internal:
8446 radm_rcvd_cpl_ca. */
8447 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR].
8448 Internal:
8449 radm_rcvd_cpl_ur. */
8450 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC].
8451 Internal:
8452 radm_unexp_cpl_err. */
8453 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO].
8454 Internal:
8455 radm_qoverflow. */
8456 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV].
8457 Internal:
8458 (opt. checks) int_xadm_fc_prot_err. */
8459 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE].
8460 Internal:
8461 rmlh_rcvd_err. */
8462 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT].
8463 Internal:
8464 rtlh_fc_prot_err. */
8465 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD].
8466 Internal:
8467 rdlh_prot_err. */
8468 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE].
8469 Internal:
8470 rdlh_bad_tlp_err. */
8471 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE].
8472 Internal:
8473 rdlh_bad_dllp_err. */
8474 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE].
8475 Internal:
8476 xdlh_replay_num_rlover_err. */
8477 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE].
8478 Internal:
8479 xdlh_replay_timeout_err. */
8480 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO].
8481 Internal:
8482 pedc_radm_cpl_timeout. */
8483 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM].
8484 Internal:
8485 pedc_radm_vendor_msg. */
8486 uint64_t reserved_10 : 1;
8487 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC].
8488 Internal:
8489 pedc_radm_pm_to_ack. */
8490 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC].
8491 Internal:
8492 pedc_radm_pm_pme. */
8493 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC].
8494 Internal:
8495 pedc_radm_fatal_err. */
8496 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC].
8497 Internal:
8498 pedc_radm_nonfatal_err. */
8499 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC].
8500 Internal:
8501 pedc_radm_correctable_err. */
8502 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON].
8503 Internal:
8504 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
8505 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE].
8506 Internal:
8507 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
8508 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE].
8509 Internal:
8510 pedc_radm_trgt1_dllp_abort &
8511 pedc__radm_trgt1_eot. */
8512 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL].
8513 Internal:
8514 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
8515 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON].
8516 Internal:
8517 peai__client0_tlp_ep & peai__client0_tlp_hv or
8518 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
8519 #else /* Word 0 - Little Endian */
8520 uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON].
8521 Internal:
8522 peai__client0_tlp_ep & peai__client0_tlp_hv or
8523 peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */
8524 uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL].
8525 Internal:
8526 pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */
8527 uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE].
8528 Internal:
8529 pedc_radm_trgt1_dllp_abort &
8530 pedc__radm_trgt1_eot. */
8531 uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE].
8532 Internal:
8533 pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */
8534 uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON].
8535 Internal:
8536 pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */
8537 uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC].
8538 Internal:
8539 pedc_radm_correctable_err. */
8540 uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC].
8541 Internal:
8542 pedc_radm_nonfatal_err. */
8543 uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC].
8544 Internal:
8545 pedc_radm_fatal_err. */
8546 uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC].
8547 Internal:
8548 pedc_radm_pm_pme. */
8549 uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC].
8550 Internal:
8551 pedc_radm_pm_to_ack. */
8552 uint64_t reserved_10 : 1;
8553 uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM].
8554 Internal:
8555 pedc_radm_vendor_msg. */
8556 uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO].
8557 Internal:
8558 pedc_radm_cpl_timeout. */
8559 uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE].
8560 Internal:
8561 xdlh_replay_timeout_err. */
8562 uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE].
8563 Internal:
8564 xdlh_replay_num_rlover_err. */
8565 uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE].
8566 Internal:
8567 rdlh_bad_dllp_err. */
8568 uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE].
8569 Internal:
8570 rdlh_bad_tlp_err. */
8571 uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD].
8572 Internal:
8573 rdlh_prot_err. */
8574 uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT].
8575 Internal:
8576 rtlh_fc_prot_err. */
8577 uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE].
8578 Internal:
8579 rmlh_rcvd_err. */
8580 uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV].
8581 Internal:
8582 (opt. checks) int_xadm_fc_prot_err. */
8583 uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO].
8584 Internal:
8585 radm_qoverflow. */
8586 uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC].
8587 Internal:
8588 radm_unexp_cpl_err. */
8589 uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR].
8590 Internal:
8591 radm_rcvd_cpl_ur. */
8592 uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA].
8593 Internal:
8594 radm_rcvd_cpl_ca. */
8595 uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */
8596 uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS].
8597 Internal:
8598 radm_rcvd_ur_req. */
8599 uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP].
8600 Internal:
8601 radm_mlf_tlp_err. */
8602 uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP].
8603 Internal:
8604 radm_rcvd_cpl_poisoned. */
8605 uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP].
8606 Internal:
8607 radm_rcvd_wreq_poisoned. */
8608 uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */
8609 uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */
8610 uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DATQ_PE]. */
8611 uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */
8612 uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */
8613 uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */
8614 uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */
8615 uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */
8616 uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */
8617 uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */
8618 uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */
8619 uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */
8620 uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */
8621 uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */
8622 uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */
8623 uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */
8624 uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */
8625 uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */
8626 uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */
8627 uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */
8628 uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */
8629 uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_SBE]. */
8630 uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_DBE]. */
8631 uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */
8632 uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */
8633 uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */
8634 uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */
8635 uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[M2S_PE]. */
8636 uint64_t reserved_58_63 : 6;
8637 #endif /* Word 0 - End */
8638 } cn88xxp2;
8639 };
8640 typedef union bdk_pemx_dbg_info_w1s bdk_pemx_dbg_info_w1s_t;
8641
8642 static inline uint64_t BDK_PEMX_DBG_INFO_W1S(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_DBG_INFO_W1S(unsigned long a)8643 static inline uint64_t BDK_PEMX_DBG_INFO_W1S(unsigned long a)
8644 {
8645 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
8646 return 0x87e0c0000450ll + 0x1000000ll * ((a) & 0x3);
8647 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8648 return 0x87e0c0000450ll + 0x1000000ll * ((a) & 0x3);
8649 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
8650 return 0x87e0c0000450ll + 0x1000000ll * ((a) & 0x7);
8651 __bdk_csr_fatal("PEMX_DBG_INFO_W1S", 1, a, 0, 0, 0);
8652 }
8653
8654 #define typedef_BDK_PEMX_DBG_INFO_W1S(a) bdk_pemx_dbg_info_w1s_t
8655 #define bustype_BDK_PEMX_DBG_INFO_W1S(a) BDK_CSR_TYPE_RSL
8656 #define basename_BDK_PEMX_DBG_INFO_W1S(a) "PEMX_DBG_INFO_W1S"
8657 #define device_bar_BDK_PEMX_DBG_INFO_W1S(a) 0x0 /* PF_BAR0 */
8658 #define busnum_BDK_PEMX_DBG_INFO_W1S(a) (a)
8659 #define arguments_BDK_PEMX_DBG_INFO_W1S(a) (a),-1,-1,-1
8660
8661 /**
8662 * Register (NCB) pem#_debug
8663 *
8664 * PEM Debug Register
8665 * This register contains status of level interrupts for debugging purposes.
8666 *
8667 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
8668 *
8669 * This register is reset on cold reset.
8670 */
8671 union bdk_pemx_debug
8672 {
8673 uint64_t u;
8674 struct bdk_pemx_debug_s
8675 {
8676 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8677 uint64_t reserved_40_63 : 24;
8678 uint64_t n_tlp_cnt : 8; /**< [ 39: 32](RO/H) The current count (depth) of the outbound NP TLP FIFO.
8679 The value represents the number of used credits out of a total of 32. */
8680 uint64_t reserved_31 : 1;
8681 uint64_t c_tlp_cnt : 11; /**< [ 30: 20](RO/H) The current count (depth) of the outbound C TLP FIFO.
8682 The value represents the number of used credits out of a total of 244. */
8683 uint64_t reserved_19 : 1;
8684 uint64_t p_tlp_cnt : 11; /**< [ 18: 8](RO/H) The current count (depth) of the outbound P TLP FIFO.
8685 The value represents the number of used credits out of a total of 244. */
8686 uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO
8687 to force a parity error when it is later read. */
8688 uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */
8689 #else /* Word 0 - Little Endian */
8690 uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */
8691 uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO
8692 to force a parity error when it is later read. */
8693 uint64_t p_tlp_cnt : 11; /**< [ 18: 8](RO/H) The current count (depth) of the outbound P TLP FIFO.
8694 The value represents the number of used credits out of a total of 244. */
8695 uint64_t reserved_19 : 1;
8696 uint64_t c_tlp_cnt : 11; /**< [ 30: 20](RO/H) The current count (depth) of the outbound C TLP FIFO.
8697 The value represents the number of used credits out of a total of 244. */
8698 uint64_t reserved_31 : 1;
8699 uint64_t n_tlp_cnt : 8; /**< [ 39: 32](RO/H) The current count (depth) of the outbound NP TLP FIFO.
8700 The value represents the number of used credits out of a total of 32. */
8701 uint64_t reserved_40_63 : 24;
8702 #endif /* Word 0 - End */
8703 } s;
8704 struct bdk_pemx_debug_cn88xxp1
8705 {
8706 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8707 uint64_t reserved_7_63 : 57;
8708 uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */
8709 #else /* Word 0 - Little Endian */
8710 uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */
8711 uint64_t reserved_7_63 : 57;
8712 #endif /* Word 0 - End */
8713 } cn88xxp1;
8714 struct bdk_pemx_debug_cn9
8715 {
8716 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8717 uint64_t reserved_6_63 : 58;
8718 uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */
8719 #else /* Word 0 - Little Endian */
8720 uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */
8721 uint64_t reserved_6_63 : 58;
8722 #endif /* Word 0 - End */
8723 } cn9;
8724 struct bdk_pemx_debug_cn81xx
8725 {
8726 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8727 uint64_t reserved_8_63 : 56;
8728 uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO
8729 to force a parity error when it is later read. */
8730 uint64_t reserved_6 : 1;
8731 uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, HP_PMEI, and AERI interrupts. */
8732 #else /* Word 0 - Little Endian */
8733 uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, HP_PMEI, and AERI interrupts. */
8734 uint64_t reserved_6 : 1;
8735 uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO
8736 to force a parity error when it is later read. */
8737 uint64_t reserved_8_63 : 56;
8738 #endif /* Word 0 - End */
8739 } cn81xx;
8740 struct bdk_pemx_debug_cn83xx
8741 {
8742 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8743 uint64_t reserved_40_63 : 24;
8744 uint64_t n_tlp_cnt : 8; /**< [ 39: 32](RO/H) The current count (depth) of the outbound NP TLP FIFO.
8745 The value represents the number of used credits out of a total of 32. */
8746 uint64_t reserved_31 : 1;
8747 uint64_t c_tlp_cnt : 11; /**< [ 30: 20](RO/H) The current count (depth) of the outbound C TLP FIFO.
8748 The value represents the number of used credits out of a total of 244. */
8749 uint64_t reserved_19 : 1;
8750 uint64_t p_tlp_cnt : 11; /**< [ 18: 8](RO/H) The current count (depth) of the outbound P TLP FIFO.
8751 The value represents the number of used credits out of a total of 244. */
8752 uint64_t reserved_6_7 : 2;
8753 uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */
8754 #else /* Word 0 - Little Endian */
8755 uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */
8756 uint64_t reserved_6_7 : 2;
8757 uint64_t p_tlp_cnt : 11; /**< [ 18: 8](RO/H) The current count (depth) of the outbound P TLP FIFO.
8758 The value represents the number of used credits out of a total of 244. */
8759 uint64_t reserved_19 : 1;
8760 uint64_t c_tlp_cnt : 11; /**< [ 30: 20](RO/H) The current count (depth) of the outbound C TLP FIFO.
8761 The value represents the number of used credits out of a total of 244. */
8762 uint64_t reserved_31 : 1;
8763 uint64_t n_tlp_cnt : 8; /**< [ 39: 32](RO/H) The current count (depth) of the outbound NP TLP FIFO.
8764 The value represents the number of used credits out of a total of 32. */
8765 uint64_t reserved_40_63 : 24;
8766 #endif /* Word 0 - End */
8767 } cn83xx;
8768 struct bdk_pemx_debug_cn88xxp2
8769 {
8770 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8771 uint64_t reserved_8_63 : 56;
8772 uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO
8773 to force a parity error when it is later read. */
8774 uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */
8775 #else /* Word 0 - Little Endian */
8776 uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */
8777 uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO
8778 to force a parity error when it is later read. */
8779 uint64_t reserved_8_63 : 56;
8780 #endif /* Word 0 - End */
8781 } cn88xxp2;
8782 };
8783 typedef union bdk_pemx_debug bdk_pemx_debug_t;
8784
8785 static inline uint64_t BDK_PEMX_DEBUG(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_DEBUG(unsigned long a)8786 static inline uint64_t BDK_PEMX_DEBUG(unsigned long a)
8787 {
8788 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
8789 return 0x87e0c0000480ll + 0x1000000ll * ((a) & 0x3);
8790 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8791 return 0x87e0c0000480ll + 0x1000000ll * ((a) & 0x3);
8792 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
8793 return 0x87e0c0000480ll + 0x1000000ll * ((a) & 0x7);
8794 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
8795 return 0x8e0000000100ll + 0x1000000000ll * ((a) & 0x3);
8796 __bdk_csr_fatal("PEMX_DEBUG", 1, a, 0, 0, 0);
8797 }
8798
8799 #define typedef_BDK_PEMX_DEBUG(a) bdk_pemx_debug_t
8800 #define bustype_BDK_PEMX_DEBUG(a) BDK_CSR_TYPE_NCB
8801 #define basename_BDK_PEMX_DEBUG(a) "PEMX_DEBUG"
8802 #define device_bar_BDK_PEMX_DEBUG(a) 0x0 /* PF_BAR0 */
8803 #define busnum_BDK_PEMX_DEBUG(a) (a)
8804 #define arguments_BDK_PEMX_DEBUG(a) (a),-1,-1,-1
8805
8806 /**
8807 * Register (NCB) pem#_diag_status
8808 *
8809 * PEM Diagnostic Status Register
8810 * This register contains selection control for the core diagnostic bus.
8811 *
8812 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
8813 *
8814 * This register is reset on MAC reset.
8815 */
8816 union bdk_pemx_diag_status
8817 {
8818 uint64_t u;
8819 struct bdk_pemx_diag_status_s
8820 {
8821 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8822 uint64_t reserved_0_63 : 64;
8823 #else /* Word 0 - Little Endian */
8824 uint64_t reserved_0_63 : 64;
8825 #endif /* Word 0 - End */
8826 } s;
8827 struct bdk_pemx_diag_status_cn9
8828 {
8829 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8830 uint64_t reserved_10_63 : 54;
8831 uint64_t ltssm : 6; /**< [ 9: 4](RO/H) Current smlh_ltssm_state. */
8832 uint64_t pwrdwn : 4; /**< [ 3: 0](RO/H) Current mac_phy_powerdown state.
8833 0x0 = D0.
8834 0x1 = D1.
8835 0x2 = D2.
8836 0x3 = D3.
8837 0x4 - 0x7: Reserved. */
8838 #else /* Word 0 - Little Endian */
8839 uint64_t pwrdwn : 4; /**< [ 3: 0](RO/H) Current mac_phy_powerdown state.
8840 0x0 = D0.
8841 0x1 = D1.
8842 0x2 = D2.
8843 0x3 = D3.
8844 0x4 - 0x7: Reserved. */
8845 uint64_t ltssm : 6; /**< [ 9: 4](RO/H) Current smlh_ltssm_state. */
8846 uint64_t reserved_10_63 : 54;
8847 #endif /* Word 0 - End */
8848 } cn9;
8849 struct bdk_pemx_diag_status_cn81xx
8850 {
8851 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8852 uint64_t reserved_9_63 : 55;
8853 uint64_t pwrdwn : 3; /**< [ 8: 6](RO/H) Current mac_phy_powerdown state. */
8854 uint64_t pm_dst : 3; /**< [ 5: 3](RO/H) Current power management DSTATE. */
8855 uint64_t pm_stat : 1; /**< [ 2: 2](RO) Power management status. */
8856 uint64_t pm_en : 1; /**< [ 1: 1](RO) Power management event enable. */
8857 uint64_t aux_en : 1; /**< [ 0: 0](RO) Auxiliary power enable. Always read as zero as auxiliary power is not supported. */
8858 #else /* Word 0 - Little Endian */
8859 uint64_t aux_en : 1; /**< [ 0: 0](RO) Auxiliary power enable. Always read as zero as auxiliary power is not supported. */
8860 uint64_t pm_en : 1; /**< [ 1: 1](RO) Power management event enable. */
8861 uint64_t pm_stat : 1; /**< [ 2: 2](RO) Power management status. */
8862 uint64_t pm_dst : 3; /**< [ 5: 3](RO/H) Current power management DSTATE. */
8863 uint64_t pwrdwn : 3; /**< [ 8: 6](RO/H) Current mac_phy_powerdown state. */
8864 uint64_t reserved_9_63 : 55;
8865 #endif /* Word 0 - End */
8866 } cn81xx;
8867 /* struct bdk_pemx_diag_status_cn81xx cn88xx; */
8868 struct bdk_pemx_diag_status_cn83xx
8869 {
8870 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8871 uint64_t reserved_9_63 : 55;
8872 uint64_t pwrdwn : 3; /**< [ 8: 6](RO/H) Current mac_phy_powerdown state. */
8873 uint64_t pm_dst : 3; /**< [ 5: 3](RO/H) Current power management DSTATE. */
8874 uint64_t pm_stat : 1; /**< [ 2: 2](RO/H) Power management status. */
8875 uint64_t pm_en : 1; /**< [ 1: 1](RO/H) Power management event enable. */
8876 uint64_t aux_en : 1; /**< [ 0: 0](RO/H) Auxiliary power enable. */
8877 #else /* Word 0 - Little Endian */
8878 uint64_t aux_en : 1; /**< [ 0: 0](RO/H) Auxiliary power enable. */
8879 uint64_t pm_en : 1; /**< [ 1: 1](RO/H) Power management event enable. */
8880 uint64_t pm_stat : 1; /**< [ 2: 2](RO/H) Power management status. */
8881 uint64_t pm_dst : 3; /**< [ 5: 3](RO/H) Current power management DSTATE. */
8882 uint64_t pwrdwn : 3; /**< [ 8: 6](RO/H) Current mac_phy_powerdown state. */
8883 uint64_t reserved_9_63 : 55;
8884 #endif /* Word 0 - End */
8885 } cn83xx;
8886 };
8887 typedef union bdk_pemx_diag_status bdk_pemx_diag_status_t;
8888
8889 static inline uint64_t BDK_PEMX_DIAG_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_DIAG_STATUS(unsigned long a)8890 static inline uint64_t BDK_PEMX_DIAG_STATUS(unsigned long a)
8891 {
8892 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
8893 return 0x87e0c0000020ll + 0x1000000ll * ((a) & 0x3);
8894 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8895 return 0x87e0c0000020ll + 0x1000000ll * ((a) & 0x3);
8896 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
8897 return 0x87e0c0000020ll + 0x1000000ll * ((a) & 0x7);
8898 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
8899 return 0x8e0000000010ll + 0x1000000000ll * ((a) & 0x3);
8900 __bdk_csr_fatal("PEMX_DIAG_STATUS", 1, a, 0, 0, 0);
8901 }
8902
8903 #define typedef_BDK_PEMX_DIAG_STATUS(a) bdk_pemx_diag_status_t
8904 #define bustype_BDK_PEMX_DIAG_STATUS(a) BDK_CSR_TYPE_NCB
8905 #define basename_BDK_PEMX_DIAG_STATUS(a) "PEMX_DIAG_STATUS"
8906 #define device_bar_BDK_PEMX_DIAG_STATUS(a) 0x0 /* PF_BAR0 */
8907 #define busnum_BDK_PEMX_DIAG_STATUS(a) (a)
8908 #define arguments_BDK_PEMX_DIAG_STATUS(a) (a),-1,-1,-1
8909
8910 /**
8911 * Register (NCB) pem#_dis_port
8912 *
8913 * PEM Disable Port Register
8914 * This register controls whether traffic is allowed to be sent out the PCIe link.
8915 *
8916 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
8917 *
8918 * This register is reset on PEM domain reset.
8919 */
8920 union bdk_pemx_dis_port
8921 {
8922 uint64_t u;
8923 struct bdk_pemx_dis_port_s
8924 {
8925 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8926 uint64_t reserved_1_63 : 63;
8927 uint64_t dis_port : 1; /**< [ 0: 0](R/W1C/H) When set, outbound read and writes are disabled (dropped) and reads will
8928 return completion with fault over NCBI or EBUS. Software must clear this bit after
8929 power-on reset to start normal activity. Further, this bit will be set by
8930 hardware when either MAC reset or core reset completes an assertion phase.
8931 Writing a one to this location clears the bit and will allow outbound operations
8932 to be sent to the MAC at the beginning of the next transfer. This bit cannot
8933 be set while PEM()_ON[PEMOOR] is set. */
8934 #else /* Word 0 - Little Endian */
8935 uint64_t dis_port : 1; /**< [ 0: 0](R/W1C/H) When set, outbound read and writes are disabled (dropped) and reads will
8936 return completion with fault over NCBI or EBUS. Software must clear this bit after
8937 power-on reset to start normal activity. Further, this bit will be set by
8938 hardware when either MAC reset or core reset completes an assertion phase.
8939 Writing a one to this location clears the bit and will allow outbound operations
8940 to be sent to the MAC at the beginning of the next transfer. This bit cannot
8941 be set while PEM()_ON[PEMOOR] is set. */
8942 uint64_t reserved_1_63 : 63;
8943 #endif /* Word 0 - End */
8944 } s;
8945 /* struct bdk_pemx_dis_port_s cn; */
8946 };
8947 typedef union bdk_pemx_dis_port bdk_pemx_dis_port_t;
8948
8949 static inline uint64_t BDK_PEMX_DIS_PORT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_DIS_PORT(unsigned long a)8950 static inline uint64_t BDK_PEMX_DIS_PORT(unsigned long a)
8951 {
8952 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
8953 return 0x8e0000000048ll + 0x1000000000ll * ((a) & 0x3);
8954 __bdk_csr_fatal("PEMX_DIS_PORT", 1, a, 0, 0, 0);
8955 }
8956
8957 #define typedef_BDK_PEMX_DIS_PORT(a) bdk_pemx_dis_port_t
8958 #define bustype_BDK_PEMX_DIS_PORT(a) BDK_CSR_TYPE_NCB
8959 #define basename_BDK_PEMX_DIS_PORT(a) "PEMX_DIS_PORT"
8960 #define device_bar_BDK_PEMX_DIS_PORT(a) 0x0 /* PF_BAR0 */
8961 #define busnum_BDK_PEMX_DIS_PORT(a) (a)
8962 #define arguments_BDK_PEMX_DIS_PORT(a) (a),-1,-1,-1
8963
8964 /**
8965 * Register (NCB) pem#_ebi_tlp_credits
8966 *
8967 * PEM EBUS TLP Credits Register
8968 * This register specifies the number of credits for use in moving TLPs. When this register is
8969 * written, the credit values are reset to the register value. This register is for diagnostic
8970 * use only, and should only be written when PEM()_CTL_STATUS[LNK_ENB] is clear.
8971 *
8972 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
8973 *
8974 * This register is reset on MAC reset.
8975 */
8976 union bdk_pemx_ebi_tlp_credits
8977 {
8978 uint64_t u;
8979 struct bdk_pemx_ebi_tlp_credits_s
8980 {
8981 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8982 uint64_t reserved_32_63 : 32;
8983 uint64_t ebi_cpl : 11; /**< [ 31: 21](R/W) TLP 32 B credits for completion TLPs in the PEMs inbound EBUS buffers.
8984 Legal values are 0x21 to 0x100. */
8985 uint64_t ebi_np : 10; /**< [ 20: 11](R/W) TLP headers for non-posted TLPs in the PEMs inbound EBUS buffers.
8986 Legal values are 0x1 to 0x20. */
8987 uint64_t ebi_p : 11; /**< [ 10: 0](R/W) TLP 32 B credits for posted TLPs in the PEMs inbound EBUS buffers.
8988 Legal values are 0x21 to 0x100. */
8989 #else /* Word 0 - Little Endian */
8990 uint64_t ebi_p : 11; /**< [ 10: 0](R/W) TLP 32 B credits for posted TLPs in the PEMs inbound EBUS buffers.
8991 Legal values are 0x21 to 0x100. */
8992 uint64_t ebi_np : 10; /**< [ 20: 11](R/W) TLP headers for non-posted TLPs in the PEMs inbound EBUS buffers.
8993 Legal values are 0x1 to 0x20. */
8994 uint64_t ebi_cpl : 11; /**< [ 31: 21](R/W) TLP 32 B credits for completion TLPs in the PEMs inbound EBUS buffers.
8995 Legal values are 0x21 to 0x100. */
8996 uint64_t reserved_32_63 : 32;
8997 #endif /* Word 0 - End */
8998 } s;
8999 /* struct bdk_pemx_ebi_tlp_credits_s cn; */
9000 };
9001 typedef union bdk_pemx_ebi_tlp_credits bdk_pemx_ebi_tlp_credits_t;
9002
9003 static inline uint64_t BDK_PEMX_EBI_TLP_CREDITS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_EBI_TLP_CREDITS(unsigned long a)9004 static inline uint64_t BDK_PEMX_EBI_TLP_CREDITS(unsigned long a)
9005 {
9006 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
9007 return 0x8e0000000028ll + 0x1000000000ll * ((a) & 0x3);
9008 __bdk_csr_fatal("PEMX_EBI_TLP_CREDITS", 1, a, 0, 0, 0);
9009 }
9010
9011 #define typedef_BDK_PEMX_EBI_TLP_CREDITS(a) bdk_pemx_ebi_tlp_credits_t
9012 #define bustype_BDK_PEMX_EBI_TLP_CREDITS(a) BDK_CSR_TYPE_NCB
9013 #define basename_BDK_PEMX_EBI_TLP_CREDITS(a) "PEMX_EBI_TLP_CREDITS"
9014 #define device_bar_BDK_PEMX_EBI_TLP_CREDITS(a) 0x0 /* PF_BAR0 */
9015 #define busnum_BDK_PEMX_EBI_TLP_CREDITS(a) (a)
9016 #define arguments_BDK_PEMX_EBI_TLP_CREDITS(a) (a),-1,-1,-1
9017
9018 /**
9019 * Register (NCB) pem#_ebo_fifo_status
9020 *
9021 * PEM EBO Offloading FIFO Status Register
9022 * This register contains status about the PEM EBO offloading FIFOs.
9023 *
9024 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
9025 *
9026 * This register is reset on PEM domain reset.
9027 */
9028 union bdk_pemx_ebo_fifo_status
9029 {
9030 uint64_t u;
9031 struct bdk_pemx_ebo_fifo_status_s
9032 {
9033 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9034 uint64_t reserved_54_63 : 10;
9035 uint64_t c_cmd_volume : 6; /**< [ 53: 48](RO/H) Reports the number of valid EBO completion data beats currently held in the
9036 EBO completion buffer. Each entry represents a beat of the EBO bus related to a
9037 completion operation and the value read can range from 0x0 to a maximum of 0x20
9038 which would represent completely full. For diagnostic use only. */
9039 uint64_t reserved_46_47 : 2;
9040 uint64_t n_cmd_volume : 6; /**< [ 45: 40](RO/H) Reports the number of valid entries currently held in the EBO non-posted
9041 offloading FIFO. Each entry represents a beat of the EBO bus related to a
9042 Non-Posted operation and the value read can range from 0x0 to a maximum of 0x20
9043 which would represent completely full.
9044 For diagnostic use only. */
9045 uint64_t reserved_38_39 : 2;
9046 uint64_t p_cmd_volume : 6; /**< [ 37: 32](RO/H) Reports the number of valid entries currently held in the EBO posted offloading
9047 FIFO. Each entry represents a beat of the EBO bus related to a memory store and
9048 the value read can range from 0x0 to a maximum of 0x20 which would represent
9049 completely full.
9050 For diagnostic use only. */
9051 uint64_t c_data_volume : 8; /**< [ 31: 24](RO/H) Reports the number of valid EBO completion data beats currently held in the
9052 EBO completion buffer. Each entry represents a beat of the EBO bus related to a
9053 completion operation and the value read can range from 0x0 to a maximum of 0x40
9054 which would represent completely full. For diagnostic use only.
9055
9056 Internal:
9057 Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */
9058 uint64_t reserved_20_23 : 4;
9059 uint64_t n_data_volume : 8; /**< [ 19: 12](RO/H) Reports the number of valid entries currently held in the EBO non-posted
9060 offloading FIFO. Each entry represents a beat of the EBO bus related to a
9061 Non-Posted operation and the value read can range from 0x0 to a maximum of 0x40
9062 which would represent completely full.
9063 For diagnostic use only.
9064
9065 Internal:
9066 Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */
9067 uint64_t reserved_8_11 : 4;
9068 uint64_t p_data_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the EBO posted offloading
9069 FIFO. Each entry represents a beat of the EBO bus related to a memory store and
9070 the value read can range from 0x0 to a maximum of 0x40 which would represent
9071 completely full.
9072 For diagnostic use only.
9073
9074 Internal:
9075 Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */
9076 #else /* Word 0 - Little Endian */
9077 uint64_t p_data_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the EBO posted offloading
9078 FIFO. Each entry represents a beat of the EBO bus related to a memory store and
9079 the value read can range from 0x0 to a maximum of 0x40 which would represent
9080 completely full.
9081 For diagnostic use only.
9082
9083 Internal:
9084 Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */
9085 uint64_t reserved_8_11 : 4;
9086 uint64_t n_data_volume : 8; /**< [ 19: 12](RO/H) Reports the number of valid entries currently held in the EBO non-posted
9087 offloading FIFO. Each entry represents a beat of the EBO bus related to a
9088 Non-Posted operation and the value read can range from 0x0 to a maximum of 0x40
9089 which would represent completely full.
9090 For diagnostic use only.
9091
9092 Internal:
9093 Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */
9094 uint64_t reserved_20_23 : 4;
9095 uint64_t c_data_volume : 8; /**< [ 31: 24](RO/H) Reports the number of valid EBO completion data beats currently held in the
9096 EBO completion buffer. Each entry represents a beat of the EBO bus related to a
9097 completion operation and the value read can range from 0x0 to a maximum of 0x40
9098 which would represent completely full. For diagnostic use only.
9099
9100 Internal:
9101 Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */
9102 uint64_t p_cmd_volume : 6; /**< [ 37: 32](RO/H) Reports the number of valid entries currently held in the EBO posted offloading
9103 FIFO. Each entry represents a beat of the EBO bus related to a memory store and
9104 the value read can range from 0x0 to a maximum of 0x20 which would represent
9105 completely full.
9106 For diagnostic use only. */
9107 uint64_t reserved_38_39 : 2;
9108 uint64_t n_cmd_volume : 6; /**< [ 45: 40](RO/H) Reports the number of valid entries currently held in the EBO non-posted
9109 offloading FIFO. Each entry represents a beat of the EBO bus related to a
9110 Non-Posted operation and the value read can range from 0x0 to a maximum of 0x20
9111 which would represent completely full.
9112 For diagnostic use only. */
9113 uint64_t reserved_46_47 : 2;
9114 uint64_t c_cmd_volume : 6; /**< [ 53: 48](RO/H) Reports the number of valid EBO completion data beats currently held in the
9115 EBO completion buffer. Each entry represents a beat of the EBO bus related to a
9116 completion operation and the value read can range from 0x0 to a maximum of 0x20
9117 which would represent completely full. For diagnostic use only. */
9118 uint64_t reserved_54_63 : 10;
9119 #endif /* Word 0 - End */
9120 } s;
9121 /* struct bdk_pemx_ebo_fifo_status_s cn; */
9122 };
9123 typedef union bdk_pemx_ebo_fifo_status bdk_pemx_ebo_fifo_status_t;
9124
9125 static inline uint64_t BDK_PEMX_EBO_FIFO_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_EBO_FIFO_STATUS(unsigned long a)9126 static inline uint64_t BDK_PEMX_EBO_FIFO_STATUS(unsigned long a)
9127 {
9128 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
9129 return 0x8e0000000130ll + 0x1000000000ll * ((a) & 0x3);
9130 __bdk_csr_fatal("PEMX_EBO_FIFO_STATUS", 1, a, 0, 0, 0);
9131 }
9132
9133 #define typedef_BDK_PEMX_EBO_FIFO_STATUS(a) bdk_pemx_ebo_fifo_status_t
9134 #define bustype_BDK_PEMX_EBO_FIFO_STATUS(a) BDK_CSR_TYPE_NCB
9135 #define basename_BDK_PEMX_EBO_FIFO_STATUS(a) "PEMX_EBO_FIFO_STATUS"
9136 #define device_bar_BDK_PEMX_EBO_FIFO_STATUS(a) 0x0 /* PF_BAR0 */
9137 #define busnum_BDK_PEMX_EBO_FIFO_STATUS(a) (a)
9138 #define arguments_BDK_PEMX_EBO_FIFO_STATUS(a) (a),-1,-1,-1
9139
9140 /**
9141 * Register (NCB) pem#_ebus_ctl
9142 *
9143 * PEM EBUS Control Register
9144 * This register contains EBUS related control bits.
9145 *
9146 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
9147 *
9148 * This register is reset on PEM domain reset.
9149 */
9150 union bdk_pemx_ebus_ctl
9151 {
9152 uint64_t u;
9153 struct bdk_pemx_ebus_ctl_s
9154 {
9155 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9156 uint64_t reserved_33_63 : 31;
9157 uint64_t ebo_stf : 1; /**< [ 32: 32](R/W) If set, force store and forward mode for offloading FIFOs on outbound EBUS.
9158 This might be useful in a system with an EBUS which cannot keep up with
9159 the PCIe link bandwidth (e.g. 128B EBUS or many idle cycles on EBUS) where
9160 idle cycles introduced in the packet stream could interfere with NCBO
9161 performance. In general it should not be set. */
9162 uint64_t reserved_16_31 : 16;
9163 uint64_t clken_force : 1; /**< [ 15: 15](R/W) Force clock enable on inbound EBUS to be always asserted. For diagnostic use only. */
9164 uint64_t erom_sel : 1; /**< [ 14: 14](R/W) If set, inbound PF EROM BAR accesses are directed to EBUS instead of NCB. This
9165 must be clear when the PEM is configured for RC mode.
9166
9167 For CNXXXX this bit must be clear. */
9168 uint64_t vf_bar2_sel : 1; /**< [ 13: 13](RO) If set, inbound VF BAR2 accesses are directed to EBUS instead of NCB. This bit is
9169 hard-coded to 1. */
9170 uint64_t vf_bar4_sel : 1; /**< [ 12: 12](RO) If set, inbound VF BAR4 accesses are directed to EBUS instead of NCB. This bit is
9171 hard-coded to 1. */
9172 uint64_t vf_bar0_sel : 1; /**< [ 11: 11](RO) If set, inbound VF BAR0 accesses are directed to EBUS instead of NCB. This bit is
9173 hard-coded to 1. */
9174 uint64_t pf_bar2_sel : 1; /**< [ 10: 10](R/W) If set, inbound PF BAR2 accesses are directed to EBUS instead of NCB. In RC mode,
9175 registers PEM()_P2N_BAR2_START / PEM()_BAR_CTL[BAR2_SIZ] are used to determine a BAR2 hit
9176 rather than standard PCIe config registers.
9177
9178 For CNXXXX this bit must be clear. */
9179 uint64_t pf_bar4_sel : 1; /**< [ 9: 9](R/W) If set, inbound PF BAR4 accesses are directed to EBUS instead of NCB. In RC mode,
9180 registers PEM()_P2N_BAR4_START / PEM()_BAR_CTL[BAR4_SIZ] are used to determine a BAR4 hit
9181 rather than standard PCIe config registers.
9182
9183 For CNXXXX this bit must be clear. */
9184 uint64_t pf_bar0_sel : 1; /**< [ 8: 8](R/W) If set, inbound PF BAR0 accesses are directed to EBUS instead of NCB. In RC mode,
9185 registers PEM()_P2N_BAR0_START / PEM()_BAR_CTL[BAR0_SIZ] are used to determine a BAR0 hit
9186 rather than standard PCIe config registers.
9187
9188 For CNXXXX this bit must be set. */
9189 uint64_t reserved_6_7 : 2;
9190 uint64_t ntlp_ro_dis : 1; /**< [ 5: 5](R/W) Relaxed ordering disable for non-posted TLPs. Forces relaxed ordering bit off
9191 when incoming non-posted TLPs arrive targeting EBUS. */
9192 uint64_t inv_par : 1; /**< [ 4: 4](R/W) When set, causes the parity bit on inbound EBUS to be inverted. This bit is for
9193 debug only. */
9194 uint64_t atomic_dis : 1; /**< [ 3: 3](R/W) If set, incoming atomics targeting EBUS are discarded and a completion with
9195 status of unsupported request is returned to the sender.
9196
9197 This bit must be set. */
9198 uint64_t ctlp_ro_dis : 1; /**< [ 2: 2](R/W) Relaxed ordering disable for completion TLPs. Forces relaxed ordering bit off
9199 when incoming completion TLPs arrive targeting EBUS. */
9200 uint64_t ptlp_ro_dis : 1; /**< [ 1: 1](R/W) Relaxed ordering disable for posted TLPs. Forces relaxed ordering bit off when
9201 incoming posted TLPs arrive targeting EBUS. */
9202 uint64_t vdm_dis : 1; /**< [ 0: 0](R/W) If set, incoming vendor defined messages from PCIe will be discarded rather than
9203 forwarded on EBUS.
9204
9205 For CNXXXX this bit must be set. */
9206 #else /* Word 0 - Little Endian */
9207 uint64_t vdm_dis : 1; /**< [ 0: 0](R/W) If set, incoming vendor defined messages from PCIe will be discarded rather than
9208 forwarded on EBUS.
9209
9210 For CNXXXX this bit must be set. */
9211 uint64_t ptlp_ro_dis : 1; /**< [ 1: 1](R/W) Relaxed ordering disable for posted TLPs. Forces relaxed ordering bit off when
9212 incoming posted TLPs arrive targeting EBUS. */
9213 uint64_t ctlp_ro_dis : 1; /**< [ 2: 2](R/W) Relaxed ordering disable for completion TLPs. Forces relaxed ordering bit off
9214 when incoming completion TLPs arrive targeting EBUS. */
9215 uint64_t atomic_dis : 1; /**< [ 3: 3](R/W) If set, incoming atomics targeting EBUS are discarded and a completion with
9216 status of unsupported request is returned to the sender.
9217
9218 This bit must be set. */
9219 uint64_t inv_par : 1; /**< [ 4: 4](R/W) When set, causes the parity bit on inbound EBUS to be inverted. This bit is for
9220 debug only. */
9221 uint64_t ntlp_ro_dis : 1; /**< [ 5: 5](R/W) Relaxed ordering disable for non-posted TLPs. Forces relaxed ordering bit off
9222 when incoming non-posted TLPs arrive targeting EBUS. */
9223 uint64_t reserved_6_7 : 2;
9224 uint64_t pf_bar0_sel : 1; /**< [ 8: 8](R/W) If set, inbound PF BAR0 accesses are directed to EBUS instead of NCB. In RC mode,
9225 registers PEM()_P2N_BAR0_START / PEM()_BAR_CTL[BAR0_SIZ] are used to determine a BAR0 hit
9226 rather than standard PCIe config registers.
9227
9228 For CNXXXX this bit must be set. */
9229 uint64_t pf_bar4_sel : 1; /**< [ 9: 9](R/W) If set, inbound PF BAR4 accesses are directed to EBUS instead of NCB. In RC mode,
9230 registers PEM()_P2N_BAR4_START / PEM()_BAR_CTL[BAR4_SIZ] are used to determine a BAR4 hit
9231 rather than standard PCIe config registers.
9232
9233 For CNXXXX this bit must be clear. */
9234 uint64_t pf_bar2_sel : 1; /**< [ 10: 10](R/W) If set, inbound PF BAR2 accesses are directed to EBUS instead of NCB. In RC mode,
9235 registers PEM()_P2N_BAR2_START / PEM()_BAR_CTL[BAR2_SIZ] are used to determine a BAR2 hit
9236 rather than standard PCIe config registers.
9237
9238 For CNXXXX this bit must be clear. */
9239 uint64_t vf_bar0_sel : 1; /**< [ 11: 11](RO) If set, inbound VF BAR0 accesses are directed to EBUS instead of NCB. This bit is
9240 hard-coded to 1. */
9241 uint64_t vf_bar4_sel : 1; /**< [ 12: 12](RO) If set, inbound VF BAR4 accesses are directed to EBUS instead of NCB. This bit is
9242 hard-coded to 1. */
9243 uint64_t vf_bar2_sel : 1; /**< [ 13: 13](RO) If set, inbound VF BAR2 accesses are directed to EBUS instead of NCB. This bit is
9244 hard-coded to 1. */
9245 uint64_t erom_sel : 1; /**< [ 14: 14](R/W) If set, inbound PF EROM BAR accesses are directed to EBUS instead of NCB. This
9246 must be clear when the PEM is configured for RC mode.
9247
9248 For CNXXXX this bit must be clear. */
9249 uint64_t clken_force : 1; /**< [ 15: 15](R/W) Force clock enable on inbound EBUS to be always asserted. For diagnostic use only. */
9250 uint64_t reserved_16_31 : 16;
9251 uint64_t ebo_stf : 1; /**< [ 32: 32](R/W) If set, force store and forward mode for offloading FIFOs on outbound EBUS.
9252 This might be useful in a system with an EBUS which cannot keep up with
9253 the PCIe link bandwidth (e.g. 128B EBUS or many idle cycles on EBUS) where
9254 idle cycles introduced in the packet stream could interfere with NCBO
9255 performance. In general it should not be set. */
9256 uint64_t reserved_33_63 : 31;
9257 #endif /* Word 0 - End */
9258 } s;
9259 /* struct bdk_pemx_ebus_ctl_s cn; */
9260 };
9261 typedef union bdk_pemx_ebus_ctl bdk_pemx_ebus_ctl_t;
9262
9263 static inline uint64_t BDK_PEMX_EBUS_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_EBUS_CTL(unsigned long a)9264 static inline uint64_t BDK_PEMX_EBUS_CTL(unsigned long a)
9265 {
9266 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
9267 return 0x8e0000000078ll + 0x1000000000ll * ((a) & 0x3);
9268 __bdk_csr_fatal("PEMX_EBUS_CTL", 1, a, 0, 0, 0);
9269 }
9270
9271 #define typedef_BDK_PEMX_EBUS_CTL(a) bdk_pemx_ebus_ctl_t
9272 #define bustype_BDK_PEMX_EBUS_CTL(a) BDK_CSR_TYPE_NCB
9273 #define basename_BDK_PEMX_EBUS_CTL(a) "PEMX_EBUS_CTL"
9274 #define device_bar_BDK_PEMX_EBUS_CTL(a) 0x0 /* PF_BAR0 */
9275 #define busnum_BDK_PEMX_EBUS_CTL(a) (a)
9276 #define arguments_BDK_PEMX_EBUS_CTL(a) (a),-1,-1,-1
9277
9278 /**
9279 * Register (RSL) pem#_ecc_ena
9280 *
9281 * PEM ECC Enable Register
9282 * Contains enables for TLP FIFO ECC RAMs.
9283 */
9284 union bdk_pemx_ecc_ena
9285 {
9286 uint64_t u;
9287 struct bdk_pemx_ecc_ena_s
9288 {
9289 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9290 uint64_t reserved_35_63 : 29;
9291 uint64_t qhdr_b1_ena : 1; /**< [ 34: 34](R/W) ECC enable for Core's Q HDR Bank1 RAM. */
9292 uint64_t qhdr_b0_ena : 1; /**< [ 33: 33](R/W) ECC enable for Core's Q HDR Bank0 RAM. */
9293 uint64_t rtry_ena : 1; /**< [ 32: 32](R/W) ECC enable for Core's RETRY RA. */
9294 uint64_t reserved_11_31 : 21;
9295 uint64_t m2s_c_ena : 1; /**< [ 10: 10](R/W) ECC enable for M2S Control FIFO. */
9296 uint64_t m2s_d_ena : 1; /**< [ 9: 9](R/W) ECC enable for M2S Data FIFO. */
9297 uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */
9298 uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */
9299 uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */
9300 uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */
9301 uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */
9302 uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */
9303 uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */
9304 uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */
9305 uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */
9306 #else /* Word 0 - Little Endian */
9307 uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */
9308 uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */
9309 uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */
9310 uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */
9311 uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */
9312 uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */
9313 uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */
9314 uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */
9315 uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */
9316 uint64_t m2s_d_ena : 1; /**< [ 9: 9](R/W) ECC enable for M2S Data FIFO. */
9317 uint64_t m2s_c_ena : 1; /**< [ 10: 10](R/W) ECC enable for M2S Control FIFO. */
9318 uint64_t reserved_11_31 : 21;
9319 uint64_t rtry_ena : 1; /**< [ 32: 32](R/W) ECC enable for Core's RETRY RA. */
9320 uint64_t qhdr_b0_ena : 1; /**< [ 33: 33](R/W) ECC enable for Core's Q HDR Bank0 RAM. */
9321 uint64_t qhdr_b1_ena : 1; /**< [ 34: 34](R/W) ECC enable for Core's Q HDR Bank1 RAM. */
9322 uint64_t reserved_35_63 : 29;
9323 #endif /* Word 0 - End */
9324 } s;
9325 struct bdk_pemx_ecc_ena_cn81xx
9326 {
9327 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9328 uint64_t reserved_35_63 : 29;
9329 uint64_t qhdr_b1_ena : 1; /**< [ 34: 34](R/W) ECC enable for Core's Q HDR Bank1 RAM. */
9330 uint64_t qhdr_b0_ena : 1; /**< [ 33: 33](R/W) ECC enable for Core's Q HDR Bank0 RAM. */
9331 uint64_t rtry_ena : 1; /**< [ 32: 32](R/W) ECC enable for Core's RETRY RA. */
9332 uint64_t reserved_9_31 : 23;
9333 uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */
9334 uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */
9335 uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */
9336 uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */
9337 uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */
9338 uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */
9339 uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */
9340 uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */
9341 uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */
9342 #else /* Word 0 - Little Endian */
9343 uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */
9344 uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */
9345 uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */
9346 uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */
9347 uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */
9348 uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */
9349 uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */
9350 uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */
9351 uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */
9352 uint64_t reserved_9_31 : 23;
9353 uint64_t rtry_ena : 1; /**< [ 32: 32](R/W) ECC enable for Core's RETRY RA. */
9354 uint64_t qhdr_b0_ena : 1; /**< [ 33: 33](R/W) ECC enable for Core's Q HDR Bank0 RAM. */
9355 uint64_t qhdr_b1_ena : 1; /**< [ 34: 34](R/W) ECC enable for Core's Q HDR Bank1 RAM. */
9356 uint64_t reserved_35_63 : 29;
9357 #endif /* Word 0 - End */
9358 } cn81xx;
9359 /* struct bdk_pemx_ecc_ena_cn81xx cn88xx; */
9360 struct bdk_pemx_ecc_ena_cn83xx
9361 {
9362 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9363 uint64_t reserved_11_63 : 53;
9364 uint64_t m2s_c_ena : 1; /**< [ 10: 10](R/W) ECC enable for M2S Control FIFO. */
9365 uint64_t m2s_d_ena : 1; /**< [ 9: 9](R/W) ECC enable for M2S Data FIFO. */
9366 uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */
9367 uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */
9368 uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */
9369 uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */
9370 uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */
9371 uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */
9372 uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */
9373 uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */
9374 uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */
9375 #else /* Word 0 - Little Endian */
9376 uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */
9377 uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */
9378 uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */
9379 uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */
9380 uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */
9381 uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */
9382 uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */
9383 uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */
9384 uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */
9385 uint64_t m2s_d_ena : 1; /**< [ 9: 9](R/W) ECC enable for M2S Data FIFO. */
9386 uint64_t m2s_c_ena : 1; /**< [ 10: 10](R/W) ECC enable for M2S Control FIFO. */
9387 uint64_t reserved_11_63 : 53;
9388 #endif /* Word 0 - End */
9389 } cn83xx;
9390 };
9391 typedef union bdk_pemx_ecc_ena bdk_pemx_ecc_ena_t;
9392
9393 static inline uint64_t BDK_PEMX_ECC_ENA(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_ECC_ENA(unsigned long a)9394 static inline uint64_t BDK_PEMX_ECC_ENA(unsigned long a)
9395 {
9396 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
9397 return 0x87e0c0000470ll + 0x1000000ll * ((a) & 0x3);
9398 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9399 return 0x87e0c0000470ll + 0x1000000ll * ((a) & 0x3);
9400 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
9401 return 0x87e0c0000470ll + 0x1000000ll * ((a) & 0x7);
9402 __bdk_csr_fatal("PEMX_ECC_ENA", 1, a, 0, 0, 0);
9403 }
9404
9405 #define typedef_BDK_PEMX_ECC_ENA(a) bdk_pemx_ecc_ena_t
9406 #define bustype_BDK_PEMX_ECC_ENA(a) BDK_CSR_TYPE_RSL
9407 #define basename_BDK_PEMX_ECC_ENA(a) "PEMX_ECC_ENA"
9408 #define device_bar_BDK_PEMX_ECC_ENA(a) 0x0 /* PF_BAR0 */
9409 #define busnum_BDK_PEMX_ECC_ENA(a) (a)
9410 #define arguments_BDK_PEMX_ECC_ENA(a) (a),-1,-1,-1
9411
9412 /**
9413 * Register (RSL) pem#_ecc_synd_ctrl
9414 *
9415 * PEM ECC Syndrome Control Register
9416 * This register contains syndrome control for TLP FIFO ECC RAMs.
9417 */
9418 union bdk_pemx_ecc_synd_ctrl
9419 {
9420 uint64_t u;
9421 struct bdk_pemx_ecc_synd_ctrl_s
9422 {
9423 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9424 uint64_t reserved_38_63 : 26;
9425 uint64_t qhdr_b1_syn : 2; /**< [ 37: 36](R/W) Syndrome flip bits for Core's Q HDR Bank1 RAM. */
9426 uint64_t qhdr_b0_syn : 2; /**< [ 35: 34](R/W) Syndrome flip bits for Core's Q HDR Bank0 RAM. */
9427 uint64_t rtry_syn : 2; /**< [ 33: 32](R/W) Syndrome flip bits for Core's RETRY RAM. */
9428 uint64_t reserved_22_31 : 10;
9429 uint64_t m2s_c_syn : 2; /**< [ 21: 20](R/W) Syndrome flip bits for M2S Control FIFO. */
9430 uint64_t m2s_d_syn : 2; /**< [ 19: 18](R/W) Syndrome flip bits for M2S Data FIFO. */
9431 uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */
9432 uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */
9433 uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */
9434 uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */
9435 uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */
9436 uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */
9437 uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */
9438 uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */
9439 uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */
9440 #else /* Word 0 - Little Endian */
9441 uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */
9442 uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */
9443 uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */
9444 uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */
9445 uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */
9446 uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */
9447 uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */
9448 uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */
9449 uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */
9450 uint64_t m2s_d_syn : 2; /**< [ 19: 18](R/W) Syndrome flip bits for M2S Data FIFO. */
9451 uint64_t m2s_c_syn : 2; /**< [ 21: 20](R/W) Syndrome flip bits for M2S Control FIFO. */
9452 uint64_t reserved_22_31 : 10;
9453 uint64_t rtry_syn : 2; /**< [ 33: 32](R/W) Syndrome flip bits for Core's RETRY RAM. */
9454 uint64_t qhdr_b0_syn : 2; /**< [ 35: 34](R/W) Syndrome flip bits for Core's Q HDR Bank0 RAM. */
9455 uint64_t qhdr_b1_syn : 2; /**< [ 37: 36](R/W) Syndrome flip bits for Core's Q HDR Bank1 RAM. */
9456 uint64_t reserved_38_63 : 26;
9457 #endif /* Word 0 - End */
9458 } s;
9459 struct bdk_pemx_ecc_synd_ctrl_cn81xx
9460 {
9461 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9462 uint64_t reserved_38_63 : 26;
9463 uint64_t qhdr_b1_syn : 2; /**< [ 37: 36](R/W) Syndrome flip bits for Core's Q HDR Bank1 RAM. */
9464 uint64_t qhdr_b0_syn : 2; /**< [ 35: 34](R/W) Syndrome flip bits for Core's Q HDR Bank0 RAM. */
9465 uint64_t rtry_syn : 2; /**< [ 33: 32](R/W) Syndrome flip bits for Core's RETRY RAM. */
9466 uint64_t reserved_18_31 : 14;
9467 uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */
9468 uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */
9469 uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */
9470 uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */
9471 uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */
9472 uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */
9473 uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */
9474 uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */
9475 uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */
9476 #else /* Word 0 - Little Endian */
9477 uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */
9478 uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */
9479 uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */
9480 uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */
9481 uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */
9482 uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */
9483 uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */
9484 uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */
9485 uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */
9486 uint64_t reserved_18_31 : 14;
9487 uint64_t rtry_syn : 2; /**< [ 33: 32](R/W) Syndrome flip bits for Core's RETRY RAM. */
9488 uint64_t qhdr_b0_syn : 2; /**< [ 35: 34](R/W) Syndrome flip bits for Core's Q HDR Bank0 RAM. */
9489 uint64_t qhdr_b1_syn : 2; /**< [ 37: 36](R/W) Syndrome flip bits for Core's Q HDR Bank1 RAM. */
9490 uint64_t reserved_38_63 : 26;
9491 #endif /* Word 0 - End */
9492 } cn81xx;
9493 /* struct bdk_pemx_ecc_synd_ctrl_cn81xx cn88xx; */
9494 struct bdk_pemx_ecc_synd_ctrl_cn83xx
9495 {
9496 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9497 uint64_t reserved_22_63 : 42;
9498 uint64_t m2s_c_syn : 2; /**< [ 21: 20](R/W) Syndrome flip bits for M2S Control FIFO. */
9499 uint64_t m2s_d_syn : 2; /**< [ 19: 18](R/W) Syndrome flip bits for M2S Data FIFO. */
9500 uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */
9501 uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */
9502 uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */
9503 uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */
9504 uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */
9505 uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */
9506 uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */
9507 uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */
9508 uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */
9509 #else /* Word 0 - Little Endian */
9510 uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */
9511 uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */
9512 uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */
9513 uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */
9514 uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */
9515 uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */
9516 uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */
9517 uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */
9518 uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */
9519 uint64_t m2s_d_syn : 2; /**< [ 19: 18](R/W) Syndrome flip bits for M2S Data FIFO. */
9520 uint64_t m2s_c_syn : 2; /**< [ 21: 20](R/W) Syndrome flip bits for M2S Control FIFO. */
9521 uint64_t reserved_22_63 : 42;
9522 #endif /* Word 0 - End */
9523 } cn83xx;
9524 };
9525 typedef union bdk_pemx_ecc_synd_ctrl bdk_pemx_ecc_synd_ctrl_t;
9526
9527 static inline uint64_t BDK_PEMX_ECC_SYND_CTRL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_ECC_SYND_CTRL(unsigned long a)9528 static inline uint64_t BDK_PEMX_ECC_SYND_CTRL(unsigned long a)
9529 {
9530 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
9531 return 0x87e0c0000478ll + 0x1000000ll * ((a) & 0x3);
9532 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9533 return 0x87e0c0000478ll + 0x1000000ll * ((a) & 0x3);
9534 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
9535 return 0x87e0c0000478ll + 0x1000000ll * ((a) & 0x7);
9536 __bdk_csr_fatal("PEMX_ECC_SYND_CTRL", 1, a, 0, 0, 0);
9537 }
9538
9539 #define typedef_BDK_PEMX_ECC_SYND_CTRL(a) bdk_pemx_ecc_synd_ctrl_t
9540 #define bustype_BDK_PEMX_ECC_SYND_CTRL(a) BDK_CSR_TYPE_RSL
9541 #define basename_BDK_PEMX_ECC_SYND_CTRL(a) "PEMX_ECC_SYND_CTRL"
9542 #define device_bar_BDK_PEMX_ECC_SYND_CTRL(a) 0x0 /* PF_BAR0 */
9543 #define busnum_BDK_PEMX_ECC_SYND_CTRL(a) (a)
9544 #define arguments_BDK_PEMX_ECC_SYND_CTRL(a) (a),-1,-1,-1
9545
9546 /**
9547 * Register (NCB) pem#_eco
9548 *
9549 * INTERNAL: PEM ECO Register
9550 *
9551 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
9552 *
9553 * This register is reset on MAC reset.
9554 */
9555 union bdk_pemx_eco
9556 {
9557 uint64_t u;
9558 struct bdk_pemx_eco_s
9559 {
9560 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9561 uint64_t reserved_8_63 : 56;
9562 uint64_t eco_rw : 8; /**< [ 7: 0](R/W) Internal:
9563 Reserved for ECO usage. */
9564 #else /* Word 0 - Little Endian */
9565 uint64_t eco_rw : 8; /**< [ 7: 0](R/W) Internal:
9566 Reserved for ECO usage. */
9567 uint64_t reserved_8_63 : 56;
9568 #endif /* Word 0 - End */
9569 } s;
9570 /* struct bdk_pemx_eco_s cn; */
9571 };
9572 typedef union bdk_pemx_eco bdk_pemx_eco_t;
9573
9574 static inline uint64_t BDK_PEMX_ECO(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_ECO(unsigned long a)9575 static inline uint64_t BDK_PEMX_ECO(unsigned long a)
9576 {
9577 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9578 return 0x87e0c0000010ll + 0x1000000ll * ((a) & 0x3);
9579 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
9580 return 0x8e0000000008ll + 0x1000000000ll * ((a) & 0x3);
9581 __bdk_csr_fatal("PEMX_ECO", 1, a, 0, 0, 0);
9582 }
9583
9584 #define typedef_BDK_PEMX_ECO(a) bdk_pemx_eco_t
9585 #define bustype_BDK_PEMX_ECO(a) BDK_CSR_TYPE_NCB
9586 #define basename_BDK_PEMX_ECO(a) "PEMX_ECO"
9587 #define device_bar_BDK_PEMX_ECO(a) 0x0 /* PF_BAR0 */
9588 #define busnum_BDK_PEMX_ECO(a) (a)
9589 #define arguments_BDK_PEMX_ECO(a) (a),-1,-1,-1
9590
9591 /**
9592 * Register (NCB) pem#_end_merge
9593 *
9594 * PEM End Merge Register
9595 * Any access (read or write) to this register over NCBO will create a merging barrier
9596 * for both the write and read streams within PEM outbound pipelines such that no NCBO
9597 * reads or writes received after this register's access will merge with any NCBO accesses
9598 * that occurred prior to this register's access. Note that RSL accesses to this register
9599 * will have no effect on merging.
9600 *
9601 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
9602 *
9603 * This register is reset on PEM domain reset.
9604 */
9605 union bdk_pemx_end_merge
9606 {
9607 uint64_t u;
9608 struct bdk_pemx_end_merge_s
9609 {
9610 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9611 uint64_t reserved_0_63 : 64;
9612 #else /* Word 0 - Little Endian */
9613 uint64_t reserved_0_63 : 64;
9614 #endif /* Word 0 - End */
9615 } s;
9616 /* struct bdk_pemx_end_merge_s cn; */
9617 };
9618 typedef union bdk_pemx_end_merge bdk_pemx_end_merge_t;
9619
9620 static inline uint64_t BDK_PEMX_END_MERGE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_END_MERGE(unsigned long a)9621 static inline uint64_t BDK_PEMX_END_MERGE(unsigned long a)
9622 {
9623 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
9624 return 0x8e0000000178ll + 0x1000000000ll * ((a) & 0x3);
9625 __bdk_csr_fatal("PEMX_END_MERGE", 1, a, 0, 0, 0);
9626 }
9627
9628 #define typedef_BDK_PEMX_END_MERGE(a) bdk_pemx_end_merge_t
9629 #define bustype_BDK_PEMX_END_MERGE(a) BDK_CSR_TYPE_NCB
9630 #define basename_BDK_PEMX_END_MERGE(a) "PEMX_END_MERGE"
9631 #define device_bar_BDK_PEMX_END_MERGE(a) 0x0 /* PF_BAR0 */
9632 #define busnum_BDK_PEMX_END_MERGE(a) (a)
9633 #define arguments_BDK_PEMX_END_MERGE(a) (a),-1,-1,-1
9634
9635 /**
9636 * Register (RSL) pem#_erom#
9637 *
9638 * PEM Expansion ROM Registers
9639 * This register accesses the external EEPROM.
9640 */
9641 union bdk_pemx_eromx
9642 {
9643 uint64_t u;
9644 struct bdk_pemx_eromx_s
9645 {
9646 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9647 uint64_t erom : 64; /**< [ 63: 0](R/W/H) PCIe express read transactions to BAR3 (through PCIEEP()_CFG012) will appear as
9648 8-byte RSL reads to this register.
9649
9650 Although 512 KB is advertised from PCIEEP()_CFG012, only the first 448 KB is
9651 actually accessible, and reads above 448 KB will return zeros, writes are NOP.
9652
9653 Accessible through PEM2 if EP PEM0 is an RC, otherwise accessible through PEM0.
9654 Access from a PEM that doesn't own the EEPROM will return fault. */
9655 #else /* Word 0 - Little Endian */
9656 uint64_t erom : 64; /**< [ 63: 0](R/W/H) PCIe express read transactions to BAR3 (through PCIEEP()_CFG012) will appear as
9657 8-byte RSL reads to this register.
9658
9659 Although 512 KB is advertised from PCIEEP()_CFG012, only the first 448 KB is
9660 actually accessible, and reads above 448 KB will return zeros, writes are NOP.
9661
9662 Accessible through PEM2 if EP PEM0 is an RC, otherwise accessible through PEM0.
9663 Access from a PEM that doesn't own the EEPROM will return fault. */
9664 #endif /* Word 0 - End */
9665 } s;
9666 /* struct bdk_pemx_eromx_s cn; */
9667 };
9668 typedef union bdk_pemx_eromx bdk_pemx_eromx_t;
9669
9670 static inline uint64_t BDK_PEMX_EROMX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_EROMX(unsigned long a,unsigned long b)9671 static inline uint64_t BDK_PEMX_EROMX(unsigned long a, unsigned long b)
9672 {
9673 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=65535)))
9674 return 0x87e0c0080000ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0xffff);
9675 __bdk_csr_fatal("PEMX_EROMX", 2, a, b, 0, 0);
9676 }
9677
9678 #define typedef_BDK_PEMX_EROMX(a,b) bdk_pemx_eromx_t
9679 #define bustype_BDK_PEMX_EROMX(a,b) BDK_CSR_TYPE_RSL
9680 #define basename_BDK_PEMX_EROMX(a,b) "PEMX_EROMX"
9681 #define device_bar_BDK_PEMX_EROMX(a,b) 0x0 /* PF_BAR0 */
9682 #define busnum_BDK_PEMX_EROMX(a,b) (a)
9683 #define arguments_BDK_PEMX_EROMX(a,b) (a),(b),-1,-1
9684
9685 /**
9686 * Register (NCB) pem#_erom_bar_addr
9687 *
9688 * PEM EROM BAR Address Register
9689 * This register configures PEM EROM BAR accesses targeted at NCBI.
9690 * Fields in this register are only used when PEM()_EBUS_CTL[EROM_SEL]
9691 * is clear and the PEM is configured for EP mode.
9692 *
9693 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
9694 *
9695 * This register is reset on PEM domain reset.
9696 */
9697 union bdk_pemx_erom_bar_addr
9698 {
9699 uint64_t u;
9700 struct bdk_pemx_erom_bar_addr_s
9701 {
9702 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9703 uint64_t wvirt : 1; /**< [ 63: 63](R/W) Virtual:
9704 0 = [RD_ADDR] is a physical addresses.
9705 1 = [RD_ADDR] is a virtual address. */
9706 uint64_t pspi_en : 1; /**< [ 62: 62](R/W) If PEM()_EBUS_CTL[EROM_SEL] is clear, PEM is configured for EP mode, and
9707 [PSPI_EN] is set, this bit directs EROM BAR hits to a private bus connected
9708 to the PSPI interface in MIO rather than NCB. */
9709 uint64_t reserved_53_61 : 9;
9710 uint64_t rd_addr : 37; /**< [ 52: 16](R/W) Base address for PEM EROM BAR transactions that is appended to the offset. This
9711 field is only used when PEM()_EBUS_CTL[EROM_SEL] is clear, and PEM is configured for EP mode. */
9712 uint64_t reserved_0_15 : 16;
9713 #else /* Word 0 - Little Endian */
9714 uint64_t reserved_0_15 : 16;
9715 uint64_t rd_addr : 37; /**< [ 52: 16](R/W) Base address for PEM EROM BAR transactions that is appended to the offset. This
9716 field is only used when PEM()_EBUS_CTL[EROM_SEL] is clear, and PEM is configured for EP mode. */
9717 uint64_t reserved_53_61 : 9;
9718 uint64_t pspi_en : 1; /**< [ 62: 62](R/W) If PEM()_EBUS_CTL[EROM_SEL] is clear, PEM is configured for EP mode, and
9719 [PSPI_EN] is set, this bit directs EROM BAR hits to a private bus connected
9720 to the PSPI interface in MIO rather than NCB. */
9721 uint64_t wvirt : 1; /**< [ 63: 63](R/W) Virtual:
9722 0 = [RD_ADDR] is a physical addresses.
9723 1 = [RD_ADDR] is a virtual address. */
9724 #endif /* Word 0 - End */
9725 } s;
9726 /* struct bdk_pemx_erom_bar_addr_s cn; */
9727 };
9728 typedef union bdk_pemx_erom_bar_addr bdk_pemx_erom_bar_addr_t;
9729
9730 static inline uint64_t BDK_PEMX_EROM_BAR_ADDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_EROM_BAR_ADDR(unsigned long a)9731 static inline uint64_t BDK_PEMX_EROM_BAR_ADDR(unsigned long a)
9732 {
9733 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
9734 return 0x8e0000000150ll + 0x1000000000ll * ((a) & 0x3);
9735 __bdk_csr_fatal("PEMX_EROM_BAR_ADDR", 1, a, 0, 0, 0);
9736 }
9737
9738 #define typedef_BDK_PEMX_EROM_BAR_ADDR(a) bdk_pemx_erom_bar_addr_t
9739 #define bustype_BDK_PEMX_EROM_BAR_ADDR(a) BDK_CSR_TYPE_NCB
9740 #define basename_BDK_PEMX_EROM_BAR_ADDR(a) "PEMX_EROM_BAR_ADDR"
9741 #define device_bar_BDK_PEMX_EROM_BAR_ADDR(a) 0x0 /* PF_BAR0 */
9742 #define busnum_BDK_PEMX_EROM_BAR_ADDR(a) (a)
9743 #define arguments_BDK_PEMX_EROM_BAR_ADDR(a) (a),-1,-1,-1
9744
9745 /**
9746 * Register (NCB) pem#_flr_ctl
9747 *
9748 * PEM FLR Control Register
9749 * This register provides function level reset controls.
9750 *
9751 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
9752 *
9753 * This register is reset on MAC cold reset.
9754 */
9755 union bdk_pemx_flr_ctl
9756 {
9757 uint64_t u;
9758 struct bdk_pemx_flr_ctl_s
9759 {
9760 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9761 uint64_t reserved_6_63 : 58;
9762 uint64_t chge : 1; /**< [ 5: 5](R/W) When set, the default 25 ms expiration of the function level reset
9763 global counter can be changed. */
9764 uint64_t inc : 1; /**< [ 4: 4](R/W) When [CHGE] is set, this bit determines if the 25 ms expiration of the function
9765 level reset global counter will be increased (set) or decreased (not set). */
9766 uint64_t delta : 2; /**< [ 3: 2](R/W) When [CHGE] is set, this field determines the delta time to increase/decrease
9767 the 25 ms expiration of the function level reset global counter.
9768 0x0 = 1 ms.
9769 0x1 = 2 ms.
9770 0x2 = 4 ms.
9771 0x3 = 8 ms. */
9772 uint64_t timer_ctl : 2; /**< [ 1: 0](R/W) Each FLR indication can be cleared within 66-99 ms by use of a timer. Controls how
9773 FLR indication is cleared:
9774 0x0 = PEM()_FLR_REQ* can be used to clear the FLR indication, if not written before
9775 timer expires, the timer will auto-clear FLR.
9776 0x1 = PEM()_FLR_REQ* must be used to clear the FLR indication, timers are not used.
9777 0x2 = Only timers are used, PEM()_FLR_REQ* is ignored.
9778 0x3 = Reserved. */
9779 #else /* Word 0 - Little Endian */
9780 uint64_t timer_ctl : 2; /**< [ 1: 0](R/W) Each FLR indication can be cleared within 66-99 ms by use of a timer. Controls how
9781 FLR indication is cleared:
9782 0x0 = PEM()_FLR_REQ* can be used to clear the FLR indication, if not written before
9783 timer expires, the timer will auto-clear FLR.
9784 0x1 = PEM()_FLR_REQ* must be used to clear the FLR indication, timers are not used.
9785 0x2 = Only timers are used, PEM()_FLR_REQ* is ignored.
9786 0x3 = Reserved. */
9787 uint64_t delta : 2; /**< [ 3: 2](R/W) When [CHGE] is set, this field determines the delta time to increase/decrease
9788 the 25 ms expiration of the function level reset global counter.
9789 0x0 = 1 ms.
9790 0x1 = 2 ms.
9791 0x2 = 4 ms.
9792 0x3 = 8 ms. */
9793 uint64_t inc : 1; /**< [ 4: 4](R/W) When [CHGE] is set, this bit determines if the 25 ms expiration of the function
9794 level reset global counter will be increased (set) or decreased (not set). */
9795 uint64_t chge : 1; /**< [ 5: 5](R/W) When set, the default 25 ms expiration of the function level reset
9796 global counter can be changed. */
9797 uint64_t reserved_6_63 : 58;
9798 #endif /* Word 0 - End */
9799 } s;
9800 /* struct bdk_pemx_flr_ctl_s cn; */
9801 };
9802 typedef union bdk_pemx_flr_ctl bdk_pemx_flr_ctl_t;
9803
9804 static inline uint64_t BDK_PEMX_FLR_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_FLR_CTL(unsigned long a)9805 static inline uint64_t BDK_PEMX_FLR_CTL(unsigned long a)
9806 {
9807 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
9808 return 0x8e0000000068ll + 0x1000000000ll * ((a) & 0x3);
9809 __bdk_csr_fatal("PEMX_FLR_CTL", 1, a, 0, 0, 0);
9810 }
9811
9812 #define typedef_BDK_PEMX_FLR_CTL(a) bdk_pemx_flr_ctl_t
9813 #define bustype_BDK_PEMX_FLR_CTL(a) BDK_CSR_TYPE_NCB
9814 #define basename_BDK_PEMX_FLR_CTL(a) "PEMX_FLR_CTL"
9815 #define device_bar_BDK_PEMX_FLR_CTL(a) 0x0 /* PF_BAR0 */
9816 #define busnum_BDK_PEMX_FLR_CTL(a) (a)
9817 #define arguments_BDK_PEMX_FLR_CTL(a) (a),-1,-1,-1
9818
9819 /**
9820 * Register (RSL) pem#_flr_glblcnt_ctl
9821 *
9822 * PEM FLR Global Count Control Register
9823 * Function level reset global counter control.
9824 */
9825 union bdk_pemx_flr_glblcnt_ctl
9826 {
9827 uint64_t u;
9828 struct bdk_pemx_flr_glblcnt_ctl_s
9829 {
9830 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9831 uint64_t reserved_4_63 : 60;
9832 uint64_t chge : 1; /**< [ 3: 3](R/W) When set, the default 25ms expiration of the function level reset
9833 global counter can be changed. */
9834 uint64_t inc : 1; /**< [ 2: 2](R/W) When CHGE is set, this bit determines if the 25ms expiration of the function
9835 level reset global counter will be increased (set) or decreased (not set). */
9836 uint64_t delta : 2; /**< [ 1: 0](R/W) When CHGE is set, this field determines the delta time to increase/decrease
9837 the 25 ms expiration of the function level reset global counter.
9838 0x0 = 1 ms.
9839 0x1 = 2 ms.
9840 0x2 = 4 ms.
9841 0x3 = 8 ms. */
9842 #else /* Word 0 - Little Endian */
9843 uint64_t delta : 2; /**< [ 1: 0](R/W) When CHGE is set, this field determines the delta time to increase/decrease
9844 the 25 ms expiration of the function level reset global counter.
9845 0x0 = 1 ms.
9846 0x1 = 2 ms.
9847 0x2 = 4 ms.
9848 0x3 = 8 ms. */
9849 uint64_t inc : 1; /**< [ 2: 2](R/W) When CHGE is set, this bit determines if the 25ms expiration of the function
9850 level reset global counter will be increased (set) or decreased (not set). */
9851 uint64_t chge : 1; /**< [ 3: 3](R/W) When set, the default 25ms expiration of the function level reset
9852 global counter can be changed. */
9853 uint64_t reserved_4_63 : 60;
9854 #endif /* Word 0 - End */
9855 } s;
9856 /* struct bdk_pemx_flr_glblcnt_ctl_s cn; */
9857 };
9858 typedef union bdk_pemx_flr_glblcnt_ctl bdk_pemx_flr_glblcnt_ctl_t;
9859
9860 static inline uint64_t BDK_PEMX_FLR_GLBLCNT_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_FLR_GLBLCNT_CTL(unsigned long a)9861 static inline uint64_t BDK_PEMX_FLR_GLBLCNT_CTL(unsigned long a)
9862 {
9863 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9864 return 0x87e0c0000210ll + 0x1000000ll * ((a) & 0x3);
9865 __bdk_csr_fatal("PEMX_FLR_GLBLCNT_CTL", 1, a, 0, 0, 0);
9866 }
9867
9868 #define typedef_BDK_PEMX_FLR_GLBLCNT_CTL(a) bdk_pemx_flr_glblcnt_ctl_t
9869 #define bustype_BDK_PEMX_FLR_GLBLCNT_CTL(a) BDK_CSR_TYPE_RSL
9870 #define basename_BDK_PEMX_FLR_GLBLCNT_CTL(a) "PEMX_FLR_GLBLCNT_CTL"
9871 #define device_bar_BDK_PEMX_FLR_GLBLCNT_CTL(a) 0x0 /* PF_BAR0 */
9872 #define busnum_BDK_PEMX_FLR_GLBLCNT_CTL(a) (a)
9873 #define arguments_BDK_PEMX_FLR_GLBLCNT_CTL(a) (a),-1,-1,-1
9874
9875 /**
9876 * Register (NCB) pem#_flr_pf#_stopreq
9877 *
9878 * PEM PF Stop Request Register
9879 * PF function level reset stop outbound requests register.
9880 * Hardware automatically sets the STOPREQ bit for the PF when it enters a
9881 * function level reset (FLR). Software is responsible for clearing the STOPREQ
9882 * bit but must not do so prior to hardware taking down the FLR, which could be
9883 * as long as 100 ms. It may be appropriate for software to wait longer before clearing
9884 * STOPREQ, software may need to drain deep DPI queues for example.
9885 * Whenever PEM receives a PF or child VF request mastered by {ProductLine} over NCBO/EBUS
9886 * (i.e. P or NP), when STOPREQ is set for the function, PEM will discard the outgoing request
9887 * before sending it to the PCIe core. If a NP, PEM will schedule an immediate completion
9888 * with error for the request - no timeout is required. STOPREQ mimics the behavior of
9889 * PCIEEP_CMD[ME] for outbound requests that will master the PCIe bus (P and NP).
9890 *
9891 * STOPREQ has no effect on NCBI/incoming EBUS traffic.
9892 *
9893 * STOPREQ will have no effect on completions returned by CNXXXX over NCBO/EBUS.
9894 *
9895 * When a PEM()_FLR_PF()_STOPREQ is set, none of the associated
9896 * PEM()_FLR_VF()_STOPREQ[VF_STOPREQ] will be set.
9897 *
9898 * STOPREQ is reset when the MAC is reset, and is not reset after a chip soft reset.
9899 *
9900 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
9901 *
9902 * This register is reset on MAC reset.
9903 */
9904 union bdk_pemx_flr_pfx_stopreq
9905 {
9906 uint64_t u;
9907 struct bdk_pemx_flr_pfx_stopreq_s
9908 {
9909 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9910 uint64_t reserved_1_63 : 63;
9911 uint64_t pf_stopreq : 1; /**< [ 0: 0](R/W1C/H) PF STOPREQ bit. */
9912 #else /* Word 0 - Little Endian */
9913 uint64_t pf_stopreq : 1; /**< [ 0: 0](R/W1C/H) PF STOPREQ bit. */
9914 uint64_t reserved_1_63 : 63;
9915 #endif /* Word 0 - End */
9916 } s;
9917 /* struct bdk_pemx_flr_pfx_stopreq_s cn; */
9918 };
9919 typedef union bdk_pemx_flr_pfx_stopreq bdk_pemx_flr_pfx_stopreq_t;
9920
9921 static inline uint64_t BDK_PEMX_FLR_PFX_STOPREQ(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_FLR_PFX_STOPREQ(unsigned long a,unsigned long b)9922 static inline uint64_t BDK_PEMX_FLR_PFX_STOPREQ(unsigned long a, unsigned long b)
9923 {
9924 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15)))
9925 return 0x8e0000000c00ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf);
9926 __bdk_csr_fatal("PEMX_FLR_PFX_STOPREQ", 2, a, b, 0, 0);
9927 }
9928
9929 #define typedef_BDK_PEMX_FLR_PFX_STOPREQ(a,b) bdk_pemx_flr_pfx_stopreq_t
9930 #define bustype_BDK_PEMX_FLR_PFX_STOPREQ(a,b) BDK_CSR_TYPE_NCB
9931 #define basename_BDK_PEMX_FLR_PFX_STOPREQ(a,b) "PEMX_FLR_PFX_STOPREQ"
9932 #define device_bar_BDK_PEMX_FLR_PFX_STOPREQ(a,b) 0x0 /* PF_BAR0 */
9933 #define busnum_BDK_PEMX_FLR_PFX_STOPREQ(a,b) (a)
9934 #define arguments_BDK_PEMX_FLR_PFX_STOPREQ(a,b) (a),(b),-1,-1
9935
9936 /**
9937 * Register (RSL) pem#_flr_pf0_vf_stopreq
9938 *
9939 * PEM PF0 Virtual Function Stop Request Lower Register
9940 * PF0 virtual function level reset stop outbound requests register.
9941 * Hardware automatically sets the STOPREQ bit for the VF when it enters a
9942 * function level reset (FLR). Software is responsible for clearing the STOPREQ
9943 * bit but must not do so prior to hardware taking down the FLR, which could be
9944 * as long as 100 ms. It may be appropriate for software to wait longer before clearing
9945 * STOPREQ, software may need to drain deep DPI queues for example.
9946 *
9947 * Whenever PEM receives a request mastered by {ProductLine} over S2M (i.e. P or NP),
9948 * when STOPREQ is set for the function, PEM will discard the outgoing request
9949 * before sending it to the PCIe core. If a NP, PEM will schedule an immediate
9950 * SWI_RSP_ERROR completion for the request - no timeout is required.
9951 * In both cases, the PEM()_INT_SUM[BMD_E] bit will be set and a error
9952 * interrupt is generated.
9953 *
9954 * STOPREQ mimics the behavior of PCIEEPVF()_CFG001.ME for outbound requests that will
9955 * master the PCIe bus (P and NP).
9956 *
9957 * Note that STOPREQ will have no effect on completions returned by {ProductLine} over the S2M.
9958 *
9959 * Note that STOPREQ will have no effect on M2S traffic.
9960 */
9961 union bdk_pemx_flr_pf0_vf_stopreq
9962 {
9963 uint64_t u;
9964 struct bdk_pemx_flr_pf0_vf_stopreq_s
9965 {
9966 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9967 uint64_t vf_stopreq_lo : 64; /**< [ 63: 0](R/W1C/H) STOPREQ for the 64 VFs in PF0. */
9968 #else /* Word 0 - Little Endian */
9969 uint64_t vf_stopreq_lo : 64; /**< [ 63: 0](R/W1C/H) STOPREQ for the 64 VFs in PF0. */
9970 #endif /* Word 0 - End */
9971 } s;
9972 /* struct bdk_pemx_flr_pf0_vf_stopreq_s cn; */
9973 };
9974 typedef union bdk_pemx_flr_pf0_vf_stopreq bdk_pemx_flr_pf0_vf_stopreq_t;
9975
9976 static inline uint64_t BDK_PEMX_FLR_PF0_VF_STOPREQ(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_FLR_PF0_VF_STOPREQ(unsigned long a)9977 static inline uint64_t BDK_PEMX_FLR_PF0_VF_STOPREQ(unsigned long a)
9978 {
9979 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9980 return 0x87e0c0000220ll + 0x1000000ll * ((a) & 0x3);
9981 __bdk_csr_fatal("PEMX_FLR_PF0_VF_STOPREQ", 1, a, 0, 0, 0);
9982 }
9983
9984 #define typedef_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) bdk_pemx_flr_pf0_vf_stopreq_t
9985 #define bustype_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) BDK_CSR_TYPE_RSL
9986 #define basename_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) "PEMX_FLR_PF0_VF_STOPREQ"
9987 #define device_bar_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) 0x0 /* PF_BAR0 */
9988 #define busnum_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) (a)
9989 #define arguments_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) (a),-1,-1,-1
9990
9991 /**
9992 * Register (RSL) pem#_flr_pf_stopreq
9993 *
9994 * PEM PF Stop Request Register
9995 * PF function level reset stop outbound requests register.
9996 * Hardware automatically sets the STOPREQ bit for the PF when it enters a
9997 * function level reset (FLR). Software is responsible for clearing the STOPREQ
9998 * bit but must not do so prior to hardware taking down the FLR, which could be
9999 * as long as 100 ms. It may be appropriate for software to wait longer before clearing
10000 * STOPREQ, software may need to drain deep DPI queues for example.
10001 * Whenever PEM receives a PF or child VF request mastered by {ProductLine} over S2M (i.e. P or
10002 * NP),
10003 * when STOPREQ is set for the function, PEM will discard the outgoing request
10004 * before sending it to the PCIe core. If a NP, PEM will schedule an immediate
10005 * SWI_RSP_ERROR completion for the request - no timeout is required.
10006 * In both cases, the PEM(0..3)_INT_SUM[PBMD_E] bit will be set and a error
10007 * interrupt is generated.
10008 * STOPREQ mimics the behavior of PCIEEP()_CFG001.ME for outbound requests that will
10009 * master the PCIe bus (P and NP).
10010 *
10011 * STOPREQ has no effect on M2S traffic.
10012 *
10013 * STOPREQ will have no effect on completions returned by CNXXXX over the S2M.
10014 *
10015 * When a PF()_STOPREQ is set, none of the associated
10016 * PEM()_FLR_PF0_VF_STOPREQ[VF_STOPREQ] will be set.
10017 *
10018 * STOPREQ is reset when the MAC is reset, and is not reset after a chip soft reset.
10019 */
10020 union bdk_pemx_flr_pf_stopreq
10021 {
10022 uint64_t u;
10023 struct bdk_pemx_flr_pf_stopreq_s
10024 {
10025 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10026 uint64_t reserved_1_63 : 63;
10027 uint64_t pf0_stopreq : 1; /**< [ 0: 0](R/W1C/H) PF0 STOPREQ bit. */
10028 #else /* Word 0 - Little Endian */
10029 uint64_t pf0_stopreq : 1; /**< [ 0: 0](R/W1C/H) PF0 STOPREQ bit. */
10030 uint64_t reserved_1_63 : 63;
10031 #endif /* Word 0 - End */
10032 } s;
10033 /* struct bdk_pemx_flr_pf_stopreq_s cn; */
10034 };
10035 typedef union bdk_pemx_flr_pf_stopreq bdk_pemx_flr_pf_stopreq_t;
10036
10037 static inline uint64_t BDK_PEMX_FLR_PF_STOPREQ(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_FLR_PF_STOPREQ(unsigned long a)10038 static inline uint64_t BDK_PEMX_FLR_PF_STOPREQ(unsigned long a)
10039 {
10040 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10041 return 0x87e0c0000218ll + 0x1000000ll * ((a) & 0x3);
10042 __bdk_csr_fatal("PEMX_FLR_PF_STOPREQ", 1, a, 0, 0, 0);
10043 }
10044
10045 #define typedef_BDK_PEMX_FLR_PF_STOPREQ(a) bdk_pemx_flr_pf_stopreq_t
10046 #define bustype_BDK_PEMX_FLR_PF_STOPREQ(a) BDK_CSR_TYPE_RSL
10047 #define basename_BDK_PEMX_FLR_PF_STOPREQ(a) "PEMX_FLR_PF_STOPREQ"
10048 #define device_bar_BDK_PEMX_FLR_PF_STOPREQ(a) 0x0 /* PF_BAR0 */
10049 #define busnum_BDK_PEMX_FLR_PF_STOPREQ(a) (a)
10050 #define arguments_BDK_PEMX_FLR_PF_STOPREQ(a) (a),-1,-1,-1
10051
10052 /**
10053 * Register (NCB) pem#_flr_stopreq_ctl
10054 *
10055 * PEM FLR Global Count Control Register
10056 * Function level reset STOPREQ control register.
10057 *
10058 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
10059 *
10060 * This register is reset on MAC cold reset.
10061 */
10062 union bdk_pemx_flr_stopreq_ctl
10063 {
10064 uint64_t u;
10065 struct bdk_pemx_flr_stopreq_ctl_s
10066 {
10067 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10068 uint64_t reserved_1_63 : 63;
10069 uint64_t stopreqclr : 1; /**< [ 0: 0](R/W) When [STOPREQCLR] is clear, only software (and reset) can clear
10070 PEM()_FLR_PF_STOPREQ[STOPREQ] and PEM()_FLR_PF0_VF_STOPREQ[STOPREQ]
10071 bits. When STOPREQCLR is set, PEM hardware
10072 also clears the STOPREQ bit when PEM completes an FLR to the PCIe core. In the
10073 case of a VF, only one STOPREQ bit gets cleared upon each FLR ack when
10074 STOPREQCLR mode bit is set. The srst will assert upon a PF
10075 FLR, and srst could be used to reset all STOPREQ bits regardless of
10076 STOPREQCLR. Otherwise (e.g. {ProductLine}), where a PF FLR does not
10077 assert srst. */
10078 #else /* Word 0 - Little Endian */
10079 uint64_t stopreqclr : 1; /**< [ 0: 0](R/W) When [STOPREQCLR] is clear, only software (and reset) can clear
10080 PEM()_FLR_PF_STOPREQ[STOPREQ] and PEM()_FLR_PF0_VF_STOPREQ[STOPREQ]
10081 bits. When STOPREQCLR is set, PEM hardware
10082 also clears the STOPREQ bit when PEM completes an FLR to the PCIe core. In the
10083 case of a VF, only one STOPREQ bit gets cleared upon each FLR ack when
10084 STOPREQCLR mode bit is set. The srst will assert upon a PF
10085 FLR, and srst could be used to reset all STOPREQ bits regardless of
10086 STOPREQCLR. Otherwise (e.g. {ProductLine}), where a PF FLR does not
10087 assert srst. */
10088 uint64_t reserved_1_63 : 63;
10089 #endif /* Word 0 - End */
10090 } s;
10091 /* struct bdk_pemx_flr_stopreq_ctl_s cn8; */
10092 struct bdk_pemx_flr_stopreq_ctl_cn9
10093 {
10094 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10095 uint64_t reserved_1_63 : 63;
10096 uint64_t stopreqclr : 1; /**< [ 0: 0](R/W) Stop request clear behavior.
10097
10098 0 = Only software (and reset) can clear PEM()_FLR_PF()_STOPREQ[PF_STOPREQ] and
10099 PEM()_FLR_VF()_STOPREQ[VF_STOPREQ] bits.
10100
10101 1 = PEM hardware also clears the STOPREQ bit when PEM completes an FLR to the
10102 PCIe core. In the case of a VF, only one STOPREQ bit gets cleared upon each FLR
10103 ack when [STOPREQCLR] is set.
10104
10105 The srst will assert upon a PF FLR, and srst could be used to reset all STOPREQ
10106 bits regardless of [STOPREQCLR]. Otherwise, a PF FLR does not assert srst. */
10107 #else /* Word 0 - Little Endian */
10108 uint64_t stopreqclr : 1; /**< [ 0: 0](R/W) Stop request clear behavior.
10109
10110 0 = Only software (and reset) can clear PEM()_FLR_PF()_STOPREQ[PF_STOPREQ] and
10111 PEM()_FLR_VF()_STOPREQ[VF_STOPREQ] bits.
10112
10113 1 = PEM hardware also clears the STOPREQ bit when PEM completes an FLR to the
10114 PCIe core. In the case of a VF, only one STOPREQ bit gets cleared upon each FLR
10115 ack when [STOPREQCLR] is set.
10116
10117 The srst will assert upon a PF FLR, and srst could be used to reset all STOPREQ
10118 bits regardless of [STOPREQCLR]. Otherwise, a PF FLR does not assert srst. */
10119 uint64_t reserved_1_63 : 63;
10120 #endif /* Word 0 - End */
10121 } cn9;
10122 };
10123 typedef union bdk_pemx_flr_stopreq_ctl bdk_pemx_flr_stopreq_ctl_t;
10124
10125 static inline uint64_t BDK_PEMX_FLR_STOPREQ_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_FLR_STOPREQ_CTL(unsigned long a)10126 static inline uint64_t BDK_PEMX_FLR_STOPREQ_CTL(unsigned long a)
10127 {
10128 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10129 return 0x87e0c0000238ll + 0x1000000ll * ((a) & 0x3);
10130 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
10131 return 0x8e0000000070ll + 0x1000000000ll * ((a) & 0x3);
10132 __bdk_csr_fatal("PEMX_FLR_STOPREQ_CTL", 1, a, 0, 0, 0);
10133 }
10134
10135 #define typedef_BDK_PEMX_FLR_STOPREQ_CTL(a) bdk_pemx_flr_stopreq_ctl_t
10136 #define bustype_BDK_PEMX_FLR_STOPREQ_CTL(a) BDK_CSR_TYPE_NCB
10137 #define basename_BDK_PEMX_FLR_STOPREQ_CTL(a) "PEMX_FLR_STOPREQ_CTL"
10138 #define device_bar_BDK_PEMX_FLR_STOPREQ_CTL(a) 0x0 /* PF_BAR0 */
10139 #define busnum_BDK_PEMX_FLR_STOPREQ_CTL(a) (a)
10140 #define arguments_BDK_PEMX_FLR_STOPREQ_CTL(a) (a),-1,-1,-1
10141
10142 /**
10143 * Register (NCB) pem#_flr_vf#_stopreq
10144 *
10145 * PEM VF Stop Request Register
10146 * VFI 0-239 virtual function level reset stop outbound requests register.
10147 * Hardware automatically sets the STOPREQ bit for the VF when it enters a
10148 * function level reset (FLR). Software is responsible for clearing the STOPREQ
10149 * bit but must not do so prior to hardware taking down the FLR, which could be
10150 * as long as 100 ms. It may be appropriate for software to wait longer before clearing
10151 * STOPREQ, software may need to drain deep DPI queues for example.
10152 *
10153 * Whenever PEM receives a request mastered by {ProductLine} over NCBO/EBUS (i.e. P or NP),
10154 * when STOPREQ is set for the function, PEM will discard the outgoing request
10155 * before sending it to the PCIe core. If a NP, PEM will schedule an immediate
10156 * cpl w/error for the request - no timeout is required.
10157 * In both cases, the PEM()_DBG_INFO[BMD_E] bit will be set.
10158 *
10159 * The index into this array is referred to as a "VFI" and will need to be calculated
10160 * by software based on the number of VFs assigned to each PF. {PF0,VF0} is VFI0 and
10161 * for this VF, bit [0] would be used. {PF1,VF0} is PCIEEP_SRIOV_VFS[IVF] for PF0.
10162 * In general, {PFx,VFy} is determined by SUM(PF0..PF(x-1))(PCIEEP_SRIOV_VFS[IVF]) + y.
10163 *
10164 * STOPREQ mimics the behavior of PCIEEPVF_CMD[ME] for outbound requests that will
10165 * master the PCIe bus (P and NP).
10166 *
10167 * Note that STOPREQ will have no effect on completions returned by {ProductLine} over the NCBO/EBUS.
10168 *
10169 * Note that STOPREQ will have no effect on NCBI or incoming EBUS traffic.
10170 *
10171 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
10172 *
10173 * This register is reset on MAC reset.
10174 */
10175 union bdk_pemx_flr_vfx_stopreq
10176 {
10177 uint64_t u;
10178 struct bdk_pemx_flr_vfx_stopreq_s
10179 {
10180 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10181 uint64_t vf_stopreq : 64; /**< [ 63: 0](R/W1C/H) STOPREQ for the pool of 240 VFs in shared by the 16 PFs.
10182 Each bit corresponds to one of the NVF virtual functions. */
10183 #else /* Word 0 - Little Endian */
10184 uint64_t vf_stopreq : 64; /**< [ 63: 0](R/W1C/H) STOPREQ for the pool of 240 VFs in shared by the 16 PFs.
10185 Each bit corresponds to one of the NVF virtual functions. */
10186 #endif /* Word 0 - End */
10187 } s;
10188 /* struct bdk_pemx_flr_vfx_stopreq_s cn; */
10189 };
10190 typedef union bdk_pemx_flr_vfx_stopreq bdk_pemx_flr_vfx_stopreq_t;
10191
10192 static inline uint64_t BDK_PEMX_FLR_VFX_STOPREQ(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_FLR_VFX_STOPREQ(unsigned long a,unsigned long b)10193 static inline uint64_t BDK_PEMX_FLR_VFX_STOPREQ(unsigned long a, unsigned long b)
10194 {
10195 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=3)))
10196 return 0x8e0000000e00ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0x3);
10197 __bdk_csr_fatal("PEMX_FLR_VFX_STOPREQ", 2, a, b, 0, 0);
10198 }
10199
10200 #define typedef_BDK_PEMX_FLR_VFX_STOPREQ(a,b) bdk_pemx_flr_vfx_stopreq_t
10201 #define bustype_BDK_PEMX_FLR_VFX_STOPREQ(a,b) BDK_CSR_TYPE_NCB
10202 #define basename_BDK_PEMX_FLR_VFX_STOPREQ(a,b) "PEMX_FLR_VFX_STOPREQ"
10203 #define device_bar_BDK_PEMX_FLR_VFX_STOPREQ(a,b) 0x0 /* PF_BAR0 */
10204 #define busnum_BDK_PEMX_FLR_VFX_STOPREQ(a,b) (a)
10205 #define arguments_BDK_PEMX_FLR_VFX_STOPREQ(a,b) (a),(b),-1,-1
10206
10207 /**
10208 * Register (RSL) pem#_flr_zombie_ctl
10209 *
10210 * PEM FLR Global Count Control Register
10211 * Function level reset global zombie counter control register.
10212 */
10213 union bdk_pemx_flr_zombie_ctl
10214 {
10215 uint64_t u;
10216 struct bdk_pemx_flr_zombie_ctl_s
10217 {
10218 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10219 uint64_t reserved_10_63 : 54;
10220 uint64_t exp : 10; /**< [ 9: 0](R/W) The expiration value for the inbound shared global zombie counter. The global zombie
10221 counter
10222 continuously counts the number of cycles where the PCIe core was allowed to send
10223 either a posted request or a completion to the PEM. When the global zombie counter
10224 reaches expiration (EXP), it resets to zero and all the nonzero per PCIe tag zombie
10225 counters are decremented. When a per PCIe tag zombie counter decrements to zero, a
10226 SWI_RSP_ERROR is
10227 sent to the M2S bus and its associated PCIe tag is returned to the pool.
10228 This field allows software programmability control of the zombie counter expiration. */
10229 #else /* Word 0 - Little Endian */
10230 uint64_t exp : 10; /**< [ 9: 0](R/W) The expiration value for the inbound shared global zombie counter. The global zombie
10231 counter
10232 continuously counts the number of cycles where the PCIe core was allowed to send
10233 either a posted request or a completion to the PEM. When the global zombie counter
10234 reaches expiration (EXP), it resets to zero and all the nonzero per PCIe tag zombie
10235 counters are decremented. When a per PCIe tag zombie counter decrements to zero, a
10236 SWI_RSP_ERROR is
10237 sent to the M2S bus and its associated PCIe tag is returned to the pool.
10238 This field allows software programmability control of the zombie counter expiration. */
10239 uint64_t reserved_10_63 : 54;
10240 #endif /* Word 0 - End */
10241 } s;
10242 /* struct bdk_pemx_flr_zombie_ctl_s cn; */
10243 };
10244 typedef union bdk_pemx_flr_zombie_ctl bdk_pemx_flr_zombie_ctl_t;
10245
10246 static inline uint64_t BDK_PEMX_FLR_ZOMBIE_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_FLR_ZOMBIE_CTL(unsigned long a)10247 static inline uint64_t BDK_PEMX_FLR_ZOMBIE_CTL(unsigned long a)
10248 {
10249 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10250 return 0x87e0c0000230ll + 0x1000000ll * ((a) & 0x3);
10251 __bdk_csr_fatal("PEMX_FLR_ZOMBIE_CTL", 1, a, 0, 0, 0);
10252 }
10253
10254 #define typedef_BDK_PEMX_FLR_ZOMBIE_CTL(a) bdk_pemx_flr_zombie_ctl_t
10255 #define bustype_BDK_PEMX_FLR_ZOMBIE_CTL(a) BDK_CSR_TYPE_RSL
10256 #define basename_BDK_PEMX_FLR_ZOMBIE_CTL(a) "PEMX_FLR_ZOMBIE_CTL"
10257 #define device_bar_BDK_PEMX_FLR_ZOMBIE_CTL(a) 0x0 /* PF_BAR0 */
10258 #define busnum_BDK_PEMX_FLR_ZOMBIE_CTL(a) (a)
10259 #define arguments_BDK_PEMX_FLR_ZOMBIE_CTL(a) (a),-1,-1,-1
10260
10261 /**
10262 * Register (NCB) pem#_ib_merge_timer_ctl
10263 *
10264 * PEM NCBI Merge Timer Control Register
10265 * This register controls the merging timer for inbound NCB writes.
10266 *
10267 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
10268 *
10269 * This register is reset on PEM domain reset.
10270 */
10271 union bdk_pemx_ib_merge_timer_ctl
10272 {
10273 uint64_t u;
10274 struct bdk_pemx_ib_merge_timer_ctl_s
10275 {
10276 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10277 uint64_t reserved_11_63 : 53;
10278 uint64_t wmerge_dis : 1; /**< [ 10: 10](R/W) For diagnostic use only. If set, will disable inbound write merging. */
10279 uint64_t wmerge_total_timer : 10; /**< [ 9: 0](R/W) Write merge encapsulation timer. When PEM accepts a NCBI write which begins
10280 a write merging process, [WMERGE_TOTAL_TIMER] specifies the maximum wait, in
10281 coprocessor-clock cycles, to merge additional write operations into one larger
10282 write. The values for this field range from 1 to 1023, with 0x0 used for
10283 diagnostics only and treated as never expire.
10284
10285 Internal:
10286 If, during diagnostics, a timer value of 0x0 causes final transactions to be
10287 stuck within the pipeline, those transactions can be released by changing the
10288 timer to a non-zero value. */
10289 #else /* Word 0 - Little Endian */
10290 uint64_t wmerge_total_timer : 10; /**< [ 9: 0](R/W) Write merge encapsulation timer. When PEM accepts a NCBI write which begins
10291 a write merging process, [WMERGE_TOTAL_TIMER] specifies the maximum wait, in
10292 coprocessor-clock cycles, to merge additional write operations into one larger
10293 write. The values for this field range from 1 to 1023, with 0x0 used for
10294 diagnostics only and treated as never expire.
10295
10296 Internal:
10297 If, during diagnostics, a timer value of 0x0 causes final transactions to be
10298 stuck within the pipeline, those transactions can be released by changing the
10299 timer to a non-zero value. */
10300 uint64_t wmerge_dis : 1; /**< [ 10: 10](R/W) For diagnostic use only. If set, will disable inbound write merging. */
10301 uint64_t reserved_11_63 : 53;
10302 #endif /* Word 0 - End */
10303 } s;
10304 /* struct bdk_pemx_ib_merge_timer_ctl_s cn; */
10305 };
10306 typedef union bdk_pemx_ib_merge_timer_ctl bdk_pemx_ib_merge_timer_ctl_t;
10307
10308 static inline uint64_t BDK_PEMX_IB_MERGE_TIMER_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_IB_MERGE_TIMER_CTL(unsigned long a)10309 static inline uint64_t BDK_PEMX_IB_MERGE_TIMER_CTL(unsigned long a)
10310 {
10311 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
10312 return 0x8e00000001b0ll + 0x1000000000ll * ((a) & 0x3);
10313 __bdk_csr_fatal("PEMX_IB_MERGE_TIMER_CTL", 1, a, 0, 0, 0);
10314 }
10315
10316 #define typedef_BDK_PEMX_IB_MERGE_TIMER_CTL(a) bdk_pemx_ib_merge_timer_ctl_t
10317 #define bustype_BDK_PEMX_IB_MERGE_TIMER_CTL(a) BDK_CSR_TYPE_NCB
10318 #define basename_BDK_PEMX_IB_MERGE_TIMER_CTL(a) "PEMX_IB_MERGE_TIMER_CTL"
10319 #define device_bar_BDK_PEMX_IB_MERGE_TIMER_CTL(a) 0x0 /* PF_BAR0 */
10320 #define busnum_BDK_PEMX_IB_MERGE_TIMER_CTL(a) (a)
10321 #define arguments_BDK_PEMX_IB_MERGE_TIMER_CTL(a) (a),-1,-1,-1
10322
10323 /**
10324 * Register (NCB) pem#_ib_wmerge_merged_pc
10325 *
10326 * PEM Inbound Merge Writes Merged Performance Counter Register
10327 * This register reports how many writes merged within the inbound write merge unit.
10328 *
10329 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
10330 *
10331 * This register is reset on PEM domain reset.
10332 */
10333 union bdk_pemx_ib_wmerge_merged_pc
10334 {
10335 uint64_t u;
10336 struct bdk_pemx_ib_wmerge_merged_pc_s
10337 {
10338 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10339 uint64_t wmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBI write operation mapped to MEM that merges with a previous
10340 write will increment this count. */
10341 #else /* Word 0 - Little Endian */
10342 uint64_t wmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBI write operation mapped to MEM that merges with a previous
10343 write will increment this count. */
10344 #endif /* Word 0 - End */
10345 } s;
10346 /* struct bdk_pemx_ib_wmerge_merged_pc_s cn; */
10347 };
10348 typedef union bdk_pemx_ib_wmerge_merged_pc bdk_pemx_ib_wmerge_merged_pc_t;
10349
10350 static inline uint64_t BDK_PEMX_IB_WMERGE_MERGED_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_IB_WMERGE_MERGED_PC(unsigned long a)10351 static inline uint64_t BDK_PEMX_IB_WMERGE_MERGED_PC(unsigned long a)
10352 {
10353 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
10354 return 0x8e00000001c0ll + 0x1000000000ll * ((a) & 0x3);
10355 __bdk_csr_fatal("PEMX_IB_WMERGE_MERGED_PC", 1, a, 0, 0, 0);
10356 }
10357
10358 #define typedef_BDK_PEMX_IB_WMERGE_MERGED_PC(a) bdk_pemx_ib_wmerge_merged_pc_t
10359 #define bustype_BDK_PEMX_IB_WMERGE_MERGED_PC(a) BDK_CSR_TYPE_NCB
10360 #define basename_BDK_PEMX_IB_WMERGE_MERGED_PC(a) "PEMX_IB_WMERGE_MERGED_PC"
10361 #define device_bar_BDK_PEMX_IB_WMERGE_MERGED_PC(a) 0x0 /* PF_BAR0 */
10362 #define busnum_BDK_PEMX_IB_WMERGE_MERGED_PC(a) (a)
10363 #define arguments_BDK_PEMX_IB_WMERGE_MERGED_PC(a) (a),-1,-1,-1
10364
10365 /**
10366 * Register (NCB) pem#_ib_wmerge_received_pc
10367 *
10368 * PEM Inbound Merge Writes Received Performance Counter Register
10369 * This register reports the number of writes that enter the inbound write merge unit.
10370 *
10371 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
10372 *
10373 * This register is reset on PEM domain reset.
10374 */
10375 union bdk_pemx_ib_wmerge_received_pc
10376 {
10377 uint64_t u;
10378 struct bdk_pemx_ib_wmerge_received_pc_s
10379 {
10380 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10381 uint64_t wmerge_writes : 64; /**< [ 63: 0](R/W/H) Each NCBI write operation mapped to MEM type will increment this count. */
10382 #else /* Word 0 - Little Endian */
10383 uint64_t wmerge_writes : 64; /**< [ 63: 0](R/W/H) Each NCBI write operation mapped to MEM type will increment this count. */
10384 #endif /* Word 0 - End */
10385 } s;
10386 /* struct bdk_pemx_ib_wmerge_received_pc_s cn; */
10387 };
10388 typedef union bdk_pemx_ib_wmerge_received_pc bdk_pemx_ib_wmerge_received_pc_t;
10389
10390 static inline uint64_t BDK_PEMX_IB_WMERGE_RECEIVED_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_IB_WMERGE_RECEIVED_PC(unsigned long a)10391 static inline uint64_t BDK_PEMX_IB_WMERGE_RECEIVED_PC(unsigned long a)
10392 {
10393 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
10394 return 0x8e00000001b8ll + 0x1000000000ll * ((a) & 0x3);
10395 __bdk_csr_fatal("PEMX_IB_WMERGE_RECEIVED_PC", 1, a, 0, 0, 0);
10396 }
10397
10398 #define typedef_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) bdk_pemx_ib_wmerge_received_pc_t
10399 #define bustype_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) BDK_CSR_TYPE_NCB
10400 #define basename_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) "PEMX_IB_WMERGE_RECEIVED_PC"
10401 #define device_bar_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) 0x0 /* PF_BAR0 */
10402 #define busnum_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) (a)
10403 #define arguments_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) (a),-1,-1,-1
10404
10405 /**
10406 * Register (RSL) pem#_inb_read_credits
10407 *
10408 * PEM In-flight Read Credits Register
10409 * This register contains the number of in-flight read operations from PCIe core to SLI.
10410 */
10411 union bdk_pemx_inb_read_credits
10412 {
10413 uint64_t u;
10414 struct bdk_pemx_inb_read_credits_s
10415 {
10416 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10417 uint64_t reserved_7_63 : 57;
10418 uint64_t num : 7; /**< [ 6: 0](R/W) The number of reads that may be in flight from the PCIe core to the SLI. Minimum number is
10419 6; maximum number is 64. */
10420 #else /* Word 0 - Little Endian */
10421 uint64_t num : 7; /**< [ 6: 0](R/W) The number of reads that may be in flight from the PCIe core to the SLI. Minimum number is
10422 6; maximum number is 64. */
10423 uint64_t reserved_7_63 : 57;
10424 #endif /* Word 0 - End */
10425 } s;
10426 struct bdk_pemx_inb_read_credits_cn88xxp1
10427 {
10428 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10429 uint64_t reserved_7_63 : 57;
10430 uint64_t num : 7; /**< [ 6: 0](R/W) The number of reads that may be in flight from the PCIe core to the SLI. Minimum number is
10431 2; maximum number is 64. */
10432 #else /* Word 0 - Little Endian */
10433 uint64_t num : 7; /**< [ 6: 0](R/W) The number of reads that may be in flight from the PCIe core to the SLI. Minimum number is
10434 2; maximum number is 64. */
10435 uint64_t reserved_7_63 : 57;
10436 #endif /* Word 0 - End */
10437 } cn88xxp1;
10438 /* struct bdk_pemx_inb_read_credits_s cn81xx; */
10439 /* struct bdk_pemx_inb_read_credits_s cn83xx; */
10440 /* struct bdk_pemx_inb_read_credits_s cn88xxp2; */
10441 };
10442 typedef union bdk_pemx_inb_read_credits bdk_pemx_inb_read_credits_t;
10443
10444 static inline uint64_t BDK_PEMX_INB_READ_CREDITS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_INB_READ_CREDITS(unsigned long a)10445 static inline uint64_t BDK_PEMX_INB_READ_CREDITS(unsigned long a)
10446 {
10447 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
10448 return 0x87e0c00000b8ll + 0x1000000ll * ((a) & 0x3);
10449 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10450 return 0x87e0c00000b8ll + 0x1000000ll * ((a) & 0x3);
10451 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
10452 return 0x87e0c00000b8ll + 0x1000000ll * ((a) & 0x7);
10453 __bdk_csr_fatal("PEMX_INB_READ_CREDITS", 1, a, 0, 0, 0);
10454 }
10455
10456 #define typedef_BDK_PEMX_INB_READ_CREDITS(a) bdk_pemx_inb_read_credits_t
10457 #define bustype_BDK_PEMX_INB_READ_CREDITS(a) BDK_CSR_TYPE_RSL
10458 #define basename_BDK_PEMX_INB_READ_CREDITS(a) "PEMX_INB_READ_CREDITS"
10459 #define device_bar_BDK_PEMX_INB_READ_CREDITS(a) 0x0 /* PF_BAR0 */
10460 #define busnum_BDK_PEMX_INB_READ_CREDITS(a) (a)
10461 #define arguments_BDK_PEMX_INB_READ_CREDITS(a) (a),-1,-1,-1
10462
10463 /**
10464 * Register (NCB) pem#_int_ena_w1c
10465 *
10466 * PEM Interrupt Enable Clear Register
10467 * This register clears interrupt enable bits.
10468 */
10469 union bdk_pemx_int_ena_w1c
10470 {
10471 uint64_t u;
10472 struct bdk_pemx_int_ena_w1c_s
10473 {
10474 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10475 uint64_t reserved_16_63 : 48;
10476 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
10477 uint64_t reserved_0_14 : 15;
10478 #else /* Word 0 - Little Endian */
10479 uint64_t reserved_0_14 : 15;
10480 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
10481 uint64_t reserved_16_63 : 48;
10482 #endif /* Word 0 - End */
10483 } s;
10484 struct bdk_pemx_int_ena_w1c_cn9
10485 {
10486 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10487 uint64_t reserved_16_63 : 48;
10488 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
10489 uint64_t un_b0 : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B0]. */
10490 uint64_t up_b0 : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B0]. */
10491 uint64_t surp_down : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */
10492 uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CFG_INF]. */
10493 uint64_t crs_dr : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_DR]. */
10494 uint64_t crs_er : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_ER]. */
10495 uint64_t rdlk : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[RDLK]. */
10496 uint64_t un_bx : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_BX]. */
10497 uint64_t un_b2 : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B2]. */
10498 uint64_t un_b4 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B4]. */
10499 uint64_t up_bx : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_BX]. */
10500 uint64_t up_b2 : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B2]. */
10501 uint64_t up_b4 : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B4]. */
10502 uint64_t up_b3 : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B3]. */
10503 uint64_t se : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SE].
10504 Internal:
10505 cfg_sys_err_rc. */
10506 #else /* Word 0 - Little Endian */
10507 uint64_t se : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SE].
10508 Internal:
10509 cfg_sys_err_rc. */
10510 uint64_t up_b3 : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B3]. */
10511 uint64_t up_b4 : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B4]. */
10512 uint64_t up_b2 : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B2]. */
10513 uint64_t up_bx : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_BX]. */
10514 uint64_t un_b4 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B4]. */
10515 uint64_t un_b2 : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B2]. */
10516 uint64_t un_bx : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_BX]. */
10517 uint64_t rdlk : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[RDLK]. */
10518 uint64_t crs_er : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_ER]. */
10519 uint64_t crs_dr : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_DR]. */
10520 uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CFG_INF]. */
10521 uint64_t surp_down : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */
10522 uint64_t up_b0 : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B0]. */
10523 uint64_t un_b0 : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B0]. */
10524 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
10525 uint64_t reserved_16_63 : 48;
10526 #endif /* Word 0 - End */
10527 } cn9;
10528 struct bdk_pemx_int_ena_w1c_cn81xx
10529 {
10530 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10531 uint64_t reserved_14_63 : 50;
10532 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[CRS_DR]. */
10533 uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[CRS_ER]. */
10534 uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[RDLK]. */
10535 uint64_t reserved_10 : 1;
10536 uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_BX]. */
10537 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_B2]. */
10538 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_B1]. */
10539 uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_BX]. */
10540 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_B2]. */
10541 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_B1]. */
10542 uint64_t reserved_2_3 : 2;
10543 uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[SE].
10544 Internal:
10545 cfg_sys_err_rc. */
10546 uint64_t reserved_0 : 1;
10547 #else /* Word 0 - Little Endian */
10548 uint64_t reserved_0 : 1;
10549 uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[SE].
10550 Internal:
10551 cfg_sys_err_rc. */
10552 uint64_t reserved_2_3 : 2;
10553 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_B1]. */
10554 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_B2]. */
10555 uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_BX]. */
10556 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_B1]. */
10557 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_B2]. */
10558 uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_BX]. */
10559 uint64_t reserved_10 : 1;
10560 uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[RDLK]. */
10561 uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[CRS_ER]. */
10562 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[CRS_DR]. */
10563 uint64_t reserved_14_63 : 50;
10564 #endif /* Word 0 - End */
10565 } cn81xx;
10566 struct bdk_pemx_int_ena_w1c_cn88xx
10567 {
10568 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10569 uint64_t reserved_14_63 : 50;
10570 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[CRS_DR]. */
10571 uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[CRS_ER]. */
10572 uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[RDLK]. */
10573 uint64_t reserved_10 : 1;
10574 uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_BX]. */
10575 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_B2]. */
10576 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_B1]. */
10577 uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_BX]. */
10578 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_B2]. */
10579 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_B1]. */
10580 uint64_t reserved_2_3 : 2;
10581 uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[SE].
10582 Internal:
10583 cfg_sys_err_rc. */
10584 uint64_t reserved_0 : 1;
10585 #else /* Word 0 - Little Endian */
10586 uint64_t reserved_0 : 1;
10587 uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[SE].
10588 Internal:
10589 cfg_sys_err_rc. */
10590 uint64_t reserved_2_3 : 2;
10591 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_B1]. */
10592 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_B2]. */
10593 uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_BX]. */
10594 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_B1]. */
10595 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_B2]. */
10596 uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_BX]. */
10597 uint64_t reserved_10 : 1;
10598 uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[RDLK]. */
10599 uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[CRS_ER]. */
10600 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[CRS_DR]. */
10601 uint64_t reserved_14_63 : 50;
10602 #endif /* Word 0 - End */
10603 } cn88xx;
10604 struct bdk_pemx_int_ena_w1c_cn83xx
10605 {
10606 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10607 uint64_t reserved_15_63 : 49;
10608 uint64_t surp_down : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */
10609 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_DR]. */
10610 uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_ER]. */
10611 uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[RDLK]. */
10612 uint64_t reserved_10 : 1;
10613 uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_BX]. */
10614 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B2]. */
10615 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B1]. */
10616 uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_BX]. */
10617 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B2]. */
10618 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B1]. */
10619 uint64_t up_b3 : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B3]. */
10620 uint64_t reserved_2 : 1;
10621 uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SE].
10622 Internal:
10623 cfg_sys_err_rc. */
10624 uint64_t reserved_0 : 1;
10625 #else /* Word 0 - Little Endian */
10626 uint64_t reserved_0 : 1;
10627 uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SE].
10628 Internal:
10629 cfg_sys_err_rc. */
10630 uint64_t reserved_2 : 1;
10631 uint64_t up_b3 : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B3]. */
10632 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B1]. */
10633 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B2]. */
10634 uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_BX]. */
10635 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B1]. */
10636 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B2]. */
10637 uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_BX]. */
10638 uint64_t reserved_10 : 1;
10639 uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[RDLK]. */
10640 uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_ER]. */
10641 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_DR]. */
10642 uint64_t surp_down : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */
10643 uint64_t reserved_15_63 : 49;
10644 #endif /* Word 0 - End */
10645 } cn83xx;
10646 };
10647 typedef union bdk_pemx_int_ena_w1c bdk_pemx_int_ena_w1c_t;
10648
10649 static inline uint64_t BDK_PEMX_INT_ENA_W1C(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_INT_ENA_W1C(unsigned long a)10650 static inline uint64_t BDK_PEMX_INT_ENA_W1C(unsigned long a)
10651 {
10652 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
10653 return 0x87e0c0000438ll + 0x1000000ll * ((a) & 0x3);
10654 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10655 return 0x87e0c0000438ll + 0x1000000ll * ((a) & 0x3);
10656 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
10657 return 0x87e0c0000438ll + 0x1000000ll * ((a) & 0x7);
10658 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
10659 return 0x8e00000000e8ll + 0x1000000000ll * ((a) & 0x3);
10660 __bdk_csr_fatal("PEMX_INT_ENA_W1C", 1, a, 0, 0, 0);
10661 }
10662
10663 #define typedef_BDK_PEMX_INT_ENA_W1C(a) bdk_pemx_int_ena_w1c_t
10664 #define bustype_BDK_PEMX_INT_ENA_W1C(a) BDK_CSR_TYPE_NCB
10665 #define basename_BDK_PEMX_INT_ENA_W1C(a) "PEMX_INT_ENA_W1C"
10666 #define device_bar_BDK_PEMX_INT_ENA_W1C(a) 0x0 /* PF_BAR0 */
10667 #define busnum_BDK_PEMX_INT_ENA_W1C(a) (a)
10668 #define arguments_BDK_PEMX_INT_ENA_W1C(a) (a),-1,-1,-1
10669
10670 /**
10671 * Register (NCB) pem#_int_ena_w1s
10672 *
10673 * PEM Interrupt Enable Set Register
10674 * This register sets interrupt enable bits.
10675 */
10676 union bdk_pemx_int_ena_w1s
10677 {
10678 uint64_t u;
10679 struct bdk_pemx_int_ena_w1s_s
10680 {
10681 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10682 uint64_t reserved_16_63 : 48;
10683 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
10684 uint64_t reserved_0_14 : 15;
10685 #else /* Word 0 - Little Endian */
10686 uint64_t reserved_0_14 : 15;
10687 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
10688 uint64_t reserved_16_63 : 48;
10689 #endif /* Word 0 - End */
10690 } s;
10691 struct bdk_pemx_int_ena_w1s_cn9
10692 {
10693 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10694 uint64_t reserved_16_63 : 48;
10695 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
10696 uint64_t un_b0 : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B0]. */
10697 uint64_t up_b0 : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B0]. */
10698 uint64_t surp_down : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */
10699 uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CFG_INF]. */
10700 uint64_t crs_dr : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_DR]. */
10701 uint64_t crs_er : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_ER]. */
10702 uint64_t rdlk : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[RDLK]. */
10703 uint64_t un_bx : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_BX]. */
10704 uint64_t un_b2 : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B2]. */
10705 uint64_t un_b4 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B4]. */
10706 uint64_t up_bx : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_BX]. */
10707 uint64_t up_b2 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B2]. */
10708 uint64_t up_b4 : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B4]. */
10709 uint64_t up_b3 : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B3]. */
10710 uint64_t se : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SE].
10711 Internal:
10712 cfg_sys_err_rc. */
10713 #else /* Word 0 - Little Endian */
10714 uint64_t se : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SE].
10715 Internal:
10716 cfg_sys_err_rc. */
10717 uint64_t up_b3 : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B3]. */
10718 uint64_t up_b4 : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B4]. */
10719 uint64_t up_b2 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B2]. */
10720 uint64_t up_bx : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_BX]. */
10721 uint64_t un_b4 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B4]. */
10722 uint64_t un_b2 : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B2]. */
10723 uint64_t un_bx : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_BX]. */
10724 uint64_t rdlk : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[RDLK]. */
10725 uint64_t crs_er : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_ER]. */
10726 uint64_t crs_dr : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_DR]. */
10727 uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CFG_INF]. */
10728 uint64_t surp_down : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */
10729 uint64_t up_b0 : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B0]. */
10730 uint64_t un_b0 : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B0]. */
10731 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
10732 uint64_t reserved_16_63 : 48;
10733 #endif /* Word 0 - End */
10734 } cn9;
10735 struct bdk_pemx_int_ena_w1s_cn81xx
10736 {
10737 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10738 uint64_t reserved_14_63 : 50;
10739 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[CRS_DR]. */
10740 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[CRS_ER]. */
10741 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[RDLK]. */
10742 uint64_t reserved_10 : 1;
10743 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_BX]. */
10744 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_B2]. */
10745 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_B1]. */
10746 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_BX]. */
10747 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_B2]. */
10748 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_B1]. */
10749 uint64_t reserved_2_3 : 2;
10750 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[SE].
10751 Internal:
10752 cfg_sys_err_rc. */
10753 uint64_t reserved_0 : 1;
10754 #else /* Word 0 - Little Endian */
10755 uint64_t reserved_0 : 1;
10756 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[SE].
10757 Internal:
10758 cfg_sys_err_rc. */
10759 uint64_t reserved_2_3 : 2;
10760 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_B1]. */
10761 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_B2]. */
10762 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_BX]. */
10763 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_B1]. */
10764 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_B2]. */
10765 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_BX]. */
10766 uint64_t reserved_10 : 1;
10767 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[RDLK]. */
10768 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[CRS_ER]. */
10769 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[CRS_DR]. */
10770 uint64_t reserved_14_63 : 50;
10771 #endif /* Word 0 - End */
10772 } cn81xx;
10773 struct bdk_pemx_int_ena_w1s_cn88xx
10774 {
10775 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10776 uint64_t reserved_14_63 : 50;
10777 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[CRS_DR]. */
10778 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[CRS_ER]. */
10779 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[RDLK]. */
10780 uint64_t reserved_10 : 1;
10781 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_BX]. */
10782 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_B2]. */
10783 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_B1]. */
10784 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_BX]. */
10785 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_B2]. */
10786 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_B1]. */
10787 uint64_t reserved_2_3 : 2;
10788 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[SE].
10789 Internal:
10790 cfg_sys_err_rc. */
10791 uint64_t reserved_0 : 1;
10792 #else /* Word 0 - Little Endian */
10793 uint64_t reserved_0 : 1;
10794 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[SE].
10795 Internal:
10796 cfg_sys_err_rc. */
10797 uint64_t reserved_2_3 : 2;
10798 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_B1]. */
10799 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_B2]. */
10800 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_BX]. */
10801 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_B1]. */
10802 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_B2]. */
10803 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_BX]. */
10804 uint64_t reserved_10 : 1;
10805 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[RDLK]. */
10806 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[CRS_ER]. */
10807 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[CRS_DR]. */
10808 uint64_t reserved_14_63 : 50;
10809 #endif /* Word 0 - End */
10810 } cn88xx;
10811 struct bdk_pemx_int_ena_w1s_cn83xx
10812 {
10813 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10814 uint64_t reserved_15_63 : 49;
10815 uint64_t surp_down : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */
10816 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_DR]. */
10817 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_ER]. */
10818 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[RDLK]. */
10819 uint64_t reserved_10 : 1;
10820 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_BX]. */
10821 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B2]. */
10822 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B1]. */
10823 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_BX]. */
10824 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B2]. */
10825 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B1]. */
10826 uint64_t up_b3 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B3]. */
10827 uint64_t reserved_2 : 1;
10828 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SE].
10829 Internal:
10830 cfg_sys_err_rc. */
10831 uint64_t reserved_0 : 1;
10832 #else /* Word 0 - Little Endian */
10833 uint64_t reserved_0 : 1;
10834 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SE].
10835 Internal:
10836 cfg_sys_err_rc. */
10837 uint64_t reserved_2 : 1;
10838 uint64_t up_b3 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B3]. */
10839 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B1]. */
10840 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B2]. */
10841 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_BX]. */
10842 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B1]. */
10843 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B2]. */
10844 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_BX]. */
10845 uint64_t reserved_10 : 1;
10846 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[RDLK]. */
10847 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_ER]. */
10848 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_DR]. */
10849 uint64_t surp_down : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */
10850 uint64_t reserved_15_63 : 49;
10851 #endif /* Word 0 - End */
10852 } cn83xx;
10853 };
10854 typedef union bdk_pemx_int_ena_w1s bdk_pemx_int_ena_w1s_t;
10855
10856 static inline uint64_t BDK_PEMX_INT_ENA_W1S(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_INT_ENA_W1S(unsigned long a)10857 static inline uint64_t BDK_PEMX_INT_ENA_W1S(unsigned long a)
10858 {
10859 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
10860 return 0x87e0c0000440ll + 0x1000000ll * ((a) & 0x3);
10861 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10862 return 0x87e0c0000440ll + 0x1000000ll * ((a) & 0x3);
10863 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
10864 return 0x87e0c0000440ll + 0x1000000ll * ((a) & 0x7);
10865 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
10866 return 0x8e00000000f0ll + 0x1000000000ll * ((a) & 0x3);
10867 __bdk_csr_fatal("PEMX_INT_ENA_W1S", 1, a, 0, 0, 0);
10868 }
10869
10870 #define typedef_BDK_PEMX_INT_ENA_W1S(a) bdk_pemx_int_ena_w1s_t
10871 #define bustype_BDK_PEMX_INT_ENA_W1S(a) BDK_CSR_TYPE_NCB
10872 #define basename_BDK_PEMX_INT_ENA_W1S(a) "PEMX_INT_ENA_W1S"
10873 #define device_bar_BDK_PEMX_INT_ENA_W1S(a) 0x0 /* PF_BAR0 */
10874 #define busnum_BDK_PEMX_INT_ENA_W1S(a) (a)
10875 #define arguments_BDK_PEMX_INT_ENA_W1S(a) (a),-1,-1,-1
10876
10877 /**
10878 * Register (NCB) pem#_int_sum
10879 *
10880 * PEM Interrupt Summary Register
10881 * This register contains the different interrupt summary bits of the PEM.
10882 *
10883 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
10884 *
10885 * This register is reset on PEM domain reset.
10886 */
10887 union bdk_pemx_int_sum
10888 {
10889 uint64_t u;
10890 struct bdk_pemx_int_sum_s
10891 {
10892 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10893 uint64_t reserved_16_63 : 48;
10894 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) PTM Root is ready to have to context validated.
10895
10896 The Mac PTM logic does not have a permenantly valid context.
10897 Currently the core invalidates the responder context on two conditions
10898 * aux_clk_active (is asserted when link in L1 states)
10899 * Link speed changes
10900
10901 To clear this interrupt, The host programs PCIERC_PTM_RES_LOCAL_MSB and
10902 PCIERC_PTM_RES_LOCAL_LSB and then sets the context valid bit
10903 (PCIERC_PTM_RES_CTL[PRES_CTX_VLD]). */
10904 uint64_t reserved_0_14 : 15;
10905 #else /* Word 0 - Little Endian */
10906 uint64_t reserved_0_14 : 15;
10907 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) PTM Root is ready to have to context validated.
10908
10909 The Mac PTM logic does not have a permenantly valid context.
10910 Currently the core invalidates the responder context on two conditions
10911 * aux_clk_active (is asserted when link in L1 states)
10912 * Link speed changes
10913
10914 To clear this interrupt, The host programs PCIERC_PTM_RES_LOCAL_MSB and
10915 PCIERC_PTM_RES_LOCAL_LSB and then sets the context valid bit
10916 (PCIERC_PTM_RES_CTL[PRES_CTX_VLD]). */
10917 uint64_t reserved_16_63 : 48;
10918 #endif /* Word 0 - End */
10919 } s;
10920 struct bdk_pemx_int_sum_cn9
10921 {
10922 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10923 uint64_t reserved_16_63 : 48;
10924 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) PTM Root is ready to have to context validated.
10925
10926 The Mac PTM logic does not have a permenantly valid context.
10927 Currently the core invalidates the responder context on two conditions
10928 * aux_clk_active (is asserted when link in L1 states)
10929 * Link speed changes
10930
10931 To clear this interrupt, The host programs PCIERC_PTM_RES_LOCAL_MSB and
10932 PCIERC_PTM_RES_LOCAL_LSB and then sets the context valid bit
10933 (PCIERC_PTM_RES_CTL[PRES_CTX_VLD]). */
10934 uint64_t un_b0 : 1; /**< [ 14: 14](R/W1C/H) Received N-TLP for BAR0 when BAR0 is disabled. */
10935 uint64_t up_b0 : 1; /**< [ 13: 13](R/W1C/H) Received P-TLP for BAR0 when BAR0 is disabled. */
10936 uint64_t surp_down : 1; /**< [ 12: 12](R/W1C/H) Indicates that a surprise down event is occuring in the controller. */
10937 uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1C/H) AP cores sent a second config read while a current config read was still inflight */
10938 uint64_t crs_dr : 1; /**< [ 10: 10](R/W1C/H) Had a CRS timeout when retries were disabled. */
10939 uint64_t crs_er : 1; /**< [ 9: 9](R/W1C/H) Had a CRS timeout when retries were enabled. */
10940 uint64_t rdlk : 1; /**< [ 8: 8](R/W1C/H) Received read lock TLP. */
10941 uint64_t un_bx : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for unknown BAR. */
10942 uint64_t un_b2 : 1; /**< [ 6: 6](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */
10943 uint64_t un_b4 : 1; /**< [ 5: 5](R/W1C/H) Received N-TLP for BAR4 when BAR4 index valid is not set. */
10944 uint64_t up_bx : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for an unknown BAR. */
10945 uint64_t up_b2 : 1; /**< [ 3: 3](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */
10946 uint64_t up_b4 : 1; /**< [ 2: 2](R/W1C/H) Received P-TLP for BAR4 when BAR4 index valid is not set. */
10947 uint64_t up_b3 : 1; /**< [ 1: 1](R/W1C/H) Received P-TLP for Expansion ROM. */
10948 uint64_t se : 1; /**< [ 0: 0](R/W1C/H) System error, RC mode only.
10949 Internal:
10950 cfg_sys_err_rc. */
10951 #else /* Word 0 - Little Endian */
10952 uint64_t se : 1; /**< [ 0: 0](R/W1C/H) System error, RC mode only.
10953 Internal:
10954 cfg_sys_err_rc. */
10955 uint64_t up_b3 : 1; /**< [ 1: 1](R/W1C/H) Received P-TLP for Expansion ROM. */
10956 uint64_t up_b4 : 1; /**< [ 2: 2](R/W1C/H) Received P-TLP for BAR4 when BAR4 index valid is not set. */
10957 uint64_t up_b2 : 1; /**< [ 3: 3](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */
10958 uint64_t up_bx : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for an unknown BAR. */
10959 uint64_t un_b4 : 1; /**< [ 5: 5](R/W1C/H) Received N-TLP for BAR4 when BAR4 index valid is not set. */
10960 uint64_t un_b2 : 1; /**< [ 6: 6](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */
10961 uint64_t un_bx : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for unknown BAR. */
10962 uint64_t rdlk : 1; /**< [ 8: 8](R/W1C/H) Received read lock TLP. */
10963 uint64_t crs_er : 1; /**< [ 9: 9](R/W1C/H) Had a CRS timeout when retries were enabled. */
10964 uint64_t crs_dr : 1; /**< [ 10: 10](R/W1C/H) Had a CRS timeout when retries were disabled. */
10965 uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1C/H) AP cores sent a second config read while a current config read was still inflight */
10966 uint64_t surp_down : 1; /**< [ 12: 12](R/W1C/H) Indicates that a surprise down event is occuring in the controller. */
10967 uint64_t up_b0 : 1; /**< [ 13: 13](R/W1C/H) Received P-TLP for BAR0 when BAR0 is disabled. */
10968 uint64_t un_b0 : 1; /**< [ 14: 14](R/W1C/H) Received N-TLP for BAR0 when BAR0 is disabled. */
10969 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) PTM Root is ready to have to context validated.
10970
10971 The Mac PTM logic does not have a permenantly valid context.
10972 Currently the core invalidates the responder context on two conditions
10973 * aux_clk_active (is asserted when link in L1 states)
10974 * Link speed changes
10975
10976 To clear this interrupt, The host programs PCIERC_PTM_RES_LOCAL_MSB and
10977 PCIERC_PTM_RES_LOCAL_LSB and then sets the context valid bit
10978 (PCIERC_PTM_RES_CTL[PRES_CTX_VLD]). */
10979 uint64_t reserved_16_63 : 48;
10980 #endif /* Word 0 - End */
10981 } cn9;
10982 struct bdk_pemx_int_sum_cn81xx
10983 {
10984 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10985 uint64_t reserved_14_63 : 50;
10986 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Had a CRS timeout when retries were disabled. */
10987 uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Had a CRS timeout when retries were enabled. */
10988 uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Received read lock TLP. */
10989 uint64_t reserved_10 : 1;
10990 uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Received N-TLP for unknown BAR. */
10991 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */
10992 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for BAR1 when BAR1 index valid is not set. */
10993 uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Received P-TLP for an unknown BAR. */
10994 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */
10995 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for BAR1 when BAR1 index valid is not set. */
10996 uint64_t reserved_2_3 : 2;
10997 uint64_t se : 1; /**< [ 1: 1](R/W1C/H) System error, RC mode only.
10998 Internal:
10999 cfg_sys_err_rc. */
11000 uint64_t reserved_0 : 1;
11001 #else /* Word 0 - Little Endian */
11002 uint64_t reserved_0 : 1;
11003 uint64_t se : 1; /**< [ 1: 1](R/W1C/H) System error, RC mode only.
11004 Internal:
11005 cfg_sys_err_rc. */
11006 uint64_t reserved_2_3 : 2;
11007 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for BAR1 when BAR1 index valid is not set. */
11008 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */
11009 uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Received P-TLP for an unknown BAR. */
11010 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for BAR1 when BAR1 index valid is not set. */
11011 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */
11012 uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Received N-TLP for unknown BAR. */
11013 uint64_t reserved_10 : 1;
11014 uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Received read lock TLP. */
11015 uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Had a CRS timeout when retries were enabled. */
11016 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Had a CRS timeout when retries were disabled. */
11017 uint64_t reserved_14_63 : 50;
11018 #endif /* Word 0 - End */
11019 } cn81xx;
11020 /* struct bdk_pemx_int_sum_cn81xx cn88xx; */
11021 struct bdk_pemx_int_sum_cn83xx
11022 {
11023 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11024 uint64_t reserved_15_63 : 49;
11025 uint64_t surp_down : 1; /**< [ 14: 14](R/W1C/H) Indicates that a surprise down event is occuring in the controller. */
11026 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Had a CRS timeout when retries were disabled. */
11027 uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Had a CRS timeout when retries were enabled. */
11028 uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Received read lock TLP. */
11029 uint64_t reserved_10 : 1;
11030 uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Received N-TLP for unknown BAR. */
11031 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */
11032 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for BAR1 when BAR1 index valid is not set. */
11033 uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Received P-TLP for an unknown BAR. */
11034 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */
11035 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for BAR1 when BAR1 index valid is not set. */
11036 uint64_t up_b3 : 1; /**< [ 3: 3](R/W1C/H) Received P-TLP for Expansion ROM (BAR3 EP Mode). */
11037 uint64_t reserved_2 : 1;
11038 uint64_t se : 1; /**< [ 1: 1](R/W1C/H) System error, RC mode only.
11039 Internal:
11040 cfg_sys_err_rc. */
11041 uint64_t reserved_0 : 1;
11042 #else /* Word 0 - Little Endian */
11043 uint64_t reserved_0 : 1;
11044 uint64_t se : 1; /**< [ 1: 1](R/W1C/H) System error, RC mode only.
11045 Internal:
11046 cfg_sys_err_rc. */
11047 uint64_t reserved_2 : 1;
11048 uint64_t up_b3 : 1; /**< [ 3: 3](R/W1C/H) Received P-TLP for Expansion ROM (BAR3 EP Mode). */
11049 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for BAR1 when BAR1 index valid is not set. */
11050 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */
11051 uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Received P-TLP for an unknown BAR. */
11052 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for BAR1 when BAR1 index valid is not set. */
11053 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */
11054 uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Received N-TLP for unknown BAR. */
11055 uint64_t reserved_10 : 1;
11056 uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Received read lock TLP. */
11057 uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Had a CRS timeout when retries were enabled. */
11058 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Had a CRS timeout when retries were disabled. */
11059 uint64_t surp_down : 1; /**< [ 14: 14](R/W1C/H) Indicates that a surprise down event is occuring in the controller. */
11060 uint64_t reserved_15_63 : 49;
11061 #endif /* Word 0 - End */
11062 } cn83xx;
11063 };
11064 typedef union bdk_pemx_int_sum bdk_pemx_int_sum_t;
11065
11066 static inline uint64_t BDK_PEMX_INT_SUM(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_INT_SUM(unsigned long a)11067 static inline uint64_t BDK_PEMX_INT_SUM(unsigned long a)
11068 {
11069 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
11070 return 0x87e0c0000428ll + 0x1000000ll * ((a) & 0x3);
11071 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11072 return 0x87e0c0000428ll + 0x1000000ll * ((a) & 0x3);
11073 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
11074 return 0x87e0c0000428ll + 0x1000000ll * ((a) & 0x7);
11075 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
11076 return 0x8e00000000d8ll + 0x1000000000ll * ((a) & 0x3);
11077 __bdk_csr_fatal("PEMX_INT_SUM", 1, a, 0, 0, 0);
11078 }
11079
11080 #define typedef_BDK_PEMX_INT_SUM(a) bdk_pemx_int_sum_t
11081 #define bustype_BDK_PEMX_INT_SUM(a) BDK_CSR_TYPE_NCB
11082 #define basename_BDK_PEMX_INT_SUM(a) "PEMX_INT_SUM"
11083 #define device_bar_BDK_PEMX_INT_SUM(a) 0x0 /* PF_BAR0 */
11084 #define busnum_BDK_PEMX_INT_SUM(a) (a)
11085 #define arguments_BDK_PEMX_INT_SUM(a) (a),-1,-1,-1
11086
11087 /**
11088 * Register (NCB) pem#_int_sum_w1s
11089 *
11090 * PEM Interrupt Summary Register
11091 * This register sets interrupt bits.
11092 */
11093 union bdk_pemx_int_sum_w1s
11094 {
11095 uint64_t u;
11096 struct bdk_pemx_int_sum_w1s_s
11097 {
11098 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11099 uint64_t reserved_16_63 : 48;
11100 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
11101 uint64_t reserved_0_14 : 15;
11102 #else /* Word 0 - Little Endian */
11103 uint64_t reserved_0_14 : 15;
11104 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
11105 uint64_t reserved_16_63 : 48;
11106 #endif /* Word 0 - End */
11107 } s;
11108 struct bdk_pemx_int_sum_w1s_cn9
11109 {
11110 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11111 uint64_t reserved_16_63 : 48;
11112 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
11113 uint64_t un_b0 : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B0]. */
11114 uint64_t up_b0 : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B0]. */
11115 uint64_t surp_down : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SURP_DOWN]. */
11116 uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CFG_INF]. */
11117 uint64_t crs_dr : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_DR]. */
11118 uint64_t crs_er : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_ER]. */
11119 uint64_t rdlk : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[RDLK]. */
11120 uint64_t un_bx : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_BX]. */
11121 uint64_t un_b2 : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B2]. */
11122 uint64_t un_b4 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B4]. */
11123 uint64_t up_bx : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_BX]. */
11124 uint64_t up_b2 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B2]. */
11125 uint64_t up_b4 : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B4]. */
11126 uint64_t up_b3 : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B3]. */
11127 uint64_t se : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SE].
11128 Internal:
11129 cfg_sys_err_rc. */
11130 #else /* Word 0 - Little Endian */
11131 uint64_t se : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SE].
11132 Internal:
11133 cfg_sys_err_rc. */
11134 uint64_t up_b3 : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B3]. */
11135 uint64_t up_b4 : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B4]. */
11136 uint64_t up_b2 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B2]. */
11137 uint64_t up_bx : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_BX]. */
11138 uint64_t un_b4 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B4]. */
11139 uint64_t un_b2 : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B2]. */
11140 uint64_t un_bx : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_BX]. */
11141 uint64_t rdlk : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[RDLK]. */
11142 uint64_t crs_er : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_ER]. */
11143 uint64_t crs_dr : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_DR]. */
11144 uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CFG_INF]. */
11145 uint64_t surp_down : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SURP_DOWN]. */
11146 uint64_t up_b0 : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B0]. */
11147 uint64_t un_b0 : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B0]. */
11148 uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */
11149 uint64_t reserved_16_63 : 48;
11150 #endif /* Word 0 - End */
11151 } cn9;
11152 struct bdk_pemx_int_sum_w1s_cn81xx
11153 {
11154 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11155 uint64_t reserved_14_63 : 50;
11156 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[CRS_DR]. */
11157 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[CRS_ER]. */
11158 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[RDLK]. */
11159 uint64_t reserved_10 : 1;
11160 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_BX]. */
11161 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_B2]. */
11162 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_B1]. */
11163 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_BX]. */
11164 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_B2]. */
11165 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_B1]. */
11166 uint64_t reserved_2_3 : 2;
11167 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[SE].
11168 Internal:
11169 cfg_sys_err_rc. */
11170 uint64_t reserved_0 : 1;
11171 #else /* Word 0 - Little Endian */
11172 uint64_t reserved_0 : 1;
11173 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[SE].
11174 Internal:
11175 cfg_sys_err_rc. */
11176 uint64_t reserved_2_3 : 2;
11177 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_B1]. */
11178 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_B2]. */
11179 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_BX]. */
11180 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_B1]. */
11181 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_B2]. */
11182 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_BX]. */
11183 uint64_t reserved_10 : 1;
11184 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[RDLK]. */
11185 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[CRS_ER]. */
11186 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[CRS_DR]. */
11187 uint64_t reserved_14_63 : 50;
11188 #endif /* Word 0 - End */
11189 } cn81xx;
11190 struct bdk_pemx_int_sum_w1s_cn88xx
11191 {
11192 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11193 uint64_t reserved_14_63 : 50;
11194 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[CRS_DR]. */
11195 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[CRS_ER]. */
11196 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[RDLK]. */
11197 uint64_t reserved_10 : 1;
11198 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_BX]. */
11199 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_B2]. */
11200 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_B1]. */
11201 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_BX]. */
11202 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_B2]. */
11203 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_B1]. */
11204 uint64_t reserved_2_3 : 2;
11205 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[SE].
11206 Internal:
11207 cfg_sys_err_rc. */
11208 uint64_t reserved_0 : 1;
11209 #else /* Word 0 - Little Endian */
11210 uint64_t reserved_0 : 1;
11211 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[SE].
11212 Internal:
11213 cfg_sys_err_rc. */
11214 uint64_t reserved_2_3 : 2;
11215 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_B1]. */
11216 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_B2]. */
11217 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_BX]. */
11218 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_B1]. */
11219 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_B2]. */
11220 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_BX]. */
11221 uint64_t reserved_10 : 1;
11222 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[RDLK]. */
11223 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[CRS_ER]. */
11224 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[CRS_DR]. */
11225 uint64_t reserved_14_63 : 50;
11226 #endif /* Word 0 - End */
11227 } cn88xx;
11228 struct bdk_pemx_int_sum_w1s_cn83xx
11229 {
11230 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11231 uint64_t reserved_15_63 : 49;
11232 uint64_t surp_down : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SURP_DOWN]. */
11233 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_DR]. */
11234 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_ER]. */
11235 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[RDLK]. */
11236 uint64_t reserved_10 : 1;
11237 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_BX]. */
11238 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B2]. */
11239 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B1]. */
11240 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_BX]. */
11241 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B2]. */
11242 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B1]. */
11243 uint64_t up_b3 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B3]. */
11244 uint64_t reserved_2 : 1;
11245 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SE].
11246 Internal:
11247 cfg_sys_err_rc. */
11248 uint64_t reserved_0 : 1;
11249 #else /* Word 0 - Little Endian */
11250 uint64_t reserved_0 : 1;
11251 uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SE].
11252 Internal:
11253 cfg_sys_err_rc. */
11254 uint64_t reserved_2 : 1;
11255 uint64_t up_b3 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B3]. */
11256 uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B1]. */
11257 uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B2]. */
11258 uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_BX]. */
11259 uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B1]. */
11260 uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B2]. */
11261 uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_BX]. */
11262 uint64_t reserved_10 : 1;
11263 uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[RDLK]. */
11264 uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_ER]. */
11265 uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_DR]. */
11266 uint64_t surp_down : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SURP_DOWN]. */
11267 uint64_t reserved_15_63 : 49;
11268 #endif /* Word 0 - End */
11269 } cn83xx;
11270 };
11271 typedef union bdk_pemx_int_sum_w1s bdk_pemx_int_sum_w1s_t;
11272
11273 static inline uint64_t BDK_PEMX_INT_SUM_W1S(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_INT_SUM_W1S(unsigned long a)11274 static inline uint64_t BDK_PEMX_INT_SUM_W1S(unsigned long a)
11275 {
11276 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
11277 return 0x87e0c0000430ll + 0x1000000ll * ((a) & 0x3);
11278 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11279 return 0x87e0c0000430ll + 0x1000000ll * ((a) & 0x3);
11280 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
11281 return 0x87e0c0000430ll + 0x1000000ll * ((a) & 0x7);
11282 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
11283 return 0x8e00000000e0ll + 0x1000000000ll * ((a) & 0x3);
11284 __bdk_csr_fatal("PEMX_INT_SUM_W1S", 1, a, 0, 0, 0);
11285 }
11286
11287 #define typedef_BDK_PEMX_INT_SUM_W1S(a) bdk_pemx_int_sum_w1s_t
11288 #define bustype_BDK_PEMX_INT_SUM_W1S(a) BDK_CSR_TYPE_NCB
11289 #define basename_BDK_PEMX_INT_SUM_W1S(a) "PEMX_INT_SUM_W1S"
11290 #define device_bar_BDK_PEMX_INT_SUM_W1S(a) 0x0 /* PF_BAR0 */
11291 #define busnum_BDK_PEMX_INT_SUM_W1S(a) (a)
11292 #define arguments_BDK_PEMX_INT_SUM_W1S(a) (a),-1,-1,-1
11293
11294 /**
11295 * Register (NCB) pem#_latency_pc
11296 *
11297 * PEM Latency Count Register
11298 * This register contains read latency count for debugging purposes.
11299 *
11300 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
11301 *
11302 * This register is reset on PEM domain reset.
11303 */
11304 union bdk_pemx_latency_pc
11305 {
11306 uint64_t u;
11307 struct bdk_pemx_latency_pc_s
11308 {
11309 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11310 uint64_t latency : 64; /**< [ 63: 0](RO/H) Total read latency count in units of coprocessor-clocks measured from
11311 SLI read request until first data is returned from remote memory aggregated
11312 across all non-masked SWI tags. */
11313 #else /* Word 0 - Little Endian */
11314 uint64_t latency : 64; /**< [ 63: 0](RO/H) Total read latency count in units of coprocessor-clocks measured from
11315 SLI read request until first data is returned from remote memory aggregated
11316 across all non-masked SWI tags. */
11317 #endif /* Word 0 - End */
11318 } s;
11319 /* struct bdk_pemx_latency_pc_s cn8; */
11320 struct bdk_pemx_latency_pc_cn9
11321 {
11322 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11323 uint64_t latency : 64; /**< [ 63: 0](R/W/H) Total read latency count in 10 ns units measured from an internal point in PEM
11324 after coming from either NCBO (but prior to any merging logic) or EBO, to an
11325 internal point in PEM where the corresponding completion is sent to the NCBI
11326 or EBI interface logic. PEM()_LATENCY_PC_CTL[EBO_SEL] controls which
11327 outbound bus has its reads latency tracked. This register can only be written
11328 by software when PEM()_LATENCY_PC_CTL[ACTIVE] is clear. */
11329 #else /* Word 0 - Little Endian */
11330 uint64_t latency : 64; /**< [ 63: 0](R/W/H) Total read latency count in 10 ns units measured from an internal point in PEM
11331 after coming from either NCBO (but prior to any merging logic) or EBO, to an
11332 internal point in PEM where the corresponding completion is sent to the NCBI
11333 or EBI interface logic. PEM()_LATENCY_PC_CTL[EBO_SEL] controls which
11334 outbound bus has its reads latency tracked. This register can only be written
11335 by software when PEM()_LATENCY_PC_CTL[ACTIVE] is clear. */
11336 #endif /* Word 0 - End */
11337 } cn9;
11338 };
11339 typedef union bdk_pemx_latency_pc bdk_pemx_latency_pc_t;
11340
11341 static inline uint64_t BDK_PEMX_LATENCY_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_LATENCY_PC(unsigned long a)11342 static inline uint64_t BDK_PEMX_LATENCY_PC(unsigned long a)
11343 {
11344 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11345 return 0x87e0c0000490ll + 0x1000000ll * ((a) & 0x3);
11346 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
11347 return 0x8e0000000108ll + 0x1000000000ll * ((a) & 0x3);
11348 __bdk_csr_fatal("PEMX_LATENCY_PC", 1, a, 0, 0, 0);
11349 }
11350
11351 #define typedef_BDK_PEMX_LATENCY_PC(a) bdk_pemx_latency_pc_t
11352 #define bustype_BDK_PEMX_LATENCY_PC(a) BDK_CSR_TYPE_NCB
11353 #define basename_BDK_PEMX_LATENCY_PC(a) "PEMX_LATENCY_PC"
11354 #define device_bar_BDK_PEMX_LATENCY_PC(a) 0x0 /* PF_BAR0 */
11355 #define busnum_BDK_PEMX_LATENCY_PC(a) (a)
11356 #define arguments_BDK_PEMX_LATENCY_PC(a) (a),-1,-1,-1
11357
11358 /**
11359 * Register (NCB) pem#_latency_pc_ctl
11360 *
11361 * PEM Latency Control Register
11362 * This register controls read latency monitoring for debugging purposes.
11363 *
11364 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
11365 *
11366 * This register is reset on PEM domain reset.
11367 */
11368 union bdk_pemx_latency_pc_ctl
11369 {
11370 uint64_t u;
11371 struct bdk_pemx_latency_pc_ctl_s
11372 {
11373 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11374 uint64_t reserved_3_63 : 61;
11375 uint64_t ebo_sel : 1; /**< [ 2: 2](R/W) If set, latency will be measured on EBO reads instead of NCBO reads. */
11376 uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this
11377 bit. Later, when software clears [ACTIVE], hardware will wait for all
11378 outstanding reads to get their first data returned and then set this bit to
11379 indicate that measurement operations are completed. */
11380 uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on this bit, PEM will begin a
11381 measurement which will include PEM clearing PEM()_LATENCY_PC and PEM()_READS_PC
11382 to reset all counting as well as PEM clearing PEM()_LATENCY_CTL[COMPLETE]. Only
11383 SLI SWI reads that occur after this rising edge will be considered. When
11384 software wants to halt measurement, it can clear this bit which will block
11385 further reads from being considered. When software reads
11386 PEM()_LATENCY_CTL[COMPLETE] as set, it can know that all measurement is
11387 completed and PEM()_LATENCY_PC and PEM()_READS_PC reflect a completely accurate
11388 and stable set of values. */
11389 #else /* Word 0 - Little Endian */
11390 uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on this bit, PEM will begin a
11391 measurement which will include PEM clearing PEM()_LATENCY_PC and PEM()_READS_PC
11392 to reset all counting as well as PEM clearing PEM()_LATENCY_CTL[COMPLETE]. Only
11393 SLI SWI reads that occur after this rising edge will be considered. When
11394 software wants to halt measurement, it can clear this bit which will block
11395 further reads from being considered. When software reads
11396 PEM()_LATENCY_CTL[COMPLETE] as set, it can know that all measurement is
11397 completed and PEM()_LATENCY_PC and PEM()_READS_PC reflect a completely accurate
11398 and stable set of values. */
11399 uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this
11400 bit. Later, when software clears [ACTIVE], hardware will wait for all
11401 outstanding reads to get their first data returned and then set this bit to
11402 indicate that measurement operations are completed. */
11403 uint64_t ebo_sel : 1; /**< [ 2: 2](R/W) If set, latency will be measured on EBO reads instead of NCBO reads. */
11404 uint64_t reserved_3_63 : 61;
11405 #endif /* Word 0 - End */
11406 } s;
11407 struct bdk_pemx_latency_pc_ctl_cn8
11408 {
11409 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11410 uint64_t reserved_2_63 : 62;
11411 uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this
11412 bit. Later, when software clears [ACTIVE], hardware will wait for all
11413 outstanding reads to get their first data returned and then set this bit to
11414 indicate that measurement operations are completed. */
11415 uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on this bit, PEM will begin a
11416 measurement which will include PEM clearing PEM()_LATENCY_PC and PEM()_READS_PC
11417 to reset all counting as well as PEM clearing PEM()_LATENCY_CTL[COMPLETE]. Only
11418 SLI SWI reads that occur after this rising edge will be considered. When
11419 software wants to halt measurement, it can clear this bit which will block
11420 further reads from being considered. When software reads
11421 PEM()_LATENCY_CTL[COMPLETE] as set, it can know that all measurement is
11422 completed and PEM()_LATENCY_PC and PEM()_READS_PC reflect a completely accurate
11423 and stable set of values. */
11424 #else /* Word 0 - Little Endian */
11425 uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on this bit, PEM will begin a
11426 measurement which will include PEM clearing PEM()_LATENCY_PC and PEM()_READS_PC
11427 to reset all counting as well as PEM clearing PEM()_LATENCY_CTL[COMPLETE]. Only
11428 SLI SWI reads that occur after this rising edge will be considered. When
11429 software wants to halt measurement, it can clear this bit which will block
11430 further reads from being considered. When software reads
11431 PEM()_LATENCY_CTL[COMPLETE] as set, it can know that all measurement is
11432 completed and PEM()_LATENCY_PC and PEM()_READS_PC reflect a completely accurate
11433 and stable set of values. */
11434 uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this
11435 bit. Later, when software clears [ACTIVE], hardware will wait for all
11436 outstanding reads to get their first data returned and then set this bit to
11437 indicate that measurement operations are completed. */
11438 uint64_t reserved_2_63 : 62;
11439 #endif /* Word 0 - End */
11440 } cn8;
11441 struct bdk_pemx_latency_pc_ctl_cn9
11442 {
11443 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11444 uint64_t reserved_3_63 : 61;
11445 uint64_t ebo_sel : 1; /**< [ 2: 2](R/W) If set, latency will be measured on EBO reads instead of NCBO reads. */
11446 uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this
11447 bit. Later, when software clears [ACTIVE], hardware will wait for all
11448 outstanding reads to get their first data returned and then set this bit to
11449 indicate that measurement operations are completed. */
11450 uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on [ACTIVE], PEM will begin a
11451 measurement using existing values for PEM()_LATENCY_PC and PEM()_READS_PC
11452 as well as clear [COMPLETE]. Only NCBO reads that occur
11453 after this rising edge will be added into the results. When software wants
11454 to halt measurement, it can clear this bit which will block further reads
11455 from being considered. When software reads [COMPLETE] as set,
11456 it can know that all measurement is completed and PEM()_LATENCY_PC and
11457 PEM()_READS_PC reflect a completely accurate and stable set of values.
11458
11459 Note that [ACTIVE] does not need to be cleared in order to read
11460 PEM()_LATENCY_PC and PEM()_READS_PC to calcuate average latency during active
11461 processing, but there will be some small error.
11462
11463 Note that because software can write PEM()_LATENCY_PC and PEM()_READS_PC,
11464 PEM will not clear these values when a software write causes a rising edge on
11465 [ACTIVE]. Instead, software must initialize these two registers (probably
11466 both to 0) prior to starting a measurement. */
11467 #else /* Word 0 - Little Endian */
11468 uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on [ACTIVE], PEM will begin a
11469 measurement using existing values for PEM()_LATENCY_PC and PEM()_READS_PC
11470 as well as clear [COMPLETE]. Only NCBO reads that occur
11471 after this rising edge will be added into the results. When software wants
11472 to halt measurement, it can clear this bit which will block further reads
11473 from being considered. When software reads [COMPLETE] as set,
11474 it can know that all measurement is completed and PEM()_LATENCY_PC and
11475 PEM()_READS_PC reflect a completely accurate and stable set of values.
11476
11477 Note that [ACTIVE] does not need to be cleared in order to read
11478 PEM()_LATENCY_PC and PEM()_READS_PC to calcuate average latency during active
11479 processing, but there will be some small error.
11480
11481 Note that because software can write PEM()_LATENCY_PC and PEM()_READS_PC,
11482 PEM will not clear these values when a software write causes a rising edge on
11483 [ACTIVE]. Instead, software must initialize these two registers (probably
11484 both to 0) prior to starting a measurement. */
11485 uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this
11486 bit. Later, when software clears [ACTIVE], hardware will wait for all
11487 outstanding reads to get their first data returned and then set this bit to
11488 indicate that measurement operations are completed. */
11489 uint64_t ebo_sel : 1; /**< [ 2: 2](R/W) If set, latency will be measured on EBO reads instead of NCBO reads. */
11490 uint64_t reserved_3_63 : 61;
11491 #endif /* Word 0 - End */
11492 } cn9;
11493 };
11494 typedef union bdk_pemx_latency_pc_ctl bdk_pemx_latency_pc_ctl_t;
11495
11496 static inline uint64_t BDK_PEMX_LATENCY_PC_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_LATENCY_PC_CTL(unsigned long a)11497 static inline uint64_t BDK_PEMX_LATENCY_PC_CTL(unsigned long a)
11498 {
11499 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11500 return 0x87e0c00004c0ll + 0x1000000ll * ((a) & 0x3);
11501 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
11502 return 0x8e0000000118ll + 0x1000000000ll * ((a) & 0x3);
11503 __bdk_csr_fatal("PEMX_LATENCY_PC_CTL", 1, a, 0, 0, 0);
11504 }
11505
11506 #define typedef_BDK_PEMX_LATENCY_PC_CTL(a) bdk_pemx_latency_pc_ctl_t
11507 #define bustype_BDK_PEMX_LATENCY_PC_CTL(a) BDK_CSR_TYPE_NCB
11508 #define basename_BDK_PEMX_LATENCY_PC_CTL(a) "PEMX_LATENCY_PC_CTL"
11509 #define device_bar_BDK_PEMX_LATENCY_PC_CTL(a) 0x0 /* PF_BAR0 */
11510 #define busnum_BDK_PEMX_LATENCY_PC_CTL(a) (a)
11511 #define arguments_BDK_PEMX_LATENCY_PC_CTL(a) (a),-1,-1,-1
11512
11513 /**
11514 * Register (RSL) pem#_latency_pc_mask#
11515 *
11516 * PEM Latency Counts Low Register
11517 * This register contains read latency masking for debugging purposes.
11518 */
11519 union bdk_pemx_latency_pc_maskx
11520 {
11521 uint64_t u;
11522 struct bdk_pemx_latency_pc_maskx_s
11523 {
11524 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11525 uint64_t mask : 64; /**< [ 63: 0](R/W) Each bit of MASK corresponds to one SWI tag value. PEM()_LATENCY_PC_MASK(0)
11526 corresponds to SWI tags [63:0], PEM()_LATENCY_PC_MASK(1) corresponds to
11527 SWI tags [127:64]. If a bit of [MASK] is set, then its SWI tag will NOT be
11528 included in the values reported in PEM()_LATENCY_PC and PEM()_READS_PC. */
11529 #else /* Word 0 - Little Endian */
11530 uint64_t mask : 64; /**< [ 63: 0](R/W) Each bit of MASK corresponds to one SWI tag value. PEM()_LATENCY_PC_MASK(0)
11531 corresponds to SWI tags [63:0], PEM()_LATENCY_PC_MASK(1) corresponds to
11532 SWI tags [127:64]. If a bit of [MASK] is set, then its SWI tag will NOT be
11533 included in the values reported in PEM()_LATENCY_PC and PEM()_READS_PC. */
11534 #endif /* Word 0 - End */
11535 } s;
11536 /* struct bdk_pemx_latency_pc_maskx_s cn; */
11537 };
11538 typedef union bdk_pemx_latency_pc_maskx bdk_pemx_latency_pc_maskx_t;
11539
11540 static inline uint64_t BDK_PEMX_LATENCY_PC_MASKX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_LATENCY_PC_MASKX(unsigned long a,unsigned long b)11541 static inline uint64_t BDK_PEMX_LATENCY_PC_MASKX(unsigned long a, unsigned long b)
11542 {
11543 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=1)))
11544 return 0x87e0c00004a0ll + 0x1000000ll * ((a) & 0x3) + 0x100ll * ((b) & 0x1);
11545 __bdk_csr_fatal("PEMX_LATENCY_PC_MASKX", 2, a, b, 0, 0);
11546 }
11547
11548 #define typedef_BDK_PEMX_LATENCY_PC_MASKX(a,b) bdk_pemx_latency_pc_maskx_t
11549 #define bustype_BDK_PEMX_LATENCY_PC_MASKX(a,b) BDK_CSR_TYPE_RSL
11550 #define basename_BDK_PEMX_LATENCY_PC_MASKX(a,b) "PEMX_LATENCY_PC_MASKX"
11551 #define device_bar_BDK_PEMX_LATENCY_PC_MASKX(a,b) 0x0 /* PF_BAR0 */
11552 #define busnum_BDK_PEMX_LATENCY_PC_MASKX(a,b) (a)
11553 #define arguments_BDK_PEMX_LATENCY_PC_MASKX(a,b) (a),(b),-1,-1
11554
11555 /**
11556 * Register (NCB) pem#_ltr_latency
11557 *
11558 * PEM Latency Tolerance Reporting Register
11559 * This register contains the current LTR values reported and in-use
11560 * by the downstream device.
11561 *
11562 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
11563 *
11564 * This register is reset on MAC reset.
11565 */
11566 union bdk_pemx_ltr_latency
11567 {
11568 uint64_t u;
11569 struct bdk_pemx_ltr_latency_s
11570 {
11571 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11572 uint64_t reserved_32_63 : 32;
11573 uint64_t latency : 32; /**< [ 31: 0](RO/H) Reflects the captured LTR values from received LTR message in RC mode. */
11574 #else /* Word 0 - Little Endian */
11575 uint64_t latency : 32; /**< [ 31: 0](RO/H) Reflects the captured LTR values from received LTR message in RC mode. */
11576 uint64_t reserved_32_63 : 32;
11577 #endif /* Word 0 - End */
11578 } s;
11579 /* struct bdk_pemx_ltr_latency_s cn; */
11580 };
11581 typedef union bdk_pemx_ltr_latency bdk_pemx_ltr_latency_t;
11582
11583 static inline uint64_t BDK_PEMX_LTR_LATENCY(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_LTR_LATENCY(unsigned long a)11584 static inline uint64_t BDK_PEMX_LTR_LATENCY(unsigned long a)
11585 {
11586 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
11587 return 0x8e00000000b0ll + 0x1000000000ll * ((a) & 0x3);
11588 __bdk_csr_fatal("PEMX_LTR_LATENCY", 1, a, 0, 0, 0);
11589 }
11590
11591 #define typedef_BDK_PEMX_LTR_LATENCY(a) bdk_pemx_ltr_latency_t
11592 #define bustype_BDK_PEMX_LTR_LATENCY(a) BDK_CSR_TYPE_NCB
11593 #define basename_BDK_PEMX_LTR_LATENCY(a) "PEMX_LTR_LATENCY"
11594 #define device_bar_BDK_PEMX_LTR_LATENCY(a) 0x0 /* PF_BAR0 */
11595 #define busnum_BDK_PEMX_LTR_LATENCY(a) (a)
11596 #define arguments_BDK_PEMX_LTR_LATENCY(a) (a),-1,-1,-1
11597
11598 /**
11599 * Register (NCB) pem#_ltr_val#
11600 *
11601 * PEM Latency Tolerance Reporting Register
11602 * This register contains the values to put into the latency tolerance reporting (LTM) message
11603 * when triggered by hardware. EP Mode.
11604 *
11605 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
11606 *
11607 * This register is reset on MAC reset.
11608 */
11609 union bdk_pemx_ltr_valx
11610 {
11611 uint64_t u;
11612 struct bdk_pemx_ltr_valx_s
11613 {
11614 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11615 uint64_t reserved_32_63 : 32;
11616 uint64_t ns_lat : 16; /**< [ 31: 16](R/W) No-snoop latency value to put into LTM message when triggered by hardware. */
11617 uint64_t snoop_lat : 16; /**< [ 15: 0](R/W) Snoop latency value to put into LTM message when triggered by hardware. */
11618 #else /* Word 0 - Little Endian */
11619 uint64_t snoop_lat : 16; /**< [ 15: 0](R/W) Snoop latency value to put into LTM message when triggered by hardware. */
11620 uint64_t ns_lat : 16; /**< [ 31: 16](R/W) No-snoop latency value to put into LTM message when triggered by hardware. */
11621 uint64_t reserved_32_63 : 32;
11622 #endif /* Word 0 - End */
11623 } s;
11624 /* struct bdk_pemx_ltr_valx_s cn; */
11625 };
11626 typedef union bdk_pemx_ltr_valx bdk_pemx_ltr_valx_t;
11627
11628 static inline uint64_t BDK_PEMX_LTR_VALX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_LTR_VALX(unsigned long a,unsigned long b)11629 static inline uint64_t BDK_PEMX_LTR_VALX(unsigned long a, unsigned long b)
11630 {
11631 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=1)))
11632 return 0x8e00000000a0ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0x1);
11633 __bdk_csr_fatal("PEMX_LTR_VALX", 2, a, b, 0, 0);
11634 }
11635
11636 #define typedef_BDK_PEMX_LTR_VALX(a,b) bdk_pemx_ltr_valx_t
11637 #define bustype_BDK_PEMX_LTR_VALX(a,b) BDK_CSR_TYPE_NCB
11638 #define basename_BDK_PEMX_LTR_VALX(a,b) "PEMX_LTR_VALX"
11639 #define device_bar_BDK_PEMX_LTR_VALX(a,b) 0x0 /* PF_BAR0 */
11640 #define busnum_BDK_PEMX_LTR_VALX(a,b) (a)
11641 #define arguments_BDK_PEMX_LTR_VALX(a,b) (a),(b),-1,-1
11642
11643 /**
11644 * Register (NCB) pem#_mac_lane#_eq
11645 *
11646 * PEM MAC Lane RX/TX Equalization Info Register
11647 * This register specifies the per lane RX/TX Equalization values advertised
11648 * by the link partner.
11649 *
11650 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
11651 *
11652 * This register is reset on MAC reset.
11653 */
11654 union bdk_pemx_mac_lanex_eq
11655 {
11656 uint64_t u;
11657 struct bdk_pemx_mac_lanex_eq_s
11658 {
11659 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11660 uint64_t reserved_50_63 : 14;
11661 uint64_t pset_coef : 18; /**< [ 49: 32](RO/H) Presets and coefficients chosen by the PEM. */
11662 uint64_t reserved_15_31 : 17;
11663 uint64_t rxphint : 3; /**< [ 14: 12](RO/H) Represents the RX equalization preset hint
11664 for the receiver. */
11665 uint64_t lf : 6; /**< [ 11: 6](RO/H) Represents the low frequency value of the remote transmitter
11666 captured in Recovery.Equalization Phase 1. */
11667 uint64_t fs : 6; /**< [ 5: 0](RO/H) Represents the full swing value of the remote transmitter
11668 captured in Recovery.Equalization Phase 1. */
11669 #else /* Word 0 - Little Endian */
11670 uint64_t fs : 6; /**< [ 5: 0](RO/H) Represents the full swing value of the remote transmitter
11671 captured in Recovery.Equalization Phase 1. */
11672 uint64_t lf : 6; /**< [ 11: 6](RO/H) Represents the low frequency value of the remote transmitter
11673 captured in Recovery.Equalization Phase 1. */
11674 uint64_t rxphint : 3; /**< [ 14: 12](RO/H) Represents the RX equalization preset hint
11675 for the receiver. */
11676 uint64_t reserved_15_31 : 17;
11677 uint64_t pset_coef : 18; /**< [ 49: 32](RO/H) Presets and coefficients chosen by the PEM. */
11678 uint64_t reserved_50_63 : 14;
11679 #endif /* Word 0 - End */
11680 } s;
11681 /* struct bdk_pemx_mac_lanex_eq_s cn; */
11682 };
11683 typedef union bdk_pemx_mac_lanex_eq bdk_pemx_mac_lanex_eq_t;
11684
11685 static inline uint64_t BDK_PEMX_MAC_LANEX_EQ(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_MAC_LANEX_EQ(unsigned long a,unsigned long b)11686 static inline uint64_t BDK_PEMX_MAC_LANEX_EQ(unsigned long a, unsigned long b)
11687 {
11688 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15)))
11689 return 0x8e0000000780ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf);
11690 __bdk_csr_fatal("PEMX_MAC_LANEX_EQ", 2, a, b, 0, 0);
11691 }
11692
11693 #define typedef_BDK_PEMX_MAC_LANEX_EQ(a,b) bdk_pemx_mac_lanex_eq_t
11694 #define bustype_BDK_PEMX_MAC_LANEX_EQ(a,b) BDK_CSR_TYPE_NCB
11695 #define basename_BDK_PEMX_MAC_LANEX_EQ(a,b) "PEMX_MAC_LANEX_EQ"
11696 #define device_bar_BDK_PEMX_MAC_LANEX_EQ(a,b) 0x0 /* PF_BAR0 */
11697 #define busnum_BDK_PEMX_MAC_LANEX_EQ(a,b) (a)
11698 #define arguments_BDK_PEMX_MAC_LANEX_EQ(a,b) (a),(b),-1,-1
11699
11700 /**
11701 * Register (NCB) pem#_merge_timer_ctl
11702 *
11703 * PEM Merge Timer Control Register
11704 * This register controls merging timers and overrides for maximum merging size
11705 * for outbound reads, writes, and completions.
11706 *
11707 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
11708 *
11709 * This register is reset on PEM domain reset.
11710 */
11711 union bdk_pemx_merge_timer_ctl
11712 {
11713 uint64_t u;
11714 struct bdk_pemx_merge_timer_ctl_s
11715 {
11716 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11717 uint64_t cmerge_dis : 1; /**< [ 63: 63](R/W) For diagnostic use only. If set, will disable outbound completion merging. */
11718 uint64_t cmerge_mps_limit : 3; /**< [ 62: 60](R/W) Completion merge maximum payload size limit value. Software can use this value
11719 to reduce the maximum size of a merged completion operation to a level below the
11720 MPS value coming from the PCIe core. A value of 0x0 limits to 128 bytes with
11721 each increase in value doubling the limit. The hardware is controlled by the
11722 lower of [CMERGE_MPS_LIMIT] and the MPS value coming from the PCIe core. Resets
11723 to a value guaranteed to be at least as large as any legal value for MPS coming
11724 from the PCIe core. */
11725 uint64_t cmerge_total_timer : 7; /**< [ 59: 53](R/W) Completion merge encapsulation timer. When PEM accepts an outbound completion
11726 which begins a completion merging process, [CMERGE_TOTAL_TIMER] specifies the
11727 maximum wait, in units of (coprocessor-clock cycles * 64), to merge additional
11728 completion transfers into one larger overall completion. The values for this
11729 field range from 1 to 127, with 0x0 used for diagnostics only and treated as
11730 never expire. This translates into a range of 64 to 8128 in units of
11731 co-processor-clock cycles.
11732
11733 Internal:
11734 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11735 stuck within the pipeline, those transactions can be released by changing the
11736 timer to a non-zero value. */
11737 uint64_t cmerge_segment_timer : 7; /**< [ 52: 46](R/W) Completion merge segment timer. The maximum wait, in coprocessor-clock cycles,
11738 to wait between each segment of the overall merge operation. Each iterative
11739 completion transfer added to the overall merge restarts this timer. The values
11740 for this field range from 1 to 127, with 0x0 used for diagnostics only and
11741 treated as never expire. This translates into a range of 64 to 8128 in units of
11742 co-processor-clock cycles.
11743
11744 Internal:
11745 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11746 stuck within the pipeline, those transactions can be released by changing the
11747 timer to a non-zero value. */
11748 uint64_t wmerge_mps_limit : 3; /**< [ 45: 43](R/W) Write merge maximum payload size limit value. Software can use this value to
11749 reduce the maximum size of a merged write operation to a level below the MPS
11750 value coming from the PCIe core. A value of 0 limits to 128 bytes with each
11751 increase in value doubling the limit. The hardware will be controlled by the
11752 LOWER of [WMERGE_MPS_LIMIT] and the MPS value coming from the PCIe core. Resets
11753 to a value guaranteed to be at least as large as any legal value for MPS coming
11754 from the PCIe core. */
11755 uint64_t wmerge_total_timer : 10; /**< [ 42: 33](R/W) Write merge encapsulation timer. When PEM accepts an outbound write which begins
11756 a write merging process, [WMERGE_TOTAL_TIMER] specifies the maximum wait, in
11757 coprocessor-clock cycles, to merge additional write operations into one larger
11758 write. The values for this field range from 1 to 1023, with 0x0 used for
11759 diagnostics only and treated as never expire.
11760
11761 Internal:
11762 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11763 stuck within the pipeline, those transactions can be released by changing the
11764 timer to a non-zero value. */
11765 uint64_t wmerge_segment_timer : 10; /**< [ 32: 23](R/W) Write merge segment timer. The maximum wait,
11766 in coprocessor-clock cycles, to wait between each segment of the overall merge
11767 operation. Each iterative write operation added to the overall merge restarts this
11768 timer. The values for this field range from 1 to 1023, with 0x0 used for
11769 diagnostics only and treated as never expire.
11770
11771 Internal:
11772 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11773 stuck within the pipeline, those transactions can be released by changing the
11774 timer to a non-zero value. */
11775 uint64_t rmerge_mrrs_limit : 3; /**< [ 22: 20](R/W) Read merge maximum read request size limit value. Software can use this value to
11776 reduce the maximum size of a merged read operation to a level below the MRRS
11777 value coming from the PCIe core. A value of 0x0 limits to 128 bytes with each
11778 increase in value doubling the limit. The hardware will be controlled by the
11779 LOWER of [RMERGE_MRRS_LIMIT] and the MRRS value coming from the PCIe
11780 core. Resets to a value guaranteed to be at least as large as any legal value
11781 for MRRS coming from the PCIe core. */
11782 uint64_t rmerge_total_timer : 10; /**< [ 19: 10](R/W) Read merge encapsulation timer. When PEM accepts an outbound read which begins a
11783 read merging process, [RMERGE_TOTAL_TIMER] specifies the maximum wait, in
11784 coprocessor-clock cycles, to merge additional read operations into one larger
11785 read. The values for this field range from 1 to 1023, with 0x0 used for
11786 diagnostics only and treated as never expire.
11787
11788 Internal:
11789 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11790 stuck within the pipeline, those transactions can be released by changing the
11791 timer to a non-zero value. */
11792 uint64_t rmerge_segment_timer : 10; /**< [ 9: 0](R/W) Read merge segment timer. specifies the maximum wait, in coprocessor-clock
11793 cycles, to wait between each segment of the overall merge operation. Each
11794 iterative read operation added to the overall merge restarts this timer. The
11795 values for this field range from 1 to 1023, with 0x0 used for diagnostics only
11796 and treated as never expire.
11797
11798 Internal:
11799 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11800 stuck within the pipeline, those transactions can be released by changing the
11801 timer to a non-zero value. */
11802 #else /* Word 0 - Little Endian */
11803 uint64_t rmerge_segment_timer : 10; /**< [ 9: 0](R/W) Read merge segment timer. specifies the maximum wait, in coprocessor-clock
11804 cycles, to wait between each segment of the overall merge operation. Each
11805 iterative read operation added to the overall merge restarts this timer. The
11806 values for this field range from 1 to 1023, with 0x0 used for diagnostics only
11807 and treated as never expire.
11808
11809 Internal:
11810 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11811 stuck within the pipeline, those transactions can be released by changing the
11812 timer to a non-zero value. */
11813 uint64_t rmerge_total_timer : 10; /**< [ 19: 10](R/W) Read merge encapsulation timer. When PEM accepts an outbound read which begins a
11814 read merging process, [RMERGE_TOTAL_TIMER] specifies the maximum wait, in
11815 coprocessor-clock cycles, to merge additional read operations into one larger
11816 read. The values for this field range from 1 to 1023, with 0x0 used for
11817 diagnostics only and treated as never expire.
11818
11819 Internal:
11820 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11821 stuck within the pipeline, those transactions can be released by changing the
11822 timer to a non-zero value. */
11823 uint64_t rmerge_mrrs_limit : 3; /**< [ 22: 20](R/W) Read merge maximum read request size limit value. Software can use this value to
11824 reduce the maximum size of a merged read operation to a level below the MRRS
11825 value coming from the PCIe core. A value of 0x0 limits to 128 bytes with each
11826 increase in value doubling the limit. The hardware will be controlled by the
11827 LOWER of [RMERGE_MRRS_LIMIT] and the MRRS value coming from the PCIe
11828 core. Resets to a value guaranteed to be at least as large as any legal value
11829 for MRRS coming from the PCIe core. */
11830 uint64_t wmerge_segment_timer : 10; /**< [ 32: 23](R/W) Write merge segment timer. The maximum wait,
11831 in coprocessor-clock cycles, to wait between each segment of the overall merge
11832 operation. Each iterative write operation added to the overall merge restarts this
11833 timer. The values for this field range from 1 to 1023, with 0x0 used for
11834 diagnostics only and treated as never expire.
11835
11836 Internal:
11837 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11838 stuck within the pipeline, those transactions can be released by changing the
11839 timer to a non-zero value. */
11840 uint64_t wmerge_total_timer : 10; /**< [ 42: 33](R/W) Write merge encapsulation timer. When PEM accepts an outbound write which begins
11841 a write merging process, [WMERGE_TOTAL_TIMER] specifies the maximum wait, in
11842 coprocessor-clock cycles, to merge additional write operations into one larger
11843 write. The values for this field range from 1 to 1023, with 0x0 used for
11844 diagnostics only and treated as never expire.
11845
11846 Internal:
11847 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11848 stuck within the pipeline, those transactions can be released by changing the
11849 timer to a non-zero value. */
11850 uint64_t wmerge_mps_limit : 3; /**< [ 45: 43](R/W) Write merge maximum payload size limit value. Software can use this value to
11851 reduce the maximum size of a merged write operation to a level below the MPS
11852 value coming from the PCIe core. A value of 0 limits to 128 bytes with each
11853 increase in value doubling the limit. The hardware will be controlled by the
11854 LOWER of [WMERGE_MPS_LIMIT] and the MPS value coming from the PCIe core. Resets
11855 to a value guaranteed to be at least as large as any legal value for MPS coming
11856 from the PCIe core. */
11857 uint64_t cmerge_segment_timer : 7; /**< [ 52: 46](R/W) Completion merge segment timer. The maximum wait, in coprocessor-clock cycles,
11858 to wait between each segment of the overall merge operation. Each iterative
11859 completion transfer added to the overall merge restarts this timer. The values
11860 for this field range from 1 to 127, with 0x0 used for diagnostics only and
11861 treated as never expire. This translates into a range of 64 to 8128 in units of
11862 co-processor-clock cycles.
11863
11864 Internal:
11865 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11866 stuck within the pipeline, those transactions can be released by changing the
11867 timer to a non-zero value. */
11868 uint64_t cmerge_total_timer : 7; /**< [ 59: 53](R/W) Completion merge encapsulation timer. When PEM accepts an outbound completion
11869 which begins a completion merging process, [CMERGE_TOTAL_TIMER] specifies the
11870 maximum wait, in units of (coprocessor-clock cycles * 64), to merge additional
11871 completion transfers into one larger overall completion. The values for this
11872 field range from 1 to 127, with 0x0 used for diagnostics only and treated as
11873 never expire. This translates into a range of 64 to 8128 in units of
11874 co-processor-clock cycles.
11875
11876 Internal:
11877 If, during diagnostics, a timer value of 0x0 causes final transactions to be
11878 stuck within the pipeline, those transactions can be released by changing the
11879 timer to a non-zero value. */
11880 uint64_t cmerge_mps_limit : 3; /**< [ 62: 60](R/W) Completion merge maximum payload size limit value. Software can use this value
11881 to reduce the maximum size of a merged completion operation to a level below the
11882 MPS value coming from the PCIe core. A value of 0x0 limits to 128 bytes with
11883 each increase in value doubling the limit. The hardware is controlled by the
11884 lower of [CMERGE_MPS_LIMIT] and the MPS value coming from the PCIe core. Resets
11885 to a value guaranteed to be at least as large as any legal value for MPS coming
11886 from the PCIe core. */
11887 uint64_t cmerge_dis : 1; /**< [ 63: 63](R/W) For diagnostic use only. If set, will disable outbound completion merging. */
11888 #endif /* Word 0 - End */
11889 } s;
11890 /* struct bdk_pemx_merge_timer_ctl_s cn; */
11891 };
11892 typedef union bdk_pemx_merge_timer_ctl bdk_pemx_merge_timer_ctl_t;
11893
11894 static inline uint64_t BDK_PEMX_MERGE_TIMER_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_MERGE_TIMER_CTL(unsigned long a)11895 static inline uint64_t BDK_PEMX_MERGE_TIMER_CTL(unsigned long a)
11896 {
11897 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
11898 return 0x8e0000000170ll + 0x1000000000ll * ((a) & 0x3);
11899 __bdk_csr_fatal("PEMX_MERGE_TIMER_CTL", 1, a, 0, 0, 0);
11900 }
11901
11902 #define typedef_BDK_PEMX_MERGE_TIMER_CTL(a) bdk_pemx_merge_timer_ctl_t
11903 #define bustype_BDK_PEMX_MERGE_TIMER_CTL(a) BDK_CSR_TYPE_NCB
11904 #define basename_BDK_PEMX_MERGE_TIMER_CTL(a) "PEMX_MERGE_TIMER_CTL"
11905 #define device_bar_BDK_PEMX_MERGE_TIMER_CTL(a) 0x0 /* PF_BAR0 */
11906 #define busnum_BDK_PEMX_MERGE_TIMER_CTL(a) (a)
11907 #define arguments_BDK_PEMX_MERGE_TIMER_CTL(a) (a),-1,-1,-1
11908
11909 /**
11910 * Register (NCB) pem#_msix_pba#
11911 *
11912 * PEM MSI-X Pending Bit Array Registers
11913 * This register is the MSI-X PBA table, the bit number is indexed by the PEM_INT_VEC_E enumeration.
11914 *
11915 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
11916 *
11917 * This register is reset on PEM domain reset.
11918 */
11919 union bdk_pemx_msix_pbax
11920 {
11921 uint64_t u;
11922 struct bdk_pemx_msix_pbax_s
11923 {
11924 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11925 uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message for the associated PEM_MSIX_VEC()_CTL, enumerated by PEM_INT_VEC_E. Bits
11926 that have no associated PEM_INT_VEC_E are zero. */
11927 #else /* Word 0 - Little Endian */
11928 uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message for the associated PEM_MSIX_VEC()_CTL, enumerated by PEM_INT_VEC_E. Bits
11929 that have no associated PEM_INT_VEC_E are zero. */
11930 #endif /* Word 0 - End */
11931 } s;
11932 /* struct bdk_pemx_msix_pbax_s cn; */
11933 };
11934 typedef union bdk_pemx_msix_pbax bdk_pemx_msix_pbax_t;
11935
11936 static inline uint64_t BDK_PEMX_MSIX_PBAX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_MSIX_PBAX(unsigned long a,unsigned long b)11937 static inline uint64_t BDK_PEMX_MSIX_PBAX(unsigned long a, unsigned long b)
11938 {
11939 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a<=2) && (b==0)))
11940 return 0x87e0c0ff0000ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0x0);
11941 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b==0)))
11942 return 0x87e0c0ff0000ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0x0);
11943 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && ((a<=5) && (b==0)))
11944 return 0x87e0c0ff0000ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0x0);
11945 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b==0)))
11946 return 0x8e0f000f0000ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0x0);
11947 __bdk_csr_fatal("PEMX_MSIX_PBAX", 2, a, b, 0, 0);
11948 }
11949
11950 #define typedef_BDK_PEMX_MSIX_PBAX(a,b) bdk_pemx_msix_pbax_t
11951 #define bustype_BDK_PEMX_MSIX_PBAX(a,b) BDK_CSR_TYPE_NCB
11952 #define basename_BDK_PEMX_MSIX_PBAX(a,b) "PEMX_MSIX_PBAX"
11953 #define device_bar_BDK_PEMX_MSIX_PBAX(a,b) 0x4 /* PF_BAR4 */
11954 #define busnum_BDK_PEMX_MSIX_PBAX(a,b) (a)
11955 #define arguments_BDK_PEMX_MSIX_PBAX(a,b) (a),(b),-1,-1
11956
11957 /**
11958 * Register (NCB) pem#_msix_vec#_addr
11959 *
11960 * PEM MSI-X Vector Table Address Registers
11961 * This register is the MSI-X vector table, indexed by the PEM_INT_VEC_E enumeration.
11962 *
11963 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
11964 *
11965 * This register is reset on PEM domain reset.
11966 */
11967 union bdk_pemx_msix_vecx_addr
11968 {
11969 uint64_t u;
11970 struct bdk_pemx_msix_vecx_addr_s
11971 {
11972 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11973 uint64_t reserved_53_63 : 11;
11974 uint64_t addr : 51; /**< [ 52: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
11975 uint64_t reserved_1 : 1;
11976 uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
11977 0 = This vector may be read or written by either secure or nonsecure states.
11978 1 = This vector's PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and
11979 corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
11980 by the nonsecure world.
11981
11982 If PCCPF_PEM(0..5)_VSEC_SCTL[MSIX_SEC] (for documentation, see
11983 PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
11984 set, all vectors are secure and function as if [SECVEC] was set. */
11985 #else /* Word 0 - Little Endian */
11986 uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
11987 0 = This vector may be read or written by either secure or nonsecure states.
11988 1 = This vector's PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and
11989 corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
11990 by the nonsecure world.
11991
11992 If PCCPF_PEM(0..5)_VSEC_SCTL[MSIX_SEC] (for documentation, see
11993 PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
11994 set, all vectors are secure and function as if [SECVEC] was set. */
11995 uint64_t reserved_1 : 1;
11996 uint64_t addr : 51; /**< [ 52: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
11997 uint64_t reserved_53_63 : 11;
11998 #endif /* Word 0 - End */
11999 } s;
12000 struct bdk_pemx_msix_vecx_addr_cn9
12001 {
12002 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12003 uint64_t reserved_53_63 : 11;
12004 uint64_t addr : 51; /**< [ 52: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
12005 uint64_t reserved_1 : 1;
12006 uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
12007 0 = This vector may be read or written by either secure or nonsecure states.
12008 1 = This vector's PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and
12009 corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
12010 by the nonsecure world.
12011
12012 If PCCPF_PEM()_VSEC_SCTL[MSIX_SEC] (for documentation, see
12013 PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
12014 set, all vectors are secure and function as if [SECVEC] was set. */
12015 #else /* Word 0 - Little Endian */
12016 uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
12017 0 = This vector may be read or written by either secure or nonsecure states.
12018 1 = This vector's PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and
12019 corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
12020 by the nonsecure world.
12021
12022 If PCCPF_PEM()_VSEC_SCTL[MSIX_SEC] (for documentation, see
12023 PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
12024 set, all vectors are secure and function as if [SECVEC] was set. */
12025 uint64_t reserved_1 : 1;
12026 uint64_t addr : 51; /**< [ 52: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
12027 uint64_t reserved_53_63 : 11;
12028 #endif /* Word 0 - End */
12029 } cn9;
12030 struct bdk_pemx_msix_vecx_addr_cn81xx
12031 {
12032 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12033 uint64_t reserved_49_63 : 15;
12034 uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
12035 uint64_t reserved_1 : 1;
12036 uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
12037 0 = This vector may be read or written by either secure or nonsecure states.
12038 1 = This vector's PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and
12039 corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
12040 by the nonsecure world.
12041
12042 If PCCPF_PEM(0..2)_VSEC_SCTL[MSIX_SEC] (for documentation, see
12043 PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
12044 set, all vectors are secure and function as if [SECVEC] was set. */
12045 #else /* Word 0 - Little Endian */
12046 uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
12047 0 = This vector may be read or written by either secure or nonsecure states.
12048 1 = This vector's PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and
12049 corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
12050 by the nonsecure world.
12051
12052 If PCCPF_PEM(0..2)_VSEC_SCTL[MSIX_SEC] (for documentation, see
12053 PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
12054 set, all vectors are secure and function as if [SECVEC] was set. */
12055 uint64_t reserved_1 : 1;
12056 uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
12057 uint64_t reserved_49_63 : 15;
12058 #endif /* Word 0 - End */
12059 } cn81xx;
12060 struct bdk_pemx_msix_vecx_addr_cn88xx
12061 {
12062 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12063 uint64_t reserved_49_63 : 15;
12064 uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
12065 uint64_t reserved_1 : 1;
12066 uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
12067 0 = This vector may be read or written by either secure or nonsecure states.
12068 1 = This vector's PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and
12069 corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
12070 by the nonsecure world.
12071
12072 If PCCPF_PEM(0..5)_VSEC_SCTL[MSIX_SEC] (for documentation, see
12073 PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
12074 set, all vectors are secure and function as if [SECVEC] was set. */
12075 #else /* Word 0 - Little Endian */
12076 uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
12077 0 = This vector may be read or written by either secure or nonsecure states.
12078 1 = This vector's PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and
12079 corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
12080 by the nonsecure world.
12081
12082 If PCCPF_PEM(0..5)_VSEC_SCTL[MSIX_SEC] (for documentation, see
12083 PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
12084 set, all vectors are secure and function as if [SECVEC] was set. */
12085 uint64_t reserved_1 : 1;
12086 uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
12087 uint64_t reserved_49_63 : 15;
12088 #endif /* Word 0 - End */
12089 } cn88xx;
12090 struct bdk_pemx_msix_vecx_addr_cn83xx
12091 {
12092 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12093 uint64_t reserved_49_63 : 15;
12094 uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
12095 uint64_t reserved_1 : 1;
12096 uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
12097 0 = This vector may be read or written by either secure or nonsecure states.
12098 1 = This vector's PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and
12099 corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
12100 by the nonsecure world.
12101
12102 If PCCPF_PEM(0..3)_VSEC_SCTL[MSIX_SEC] (for documentation, see
12103 PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
12104 set, all vectors are secure and function as if [SECVEC] was set. */
12105 #else /* Word 0 - Little Endian */
12106 uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
12107 0 = This vector may be read or written by either secure or nonsecure states.
12108 1 = This vector's PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and
12109 corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
12110 by the nonsecure world.
12111
12112 If PCCPF_PEM(0..3)_VSEC_SCTL[MSIX_SEC] (for documentation, see
12113 PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
12114 set, all vectors are secure and function as if [SECVEC] was set. */
12115 uint64_t reserved_1 : 1;
12116 uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
12117 uint64_t reserved_49_63 : 15;
12118 #endif /* Word 0 - End */
12119 } cn83xx;
12120 };
12121 typedef union bdk_pemx_msix_vecx_addr bdk_pemx_msix_vecx_addr_t;
12122
12123 static inline uint64_t BDK_PEMX_MSIX_VECX_ADDR(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_MSIX_VECX_ADDR(unsigned long a,unsigned long b)12124 static inline uint64_t BDK_PEMX_MSIX_VECX_ADDR(unsigned long a, unsigned long b)
12125 {
12126 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a<=2) && (b<=11)))
12127 return 0x87e0c0f00000ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf);
12128 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=11)))
12129 return 0x87e0c0f00000ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf);
12130 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS1_X) && ((a<=5) && (b<=13)))
12131 return 0x87e0c0f00000ll + 0x1000000ll * ((a) & 0x7) + 0x10ll * ((b) & 0xf);
12132 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS2_X) && ((a<=5) && (b<=15)))
12133 return 0x87e0c0f00000ll + 0x1000000ll * ((a) & 0x7) + 0x10ll * ((b) & 0xf);
12134 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=8)))
12135 return 0x8e0f00000000ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf);
12136 __bdk_csr_fatal("PEMX_MSIX_VECX_ADDR", 2, a, b, 0, 0);
12137 }
12138
12139 #define typedef_BDK_PEMX_MSIX_VECX_ADDR(a,b) bdk_pemx_msix_vecx_addr_t
12140 #define bustype_BDK_PEMX_MSIX_VECX_ADDR(a,b) BDK_CSR_TYPE_NCB
12141 #define basename_BDK_PEMX_MSIX_VECX_ADDR(a,b) "PEMX_MSIX_VECX_ADDR"
12142 #define device_bar_BDK_PEMX_MSIX_VECX_ADDR(a,b) 0x4 /* PF_BAR4 */
12143 #define busnum_BDK_PEMX_MSIX_VECX_ADDR(a,b) (a)
12144 #define arguments_BDK_PEMX_MSIX_VECX_ADDR(a,b) (a),(b),-1,-1
12145
12146 /**
12147 * Register (NCB) pem#_msix_vec#_ctl
12148 *
12149 * PEM MSI-X Vector Table Control and Data Registers
12150 * This register is the MSI-X vector table, indexed by the PEM_INT_VEC_E enumeration.
12151 *
12152 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
12153 *
12154 * This register is reset on PEM domain reset.
12155 */
12156 union bdk_pemx_msix_vecx_ctl
12157 {
12158 uint64_t u;
12159 struct bdk_pemx_msix_vecx_ctl_s
12160 {
12161 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12162 uint64_t reserved_33_63 : 31;
12163 uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts will be sent to this vector. */
12164 uint64_t data : 32; /**< [ 31: 0](R/W) Data to use for MSI-X delivery of this vector. */
12165 #else /* Word 0 - Little Endian */
12166 uint64_t data : 32; /**< [ 31: 0](R/W) Data to use for MSI-X delivery of this vector. */
12167 uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts will be sent to this vector. */
12168 uint64_t reserved_33_63 : 31;
12169 #endif /* Word 0 - End */
12170 } s;
12171 struct bdk_pemx_msix_vecx_ctl_cn8
12172 {
12173 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12174 uint64_t reserved_33_63 : 31;
12175 uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts will be sent to this vector. */
12176 uint64_t reserved_20_31 : 12;
12177 uint64_t data : 20; /**< [ 19: 0](R/W) Data to use for MSI-X delivery of this vector. */
12178 #else /* Word 0 - Little Endian */
12179 uint64_t data : 20; /**< [ 19: 0](R/W) Data to use for MSI-X delivery of this vector. */
12180 uint64_t reserved_20_31 : 12;
12181 uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts will be sent to this vector. */
12182 uint64_t reserved_33_63 : 31;
12183 #endif /* Word 0 - End */
12184 } cn8;
12185 /* struct bdk_pemx_msix_vecx_ctl_s cn9; */
12186 };
12187 typedef union bdk_pemx_msix_vecx_ctl bdk_pemx_msix_vecx_ctl_t;
12188
12189 static inline uint64_t BDK_PEMX_MSIX_VECX_CTL(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_MSIX_VECX_CTL(unsigned long a,unsigned long b)12190 static inline uint64_t BDK_PEMX_MSIX_VECX_CTL(unsigned long a, unsigned long b)
12191 {
12192 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a<=2) && (b<=11)))
12193 return 0x87e0c0f00008ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf);
12194 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=11)))
12195 return 0x87e0c0f00008ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf);
12196 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS1_X) && ((a<=5) && (b<=13)))
12197 return 0x87e0c0f00008ll + 0x1000000ll * ((a) & 0x7) + 0x10ll * ((b) & 0xf);
12198 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS2_X) && ((a<=5) && (b<=15)))
12199 return 0x87e0c0f00008ll + 0x1000000ll * ((a) & 0x7) + 0x10ll * ((b) & 0xf);
12200 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=8)))
12201 return 0x8e0f00000008ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf);
12202 __bdk_csr_fatal("PEMX_MSIX_VECX_CTL", 2, a, b, 0, 0);
12203 }
12204
12205 #define typedef_BDK_PEMX_MSIX_VECX_CTL(a,b) bdk_pemx_msix_vecx_ctl_t
12206 #define bustype_BDK_PEMX_MSIX_VECX_CTL(a,b) BDK_CSR_TYPE_NCB
12207 #define basename_BDK_PEMX_MSIX_VECX_CTL(a,b) "PEMX_MSIX_VECX_CTL"
12208 #define device_bar_BDK_PEMX_MSIX_VECX_CTL(a,b) 0x4 /* PF_BAR4 */
12209 #define busnum_BDK_PEMX_MSIX_VECX_CTL(a,b) (a)
12210 #define arguments_BDK_PEMX_MSIX_VECX_CTL(a,b) (a),(b),-1,-1
12211
12212 /**
12213 * Register (NCB) pem#_ncbi_ctl
12214 *
12215 * PEM Inbound NCBI Control Register
12216 * This register contains control bits for memory accesses targeting the NCBI bus.
12217 * This register is ignored when PEM()_EBUS_CTL[PF_BAR*_SEL] is set.
12218 *
12219 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
12220 *
12221 * This register is reset on PEM domain reset.
12222 */
12223 union bdk_pemx_ncbi_ctl
12224 {
12225 uint64_t u;
12226 struct bdk_pemx_ncbi_ctl_s
12227 {
12228 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12229 uint64_t reserved_21_63 : 43;
12230 uint64_t bige : 1; /**< [ 20: 20](R/W) Atomics sent on NCBI will be marked as big endian. If the link partner is
12231 big-endian and the processors are big-endian, this allows exchange of big-endian
12232 atomics without byte swapping. */
12233 uint64_t reserved_11_19 : 9;
12234 uint64_t clken_force : 1; /**< [ 10: 10](R/W) Force clock enable on NCBI bus to always enabled. For diagnostic use only. */
12235 uint64_t ntlp_ro_dis : 1; /**< [ 9: 9](R/W) Relaxed ordering disable for non-posted TLPs. Will force relaxed ordering bit off when
12236 non-posted TLPs are forwarded to IOB over NCBI. */
12237 uint64_t ctlp_ro_dis : 1; /**< [ 8: 8](R/W) Relaxed ordering disable for completion TLPs. Will force relaxed ordering bit off when
12238 completion TLPs are forwarded to IOB over NCBI. */
12239 uint64_t ptlp_ro_dis : 1; /**< [ 7: 7](R/W) Relaxed ordering disable for posted TLPs. Will force relaxed ordering bit off when posted
12240 TLPs are forwarded to IOB over NCBI. */
12241 uint64_t reserved_3_6 : 4;
12242 uint64_t ld_cmd : 2; /**< [ 2: 1](R/W) When PEM issues a load command over NCBI to the LLC that is to be cached, this field
12243 selects the type of load command to use. Un-cached loads will use LDT:
12244 0x0 = LDD.
12245 0x1 = LDI.
12246 0x2 = LDE.
12247 0x3 = LDY. */
12248 uint64_t wait_com : 1; /**< [ 0: 0](R/W) Wait for commit. For diagnostic use only.
12249
12250 When set, replaces the default automatic store-store ordering with a more
12251 conservative and lower performing rule. This causes the PEM to wait for a store
12252 done from the NCB before sending additional stores to the NCB from the MAC. The
12253 PEM requests a commit on the last store if more than one STORE operation is
12254 required on NCBI. When set, inbound write merging must be disabled
12255 (PEM()_IB_MERGE_TIMER_CTL[WMERGE_DIS] = 1). */
12256 #else /* Word 0 - Little Endian */
12257 uint64_t wait_com : 1; /**< [ 0: 0](R/W) Wait for commit. For diagnostic use only.
12258
12259 When set, replaces the default automatic store-store ordering with a more
12260 conservative and lower performing rule. This causes the PEM to wait for a store
12261 done from the NCB before sending additional stores to the NCB from the MAC. The
12262 PEM requests a commit on the last store if more than one STORE operation is
12263 required on NCBI. When set, inbound write merging must be disabled
12264 (PEM()_IB_MERGE_TIMER_CTL[WMERGE_DIS] = 1). */
12265 uint64_t ld_cmd : 2; /**< [ 2: 1](R/W) When PEM issues a load command over NCBI to the LLC that is to be cached, this field
12266 selects the type of load command to use. Un-cached loads will use LDT:
12267 0x0 = LDD.
12268 0x1 = LDI.
12269 0x2 = LDE.
12270 0x3 = LDY. */
12271 uint64_t reserved_3_6 : 4;
12272 uint64_t ptlp_ro_dis : 1; /**< [ 7: 7](R/W) Relaxed ordering disable for posted TLPs. Will force relaxed ordering bit off when posted
12273 TLPs are forwarded to IOB over NCBI. */
12274 uint64_t ctlp_ro_dis : 1; /**< [ 8: 8](R/W) Relaxed ordering disable for completion TLPs. Will force relaxed ordering bit off when
12275 completion TLPs are forwarded to IOB over NCBI. */
12276 uint64_t ntlp_ro_dis : 1; /**< [ 9: 9](R/W) Relaxed ordering disable for non-posted TLPs. Will force relaxed ordering bit off when
12277 non-posted TLPs are forwarded to IOB over NCBI. */
12278 uint64_t clken_force : 1; /**< [ 10: 10](R/W) Force clock enable on NCBI bus to always enabled. For diagnostic use only. */
12279 uint64_t reserved_11_19 : 9;
12280 uint64_t bige : 1; /**< [ 20: 20](R/W) Atomics sent on NCBI will be marked as big endian. If the link partner is
12281 big-endian and the processors are big-endian, this allows exchange of big-endian
12282 atomics without byte swapping. */
12283 uint64_t reserved_21_63 : 43;
12284 #endif /* Word 0 - End */
12285 } s;
12286 struct bdk_pemx_ncbi_ctl_cn
12287 {
12288 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12289 uint64_t reserved_21_63 : 43;
12290 uint64_t bige : 1; /**< [ 20: 20](R/W) Atomics sent on NCBI will be marked as big endian. If the link partner is
12291 big-endian and the processors are big-endian, this allows exchange of big-endian
12292 atomics without byte swapping. */
12293 uint64_t reserved_11_19 : 9;
12294 uint64_t clken_force : 1; /**< [ 10: 10](R/W) Force clock enable on NCBI bus to always enabled. For diagnostic use only. */
12295 uint64_t ntlp_ro_dis : 1; /**< [ 9: 9](R/W) Relaxed ordering disable for non-posted TLPs. Will force relaxed ordering bit off when
12296 non-posted TLPs are forwarded to IOB over NCBI. */
12297 uint64_t ctlp_ro_dis : 1; /**< [ 8: 8](R/W) Relaxed ordering disable for completion TLPs. Will force relaxed ordering bit off when
12298 completion TLPs are forwarded to IOB over NCBI. */
12299 uint64_t ptlp_ro_dis : 1; /**< [ 7: 7](R/W) Relaxed ordering disable for posted TLPs. Will force relaxed ordering bit off when posted
12300 TLPs are forwarded to IOB over NCBI. */
12301 uint64_t reserved_5_6 : 2;
12302 uint64_t reserved_4 : 1;
12303 uint64_t reserved_3 : 1;
12304 uint64_t ld_cmd : 2; /**< [ 2: 1](R/W) When PEM issues a load command over NCBI to the LLC that is to be cached, this field
12305 selects the type of load command to use. Un-cached loads will use LDT:
12306 0x0 = LDD.
12307 0x1 = LDI.
12308 0x2 = LDE.
12309 0x3 = LDY. */
12310 uint64_t wait_com : 1; /**< [ 0: 0](R/W) Wait for commit. For diagnostic use only.
12311
12312 When set, replaces the default automatic store-store ordering with a more
12313 conservative and lower performing rule. This causes the PEM to wait for a store
12314 done from the NCB before sending additional stores to the NCB from the MAC. The
12315 PEM requests a commit on the last store if more than one STORE operation is
12316 required on NCBI. When set, inbound write merging must be disabled
12317 (PEM()_IB_MERGE_TIMER_CTL[WMERGE_DIS] = 1). */
12318 #else /* Word 0 - Little Endian */
12319 uint64_t wait_com : 1; /**< [ 0: 0](R/W) Wait for commit. For diagnostic use only.
12320
12321 When set, replaces the default automatic store-store ordering with a more
12322 conservative and lower performing rule. This causes the PEM to wait for a store
12323 done from the NCB before sending additional stores to the NCB from the MAC. The
12324 PEM requests a commit on the last store if more than one STORE operation is
12325 required on NCBI. When set, inbound write merging must be disabled
12326 (PEM()_IB_MERGE_TIMER_CTL[WMERGE_DIS] = 1). */
12327 uint64_t ld_cmd : 2; /**< [ 2: 1](R/W) When PEM issues a load command over NCBI to the LLC that is to be cached, this field
12328 selects the type of load command to use. Un-cached loads will use LDT:
12329 0x0 = LDD.
12330 0x1 = LDI.
12331 0x2 = LDE.
12332 0x3 = LDY. */
12333 uint64_t reserved_3 : 1;
12334 uint64_t reserved_4 : 1;
12335 uint64_t reserved_5_6 : 2;
12336 uint64_t ptlp_ro_dis : 1; /**< [ 7: 7](R/W) Relaxed ordering disable for posted TLPs. Will force relaxed ordering bit off when posted
12337 TLPs are forwarded to IOB over NCBI. */
12338 uint64_t ctlp_ro_dis : 1; /**< [ 8: 8](R/W) Relaxed ordering disable for completion TLPs. Will force relaxed ordering bit off when
12339 completion TLPs are forwarded to IOB over NCBI. */
12340 uint64_t ntlp_ro_dis : 1; /**< [ 9: 9](R/W) Relaxed ordering disable for non-posted TLPs. Will force relaxed ordering bit off when
12341 non-posted TLPs are forwarded to IOB over NCBI. */
12342 uint64_t clken_force : 1; /**< [ 10: 10](R/W) Force clock enable on NCBI bus to always enabled. For diagnostic use only. */
12343 uint64_t reserved_11_19 : 9;
12344 uint64_t bige : 1; /**< [ 20: 20](R/W) Atomics sent on NCBI will be marked as big endian. If the link partner is
12345 big-endian and the processors are big-endian, this allows exchange of big-endian
12346 atomics without byte swapping. */
12347 uint64_t reserved_21_63 : 43;
12348 #endif /* Word 0 - End */
12349 } cn;
12350 };
12351 typedef union bdk_pemx_ncbi_ctl bdk_pemx_ncbi_ctl_t;
12352
12353 static inline uint64_t BDK_PEMX_NCBI_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_NCBI_CTL(unsigned long a)12354 static inline uint64_t BDK_PEMX_NCBI_CTL(unsigned long a)
12355 {
12356 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
12357 return 0x8e0000000168ll + 0x1000000000ll * ((a) & 0x3);
12358 __bdk_csr_fatal("PEMX_NCBI_CTL", 1, a, 0, 0, 0);
12359 }
12360
12361 #define typedef_BDK_PEMX_NCBI_CTL(a) bdk_pemx_ncbi_ctl_t
12362 #define bustype_BDK_PEMX_NCBI_CTL(a) BDK_CSR_TYPE_NCB
12363 #define basename_BDK_PEMX_NCBI_CTL(a) "PEMX_NCBI_CTL"
12364 #define device_bar_BDK_PEMX_NCBI_CTL(a) 0x0 /* PF_BAR0 */
12365 #define busnum_BDK_PEMX_NCBI_CTL(a) (a)
12366 #define arguments_BDK_PEMX_NCBI_CTL(a) (a),-1,-1,-1
12367
12368 /**
12369 * Register (NCB) pem#_ncbi_tlp_credits
12370 *
12371 * PEM NCB Inbound TLP Credits Register
12372 * This register specifies the number of credits for use in moving TLPs. When this register is
12373 * written, the credit values are reset to the register value. This register is for diagnostic
12374 * use only, and should only be written when PEM()_CTL_STATUS[LNK_ENB] is clear.
12375 *
12376 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
12377 *
12378 * This register is reset on MAC reset.
12379 */
12380 union bdk_pemx_ncbi_tlp_credits
12381 {
12382 uint64_t u;
12383 struct bdk_pemx_ncbi_tlp_credits_s
12384 {
12385 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12386 uint64_t reserved_32_63 : 32;
12387 uint64_t ncbi_cpl : 11; /**< [ 31: 21](R/W) TLP 32 B credits for completion TLPs in the PEMs NCBI buffers.
12388 Legal values are 0x21 to 0x100. */
12389 uint64_t ncbi_np : 10; /**< [ 20: 11](R/W) TLP headers for non-posted TLPs in the PEMs NCBI buffers.
12390 Legal values are 0x20 to 0x100. */
12391 uint64_t ncbi_p : 11; /**< [ 10: 0](R/W) TLP 32 B credits for posted TLPs in the PEMs NCBI buffers.
12392 Legal values are 0x21 to 0x100. */
12393 #else /* Word 0 - Little Endian */
12394 uint64_t ncbi_p : 11; /**< [ 10: 0](R/W) TLP 32 B credits for posted TLPs in the PEMs NCBI buffers.
12395 Legal values are 0x21 to 0x100. */
12396 uint64_t ncbi_np : 10; /**< [ 20: 11](R/W) TLP headers for non-posted TLPs in the PEMs NCBI buffers.
12397 Legal values are 0x20 to 0x100. */
12398 uint64_t ncbi_cpl : 11; /**< [ 31: 21](R/W) TLP 32 B credits for completion TLPs in the PEMs NCBI buffers.
12399 Legal values are 0x21 to 0x100. */
12400 uint64_t reserved_32_63 : 32;
12401 #endif /* Word 0 - End */
12402 } s;
12403 /* struct bdk_pemx_ncbi_tlp_credits_s cn; */
12404 };
12405 typedef union bdk_pemx_ncbi_tlp_credits bdk_pemx_ncbi_tlp_credits_t;
12406
12407 static inline uint64_t BDK_PEMX_NCBI_TLP_CREDITS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_NCBI_TLP_CREDITS(unsigned long a)12408 static inline uint64_t BDK_PEMX_NCBI_TLP_CREDITS(unsigned long a)
12409 {
12410 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
12411 return 0x8e0000000030ll + 0x1000000000ll * ((a) & 0x3);
12412 __bdk_csr_fatal("PEMX_NCBI_TLP_CREDITS", 1, a, 0, 0, 0);
12413 }
12414
12415 #define typedef_BDK_PEMX_NCBI_TLP_CREDITS(a) bdk_pemx_ncbi_tlp_credits_t
12416 #define bustype_BDK_PEMX_NCBI_TLP_CREDITS(a) BDK_CSR_TYPE_NCB
12417 #define basename_BDK_PEMX_NCBI_TLP_CREDITS(a) "PEMX_NCBI_TLP_CREDITS"
12418 #define device_bar_BDK_PEMX_NCBI_TLP_CREDITS(a) 0x0 /* PF_BAR0 */
12419 #define busnum_BDK_PEMX_NCBI_TLP_CREDITS(a) (a)
12420 #define arguments_BDK_PEMX_NCBI_TLP_CREDITS(a) (a),-1,-1,-1
12421
12422 /**
12423 * Register (NCB) pem#_ncbo_fifo_status
12424 *
12425 * PEM NCBO Offloading FIFO Status Register
12426 * This register contains status about the PEM NCBO offloading FIFOs.
12427 *
12428 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
12429 *
12430 * This register is reset on PEM domain reset.
12431 */
12432 union bdk_pemx_ncbo_fifo_status
12433 {
12434 uint64_t u;
12435 struct bdk_pemx_ncbo_fifo_status_s
12436 {
12437 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12438 uint64_t reserved_24_63 : 40;
12439 uint64_t csr_volume : 8; /**< [ 23: 16](RO/H) Reports the number of valid entries currently held in the NCBO CSR offloading
12440 FIFO. Each entry represents an NCBO-based CSR access and the value read can
12441 range from 0x0 to a maximum of 128 which would represent completely full.
12442 For diagnostic use only. */
12443 uint64_t reserved_15 : 1;
12444 uint64_t n_volume : 7; /**< [ 14: 8](RO/H) Reports the number of valid entries currently held in the NCBO nonposted
12445 offloading FIFO. Each entry represents a beat of the NCBO bus related to a
12446 nonposted operation and the value read can range from 0x0 to a maximum of 64
12447 which would represent completely full.
12448 For diagnostic use only. */
12449 uint64_t p_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the NCBO posted offloading
12450 FIFO. Each entry represents a beat of the NCBO bus related to a memory store and
12451 the value read can range from 0x0 to a maximum of 128 which would represent
12452 completely full.
12453 For diagnostic use only. */
12454 #else /* Word 0 - Little Endian */
12455 uint64_t p_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the NCBO posted offloading
12456 FIFO. Each entry represents a beat of the NCBO bus related to a memory store and
12457 the value read can range from 0x0 to a maximum of 128 which would represent
12458 completely full.
12459 For diagnostic use only. */
12460 uint64_t n_volume : 7; /**< [ 14: 8](RO/H) Reports the number of valid entries currently held in the NCBO nonposted
12461 offloading FIFO. Each entry represents a beat of the NCBO bus related to a
12462 nonposted operation and the value read can range from 0x0 to a maximum of 64
12463 which would represent completely full.
12464 For diagnostic use only. */
12465 uint64_t reserved_15 : 1;
12466 uint64_t csr_volume : 8; /**< [ 23: 16](RO/H) Reports the number of valid entries currently held in the NCBO CSR offloading
12467 FIFO. Each entry represents an NCBO-based CSR access and the value read can
12468 range from 0x0 to a maximum of 128 which would represent completely full.
12469 For diagnostic use only. */
12470 uint64_t reserved_24_63 : 40;
12471 #endif /* Word 0 - End */
12472 } s;
12473 /* struct bdk_pemx_ncbo_fifo_status_s cn; */
12474 };
12475 typedef union bdk_pemx_ncbo_fifo_status bdk_pemx_ncbo_fifo_status_t;
12476
12477 static inline uint64_t BDK_PEMX_NCBO_FIFO_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_NCBO_FIFO_STATUS(unsigned long a)12478 static inline uint64_t BDK_PEMX_NCBO_FIFO_STATUS(unsigned long a)
12479 {
12480 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
12481 return 0x8e0000000128ll + 0x1000000000ll * ((a) & 0x3);
12482 __bdk_csr_fatal("PEMX_NCBO_FIFO_STATUS", 1, a, 0, 0, 0);
12483 }
12484
12485 #define typedef_BDK_PEMX_NCBO_FIFO_STATUS(a) bdk_pemx_ncbo_fifo_status_t
12486 #define bustype_BDK_PEMX_NCBO_FIFO_STATUS(a) BDK_CSR_TYPE_NCB
12487 #define basename_BDK_PEMX_NCBO_FIFO_STATUS(a) "PEMX_NCBO_FIFO_STATUS"
12488 #define device_bar_BDK_PEMX_NCBO_FIFO_STATUS(a) 0x0 /* PF_BAR0 */
12489 #define busnum_BDK_PEMX_NCBO_FIFO_STATUS(a) (a)
12490 #define arguments_BDK_PEMX_NCBO_FIFO_STATUS(a) (a),-1,-1,-1
12491
12492 /**
12493 * Register (NCB) pem#_ob_cpl_fifo_status
12494 *
12495 * PEM Outbound Completion FIFO Status Register
12496 * This register contains status about the PEM Outbound Completion FIFOs.
12497 *
12498 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
12499 *
12500 * This register is reset on PEM domain reset.
12501 */
12502 union bdk_pemx_ob_cpl_fifo_status
12503 {
12504 uint64_t u;
12505 struct bdk_pemx_ob_cpl_fifo_status_s
12506 {
12507 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12508 uint64_t reserved_26_63 : 38;
12509 uint64_t ncbo_c_volume : 10; /**< [ 25: 16](RO/H) Reports the number of valid entries currently held in the NCBO completion
12510 FIFO. Each entry represents a 256-bit beat of data. The value read can
12511 range from 0x0 to a maximum of 512 which would represent completely full.
12512 For diagnostic use only. */
12513 uint64_t ebo_c_volume : 8; /**< [ 15: 8](RO/H) Reports the number of valid entries currently held in the EBO completion
12514 FIFO which is downstream and separate from the EBO completion offloading
12515 FIFO. Each entry represents a 256-bit beat of data. The value read can
12516 range from 0x0 to a maximum of 128 which would represent completely full.
12517 For diagnostic use only. */
12518 uint64_t pspi_c_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the PSPI completion
12519 FIFO. Each entry represents a 256-bit beat of data. The value read can
12520 range from 0x0 to a maximum of 128 which would represent completely full.
12521 For diagnostic use only. */
12522 #else /* Word 0 - Little Endian */
12523 uint64_t pspi_c_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the PSPI completion
12524 FIFO. Each entry represents a 256-bit beat of data. The value read can
12525 range from 0x0 to a maximum of 128 which would represent completely full.
12526 For diagnostic use only. */
12527 uint64_t ebo_c_volume : 8; /**< [ 15: 8](RO/H) Reports the number of valid entries currently held in the EBO completion
12528 FIFO which is downstream and separate from the EBO completion offloading
12529 FIFO. Each entry represents a 256-bit beat of data. The value read can
12530 range from 0x0 to a maximum of 128 which would represent completely full.
12531 For diagnostic use only. */
12532 uint64_t ncbo_c_volume : 10; /**< [ 25: 16](RO/H) Reports the number of valid entries currently held in the NCBO completion
12533 FIFO. Each entry represents a 256-bit beat of data. The value read can
12534 range from 0x0 to a maximum of 512 which would represent completely full.
12535 For diagnostic use only. */
12536 uint64_t reserved_26_63 : 38;
12537 #endif /* Word 0 - End */
12538 } s;
12539 /* struct bdk_pemx_ob_cpl_fifo_status_s cn; */
12540 };
12541 typedef union bdk_pemx_ob_cpl_fifo_status bdk_pemx_ob_cpl_fifo_status_t;
12542
12543 static inline uint64_t BDK_PEMX_OB_CPL_FIFO_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_OB_CPL_FIFO_STATUS(unsigned long a)12544 static inline uint64_t BDK_PEMX_OB_CPL_FIFO_STATUS(unsigned long a)
12545 {
12546 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
12547 return 0x8e0000000160ll + 0x1000000000ll * ((a) & 0x3);
12548 __bdk_csr_fatal("PEMX_OB_CPL_FIFO_STATUS", 1, a, 0, 0, 0);
12549 }
12550
12551 #define typedef_BDK_PEMX_OB_CPL_FIFO_STATUS(a) bdk_pemx_ob_cpl_fifo_status_t
12552 #define bustype_BDK_PEMX_OB_CPL_FIFO_STATUS(a) BDK_CSR_TYPE_NCB
12553 #define basename_BDK_PEMX_OB_CPL_FIFO_STATUS(a) "PEMX_OB_CPL_FIFO_STATUS"
12554 #define device_bar_BDK_PEMX_OB_CPL_FIFO_STATUS(a) 0x0 /* PF_BAR0 */
12555 #define busnum_BDK_PEMX_OB_CPL_FIFO_STATUS(a) (a)
12556 #define arguments_BDK_PEMX_OB_CPL_FIFO_STATUS(a) (a),-1,-1,-1
12557
12558 /**
12559 * Register (NCB) pem#_obff_ctl_status
12560 *
12561 * PEM Optimized Buffer Flush/Fill Control/Status Register
12562 * This register is used for EP mode OFF debug.
12563 *
12564 * This register is reset on MAC reset.
12565 */
12566 union bdk_pemx_obff_ctl_status
12567 {
12568 uint64_t u;
12569 struct bdk_pemx_obff_ctl_status_s
12570 {
12571 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12572 uint64_t reserved_5_63 : 59;
12573 uint64_t dec_err : 1; /**< [ 4: 4](R/W1C) Wake decoder recieved a invalid WAKE pattern.
12574
12575 When a invalid WAKE pattern is detected, the OBFF
12576 wake decoder is forced into the CPU_ACT state. */
12577 uint64_t dec_state : 4; /**< [ 3: 0](RO/H) The current FSM state of the OBFF wake decoder. EP mode only.
12578 For debug purposes only.
12579
12580 0x0 = IDLE (RC mode).
12581 0x1 = IDLE to OBFF.
12582 0x3 = IDLE to CPU.
12583 0x4 = OBFF to IDLE.
12584 0x5 = OBFF.
12585 0x6 = OBFF to CPU 1, inactive pulse.
12586 0xa = CPU_IDLE.
12587 0xb = CPU_ACT (default state in EP mode).
12588 0xe = OBFF to CPU 1, inactive pulse.
12589
12590 All other FSM states are undefined. */
12591 #else /* Word 0 - Little Endian */
12592 uint64_t dec_state : 4; /**< [ 3: 0](RO/H) The current FSM state of the OBFF wake decoder. EP mode only.
12593 For debug purposes only.
12594
12595 0x0 = IDLE (RC mode).
12596 0x1 = IDLE to OBFF.
12597 0x3 = IDLE to CPU.
12598 0x4 = OBFF to IDLE.
12599 0x5 = OBFF.
12600 0x6 = OBFF to CPU 1, inactive pulse.
12601 0xa = CPU_IDLE.
12602 0xb = CPU_ACT (default state in EP mode).
12603 0xe = OBFF to CPU 1, inactive pulse.
12604
12605 All other FSM states are undefined. */
12606 uint64_t dec_err : 1; /**< [ 4: 4](R/W1C) Wake decoder recieved a invalid WAKE pattern.
12607
12608 When a invalid WAKE pattern is detected, the OBFF
12609 wake decoder is forced into the CPU_ACT state. */
12610 uint64_t reserved_5_63 : 59;
12611 #endif /* Word 0 - End */
12612 } s;
12613 /* struct bdk_pemx_obff_ctl_status_s cn; */
12614 };
12615 typedef union bdk_pemx_obff_ctl_status bdk_pemx_obff_ctl_status_t;
12616
12617 static inline uint64_t BDK_PEMX_OBFF_CTL_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_OBFF_CTL_STATUS(unsigned long a)12618 static inline uint64_t BDK_PEMX_OBFF_CTL_STATUS(unsigned long a)
12619 {
12620 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
12621 return 0x8e0000000080ll + 0x1000000000ll * ((a) & 0x3);
12622 __bdk_csr_fatal("PEMX_OBFF_CTL_STATUS", 1, a, 0, 0, 0);
12623 }
12624
12625 #define typedef_BDK_PEMX_OBFF_CTL_STATUS(a) bdk_pemx_obff_ctl_status_t
12626 #define bustype_BDK_PEMX_OBFF_CTL_STATUS(a) BDK_CSR_TYPE_NCB
12627 #define basename_BDK_PEMX_OBFF_CTL_STATUS(a) "PEMX_OBFF_CTL_STATUS"
12628 #define device_bar_BDK_PEMX_OBFF_CTL_STATUS(a) 0x0 /* PF_BAR0 */
12629 #define busnum_BDK_PEMX_OBFF_CTL_STATUS(a) (a)
12630 #define arguments_BDK_PEMX_OBFF_CTL_STATUS(a) (a),-1,-1,-1
12631
12632 /**
12633 * Register (NCB) pem#_obff_wake_cfg
12634 *
12635 * PEM Optimized Buffer Flush/Fill Wake Configuration Register
12636 * This configures wake configuration.
12637 *
12638 * This register is reset on MAC cold reset.
12639 */
12640 union bdk_pemx_obff_wake_cfg
12641 {
12642 uint64_t u;
12643 struct bdk_pemx_obff_wake_cfg_s
12644 {
12645 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12646 uint64_t reserved_32_63 : 32;
12647 uint64_t max_pls : 8; /**< [ 31: 24](R/W) Max pulse width for active-inactive-active pulse.
12648 Twake_tx_max_pulse = [MAX_PLS] * Tck_period (10ns). */
12649 uint64_t min_pls : 8; /**< [ 23: 16](R/W) Min pulse width for active-inactive pulse.
12650 Twake_tx_min_pulse = [MIN_PLS] * Tck_period (10ns). */
12651 uint64_t max_f2f : 8; /**< [ 15: 8](R/W) Max falling to falling edge width.
12652 Twake_fall_fall_cpu_active (max) = [MAX_F2F] * Tck_period (10ns). */
12653 uint64_t min_f2f : 8; /**< [ 7: 0](R/W) Min falling to falling edge width.
12654 Twake_fall_fall_cpu_active (min) = [MIN_F2F] * Tck_period (10ns). */
12655 #else /* Word 0 - Little Endian */
12656 uint64_t min_f2f : 8; /**< [ 7: 0](R/W) Min falling to falling edge width.
12657 Twake_fall_fall_cpu_active (min) = [MIN_F2F] * Tck_period (10ns). */
12658 uint64_t max_f2f : 8; /**< [ 15: 8](R/W) Max falling to falling edge width.
12659 Twake_fall_fall_cpu_active (max) = [MAX_F2F] * Tck_period (10ns). */
12660 uint64_t min_pls : 8; /**< [ 23: 16](R/W) Min pulse width for active-inactive pulse.
12661 Twake_tx_min_pulse = [MIN_PLS] * Tck_period (10ns). */
12662 uint64_t max_pls : 8; /**< [ 31: 24](R/W) Max pulse width for active-inactive-active pulse.
12663 Twake_tx_max_pulse = [MAX_PLS] * Tck_period (10ns). */
12664 uint64_t reserved_32_63 : 32;
12665 #endif /* Word 0 - End */
12666 } s;
12667 /* struct bdk_pemx_obff_wake_cfg_s cn; */
12668 };
12669 typedef union bdk_pemx_obff_wake_cfg bdk_pemx_obff_wake_cfg_t;
12670
12671 static inline uint64_t BDK_PEMX_OBFF_WAKE_CFG(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_OBFF_WAKE_CFG(unsigned long a)12672 static inline uint64_t BDK_PEMX_OBFF_WAKE_CFG(unsigned long a)
12673 {
12674 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
12675 return 0x8e0000000088ll + 0x1000000000ll * ((a) & 0x3);
12676 __bdk_csr_fatal("PEMX_OBFF_WAKE_CFG", 1, a, 0, 0, 0);
12677 }
12678
12679 #define typedef_BDK_PEMX_OBFF_WAKE_CFG(a) bdk_pemx_obff_wake_cfg_t
12680 #define bustype_BDK_PEMX_OBFF_WAKE_CFG(a) BDK_CSR_TYPE_NCB
12681 #define basename_BDK_PEMX_OBFF_WAKE_CFG(a) "PEMX_OBFF_WAKE_CFG"
12682 #define device_bar_BDK_PEMX_OBFF_WAKE_CFG(a) 0x0 /* PF_BAR0 */
12683 #define busnum_BDK_PEMX_OBFF_WAKE_CFG(a) (a)
12684 #define arguments_BDK_PEMX_OBFF_WAKE_CFG(a) (a),-1,-1,-1
12685
12686 /**
12687 * Register (NCB) pem#_on
12688 *
12689 * PEM On Status Register
12690 * This register indicates that PEM is configured and ready.
12691 *
12692 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
12693 *
12694 * This register is reset on cold reset.
12695 */
12696 union bdk_pemx_on
12697 {
12698 uint64_t u;
12699 struct bdk_pemx_on_s
12700 {
12701 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12702 uint64_t reserved_3_63 : 61;
12703 uint64_t aclr : 1; /**< [ 2: 2](R/W) When this bit is set, [PEMON] will auto-clear on PEM domain reset, in addition
12704 to being reset on cold reset. [ACLR] should be 0 in an EP configuration where
12705 it is desired to leave the link operational while resetting the chip core.
12706 It should normally be 1 in root complex mode. */
12707 uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of reset (i.e. BIST is done) and it
12708 is safe to configure core CSRs. */
12709 uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the GSER that the PEM is out of reset, configured, and ready to send/receive
12710 traffic. Setting this bit takes the configured PIPE out of reset. */
12711 #else /* Word 0 - Little Endian */
12712 uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the GSER that the PEM is out of reset, configured, and ready to send/receive
12713 traffic. Setting this bit takes the configured PIPE out of reset. */
12714 uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of reset (i.e. BIST is done) and it
12715 is safe to configure core CSRs. */
12716 uint64_t aclr : 1; /**< [ 2: 2](R/W) When this bit is set, [PEMON] will auto-clear on PEM domain reset, in addition
12717 to being reset on cold reset. [ACLR] should be 0 in an EP configuration where
12718 it is desired to leave the link operational while resetting the chip core.
12719 It should normally be 1 in root complex mode. */
12720 uint64_t reserved_3_63 : 61;
12721 #endif /* Word 0 - End */
12722 } s;
12723 struct bdk_pemx_on_cn8
12724 {
12725 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12726 uint64_t reserved_2_63 : 62;
12727 uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of reset (i.e. BIST is done) and it
12728 is safe to configure core CSRs. */
12729 uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the GSER that the PEM is out of reset, configured, and ready to send/receive
12730 traffic. Setting this bit takes the configured PIPE out of reset. */
12731 #else /* Word 0 - Little Endian */
12732 uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the GSER that the PEM is out of reset, configured, and ready to send/receive
12733 traffic. Setting this bit takes the configured PIPE out of reset. */
12734 uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of reset (i.e. BIST is done) and it
12735 is safe to configure core CSRs. */
12736 uint64_t reserved_2_63 : 62;
12737 #endif /* Word 0 - End */
12738 } cn8;
12739 struct bdk_pemx_on_cn9
12740 {
12741 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12742 uint64_t reserved_3_63 : 61;
12743 uint64_t aclr : 1; /**< [ 2: 2](R/W) When this bit is set, [PEMON] will auto-clear on PEM domain reset, in addition
12744 to being reset on cold reset. [ACLR] should be 0 in an EP configuration where
12745 it is desired to leave the link operational while resetting the chip core.
12746 It should normally be 1 in root complex mode. */
12747 uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of MAC reset and it
12748 is safe to configure CSRs marked as being on MAC reset, as well as all PCIe configuration
12749 registers. */
12750 uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the centralized reset block that the PEM is out of domain reset,
12751 and PEM()_CLK_EN and PEM()_CFG have been configured. Setting this bit will allow the
12752 configured PIPE to be taken out of reset and MAC reset to be deasserted.
12753 This bit is set as part of the initialization/boot sequence for PCIe. */
12754 #else /* Word 0 - Little Endian */
12755 uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the centralized reset block that the PEM is out of domain reset,
12756 and PEM()_CLK_EN and PEM()_CFG have been configured. Setting this bit will allow the
12757 configured PIPE to be taken out of reset and MAC reset to be deasserted.
12758 This bit is set as part of the initialization/boot sequence for PCIe. */
12759 uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of MAC reset and it
12760 is safe to configure CSRs marked as being on MAC reset, as well as all PCIe configuration
12761 registers. */
12762 uint64_t aclr : 1; /**< [ 2: 2](R/W) When this bit is set, [PEMON] will auto-clear on PEM domain reset, in addition
12763 to being reset on cold reset. [ACLR] should be 0 in an EP configuration where
12764 it is desired to leave the link operational while resetting the chip core.
12765 It should normally be 1 in root complex mode. */
12766 uint64_t reserved_3_63 : 61;
12767 #endif /* Word 0 - End */
12768 } cn9;
12769 };
12770 typedef union bdk_pemx_on bdk_pemx_on_t;
12771
12772 static inline uint64_t BDK_PEMX_ON(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_ON(unsigned long a)12773 static inline uint64_t BDK_PEMX_ON(unsigned long a)
12774 {
12775 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
12776 return 0x87e0c0000420ll + 0x1000000ll * ((a) & 0x3);
12777 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12778 return 0x87e0c0000420ll + 0x1000000ll * ((a) & 0x3);
12779 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
12780 return 0x87e0c0000420ll + 0x1000000ll * ((a) & 0x7);
12781 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
12782 return 0x8e00000000d0ll + 0x1000000000ll * ((a) & 0x3);
12783 __bdk_csr_fatal("PEMX_ON", 1, a, 0, 0, 0);
12784 }
12785
12786 #define typedef_BDK_PEMX_ON(a) bdk_pemx_on_t
12787 #define bustype_BDK_PEMX_ON(a) BDK_CSR_TYPE_NCB
12788 #define basename_BDK_PEMX_ON(a) "PEMX_ON"
12789 #define device_bar_BDK_PEMX_ON(a) 0x0 /* PF_BAR0 */
12790 #define busnum_BDK_PEMX_ON(a) (a)
12791 #define arguments_BDK_PEMX_ON(a) (a),-1,-1,-1
12792
12793 /**
12794 * Register (NCB) pem#_p2n_bar0_start
12795 *
12796 * PEM PCIe RC BAR0 Start Register
12797 * This register specifies the starting address for memory requests that are to be forwarded to
12798 * NCB/EBUS in RC mode. In EP mode, the standard PCIe config space BAR registers are used, and
12799 * this register is ignored.
12800 *
12801 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
12802 *
12803 * This register is reset on PEM domain reset.
12804 */
12805 union bdk_pemx_p2n_bar0_start
12806 {
12807 uint64_t u;
12808 struct bdk_pemx_p2n_bar0_start_s
12809 {
12810 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12811 uint64_t reserved_0_63 : 64;
12812 #else /* Word 0 - Little Endian */
12813 uint64_t reserved_0_63 : 64;
12814 #endif /* Word 0 - End */
12815 } s;
12816 struct bdk_pemx_p2n_bar0_start_cn9
12817 {
12818 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12819 uint64_t addr : 48; /**< [ 63: 16](R/W) The starting address of the BAR0 address space, sized as configured by the
12820 PEM()_BAR_CTL[BAR0_SIZ] which defaults to ADDR\<63:23\> and used to determine a RC BAR0 hit. */
12821 uint64_t reserved_0_15 : 16;
12822 #else /* Word 0 - Little Endian */
12823 uint64_t reserved_0_15 : 16;
12824 uint64_t addr : 48; /**< [ 63: 16](R/W) The starting address of the BAR0 address space, sized as configured by the
12825 PEM()_BAR_CTL[BAR0_SIZ] which defaults to ADDR\<63:23\> and used to determine a RC BAR0 hit. */
12826 #endif /* Word 0 - End */
12827 } cn9;
12828 struct bdk_pemx_p2n_bar0_start_cn81xx
12829 {
12830 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12831 uint64_t addr : 50; /**< [ 63: 14](R/W) The starting address of the 16KB BAR0 address space. */
12832 uint64_t reserved_0_13 : 14;
12833 #else /* Word 0 - Little Endian */
12834 uint64_t reserved_0_13 : 14;
12835 uint64_t addr : 50; /**< [ 63: 14](R/W) The starting address of the 16KB BAR0 address space. */
12836 #endif /* Word 0 - End */
12837 } cn81xx;
12838 /* struct bdk_pemx_p2n_bar0_start_cn81xx cn88xx; */
12839 struct bdk_pemx_p2n_bar0_start_cn83xx
12840 {
12841 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12842 uint64_t addr : 41; /**< [ 63: 23](R/W) The starting address of the 8 MB BAR0 address space. */
12843 uint64_t reserved_0_22 : 23;
12844 #else /* Word 0 - Little Endian */
12845 uint64_t reserved_0_22 : 23;
12846 uint64_t addr : 41; /**< [ 63: 23](R/W) The starting address of the 8 MB BAR0 address space. */
12847 #endif /* Word 0 - End */
12848 } cn83xx;
12849 };
12850 typedef union bdk_pemx_p2n_bar0_start bdk_pemx_p2n_bar0_start_t;
12851
12852 static inline uint64_t BDK_PEMX_P2N_BAR0_START(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_P2N_BAR0_START(unsigned long a)12853 static inline uint64_t BDK_PEMX_P2N_BAR0_START(unsigned long a)
12854 {
12855 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
12856 return 0x87e0c0000080ll + 0x1000000ll * ((a) & 0x3);
12857 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12858 return 0x87e0c0000080ll + 0x1000000ll * ((a) & 0x3);
12859 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
12860 return 0x87e0c0000080ll + 0x1000000ll * ((a) & 0x7);
12861 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
12862 return 0x8e0000000148ll + 0x1000000000ll * ((a) & 0x3);
12863 __bdk_csr_fatal("PEMX_P2N_BAR0_START", 1, a, 0, 0, 0);
12864 }
12865
12866 #define typedef_BDK_PEMX_P2N_BAR0_START(a) bdk_pemx_p2n_bar0_start_t
12867 #define bustype_BDK_PEMX_P2N_BAR0_START(a) BDK_CSR_TYPE_NCB
12868 #define basename_BDK_PEMX_P2N_BAR0_START(a) "PEMX_P2N_BAR0_START"
12869 #define device_bar_BDK_PEMX_P2N_BAR0_START(a) 0x0 /* PF_BAR0 */
12870 #define busnum_BDK_PEMX_P2N_BAR0_START(a) (a)
12871 #define arguments_BDK_PEMX_P2N_BAR0_START(a) (a),-1,-1,-1
12872
12873 /**
12874 * Register (RSL) pem#_p2n_bar1_start
12875 *
12876 * PEM PCIe to SLI BAR1 Start Register
12877 * This register specifies the starting address for memory requests that are to be forwarded to
12878 * the SLI in RC mode.
12879 */
12880 union bdk_pemx_p2n_bar1_start
12881 {
12882 uint64_t u;
12883 struct bdk_pemx_p2n_bar1_start_s
12884 {
12885 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12886 uint64_t addr : 38; /**< [ 63: 26](R/W) The starting address of the 64 MB BAR1 address space. */
12887 uint64_t reserved_0_25 : 26;
12888 #else /* Word 0 - Little Endian */
12889 uint64_t reserved_0_25 : 26;
12890 uint64_t addr : 38; /**< [ 63: 26](R/W) The starting address of the 64 MB BAR1 address space. */
12891 #endif /* Word 0 - End */
12892 } s;
12893 /* struct bdk_pemx_p2n_bar1_start_s cn; */
12894 };
12895 typedef union bdk_pemx_p2n_bar1_start bdk_pemx_p2n_bar1_start_t;
12896
12897 static inline uint64_t BDK_PEMX_P2N_BAR1_START(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_P2N_BAR1_START(unsigned long a)12898 static inline uint64_t BDK_PEMX_P2N_BAR1_START(unsigned long a)
12899 {
12900 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
12901 return 0x87e0c0000088ll + 0x1000000ll * ((a) & 0x3);
12902 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12903 return 0x87e0c0000088ll + 0x1000000ll * ((a) & 0x3);
12904 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
12905 return 0x87e0c0000088ll + 0x1000000ll * ((a) & 0x7);
12906 __bdk_csr_fatal("PEMX_P2N_BAR1_START", 1, a, 0, 0, 0);
12907 }
12908
12909 #define typedef_BDK_PEMX_P2N_BAR1_START(a) bdk_pemx_p2n_bar1_start_t
12910 #define bustype_BDK_PEMX_P2N_BAR1_START(a) BDK_CSR_TYPE_RSL
12911 #define basename_BDK_PEMX_P2N_BAR1_START(a) "PEMX_P2N_BAR1_START"
12912 #define device_bar_BDK_PEMX_P2N_BAR1_START(a) 0x0 /* PF_BAR0 */
12913 #define busnum_BDK_PEMX_P2N_BAR1_START(a) (a)
12914 #define arguments_BDK_PEMX_P2N_BAR1_START(a) (a),-1,-1,-1
12915
12916 /**
12917 * Register (NCB) pem#_p2n_bar2_start
12918 *
12919 * PEM PCIe RC BAR2 Start Register
12920 * This register specifies the starting address for memory requests that are to be forwarded to
12921 * NCB/EBUS in RC mode. In EP mode, the standard PCIe config space BAR registers are used, and
12922 * this register is ignored.
12923 *
12924 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
12925 *
12926 * This register is reset on PEM domain reset.
12927 */
12928 union bdk_pemx_p2n_bar2_start
12929 {
12930 uint64_t u;
12931 struct bdk_pemx_p2n_bar2_start_s
12932 {
12933 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12934 uint64_t reserved_0_63 : 64;
12935 #else /* Word 0 - Little Endian */
12936 uint64_t reserved_0_63 : 64;
12937 #endif /* Word 0 - End */
12938 } s;
12939 struct bdk_pemx_p2n_bar2_start_cn9
12940 {
12941 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12942 uint64_t addr : 44; /**< [ 63: 20](R/W) The starting address of the BAR2 address space, sized as configured by the
12943 PEM()_BAR_CTL[BAR2_SIZ] which defaults to ADDR\<63:50\> and used to determine a RC BAR2 hit. */
12944 uint64_t reserved_0_19 : 20;
12945 #else /* Word 0 - Little Endian */
12946 uint64_t reserved_0_19 : 20;
12947 uint64_t addr : 44; /**< [ 63: 20](R/W) The starting address of the BAR2 address space, sized as configured by the
12948 PEM()_BAR_CTL[BAR2_SIZ] which defaults to ADDR\<63:50\> and used to determine a RC BAR2 hit. */
12949 #endif /* Word 0 - End */
12950 } cn9;
12951 struct bdk_pemx_p2n_bar2_start_cn81xx
12952 {
12953 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12954 uint64_t addr : 14; /**< [ 63: 50](R/W) The starting address of the 2^50 address space
12955 that is the BAR2 address space. */
12956 uint64_t spares : 2; /**< [ 49: 48](R/W) Spare flops. */
12957 uint64_t reserved_0_47 : 48;
12958 #else /* Word 0 - Little Endian */
12959 uint64_t reserved_0_47 : 48;
12960 uint64_t spares : 2; /**< [ 49: 48](R/W) Spare flops. */
12961 uint64_t addr : 14; /**< [ 63: 50](R/W) The starting address of the 2^50 address space
12962 that is the BAR2 address space. */
12963 #endif /* Word 0 - End */
12964 } cn81xx;
12965 /* struct bdk_pemx_p2n_bar2_start_cn81xx cn88xx; */
12966 struct bdk_pemx_p2n_bar2_start_cn83xx
12967 {
12968 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12969 uint64_t addr : 44; /**< [ 63: 20](R/W) The starting address of the BAR2 address space, sized as configured by the
12970 PEM()_BAR_CTL[BAR2_SIZ]
12971 which defaults to ADDR\<63:50\> and used to determine a RC bar2 hit. */
12972 uint64_t reserved_0_19 : 20;
12973 #else /* Word 0 - Little Endian */
12974 uint64_t reserved_0_19 : 20;
12975 uint64_t addr : 44; /**< [ 63: 20](R/W) The starting address of the BAR2 address space, sized as configured by the
12976 PEM()_BAR_CTL[BAR2_SIZ]
12977 which defaults to ADDR\<63:50\> and used to determine a RC bar2 hit. */
12978 #endif /* Word 0 - End */
12979 } cn83xx;
12980 };
12981 typedef union bdk_pemx_p2n_bar2_start bdk_pemx_p2n_bar2_start_t;
12982
12983 static inline uint64_t BDK_PEMX_P2N_BAR2_START(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_P2N_BAR2_START(unsigned long a)12984 static inline uint64_t BDK_PEMX_P2N_BAR2_START(unsigned long a)
12985 {
12986 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
12987 return 0x87e0c0000090ll + 0x1000000ll * ((a) & 0x3);
12988 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12989 return 0x87e0c0000090ll + 0x1000000ll * ((a) & 0x3);
12990 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
12991 return 0x87e0c0000090ll + 0x1000000ll * ((a) & 0x7);
12992 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
12993 return 0x8e0000000140ll + 0x1000000000ll * ((a) & 0x3);
12994 __bdk_csr_fatal("PEMX_P2N_BAR2_START", 1, a, 0, 0, 0);
12995 }
12996
12997 #define typedef_BDK_PEMX_P2N_BAR2_START(a) bdk_pemx_p2n_bar2_start_t
12998 #define bustype_BDK_PEMX_P2N_BAR2_START(a) BDK_CSR_TYPE_NCB
12999 #define basename_BDK_PEMX_P2N_BAR2_START(a) "PEMX_P2N_BAR2_START"
13000 #define device_bar_BDK_PEMX_P2N_BAR2_START(a) 0x0 /* PF_BAR0 */
13001 #define busnum_BDK_PEMX_P2N_BAR2_START(a) (a)
13002 #define arguments_BDK_PEMX_P2N_BAR2_START(a) (a),-1,-1,-1
13003
13004 /**
13005 * Register (NCB) pem#_p2n_bar4_start
13006 *
13007 * PEM PCIe RC BAR4 Start Register
13008 * This register specifies the starting address for memory requests that are to be forwarded to
13009 * NCB/EBUS in RC mode. In EP mode, the standard PCIe config space BAR registers are used, and
13010 * this register is ignored.
13011 *
13012 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13013 *
13014 * This register is reset on PEM domain reset.
13015 */
13016 union bdk_pemx_p2n_bar4_start
13017 {
13018 uint64_t u;
13019 struct bdk_pemx_p2n_bar4_start_s
13020 {
13021 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13022 uint64_t addr : 38; /**< [ 63: 26](R/W) The starting address of BAR4 address space. */
13023 uint64_t reserved_0_25 : 26;
13024 #else /* Word 0 - Little Endian */
13025 uint64_t reserved_0_25 : 26;
13026 uint64_t addr : 38; /**< [ 63: 26](R/W) The starting address of BAR4 address space. */
13027 #endif /* Word 0 - End */
13028 } s;
13029 /* struct bdk_pemx_p2n_bar4_start_s cn; */
13030 };
13031 typedef union bdk_pemx_p2n_bar4_start bdk_pemx_p2n_bar4_start_t;
13032
13033 static inline uint64_t BDK_PEMX_P2N_BAR4_START(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_P2N_BAR4_START(unsigned long a)13034 static inline uint64_t BDK_PEMX_P2N_BAR4_START(unsigned long a)
13035 {
13036 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
13037 return 0x8e0000000138ll + 0x1000000000ll * ((a) & 0x3);
13038 __bdk_csr_fatal("PEMX_P2N_BAR4_START", 1, a, 0, 0, 0);
13039 }
13040
13041 #define typedef_BDK_PEMX_P2N_BAR4_START(a) bdk_pemx_p2n_bar4_start_t
13042 #define bustype_BDK_PEMX_P2N_BAR4_START(a) BDK_CSR_TYPE_NCB
13043 #define basename_BDK_PEMX_P2N_BAR4_START(a) "PEMX_P2N_BAR4_START"
13044 #define device_bar_BDK_PEMX_P2N_BAR4_START(a) 0x0 /* PF_BAR0 */
13045 #define busnum_BDK_PEMX_P2N_BAR4_START(a) (a)
13046 #define arguments_BDK_PEMX_P2N_BAR4_START(a) (a),-1,-1,-1
13047
13048 /**
13049 * Register (RSL) pem#_p2p_bar#_end
13050 *
13051 * PEM Peer-to-Peer BAR0 End Register
13052 * This register specifies the ending address for memory requests that are to be forwarded to the
13053 * PCIe peer port.
13054 */
13055 union bdk_pemx_p2p_barx_end
13056 {
13057 uint64_t u;
13058 struct bdk_pemx_p2p_barx_end_s
13059 {
13060 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13061 uint64_t addr : 52; /**< [ 63: 12](R/W) The ending address of the address window created by this field and the
13062 PEM_P2P_BAR0_START[63:12] field. The full 64 bits of the address are created by:
13063 {ADDR[63:12], 12'b0}. */
13064 uint64_t reserved_0_11 : 12;
13065 #else /* Word 0 - Little Endian */
13066 uint64_t reserved_0_11 : 12;
13067 uint64_t addr : 52; /**< [ 63: 12](R/W) The ending address of the address window created by this field and the
13068 PEM_P2P_BAR0_START[63:12] field. The full 64 bits of the address are created by:
13069 {ADDR[63:12], 12'b0}. */
13070 #endif /* Word 0 - End */
13071 } s;
13072 /* struct bdk_pemx_p2p_barx_end_s cn; */
13073 };
13074 typedef union bdk_pemx_p2p_barx_end bdk_pemx_p2p_barx_end_t;
13075
13076 static inline uint64_t BDK_PEMX_P2P_BARX_END(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_P2P_BARX_END(unsigned long a,unsigned long b)13077 static inline uint64_t BDK_PEMX_P2P_BARX_END(unsigned long a, unsigned long b)
13078 {
13079 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=3)))
13080 return 0x87e0c0000048ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0x3);
13081 __bdk_csr_fatal("PEMX_P2P_BARX_END", 2, a, b, 0, 0);
13082 }
13083
13084 #define typedef_BDK_PEMX_P2P_BARX_END(a,b) bdk_pemx_p2p_barx_end_t
13085 #define bustype_BDK_PEMX_P2P_BARX_END(a,b) BDK_CSR_TYPE_RSL
13086 #define basename_BDK_PEMX_P2P_BARX_END(a,b) "PEMX_P2P_BARX_END"
13087 #define device_bar_BDK_PEMX_P2P_BARX_END(a,b) 0x0 /* PF_BAR0 */
13088 #define busnum_BDK_PEMX_P2P_BARX_END(a,b) (a)
13089 #define arguments_BDK_PEMX_P2P_BARX_END(a,b) (a),(b),-1,-1
13090
13091 /**
13092 * Register (RSL) pem#_p2p_bar#_start
13093 *
13094 * PEM Peer-to-Peer BAR0 Start Register
13095 * This register specifies the starting address for memory requests that are to be forwarded to
13096 * the PCIe peer port.
13097 */
13098 union bdk_pemx_p2p_barx_start
13099 {
13100 uint64_t u;
13101 struct bdk_pemx_p2p_barx_start_s
13102 {
13103 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13104 uint64_t addr : 52; /**< [ 63: 12](R/W) The starting address of the address window created by this field and the
13105 PEM_P2P_BAR0_END[63:12] field. The full 64-bits of the address are created by:
13106 {ADDR[63:12], 12'b0}. */
13107 uint64_t reserved_2_11 : 10;
13108 uint64_t dst : 2; /**< [ 1: 0](R/W) The destination peer of the address window created by this field and the
13109 PEM_P2P_BAR0_END[63:12] field. It is illegal to configure the destination peer to match
13110 the source. */
13111 #else /* Word 0 - Little Endian */
13112 uint64_t dst : 2; /**< [ 1: 0](R/W) The destination peer of the address window created by this field and the
13113 PEM_P2P_BAR0_END[63:12] field. It is illegal to configure the destination peer to match
13114 the source. */
13115 uint64_t reserved_2_11 : 10;
13116 uint64_t addr : 52; /**< [ 63: 12](R/W) The starting address of the address window created by this field and the
13117 PEM_P2P_BAR0_END[63:12] field. The full 64-bits of the address are created by:
13118 {ADDR[63:12], 12'b0}. */
13119 #endif /* Word 0 - End */
13120 } s;
13121 /* struct bdk_pemx_p2p_barx_start_s cn; */
13122 };
13123 typedef union bdk_pemx_p2p_barx_start bdk_pemx_p2p_barx_start_t;
13124
13125 static inline uint64_t BDK_PEMX_P2P_BARX_START(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_P2P_BARX_START(unsigned long a,unsigned long b)13126 static inline uint64_t BDK_PEMX_P2P_BARX_START(unsigned long a, unsigned long b)
13127 {
13128 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=3)))
13129 return 0x87e0c0000040ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0x3);
13130 __bdk_csr_fatal("PEMX_P2P_BARX_START", 2, a, b, 0, 0);
13131 }
13132
13133 #define typedef_BDK_PEMX_P2P_BARX_START(a,b) bdk_pemx_p2p_barx_start_t
13134 #define bustype_BDK_PEMX_P2P_BARX_START(a,b) BDK_CSR_TYPE_RSL
13135 #define basename_BDK_PEMX_P2P_BARX_START(a,b) "PEMX_P2P_BARX_START"
13136 #define device_bar_BDK_PEMX_P2P_BARX_START(a,b) 0x0 /* PF_BAR0 */
13137 #define busnum_BDK_PEMX_P2P_BARX_START(a,b) (a)
13138 #define arguments_BDK_PEMX_P2P_BARX_START(a,b) (a),(b),-1,-1
13139
13140 /**
13141 * Register (NCB) pem#_perr_status
13142 *
13143 * PEM Parity Error Status Register
13144 * This register contains indications of parity errors detected inside PEM.
13145 *
13146 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13147 *
13148 * This register is reset on PEM domain reset.
13149 */
13150 union bdk_pemx_perr_status
13151 {
13152 uint64_t u;
13153 struct bdk_pemx_perr_status_s
13154 {
13155 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13156 uint64_t reserved_7_63 : 57;
13157 uint64_t mac_rx_perr : 1; /**< [ 6: 6](R/W1C/H) Set when the MAC core has detected a parity error in the receive datapath.
13158 Corresponds to app_parity_errs[2] output from MAC core. */
13159 uint64_t mac_txbe_perr : 1; /**< [ 5: 5](R/W1C/H) Set when the MAC core has detected a parity error in the back end of the transmit
13160 datapath.
13161 Corresponds to app_parity_errs[1] output from MAC core. */
13162 uint64_t mac_txfe_perr : 1; /**< [ 4: 4](R/W1C/H) Set when the MAC core has detected a parity error in the front end of the transmit
13163 datapath.
13164 Corresponds to app_parity_errs[0] output from MAC core. */
13165 uint64_t rasdp : 1; /**< [ 3: 3](R/W1C/H) Set when the MAC core has entered RASDP mode due to an uncorrectable error. */
13166 uint64_t dbe : 1; /**< [ 2: 2](R/W1C/H) Set when an uncorrectable (double-bit) error was detected in a RAM inside PEM. */
13167 uint64_t rx_perr : 1; /**< [ 1: 1](R/W1C/H) Set when a parity error was detected in the receive datapath. */
13168 uint64_t tx_perr : 1; /**< [ 0: 0](R/W1C/H) Set when a parity error was detected in the transmit datapath (only applies to traffic
13169 originating on EBO). */
13170 #else /* Word 0 - Little Endian */
13171 uint64_t tx_perr : 1; /**< [ 0: 0](R/W1C/H) Set when a parity error was detected in the transmit datapath (only applies to traffic
13172 originating on EBO). */
13173 uint64_t rx_perr : 1; /**< [ 1: 1](R/W1C/H) Set when a parity error was detected in the receive datapath. */
13174 uint64_t dbe : 1; /**< [ 2: 2](R/W1C/H) Set when an uncorrectable (double-bit) error was detected in a RAM inside PEM. */
13175 uint64_t rasdp : 1; /**< [ 3: 3](R/W1C/H) Set when the MAC core has entered RASDP mode due to an uncorrectable error. */
13176 uint64_t mac_txfe_perr : 1; /**< [ 4: 4](R/W1C/H) Set when the MAC core has detected a parity error in the front end of the transmit
13177 datapath.
13178 Corresponds to app_parity_errs[0] output from MAC core. */
13179 uint64_t mac_txbe_perr : 1; /**< [ 5: 5](R/W1C/H) Set when the MAC core has detected a parity error in the back end of the transmit
13180 datapath.
13181 Corresponds to app_parity_errs[1] output from MAC core. */
13182 uint64_t mac_rx_perr : 1; /**< [ 6: 6](R/W1C/H) Set when the MAC core has detected a parity error in the receive datapath.
13183 Corresponds to app_parity_errs[2] output from MAC core. */
13184 uint64_t reserved_7_63 : 57;
13185 #endif /* Word 0 - End */
13186 } s;
13187 /* struct bdk_pemx_perr_status_s cn; */
13188 };
13189 typedef union bdk_pemx_perr_status bdk_pemx_perr_status_t;
13190
13191 static inline uint64_t BDK_PEMX_PERR_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_PERR_STATUS(unsigned long a)13192 static inline uint64_t BDK_PEMX_PERR_STATUS(unsigned long a)
13193 {
13194 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
13195 return 0x8e00000001c8ll + 0x1000000000ll * ((a) & 0x3);
13196 __bdk_csr_fatal("PEMX_PERR_STATUS", 1, a, 0, 0, 0);
13197 }
13198
13199 #define typedef_BDK_PEMX_PERR_STATUS(a) bdk_pemx_perr_status_t
13200 #define bustype_BDK_PEMX_PERR_STATUS(a) BDK_CSR_TYPE_NCB
13201 #define basename_BDK_PEMX_PERR_STATUS(a) "PEMX_PERR_STATUS"
13202 #define device_bar_BDK_PEMX_PERR_STATUS(a) 0x0 /* PF_BAR0 */
13203 #define busnum_BDK_PEMX_PERR_STATUS(a) (a)
13204 #define arguments_BDK_PEMX_PERR_STATUS(a) (a),-1,-1,-1
13205
13206 /**
13207 * Register (NCB) pem#_pf#_clr_flr_req
13208 *
13209 * PEM PF Clear FLR Request Register
13210 * This register provides clear request for PCIe PF function level reset (FLR).
13211 *
13212 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13213 *
13214 * This register is reset on MAC reset.
13215 */
13216 union bdk_pemx_pfx_clr_flr_req
13217 {
13218 uint64_t u;
13219 struct bdk_pemx_pfx_clr_flr_req_s
13220 {
13221 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13222 uint64_t reserved_1_63 : 63;
13223 uint64_t clr : 1; /**< [ 0: 0](R/W1C/H) When written with a 1, will cause hardware to clear the FLR condition.
13224 This bit always reads as a zero. */
13225 #else /* Word 0 - Little Endian */
13226 uint64_t clr : 1; /**< [ 0: 0](R/W1C/H) When written with a 1, will cause hardware to clear the FLR condition.
13227 This bit always reads as a zero. */
13228 uint64_t reserved_1_63 : 63;
13229 #endif /* Word 0 - End */
13230 } s;
13231 /* struct bdk_pemx_pfx_clr_flr_req_s cn; */
13232 };
13233 typedef union bdk_pemx_pfx_clr_flr_req bdk_pemx_pfx_clr_flr_req_t;
13234
13235 static inline uint64_t BDK_PEMX_PFX_CLR_FLR_REQ(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_PFX_CLR_FLR_REQ(unsigned long a,unsigned long b)13236 static inline uint64_t BDK_PEMX_PFX_CLR_FLR_REQ(unsigned long a, unsigned long b)
13237 {
13238 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15)))
13239 return 0x8e0000000a00ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf);
13240 __bdk_csr_fatal("PEMX_PFX_CLR_FLR_REQ", 2, a, b, 0, 0);
13241 }
13242
13243 #define typedef_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) bdk_pemx_pfx_clr_flr_req_t
13244 #define bustype_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) BDK_CSR_TYPE_NCB
13245 #define basename_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) "PEMX_PFX_CLR_FLR_REQ"
13246 #define device_bar_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) 0x0 /* PF_BAR0 */
13247 #define busnum_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) (a)
13248 #define arguments_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) (a),(b),-1,-1
13249
13250 /**
13251 * Register (NCB) pem#_pf#_cs#_pfcfg#
13252 *
13253 * PEM PCIe Direct Config PF Registers
13254 * This register is used to modify PF configuration space. It can only be accessed
13255 * using 32-bit instructions (either [DATA_LO] or [DATA_HI] but not both
13256 * simultaneously.)
13257 *
13258 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13259 *
13260 * This register is reset on MAC reset.
13261 */
13262 union bdk_pemx_pfx_csx_pfcfgx
13263 {
13264 uint64_t u;
13265 struct bdk_pemx_pfx_csx_pfcfgx_s
13266 {
13267 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13268 uint64_t data_hi : 32; /**< [ 63: 32](R/W/H) Data bits to write to high config register, or bits read from selected config register. */
13269 uint64_t data_lo : 32; /**< [ 31: 0](R/W/H) Data bits to write to low config register, or bits read from selected config register. */
13270 #else /* Word 0 - Little Endian */
13271 uint64_t data_lo : 32; /**< [ 31: 0](R/W/H) Data bits to write to low config register, or bits read from selected config register. */
13272 uint64_t data_hi : 32; /**< [ 63: 32](R/W/H) Data bits to write to high config register, or bits read from selected config register. */
13273 #endif /* Word 0 - End */
13274 } s;
13275 /* struct bdk_pemx_pfx_csx_pfcfgx_s cn; */
13276 };
13277 typedef union bdk_pemx_pfx_csx_pfcfgx bdk_pemx_pfx_csx_pfcfgx_t;
13278
13279 static inline uint64_t BDK_PEMX_PFX_CSX_PFCFGX(unsigned long a, unsigned long b, unsigned long c, unsigned long d) __attribute__ ((pure, always_inline));
BDK_PEMX_PFX_CSX_PFCFGX(unsigned long a,unsigned long b,unsigned long c,unsigned long d)13280 static inline uint64_t BDK_PEMX_PFX_CSX_PFCFGX(unsigned long a, unsigned long b, unsigned long c, unsigned long d)
13281 {
13282 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15) && (c<=1) && (d<=511)))
13283 return 0x8e0000008000ll + 0x1000000000ll * ((a) & 0x3) + 0x40000ll * ((b) & 0xf) + 0x10000ll * ((c) & 0x1) + 8ll * ((d) & 0x1ff);
13284 __bdk_csr_fatal("PEMX_PFX_CSX_PFCFGX", 4, a, b, c, d);
13285 }
13286
13287 #define typedef_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) bdk_pemx_pfx_csx_pfcfgx_t
13288 #define bustype_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) BDK_CSR_TYPE_NCB
13289 #define basename_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) "PEMX_PFX_CSX_PFCFGX"
13290 #define device_bar_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) 0x0 /* PF_BAR0 */
13291 #define busnum_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) (a)
13292 #define arguments_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) (a),(b),(c),(d)
13293
13294 /**
13295 * Register (NCB) pem#_pf#_ctl_status
13296 *
13297 * PEM PF Control Status Register
13298 * This is a general PF control and status register of the PEM.
13299 * There is a register for each PF.
13300 *
13301 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13302 *
13303 * This register is reset on MAC reset.
13304 */
13305 union bdk_pemx_pfx_ctl_status
13306 {
13307 uint64_t u;
13308 struct bdk_pemx_pfx_ctl_status_s
13309 {
13310 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13311 uint64_t reserved_5_63 : 59;
13312 uint64_t ob_p_cmd : 1; /**< [ 4: 4](WO) Wake up. Writing to a one to set this bit creates a pulse
13313 in the application to wake up the PMC state machine
13314 from a D1, D2 or D3 power state. This bit will always
13315 read a zero.
13316 Upon wake-up, the controller sends a PM_PME message. EP mode.
13317
13318 Internal:
13319 Controls outband_pwrup_cmd input to the DW core. */
13320 uint64_t pf_flr_en : 1; /**< [ 3: 3](R/W) When a PF-FLR occurs, an indication will be sent to the central reset controller.
13321 The reset controller can decide whether to reset the chip core based on this indication.
13322 These bits control which PFs can notify of the reset controller. Bit [16] corresponds to
13323 PF0, Bit [17] corresponds to PF1, etc. If the corresponding bit is set, the PF-FLR will
13324 be forwarded to the reset controller.
13325
13326 Internal:
13327 Indication is on pem__rst_intf.pf_flr */
13328 uint64_t pm_dst : 3; /**< [ 2: 0](RO/H) Current power management DSTATE. There are 3 bits of
13329 D-state for each function.
13330 0x0 = D0.
13331 0x1 = D1.
13332 0x2 = D2.
13333 0x3 = D3.
13334 0x4 = Uninitialized.
13335 0x5 - 0x7 = Reserved. */
13336 #else /* Word 0 - Little Endian */
13337 uint64_t pm_dst : 3; /**< [ 2: 0](RO/H) Current power management DSTATE. There are 3 bits of
13338 D-state for each function.
13339 0x0 = D0.
13340 0x1 = D1.
13341 0x2 = D2.
13342 0x3 = D3.
13343 0x4 = Uninitialized.
13344 0x5 - 0x7 = Reserved. */
13345 uint64_t pf_flr_en : 1; /**< [ 3: 3](R/W) When a PF-FLR occurs, an indication will be sent to the central reset controller.
13346 The reset controller can decide whether to reset the chip core based on this indication.
13347 These bits control which PFs can notify of the reset controller. Bit [16] corresponds to
13348 PF0, Bit [17] corresponds to PF1, etc. If the corresponding bit is set, the PF-FLR will
13349 be forwarded to the reset controller.
13350
13351 Internal:
13352 Indication is on pem__rst_intf.pf_flr */
13353 uint64_t ob_p_cmd : 1; /**< [ 4: 4](WO) Wake up. Writing to a one to set this bit creates a pulse
13354 in the application to wake up the PMC state machine
13355 from a D1, D2 or D3 power state. This bit will always
13356 read a zero.
13357 Upon wake-up, the controller sends a PM_PME message. EP mode.
13358
13359 Internal:
13360 Controls outband_pwrup_cmd input to the DW core. */
13361 uint64_t reserved_5_63 : 59;
13362 #endif /* Word 0 - End */
13363 } s;
13364 /* struct bdk_pemx_pfx_ctl_status_s cn; */
13365 };
13366 typedef union bdk_pemx_pfx_ctl_status bdk_pemx_pfx_ctl_status_t;
13367
13368 static inline uint64_t BDK_PEMX_PFX_CTL_STATUS(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_PFX_CTL_STATUS(unsigned long a,unsigned long b)13369 static inline uint64_t BDK_PEMX_PFX_CTL_STATUS(unsigned long a, unsigned long b)
13370 {
13371 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15)))
13372 return 0x8e0000000800ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf);
13373 __bdk_csr_fatal("PEMX_PFX_CTL_STATUS", 2, a, b, 0, 0);
13374 }
13375
13376 #define typedef_BDK_PEMX_PFX_CTL_STATUS(a,b) bdk_pemx_pfx_ctl_status_t
13377 #define bustype_BDK_PEMX_PFX_CTL_STATUS(a,b) BDK_CSR_TYPE_NCB
13378 #define basename_BDK_PEMX_PFX_CTL_STATUS(a,b) "PEMX_PFX_CTL_STATUS"
13379 #define device_bar_BDK_PEMX_PFX_CTL_STATUS(a,b) 0x0 /* PF_BAR0 */
13380 #define busnum_BDK_PEMX_PFX_CTL_STATUS(a,b) (a)
13381 #define arguments_BDK_PEMX_PFX_CTL_STATUS(a,b) (a),(b),-1,-1
13382
13383 /**
13384 * Register (NCB) pem#_pf#_vf#_vfcfg#
13385 *
13386 * PEM PCIe Direct Config VF Registers
13387 * This register is used to modify VF configuration space. It can only be accessed
13388 * using 32-bit instructions (either [DATA_LO] or [DATA_HI] but not both
13389 * simultaneously.)
13390 *
13391 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13392 *
13393 * This register is reset on MAC reset.
13394 */
13395 union bdk_pemx_pfx_vfx_vfcfgx
13396 {
13397 uint64_t u;
13398 struct bdk_pemx_pfx_vfx_vfcfgx_s
13399 {
13400 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13401 uint64_t data_hi : 32; /**< [ 63: 32](R/W/H) Data bits to write to high config register, or bits read from selected config register. */
13402 uint64_t data_lo : 32; /**< [ 31: 0](R/W/H) Data bits to write to low config register, or bits read from selected config register. */
13403 #else /* Word 0 - Little Endian */
13404 uint64_t data_lo : 32; /**< [ 31: 0](R/W/H) Data bits to write to low config register, or bits read from selected config register. */
13405 uint64_t data_hi : 32; /**< [ 63: 32](R/W/H) Data bits to write to high config register, or bits read from selected config register. */
13406 #endif /* Word 0 - End */
13407 } s;
13408 /* struct bdk_pemx_pfx_vfx_vfcfgx_s cn; */
13409 };
13410 typedef union bdk_pemx_pfx_vfx_vfcfgx bdk_pemx_pfx_vfx_vfcfgx_t;
13411
13412 static inline uint64_t BDK_PEMX_PFX_VFX_VFCFGX(unsigned long a, unsigned long b, unsigned long c, unsigned long d) __attribute__ ((pure, always_inline));
BDK_PEMX_PFX_VFX_VFCFGX(unsigned long a,unsigned long b,unsigned long c,unsigned long d)13413 static inline uint64_t BDK_PEMX_PFX_VFX_VFCFGX(unsigned long a, unsigned long b, unsigned long c, unsigned long d)
13414 {
13415 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15) && (c<=239) && (d<=511)))
13416 return 0x8e0000028000ll + 0x1000000000ll * ((a) & 0x3) + 0x40000ll * ((b) & 0xf) + 0x400000ll * ((c) & 0xff) + 8ll * ((d) & 0x1ff);
13417 __bdk_csr_fatal("PEMX_PFX_VFX_VFCFGX", 4, a, b, c, d);
13418 }
13419
13420 #define typedef_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) bdk_pemx_pfx_vfx_vfcfgx_t
13421 #define bustype_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) BDK_CSR_TYPE_NCB
13422 #define basename_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) "PEMX_PFX_VFX_VFCFGX"
13423 #define device_bar_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) 0x0 /* PF_BAR0 */
13424 #define busnum_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) (a)
13425 #define arguments_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) (a),(b),(c),(d)
13426
13427 /**
13428 * Register (NCB) pem#_ptm_ctl
13429 *
13430 * PEM Miscellaneous Control Register
13431 * This register contains precision timer control bits.
13432 *
13433 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13434 *
13435 * This register is reset on MAC cold reset.
13436 */
13437 union bdk_pemx_ptm_ctl
13438 {
13439 uint64_t u;
13440 struct bdk_pemx_ptm_ctl_s
13441 {
13442 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13443 uint64_t reserved_10_63 : 54;
13444 uint64_t ptm_lcl_cap : 1; /**< [ 9: 9](WO) When set, causes the precision time management local value to be captured in
13445 PEM()_PTM_LCL_TIME. */
13446 uint64_t ptm_mstr_sel : 1; /**< [ 8: 8](R/W) When configured as a root complex, precision time management protocol which
13447 master clock input to use. If configured as an endpoint, this bit is ignored.
13448 0 = Master clock from PTP timestamp.
13449 1 = Master clock from GTI_CC_CNTCV. */
13450 uint64_t ptm_mstr_adj : 8; /**< [ 7: 0](R/W) This value (in ns) is added to the selected ([PTM_MSTR_SEL]) master time input
13451 to account for insertion (including clock domain crossing) delays, before
13452 being presented to the MAC.
13453
13454 To calculate an accurate delay:
13455
13456 [PTM_MSTR_ADJ] = 2 sclk cycles (does not include TBD channel flops) + 3.5 core_clk cycles.
13457
13458 The default value assumes the MAC is operating at GEN1, and there are 2 channel
13459 flops on the master time inputs. */
13460 #else /* Word 0 - Little Endian */
13461 uint64_t ptm_mstr_adj : 8; /**< [ 7: 0](R/W) This value (in ns) is added to the selected ([PTM_MSTR_SEL]) master time input
13462 to account for insertion (including clock domain crossing) delays, before
13463 being presented to the MAC.
13464
13465 To calculate an accurate delay:
13466
13467 [PTM_MSTR_ADJ] = 2 sclk cycles (does not include TBD channel flops) + 3.5 core_clk cycles.
13468
13469 The default value assumes the MAC is operating at GEN1, and there are 2 channel
13470 flops on the master time inputs. */
13471 uint64_t ptm_mstr_sel : 1; /**< [ 8: 8](R/W) When configured as a root complex, precision time management protocol which
13472 master clock input to use. If configured as an endpoint, this bit is ignored.
13473 0 = Master clock from PTP timestamp.
13474 1 = Master clock from GTI_CC_CNTCV. */
13475 uint64_t ptm_lcl_cap : 1; /**< [ 9: 9](WO) When set, causes the precision time management local value to be captured in
13476 PEM()_PTM_LCL_TIME. */
13477 uint64_t reserved_10_63 : 54;
13478 #endif /* Word 0 - End */
13479 } s;
13480 /* struct bdk_pemx_ptm_ctl_s cn; */
13481 };
13482 typedef union bdk_pemx_ptm_ctl bdk_pemx_ptm_ctl_t;
13483
13484 static inline uint64_t BDK_PEMX_PTM_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_PTM_CTL(unsigned long a)13485 static inline uint64_t BDK_PEMX_PTM_CTL(unsigned long a)
13486 {
13487 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
13488 return 0x8e0000000090ll + 0x1000000000ll * ((a) & 0x3);
13489 __bdk_csr_fatal("PEMX_PTM_CTL", 1, a, 0, 0, 0);
13490 }
13491
13492 #define typedef_BDK_PEMX_PTM_CTL(a) bdk_pemx_ptm_ctl_t
13493 #define bustype_BDK_PEMX_PTM_CTL(a) BDK_CSR_TYPE_NCB
13494 #define basename_BDK_PEMX_PTM_CTL(a) "PEMX_PTM_CTL"
13495 #define device_bar_BDK_PEMX_PTM_CTL(a) 0x0 /* PF_BAR0 */
13496 #define busnum_BDK_PEMX_PTM_CTL(a) (a)
13497 #define arguments_BDK_PEMX_PTM_CTL(a) (a),-1,-1,-1
13498
13499 /**
13500 * Register (NCB) pem#_ptm_lcl_time
13501 *
13502 * PEM PTM Time Register
13503 * This register contains the PTM synchronized local time value.
13504 *
13505 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13506 *
13507 * This register is reset on MAC reset.
13508 */
13509 union bdk_pemx_ptm_lcl_time
13510 {
13511 uint64_t u;
13512 struct bdk_pemx_ptm_lcl_time_s
13513 {
13514 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13515 uint64_t val : 64; /**< [ 63: 0](RO/H) When an external hardware trigger occurs, or CSR bit PEM()_PTM_CTL[PTM_LCL_CAP] is written,
13516 the local time as tracked by the precision time management protocol is captured to this
13517 register. */
13518 #else /* Word 0 - Little Endian */
13519 uint64_t val : 64; /**< [ 63: 0](RO/H) When an external hardware trigger occurs, or CSR bit PEM()_PTM_CTL[PTM_LCL_CAP] is written,
13520 the local time as tracked by the precision time management protocol is captured to this
13521 register. */
13522 #endif /* Word 0 - End */
13523 } s;
13524 /* struct bdk_pemx_ptm_lcl_time_s cn; */
13525 };
13526 typedef union bdk_pemx_ptm_lcl_time bdk_pemx_ptm_lcl_time_t;
13527
13528 static inline uint64_t BDK_PEMX_PTM_LCL_TIME(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_PTM_LCL_TIME(unsigned long a)13529 static inline uint64_t BDK_PEMX_PTM_LCL_TIME(unsigned long a)
13530 {
13531 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
13532 return 0x8e0000000098ll + 0x1000000000ll * ((a) & 0x3);
13533 __bdk_csr_fatal("PEMX_PTM_LCL_TIME", 1, a, 0, 0, 0);
13534 }
13535
13536 #define typedef_BDK_PEMX_PTM_LCL_TIME(a) bdk_pemx_ptm_lcl_time_t
13537 #define bustype_BDK_PEMX_PTM_LCL_TIME(a) BDK_CSR_TYPE_NCB
13538 #define basename_BDK_PEMX_PTM_LCL_TIME(a) "PEMX_PTM_LCL_TIME"
13539 #define device_bar_BDK_PEMX_PTM_LCL_TIME(a) 0x0 /* PF_BAR0 */
13540 #define busnum_BDK_PEMX_PTM_LCL_TIME(a) (a)
13541 #define arguments_BDK_PEMX_PTM_LCL_TIME(a) (a),-1,-1,-1
13542
13543 /**
13544 * Register (RSL) pem#_qlm
13545 *
13546 * PEM QLM Configuration Register
13547 * This register configures the PEM QLM.
13548 */
13549 union bdk_pemx_qlm
13550 {
13551 uint64_t u;
13552 struct bdk_pemx_qlm_s
13553 {
13554 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13555 uint64_t reserved_1_63 : 63;
13556 uint64_t pem_bdlm : 1; /**< [ 0: 0](R/W/H) This bit can only be set for PEM2/PEM3, for all other PEMs it has no
13557 function.
13558 PEM2: when set, will be configured to send/receive traffic to DLM4.
13559 when clear, will be configured to send/receive traffic to QLM2/QLM3.
13560 PEM3: when set, will be configured to send/receive traffic to DLM5/DLM6.
13561 when clear, will be configured to send/receive traffic to QLM3.
13562 Note that this bit must only be set when both the associated PHYs and PEM2/PEM3 are in
13563 reset.
13564 These conditions can be assured by setting the PEM(2/3)_ON[PEMON] bit after setting this
13565 bit. */
13566 #else /* Word 0 - Little Endian */
13567 uint64_t pem_bdlm : 1; /**< [ 0: 0](R/W/H) This bit can only be set for PEM2/PEM3, for all other PEMs it has no
13568 function.
13569 PEM2: when set, will be configured to send/receive traffic to DLM4.
13570 when clear, will be configured to send/receive traffic to QLM2/QLM3.
13571 PEM3: when set, will be configured to send/receive traffic to DLM5/DLM6.
13572 when clear, will be configured to send/receive traffic to QLM3.
13573 Note that this bit must only be set when both the associated PHYs and PEM2/PEM3 are in
13574 reset.
13575 These conditions can be assured by setting the PEM(2/3)_ON[PEMON] bit after setting this
13576 bit. */
13577 uint64_t reserved_1_63 : 63;
13578 #endif /* Word 0 - End */
13579 } s;
13580 /* struct bdk_pemx_qlm_s cn; */
13581 };
13582 typedef union bdk_pemx_qlm bdk_pemx_qlm_t;
13583
13584 static inline uint64_t BDK_PEMX_QLM(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_QLM(unsigned long a)13585 static inline uint64_t BDK_PEMX_QLM(unsigned long a)
13586 {
13587 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13588 return 0x87e0c0000418ll + 0x1000000ll * ((a) & 0x3);
13589 __bdk_csr_fatal("PEMX_QLM", 1, a, 0, 0, 0);
13590 }
13591
13592 #define typedef_BDK_PEMX_QLM(a) bdk_pemx_qlm_t
13593 #define bustype_BDK_PEMX_QLM(a) BDK_CSR_TYPE_RSL
13594 #define basename_BDK_PEMX_QLM(a) "PEMX_QLM"
13595 #define device_bar_BDK_PEMX_QLM(a) 0x0 /* PF_BAR0 */
13596 #define busnum_BDK_PEMX_QLM(a) (a)
13597 #define arguments_BDK_PEMX_QLM(a) (a),-1,-1,-1
13598
13599 /**
13600 * Register (NCB) pem#_ras_tba_ctl
13601 *
13602 * PEM RAS Time Based Analysis Control Register
13603 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13604 *
13605 * This register is reset on MAC reset.
13606 */
13607 union bdk_pemx_ras_tba_ctl
13608 {
13609 uint64_t u;
13610 struct bdk_pemx_ras_tba_ctl_s
13611 {
13612 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13613 uint64_t reserved_2_63 : 62;
13614 uint64_t tba_ctrl : 2; /**< [ 1: 0](WO) Controls the start/end of time based analysis (TBA) in the core. Note that TBA can also
13615 be controlled
13616 by setting the contents of PCIEEP()_CFG114/RC()_CFG114, and that TBA_CTRL will also
13617 affect the contents of PCIEEP()_CFG114/RC()_CFG114[TIMER_START].
13618 0x0 = No action.
13619 0x1 = Start time based analysis.
13620 0x2 = End time based analysis.
13621 Only used if PCIEEP()_CFG114/RC()_CFG114[TBASE_DUR_SEL] is set to manual control,
13622 otherwise it is ignored.
13623 0x3 = Reserved. */
13624 #else /* Word 0 - Little Endian */
13625 uint64_t tba_ctrl : 2; /**< [ 1: 0](WO) Controls the start/end of time based analysis (TBA) in the core. Note that TBA can also
13626 be controlled
13627 by setting the contents of PCIEEP()_CFG114/RC()_CFG114, and that TBA_CTRL will also
13628 affect the contents of PCIEEP()_CFG114/RC()_CFG114[TIMER_START].
13629 0x0 = No action.
13630 0x1 = Start time based analysis.
13631 0x2 = End time based analysis.
13632 Only used if PCIEEP()_CFG114/RC()_CFG114[TBASE_DUR_SEL] is set to manual control,
13633 otherwise it is ignored.
13634 0x3 = Reserved. */
13635 uint64_t reserved_2_63 : 62;
13636 #endif /* Word 0 - End */
13637 } s;
13638 /* struct bdk_pemx_ras_tba_ctl_s cn8; */
13639 struct bdk_pemx_ras_tba_ctl_cn9
13640 {
13641 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13642 uint64_t reserved_2_63 : 62;
13643 uint64_t tba_ctrl : 2; /**< [ 1: 0](WO) Controls the start/end of time based analysis (TBA) in the core. Note that TBA can also
13644 be controlled
13645 by setting the contents of PCIERC_RAS_TBA_CTL, and that will also
13646 affect the contents of PCIERC_RAS_TBA_CTL[TIMER_START].
13647 0x0 = No action.
13648 0x1 = Start time based analysis.
13649 0x2 = End time based analysis.
13650 Only used if PCIERC_RAS_TBA_CTL[TBASE_DUR_SEL] is set to manual control,
13651 otherwise it is ignored.
13652 0x3 = Reserved. */
13653 #else /* Word 0 - Little Endian */
13654 uint64_t tba_ctrl : 2; /**< [ 1: 0](WO) Controls the start/end of time based analysis (TBA) in the core. Note that TBA can also
13655 be controlled
13656 by setting the contents of PCIERC_RAS_TBA_CTL, and that will also
13657 affect the contents of PCIERC_RAS_TBA_CTL[TIMER_START].
13658 0x0 = No action.
13659 0x1 = Start time based analysis.
13660 0x2 = End time based analysis.
13661 Only used if PCIERC_RAS_TBA_CTL[TBASE_DUR_SEL] is set to manual control,
13662 otherwise it is ignored.
13663 0x3 = Reserved. */
13664 uint64_t reserved_2_63 : 62;
13665 #endif /* Word 0 - End */
13666 } cn9;
13667 };
13668 typedef union bdk_pemx_ras_tba_ctl bdk_pemx_ras_tba_ctl_t;
13669
13670 static inline uint64_t BDK_PEMX_RAS_TBA_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_RAS_TBA_CTL(unsigned long a)13671 static inline uint64_t BDK_PEMX_RAS_TBA_CTL(unsigned long a)
13672 {
13673 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13674 return 0x87e0c0000240ll + 0x1000000ll * ((a) & 0x3);
13675 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
13676 return 0x8e0000000060ll + 0x1000000000ll * ((a) & 0x3);
13677 __bdk_csr_fatal("PEMX_RAS_TBA_CTL", 1, a, 0, 0, 0);
13678 }
13679
13680 #define typedef_BDK_PEMX_RAS_TBA_CTL(a) bdk_pemx_ras_tba_ctl_t
13681 #define bustype_BDK_PEMX_RAS_TBA_CTL(a) BDK_CSR_TYPE_NCB
13682 #define basename_BDK_PEMX_RAS_TBA_CTL(a) "PEMX_RAS_TBA_CTL"
13683 #define device_bar_BDK_PEMX_RAS_TBA_CTL(a) 0x0 /* PF_BAR0 */
13684 #define busnum_BDK_PEMX_RAS_TBA_CTL(a) (a)
13685 #define arguments_BDK_PEMX_RAS_TBA_CTL(a) (a),-1,-1,-1
13686
13687 /**
13688 * Register (NCB) pem#_reads_pc
13689 *
13690 * PEM Read Count Register
13691 * This register contains read count for debugging purposes.
13692 *
13693 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13694 *
13695 * This register is reset on PEM domain reset.
13696 */
13697 union bdk_pemx_reads_pc
13698 {
13699 uint64_t u;
13700 struct bdk_pemx_reads_pc_s
13701 {
13702 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13703 uint64_t reads : 64; /**< [ 63: 0](RO/H) Total number of SLI reads from remote memory aggregated across all
13704 non-masked SWI tags. Software can calculate the average read latency
13705 to first data per SLI read request by dividing PEM()_LATENCY_PC[LATENCY]
13706 by PEM()_READS_PC[READS]. */
13707 #else /* Word 0 - Little Endian */
13708 uint64_t reads : 64; /**< [ 63: 0](RO/H) Total number of SLI reads from remote memory aggregated across all
13709 non-masked SWI tags. Software can calculate the average read latency
13710 to first data per SLI read request by dividing PEM()_LATENCY_PC[LATENCY]
13711 by PEM()_READS_PC[READS]. */
13712 #endif /* Word 0 - End */
13713 } s;
13714 /* struct bdk_pemx_reads_pc_s cn8; */
13715 struct bdk_pemx_reads_pc_cn9
13716 {
13717 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13718 uint64_t reads : 64; /**< [ 63: 0](R/W/H) Total number of NCBO or EBO reads from remote memory since latency tracking logic was
13719 enabled. PEM()_LATENCY_PC_CTL[EBO_SEL] controls which outbound bus has its reads
13720 latency tracked. This register can only be written by software when
13721 PEM()_LATENCY_PC_CTL[ACTIVE] is clear. Software can calculate the average read
13722 latency through PEM and external PCIe interface with the following calculation:
13723 * Average Latency = PEM()_LATENCY_PC[LATENCY] / PEM()_READS_PC[READS] * 10 ns
13724 This calculation can be done at any time while PEM()_LATENCY_PC_CTL[ACTIVE] is set,
13725 but will only be fully accurate by following the control flow outlined in the
13726 PEM()_LATENCY_PC_CTL[ACTIVE] description. */
13727 #else /* Word 0 - Little Endian */
13728 uint64_t reads : 64; /**< [ 63: 0](R/W/H) Total number of NCBO or EBO reads from remote memory since latency tracking logic was
13729 enabled. PEM()_LATENCY_PC_CTL[EBO_SEL] controls which outbound bus has its reads
13730 latency tracked. This register can only be written by software when
13731 PEM()_LATENCY_PC_CTL[ACTIVE] is clear. Software can calculate the average read
13732 latency through PEM and external PCIe interface with the following calculation:
13733 * Average Latency = PEM()_LATENCY_PC[LATENCY] / PEM()_READS_PC[READS] * 10 ns
13734 This calculation can be done at any time while PEM()_LATENCY_PC_CTL[ACTIVE] is set,
13735 but will only be fully accurate by following the control flow outlined in the
13736 PEM()_LATENCY_PC_CTL[ACTIVE] description. */
13737 #endif /* Word 0 - End */
13738 } cn9;
13739 };
13740 typedef union bdk_pemx_reads_pc bdk_pemx_reads_pc_t;
13741
13742 static inline uint64_t BDK_PEMX_READS_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_READS_PC(unsigned long a)13743 static inline uint64_t BDK_PEMX_READS_PC(unsigned long a)
13744 {
13745 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13746 return 0x87e0c0000498ll + 0x1000000ll * ((a) & 0x3);
13747 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
13748 return 0x8e0000000110ll + 0x1000000000ll * ((a) & 0x3);
13749 __bdk_csr_fatal("PEMX_READS_PC", 1, a, 0, 0, 0);
13750 }
13751
13752 #define typedef_BDK_PEMX_READS_PC(a) bdk_pemx_reads_pc_t
13753 #define bustype_BDK_PEMX_READS_PC(a) BDK_CSR_TYPE_NCB
13754 #define basename_BDK_PEMX_READS_PC(a) "PEMX_READS_PC"
13755 #define device_bar_BDK_PEMX_READS_PC(a) 0x0 /* PF_BAR0 */
13756 #define busnum_BDK_PEMX_READS_PC(a) (a)
13757 #define arguments_BDK_PEMX_READS_PC(a) (a),-1,-1,-1
13758
13759 /**
13760 * Register (NCB) pem#_reg_ctl
13761 *
13762 * PEM CSR Control Register
13763 * This register contains control for register accesses.
13764 *
13765 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13766 *
13767 * This register is reset on PEM domain reset.
13768 */
13769 union bdk_pemx_reg_ctl
13770 {
13771 uint64_t u;
13772 struct bdk_pemx_reg_ctl_s
13773 {
13774 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13775 uint64_t reserved_6_63 : 58;
13776 uint64_t gia_timeout : 6; /**< [ 5: 0](R/W) GIA timeout (2^[GIA_TIMEOUT] clock cycles). Timeout for MSI-X commits. When zero, wait
13777 for commits is disabled. */
13778 #else /* Word 0 - Little Endian */
13779 uint64_t gia_timeout : 6; /**< [ 5: 0](R/W) GIA timeout (2^[GIA_TIMEOUT] clock cycles). Timeout for MSI-X commits. When zero, wait
13780 for commits is disabled. */
13781 uint64_t reserved_6_63 : 58;
13782 #endif /* Word 0 - End */
13783 } s;
13784 /* struct bdk_pemx_reg_ctl_s cn; */
13785 };
13786 typedef union bdk_pemx_reg_ctl bdk_pemx_reg_ctl_t;
13787
13788 static inline uint64_t BDK_PEMX_REG_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_REG_CTL(unsigned long a)13789 static inline uint64_t BDK_PEMX_REG_CTL(unsigned long a)
13790 {
13791 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
13792 return 0x8e0000000058ll + 0x1000000000ll * ((a) & 0x3);
13793 __bdk_csr_fatal("PEMX_REG_CTL", 1, a, 0, 0, 0);
13794 }
13795
13796 #define typedef_BDK_PEMX_REG_CTL(a) bdk_pemx_reg_ctl_t
13797 #define bustype_BDK_PEMX_REG_CTL(a) BDK_CSR_TYPE_NCB
13798 #define basename_BDK_PEMX_REG_CTL(a) "PEMX_REG_CTL"
13799 #define device_bar_BDK_PEMX_REG_CTL(a) 0x0 /* PF_BAR0 */
13800 #define busnum_BDK_PEMX_REG_CTL(a) (a)
13801 #define arguments_BDK_PEMX_REG_CTL(a) (a),-1,-1,-1
13802
13803 /**
13804 * Register (NCB) pem#_reg_huge#_acc
13805 *
13806 * PEM Huge Region Access Registers
13807 * These registers contains address index and control bits for access to memory from cores.
13808 * Indexed using NCBO address\<45:38\>.
13809 *
13810 * For discovery of the size of this register and fields, see PEM()_CONST_ACC.
13811 *
13812 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13813 *
13814 * This register is reset on PEM domain reset.
13815 */
13816 union bdk_pemx_reg_hugex_acc
13817 {
13818 uint64_t u;
13819 struct bdk_pemx_reg_hugex_acc_s
13820 {
13821 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13822 uint64_t reserved_62_63 : 2;
13823 uint64_t vf : 8; /**< [ 61: 54](R/W) Virtual function number associated with this access. In RC mode, this
13824 field must be zero. */
13825 uint64_t vf_active : 1; /**< [ 53: 53](R/W) Access is to virtual function if set. Access is to physical function if
13826 clear. */
13827 uint64_t reserved_50_52 : 3;
13828 uint64_t pf : 4; /**< [ 49: 46](R/W) Physical function number associated with this access. In RC mode, this
13829 field must be zero. */
13830 uint64_t ctype : 2; /**< [ 45: 44](R/W) The command type to be generated:
13831 0x0 = PCI memory.
13832 0x1 = PCI configuration. Only operations that access bytes within a single aligned dword
13833 are supported. Note normally the ECAM would be used in place of this CTYPE.
13834 0x2 = PCI I/O. Only operations that access bytes within a single aligned dword are supported.
13835 0x3 = Reserved. */
13836 uint64_t zero : 1; /**< [ 43: 43](R/W) Causes load operations that are eight bytes or less and stay within a single aligned quadword
13837 to become zero-length read operations which will return zeros to the EXEC for all read
13838 data.
13839 Load operations that do not meet the size/alignment requirements above and have [ZERO] set
13840 will have unpredictable behavior.
13841
13842 Internal:
13843 When hardware encounters an improperly formed load operation with [ZERO] set, it
13844 will drop the load internally and form up a properly sized completion with fault
13845 over NCBI to attempt to indicate an error condition. */
13846 uint64_t wnmerge : 1; /**< [ 42: 42](R/W) When set, no write merging is allowed in this window. */
13847 uint64_t rnmerge : 1; /**< [ 41: 41](R/W) When set, no read merging is allowed in this window. */
13848 uint64_t wtype : 3; /**< [ 40: 38](R/W) Write type. ADDRTYPE\<2:0\> for write operations to this region.
13849 ADDRTYPE\<0\> is the relaxed-order attribute.
13850 ADDRTYPE\<1\> is the no-snoop attribute.
13851 ADDRTYPE\<2\> is the id-based ordering attribute. */
13852 uint64_t rtype : 3; /**< [ 37: 35](R/W) Read type. ADDRTYPE\<2:0\> for read operations to this region.
13853 ADDRTYPE\<0\> is the relaxed-order attribute.
13854 ADDRTYPE\<1\> is the no-snoop attribute.
13855 ADDRTYPE\<2\> is the id-based ordering attribute. */
13856 uint64_t reserved_26_34 : 9;
13857 uint64_t ba : 26; /**< [ 25: 0](R/W) Bus address. Address bits\<63:38\> for read/write operations that use this region. */
13858 #else /* Word 0 - Little Endian */
13859 uint64_t ba : 26; /**< [ 25: 0](R/W) Bus address. Address bits\<63:38\> for read/write operations that use this region. */
13860 uint64_t reserved_26_34 : 9;
13861 uint64_t rtype : 3; /**< [ 37: 35](R/W) Read type. ADDRTYPE\<2:0\> for read operations to this region.
13862 ADDRTYPE\<0\> is the relaxed-order attribute.
13863 ADDRTYPE\<1\> is the no-snoop attribute.
13864 ADDRTYPE\<2\> is the id-based ordering attribute. */
13865 uint64_t wtype : 3; /**< [ 40: 38](R/W) Write type. ADDRTYPE\<2:0\> for write operations to this region.
13866 ADDRTYPE\<0\> is the relaxed-order attribute.
13867 ADDRTYPE\<1\> is the no-snoop attribute.
13868 ADDRTYPE\<2\> is the id-based ordering attribute. */
13869 uint64_t rnmerge : 1; /**< [ 41: 41](R/W) When set, no read merging is allowed in this window. */
13870 uint64_t wnmerge : 1; /**< [ 42: 42](R/W) When set, no write merging is allowed in this window. */
13871 uint64_t zero : 1; /**< [ 43: 43](R/W) Causes load operations that are eight bytes or less and stay within a single aligned quadword
13872 to become zero-length read operations which will return zeros to the EXEC for all read
13873 data.
13874 Load operations that do not meet the size/alignment requirements above and have [ZERO] set
13875 will have unpredictable behavior.
13876
13877 Internal:
13878 When hardware encounters an improperly formed load operation with [ZERO] set, it
13879 will drop the load internally and form up a properly sized completion with fault
13880 over NCBI to attempt to indicate an error condition. */
13881 uint64_t ctype : 2; /**< [ 45: 44](R/W) The command type to be generated:
13882 0x0 = PCI memory.
13883 0x1 = PCI configuration. Only operations that access bytes within a single aligned dword
13884 are supported. Note normally the ECAM would be used in place of this CTYPE.
13885 0x2 = PCI I/O. Only operations that access bytes within a single aligned dword are supported.
13886 0x3 = Reserved. */
13887 uint64_t pf : 4; /**< [ 49: 46](R/W) Physical function number associated with this access. In RC mode, this
13888 field must be zero. */
13889 uint64_t reserved_50_52 : 3;
13890 uint64_t vf_active : 1; /**< [ 53: 53](R/W) Access is to virtual function if set. Access is to physical function if
13891 clear. */
13892 uint64_t vf : 8; /**< [ 61: 54](R/W) Virtual function number associated with this access. In RC mode, this
13893 field must be zero. */
13894 uint64_t reserved_62_63 : 2;
13895 #endif /* Word 0 - End */
13896 } s;
13897 /* struct bdk_pemx_reg_hugex_acc_s cn; */
13898 };
13899 typedef union bdk_pemx_reg_hugex_acc bdk_pemx_reg_hugex_acc_t;
13900
13901 static inline uint64_t BDK_PEMX_REG_HUGEX_ACC(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_REG_HUGEX_ACC(unsigned long a,unsigned long b)13902 static inline uint64_t BDK_PEMX_REG_HUGEX_ACC(unsigned long a, unsigned long b)
13903 {
13904 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=255)))
13905 return 0x8e0000006000ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xff);
13906 __bdk_csr_fatal("PEMX_REG_HUGEX_ACC", 2, a, b, 0, 0);
13907 }
13908
13909 #define typedef_BDK_PEMX_REG_HUGEX_ACC(a,b) bdk_pemx_reg_hugex_acc_t
13910 #define bustype_BDK_PEMX_REG_HUGEX_ACC(a,b) BDK_CSR_TYPE_NCB
13911 #define basename_BDK_PEMX_REG_HUGEX_ACC(a,b) "PEMX_REG_HUGEX_ACC"
13912 #define device_bar_BDK_PEMX_REG_HUGEX_ACC(a,b) 0x0 /* PF_BAR0 */
13913 #define busnum_BDK_PEMX_REG_HUGEX_ACC(a,b) (a)
13914 #define arguments_BDK_PEMX_REG_HUGEX_ACC(a,b) (a),(b),-1,-1
13915
13916 /**
13917 * Register (NCB) pem#_reg_huge#_acc2
13918 *
13919 * PEM Huge Region Access 2 Registers
13920 * These registers contains address index and control bits for access to memory from cores.
13921 * Indexed using NCBO address\<45:38\>.
13922 *
13923 * For discovery of the size of this register and fields, see PEM()_CONST_ACC.
13924 *
13925 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13926 *
13927 * This register is reset on PEM domain reset.
13928 */
13929 union bdk_pemx_reg_hugex_acc2
13930 {
13931 uint64_t u;
13932 struct bdk_pemx_reg_hugex_acc2_s
13933 {
13934 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13935 uint64_t reserved_0_63 : 64;
13936 #else /* Word 0 - Little Endian */
13937 uint64_t reserved_0_63 : 64;
13938 #endif /* Word 0 - End */
13939 } s;
13940 /* struct bdk_pemx_reg_hugex_acc2_s cn; */
13941 };
13942 typedef union bdk_pemx_reg_hugex_acc2 bdk_pemx_reg_hugex_acc2_t;
13943
13944 static inline uint64_t BDK_PEMX_REG_HUGEX_ACC2(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_REG_HUGEX_ACC2(unsigned long a,unsigned long b)13945 static inline uint64_t BDK_PEMX_REG_HUGEX_ACC2(unsigned long a, unsigned long b)
13946 {
13947 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=255)))
13948 return 0x8e0000006008ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xff);
13949 __bdk_csr_fatal("PEMX_REG_HUGEX_ACC2", 2, a, b, 0, 0);
13950 }
13951
13952 #define typedef_BDK_PEMX_REG_HUGEX_ACC2(a,b) bdk_pemx_reg_hugex_acc2_t
13953 #define bustype_BDK_PEMX_REG_HUGEX_ACC2(a,b) BDK_CSR_TYPE_NCB
13954 #define basename_BDK_PEMX_REG_HUGEX_ACC2(a,b) "PEMX_REG_HUGEX_ACC2"
13955 #define device_bar_BDK_PEMX_REG_HUGEX_ACC2(a,b) 0x0 /* PF_BAR0 */
13956 #define busnum_BDK_PEMX_REG_HUGEX_ACC2(a,b) (a)
13957 #define arguments_BDK_PEMX_REG_HUGEX_ACC2(a,b) (a),(b),-1,-1
13958
13959 /**
13960 * Register (NCB) pem#_reg_norm#_acc
13961 *
13962 * PEM Normal Region Access Registers
13963 * These registers contains address index and control bits for access to memory from cores.
13964 * Indexed using NCBO address\<38:31\>.
13965 *
13966 * See PEM()_CONST_ACC.
13967 *
13968 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
13969 *
13970 * This register is reset on PEM domain reset.
13971 */
13972 union bdk_pemx_reg_normx_acc
13973 {
13974 uint64_t u;
13975 struct bdk_pemx_reg_normx_acc_s
13976 {
13977 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13978 uint64_t reserved_62_63 : 2;
13979 uint64_t vf : 8; /**< [ 61: 54](R/W) Virtual function number associated with this access. In RC mode, this
13980 field must be zero. */
13981 uint64_t vf_active : 1; /**< [ 53: 53](R/W) Access is to virtual function if set. Access is to physical function if
13982 clear. */
13983 uint64_t reserved_50_52 : 3;
13984 uint64_t pf : 4; /**< [ 49: 46](R/W) Physical function number associated with this access. In RC mode, this
13985 field must be zero. */
13986 uint64_t ctype : 2; /**< [ 45: 44](R/W) The command type to be generated:
13987 0x0 = PCI memory.
13988 0x1 = PCI configuration. Only operations that access bytes within a single aligned dword
13989 are supported. Note normally the ECAM would be used in place of this CTYPE.
13990 0x2 = PCI I/O. Only operations that access bytes within a single aligned dword are supported.
13991 0x3 = Reserved. */
13992 uint64_t zero : 1; /**< [ 43: 43](R/W) Causes load operations that are eight bytes or less and stay within a single aligned quadword
13993 to become zero-length read operations which will return zeros to the EXEC for all read
13994 data.
13995 Load operations that do not meet the size/alignment requirements above and have [ZERO] set
13996 will have unpredictable behavior.
13997
13998 Internal:
13999 When hardware encounters an improperly formed load operation with [ZERO] set, it
14000 will drop the load internally and form up a properly sized completion with fault
14001 over NCBI to attempt to indicate an error condition. */
14002 uint64_t wnmerge : 1; /**< [ 42: 42](R/W) When set, no write merging (aka write combining) is allowed in this
14003 window. Write combining may result in higher performance. Write combining is
14004 legal and typically used in endpoints, or embedded applications. Write combining
14005 is not technically permitted in standard operating system root complexes, but
14006 typically functions correctly. */
14007 uint64_t rnmerge : 1; /**< [ 41: 41](R/W) When set, no read merging (aka read combining) is allowed in this window. Read
14008 combining may result in higher performance. Read combining is typically used in
14009 endpoints, or embedded applications. Read combining is not typically used in
14010 standard operating system root complexes. */
14011 uint64_t wtype : 3; /**< [ 40: 38](R/W) Write type. ADDRTYPE\<2:0\> for write operations to this region.
14012 ADDRTYPE\<0\> is the relaxed-order attribute.
14013 ADDRTYPE\<1\> is the no-snoop attribute.
14014 ADDRTYPE\<2\> is the id-based ordering attribute. */
14015 uint64_t rtype : 3; /**< [ 37: 35](R/W) Read type. ADDRTYPE\<2:0\> for read operations to this region.
14016 ADDRTYPE\<0\> is the relaxed-order attribute.
14017 ADDRTYPE\<1\> is the no-snoop attribute.
14018 ADDRTYPE\<2\> is the id-based ordering attribute. */
14019 uint64_t reserved_33_34 : 2;
14020 uint64_t ba : 33; /**< [ 32: 0](R/W) Bus address. Address bits\<63:31\> for read/write operations that use this region. */
14021 #else /* Word 0 - Little Endian */
14022 uint64_t ba : 33; /**< [ 32: 0](R/W) Bus address. Address bits\<63:31\> for read/write operations that use this region. */
14023 uint64_t reserved_33_34 : 2;
14024 uint64_t rtype : 3; /**< [ 37: 35](R/W) Read type. ADDRTYPE\<2:0\> for read operations to this region.
14025 ADDRTYPE\<0\> is the relaxed-order attribute.
14026 ADDRTYPE\<1\> is the no-snoop attribute.
14027 ADDRTYPE\<2\> is the id-based ordering attribute. */
14028 uint64_t wtype : 3; /**< [ 40: 38](R/W) Write type. ADDRTYPE\<2:0\> for write operations to this region.
14029 ADDRTYPE\<0\> is the relaxed-order attribute.
14030 ADDRTYPE\<1\> is the no-snoop attribute.
14031 ADDRTYPE\<2\> is the id-based ordering attribute. */
14032 uint64_t rnmerge : 1; /**< [ 41: 41](R/W) When set, no read merging (aka read combining) is allowed in this window. Read
14033 combining may result in higher performance. Read combining is typically used in
14034 endpoints, or embedded applications. Read combining is not typically used in
14035 standard operating system root complexes. */
14036 uint64_t wnmerge : 1; /**< [ 42: 42](R/W) When set, no write merging (aka write combining) is allowed in this
14037 window. Write combining may result in higher performance. Write combining is
14038 legal and typically used in endpoints, or embedded applications. Write combining
14039 is not technically permitted in standard operating system root complexes, but
14040 typically functions correctly. */
14041 uint64_t zero : 1; /**< [ 43: 43](R/W) Causes load operations that are eight bytes or less and stay within a single aligned quadword
14042 to become zero-length read operations which will return zeros to the EXEC for all read
14043 data.
14044 Load operations that do not meet the size/alignment requirements above and have [ZERO] set
14045 will have unpredictable behavior.
14046
14047 Internal:
14048 When hardware encounters an improperly formed load operation with [ZERO] set, it
14049 will drop the load internally and form up a properly sized completion with fault
14050 over NCBI to attempt to indicate an error condition. */
14051 uint64_t ctype : 2; /**< [ 45: 44](R/W) The command type to be generated:
14052 0x0 = PCI memory.
14053 0x1 = PCI configuration. Only operations that access bytes within a single aligned dword
14054 are supported. Note normally the ECAM would be used in place of this CTYPE.
14055 0x2 = PCI I/O. Only operations that access bytes within a single aligned dword are supported.
14056 0x3 = Reserved. */
14057 uint64_t pf : 4; /**< [ 49: 46](R/W) Physical function number associated with this access. In RC mode, this
14058 field must be zero. */
14059 uint64_t reserved_50_52 : 3;
14060 uint64_t vf_active : 1; /**< [ 53: 53](R/W) Access is to virtual function if set. Access is to physical function if
14061 clear. */
14062 uint64_t vf : 8; /**< [ 61: 54](R/W) Virtual function number associated with this access. In RC mode, this
14063 field must be zero. */
14064 uint64_t reserved_62_63 : 2;
14065 #endif /* Word 0 - End */
14066 } s;
14067 /* struct bdk_pemx_reg_normx_acc_s cn; */
14068 };
14069 typedef union bdk_pemx_reg_normx_acc bdk_pemx_reg_normx_acc_t;
14070
14071 static inline uint64_t BDK_PEMX_REG_NORMX_ACC(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_REG_NORMX_ACC(unsigned long a,unsigned long b)14072 static inline uint64_t BDK_PEMX_REG_NORMX_ACC(unsigned long a, unsigned long b)
14073 {
14074 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=255)))
14075 return 0x8e0000004000ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xff);
14076 __bdk_csr_fatal("PEMX_REG_NORMX_ACC", 2, a, b, 0, 0);
14077 }
14078
14079 #define typedef_BDK_PEMX_REG_NORMX_ACC(a,b) bdk_pemx_reg_normx_acc_t
14080 #define bustype_BDK_PEMX_REG_NORMX_ACC(a,b) BDK_CSR_TYPE_NCB
14081 #define basename_BDK_PEMX_REG_NORMX_ACC(a,b) "PEMX_REG_NORMX_ACC"
14082 #define device_bar_BDK_PEMX_REG_NORMX_ACC(a,b) 0x0 /* PF_BAR0 */
14083 #define busnum_BDK_PEMX_REG_NORMX_ACC(a,b) (a)
14084 #define arguments_BDK_PEMX_REG_NORMX_ACC(a,b) (a),(b),-1,-1
14085
14086 /**
14087 * Register (NCB) pem#_reg_norm#_acc2
14088 *
14089 * PEM Normal Region Access 2 Registers
14090 * See PEM()_CONST_ACC.
14091 *
14092 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
14093 *
14094 * This register is reset on PEM domain reset.
14095 */
14096 union bdk_pemx_reg_normx_acc2
14097 {
14098 uint64_t u;
14099 struct bdk_pemx_reg_normx_acc2_s
14100 {
14101 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14102 uint64_t reserved_0_63 : 64;
14103 #else /* Word 0 - Little Endian */
14104 uint64_t reserved_0_63 : 64;
14105 #endif /* Word 0 - End */
14106 } s;
14107 /* struct bdk_pemx_reg_normx_acc2_s cn; */
14108 };
14109 typedef union bdk_pemx_reg_normx_acc2 bdk_pemx_reg_normx_acc2_t;
14110
14111 static inline uint64_t BDK_PEMX_REG_NORMX_ACC2(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_PEMX_REG_NORMX_ACC2(unsigned long a,unsigned long b)14112 static inline uint64_t BDK_PEMX_REG_NORMX_ACC2(unsigned long a, unsigned long b)
14113 {
14114 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=255)))
14115 return 0x8e0000004008ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xff);
14116 __bdk_csr_fatal("PEMX_REG_NORMX_ACC2", 2, a, b, 0, 0);
14117 }
14118
14119 #define typedef_BDK_PEMX_REG_NORMX_ACC2(a,b) bdk_pemx_reg_normx_acc2_t
14120 #define bustype_BDK_PEMX_REG_NORMX_ACC2(a,b) BDK_CSR_TYPE_NCB
14121 #define basename_BDK_PEMX_REG_NORMX_ACC2(a,b) "PEMX_REG_NORMX_ACC2"
14122 #define device_bar_BDK_PEMX_REG_NORMX_ACC2(a,b) 0x0 /* PF_BAR0 */
14123 #define busnum_BDK_PEMX_REG_NORMX_ACC2(a,b) (a)
14124 #define arguments_BDK_PEMX_REG_NORMX_ACC2(a,b) (a),(b),-1,-1
14125
14126 /**
14127 * Register (NCB) pem#_rmerge_merged_pc
14128 *
14129 * PEM Merge Reads Merged Performance Counter Register
14130 * This register reports how many reads merged within the outbound read merge unit.
14131 *
14132 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
14133 *
14134 * This register is reset on PEM domain reset.
14135 */
14136 union bdk_pemx_rmerge_merged_pc
14137 {
14138 uint64_t u;
14139 struct bdk_pemx_rmerge_merged_pc_s
14140 {
14141 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14142 uint64_t rmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO read operation mapped to MEM type by the ACC table that merges with a previous
14143 read will increment this count. */
14144 #else /* Word 0 - Little Endian */
14145 uint64_t rmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO read operation mapped to MEM type by the ACC table that merges with a previous
14146 read will increment this count. */
14147 #endif /* Word 0 - End */
14148 } s;
14149 /* struct bdk_pemx_rmerge_merged_pc_s cn; */
14150 };
14151 typedef union bdk_pemx_rmerge_merged_pc bdk_pemx_rmerge_merged_pc_t;
14152
14153 static inline uint64_t BDK_PEMX_RMERGE_MERGED_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_RMERGE_MERGED_PC(unsigned long a)14154 static inline uint64_t BDK_PEMX_RMERGE_MERGED_PC(unsigned long a)
14155 {
14156 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
14157 return 0x8e0000000198ll + 0x1000000000ll * ((a) & 0x3);
14158 __bdk_csr_fatal("PEMX_RMERGE_MERGED_PC", 1, a, 0, 0, 0);
14159 }
14160
14161 #define typedef_BDK_PEMX_RMERGE_MERGED_PC(a) bdk_pemx_rmerge_merged_pc_t
14162 #define bustype_BDK_PEMX_RMERGE_MERGED_PC(a) BDK_CSR_TYPE_NCB
14163 #define basename_BDK_PEMX_RMERGE_MERGED_PC(a) "PEMX_RMERGE_MERGED_PC"
14164 #define device_bar_BDK_PEMX_RMERGE_MERGED_PC(a) 0x0 /* PF_BAR0 */
14165 #define busnum_BDK_PEMX_RMERGE_MERGED_PC(a) (a)
14166 #define arguments_BDK_PEMX_RMERGE_MERGED_PC(a) (a),-1,-1,-1
14167
14168 /**
14169 * Register (NCB) pem#_rmerge_received_pc
14170 *
14171 * PEM Merge Reads Received Performance Counter Register
14172 * This register reports the number of reads that enter the outbound read merge unit.
14173 *
14174 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
14175 *
14176 * This register is reset on PEM domain reset.
14177 */
14178 union bdk_pemx_rmerge_received_pc
14179 {
14180 uint64_t u;
14181 struct bdk_pemx_rmerge_received_pc_s
14182 {
14183 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14184 uint64_t rmerge_reads : 64; /**< [ 63: 0](R/W/H) Each NCBO read operation mapped to MEM type by the ACC table will increment this count. */
14185 #else /* Word 0 - Little Endian */
14186 uint64_t rmerge_reads : 64; /**< [ 63: 0](R/W/H) Each NCBO read operation mapped to MEM type by the ACC table will increment this count. */
14187 #endif /* Word 0 - End */
14188 } s;
14189 /* struct bdk_pemx_rmerge_received_pc_s cn; */
14190 };
14191 typedef union bdk_pemx_rmerge_received_pc bdk_pemx_rmerge_received_pc_t;
14192
14193 static inline uint64_t BDK_PEMX_RMERGE_RECEIVED_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_RMERGE_RECEIVED_PC(unsigned long a)14194 static inline uint64_t BDK_PEMX_RMERGE_RECEIVED_PC(unsigned long a)
14195 {
14196 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
14197 return 0x8e0000000190ll + 0x1000000000ll * ((a) & 0x3);
14198 __bdk_csr_fatal("PEMX_RMERGE_RECEIVED_PC", 1, a, 0, 0, 0);
14199 }
14200
14201 #define typedef_BDK_PEMX_RMERGE_RECEIVED_PC(a) bdk_pemx_rmerge_received_pc_t
14202 #define bustype_BDK_PEMX_RMERGE_RECEIVED_PC(a) BDK_CSR_TYPE_NCB
14203 #define basename_BDK_PEMX_RMERGE_RECEIVED_PC(a) "PEMX_RMERGE_RECEIVED_PC"
14204 #define device_bar_BDK_PEMX_RMERGE_RECEIVED_PC(a) 0x0 /* PF_BAR0 */
14205 #define busnum_BDK_PEMX_RMERGE_RECEIVED_PC(a) (a)
14206 #define arguments_BDK_PEMX_RMERGE_RECEIVED_PC(a) (a),-1,-1,-1
14207
14208 /**
14209 * Register (RSL) pem#_spi_ctl
14210 *
14211 * PEM SPI Control Register
14212 */
14213 union bdk_pemx_spi_ctl
14214 {
14215 uint64_t u;
14216 struct bdk_pemx_spi_ctl_s
14217 {
14218 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14219 uint64_t reserved_34_63 : 30;
14220 uint64_t start_busy : 1; /**< [ 33: 33](R/W/H) Start/busy status. Starts SPI xctn when written; reads 1 when EEPROM busy, 0 when complete. */
14221 uint64_t tvalid : 1; /**< [ 32: 32](R/W/H) Reads 1 if at least one valid entry was read from EEPROM and written to a CSR. Write to
14222 clear status. */
14223 uint64_t cmd : 8; /**< [ 31: 24](R/W/H) SPI command to be passed to the flash memory.
14224 This field will clear when command is complete.
14225
14226 Examples of some commonly used commands:
14227 0x1 = WRSR: Write status register. A single-byte write of
14228 corresponding PEM()_SPI_DATA[DATA\<7:0\>] to the register.
14229 0x2 = PAGE PROGRAM/WRITE: An eight-byte page-mode write of the 64-bits of corresponding
14230 PEM()_SPI_DATA to the memory array. Can only be issued to Sector 0.
14231 Note, most devices require BULK or SECTOR ERASE to set bits first.
14232 0x3 = READ: An eight-byte page-mode read access from the memory array
14233 with result in the 64-bits of corresponding PEM()_SPI_DATA.
14234 Can only be issued to sector 0.
14235 0x4 = WRDI: Clear the write-enable latch (i.e. write protect the device).
14236 0x5 = RDSR: Read status register. A single-byte read access from
14237 the register with result in corresponding PEM()_SPI_DATA[DATA]\<7:0\>.
14238 0x6 = WREN: set the write-enable latch (i.e. allow writes to occur).
14239 0xB = READ DATA HIGHER SPEED: Not supported.
14240 0xAB = WAKE: Release from deep power-down.
14241 0xB9 = SLEEP: Deep power-down.
14242 0xC7 = BULK ERASE: Sets all bits to 1.
14243 0xD8 = SECTOR ERASE: Sets to 1 all bits to the chosen sector (pointed to by [ADR]\<18:15\>).
14244 0x9F = READ ID: a two-byte read access to get device identification
14245 with result in the 64-bits of corresponding PEM()_SPI_DATA. */
14246 uint64_t reserved_19_23 : 5;
14247 uint64_t adr : 19; /**< [ 18: 0](R/W/H) EEPROM CMD byte address.
14248 For READ and PAGE PROGRAM commands, forced to a 8-byte aligned entry in sector 0, so
14249 \<18:16\> and \<2:0\> are forced to zero. For all other commands, the entire ADR is passed.
14250
14251 This field will clear when command is complete. */
14252 #else /* Word 0 - Little Endian */
14253 uint64_t adr : 19; /**< [ 18: 0](R/W/H) EEPROM CMD byte address.
14254 For READ and PAGE PROGRAM commands, forced to a 8-byte aligned entry in sector 0, so
14255 \<18:16\> and \<2:0\> are forced to zero. For all other commands, the entire ADR is passed.
14256
14257 This field will clear when command is complete. */
14258 uint64_t reserved_19_23 : 5;
14259 uint64_t cmd : 8; /**< [ 31: 24](R/W/H) SPI command to be passed to the flash memory.
14260 This field will clear when command is complete.
14261
14262 Examples of some commonly used commands:
14263 0x1 = WRSR: Write status register. A single-byte write of
14264 corresponding PEM()_SPI_DATA[DATA\<7:0\>] to the register.
14265 0x2 = PAGE PROGRAM/WRITE: An eight-byte page-mode write of the 64-bits of corresponding
14266 PEM()_SPI_DATA to the memory array. Can only be issued to Sector 0.
14267 Note, most devices require BULK or SECTOR ERASE to set bits first.
14268 0x3 = READ: An eight-byte page-mode read access from the memory array
14269 with result in the 64-bits of corresponding PEM()_SPI_DATA.
14270 Can only be issued to sector 0.
14271 0x4 = WRDI: Clear the write-enable latch (i.e. write protect the device).
14272 0x5 = RDSR: Read status register. A single-byte read access from
14273 the register with result in corresponding PEM()_SPI_DATA[DATA]\<7:0\>.
14274 0x6 = WREN: set the write-enable latch (i.e. allow writes to occur).
14275 0xB = READ DATA HIGHER SPEED: Not supported.
14276 0xAB = WAKE: Release from deep power-down.
14277 0xB9 = SLEEP: Deep power-down.
14278 0xC7 = BULK ERASE: Sets all bits to 1.
14279 0xD8 = SECTOR ERASE: Sets to 1 all bits to the chosen sector (pointed to by [ADR]\<18:15\>).
14280 0x9F = READ ID: a two-byte read access to get device identification
14281 with result in the 64-bits of corresponding PEM()_SPI_DATA. */
14282 uint64_t tvalid : 1; /**< [ 32: 32](R/W/H) Reads 1 if at least one valid entry was read from EEPROM and written to a CSR. Write to
14283 clear status. */
14284 uint64_t start_busy : 1; /**< [ 33: 33](R/W/H) Start/busy status. Starts SPI xctn when written; reads 1 when EEPROM busy, 0 when complete. */
14285 uint64_t reserved_34_63 : 30;
14286 #endif /* Word 0 - End */
14287 } s;
14288 /* struct bdk_pemx_spi_ctl_s cn; */
14289 };
14290 typedef union bdk_pemx_spi_ctl bdk_pemx_spi_ctl_t;
14291
14292 static inline uint64_t BDK_PEMX_SPI_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_SPI_CTL(unsigned long a)14293 static inline uint64_t BDK_PEMX_SPI_CTL(unsigned long a)
14294 {
14295 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
14296 return 0x87e0c0000180ll + 0x1000000ll * ((a) & 0x3);
14297 __bdk_csr_fatal("PEMX_SPI_CTL", 1, a, 0, 0, 0);
14298 }
14299
14300 #define typedef_BDK_PEMX_SPI_CTL(a) bdk_pemx_spi_ctl_t
14301 #define bustype_BDK_PEMX_SPI_CTL(a) BDK_CSR_TYPE_RSL
14302 #define basename_BDK_PEMX_SPI_CTL(a) "PEMX_SPI_CTL"
14303 #define device_bar_BDK_PEMX_SPI_CTL(a) 0x0 /* PF_BAR0 */
14304 #define busnum_BDK_PEMX_SPI_CTL(a) (a)
14305 #define arguments_BDK_PEMX_SPI_CTL(a) (a),-1,-1,-1
14306
14307 /**
14308 * Register (RSL) pem#_spi_data
14309 *
14310 * PEM SPI Data Register
14311 * This register contains the most recently read or written SPI data and is unpredictable upon
14312 * power-up.
14313 */
14314 union bdk_pemx_spi_data
14315 {
14316 uint64_t u;
14317 struct bdk_pemx_spi_data_s
14318 {
14319 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14320 uint64_t preamble : 16; /**< [ 63: 48](R/W/H) EEPROM PREAMBLE read or write data. */
14321 uint64_t spi_rsvd : 3; /**< [ 47: 45](R/W/H) Reserved. */
14322 uint64_t cs2 : 1; /**< [ 44: 44](R/W/H) EEPROM CS2 read or write data bit. */
14323 uint64_t adr : 12; /**< [ 43: 32](R/W/H) EEPROM CFG ADR read or write data. */
14324 uint64_t data : 32; /**< [ 31: 0](R/W/H) EEPROM DATA read or write data. */
14325 #else /* Word 0 - Little Endian */
14326 uint64_t data : 32; /**< [ 31: 0](R/W/H) EEPROM DATA read or write data. */
14327 uint64_t adr : 12; /**< [ 43: 32](R/W/H) EEPROM CFG ADR read or write data. */
14328 uint64_t cs2 : 1; /**< [ 44: 44](R/W/H) EEPROM CS2 read or write data bit. */
14329 uint64_t spi_rsvd : 3; /**< [ 47: 45](R/W/H) Reserved. */
14330 uint64_t preamble : 16; /**< [ 63: 48](R/W/H) EEPROM PREAMBLE read or write data. */
14331 #endif /* Word 0 - End */
14332 } s;
14333 /* struct bdk_pemx_spi_data_s cn; */
14334 };
14335 typedef union bdk_pemx_spi_data bdk_pemx_spi_data_t;
14336
14337 static inline uint64_t BDK_PEMX_SPI_DATA(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_SPI_DATA(unsigned long a)14338 static inline uint64_t BDK_PEMX_SPI_DATA(unsigned long a)
14339 {
14340 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
14341 return 0x87e0c0000188ll + 0x1000000ll * ((a) & 0x3);
14342 __bdk_csr_fatal("PEMX_SPI_DATA", 1, a, 0, 0, 0);
14343 }
14344
14345 #define typedef_BDK_PEMX_SPI_DATA(a) bdk_pemx_spi_data_t
14346 #define bustype_BDK_PEMX_SPI_DATA(a) BDK_CSR_TYPE_RSL
14347 #define basename_BDK_PEMX_SPI_DATA(a) "PEMX_SPI_DATA"
14348 #define device_bar_BDK_PEMX_SPI_DATA(a) 0x0 /* PF_BAR0 */
14349 #define busnum_BDK_PEMX_SPI_DATA(a) (a)
14350 #define arguments_BDK_PEMX_SPI_DATA(a) (a),-1,-1,-1
14351
14352 /**
14353 * Register (NCB) pem#_strap
14354 *
14355 * PEM Pin Strapping Register
14356 * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
14357 *
14358 * This register is reset on cold reset.
14359 */
14360 union bdk_pemx_strap
14361 {
14362 uint64_t u;
14363 struct bdk_pemx_strap_s
14364 {
14365 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14366 uint64_t reserved_4_63 : 60;
14367 uint64_t pilaneswap : 1; /**< [ 3: 3](RO/H) The value of PCIE_REV_LANES, which is captured on chip cold reset. It is not
14368 affected by any other reset. When set, lane swapping is performed to/from the
14369 SerDes. When clear, no lane swapping is performed. */
14370 uint64_t pilanes8 : 1; /**< [ 2: 2](RO/H) The value of bit \<2\> of PCIE*_MODE\<2:0\>, which is captured on chip cold reset. It is not
14371 affected by any other reset. When set, the PEM is configured for a maximum of
14372 8-lanes, When clear, the PEM is configured for a maximum of 4-lanes. */
14373 uint64_t reserved_0_1 : 2;
14374 #else /* Word 0 - Little Endian */
14375 uint64_t reserved_0_1 : 2;
14376 uint64_t pilanes8 : 1; /**< [ 2: 2](RO/H) The value of bit \<2\> of PCIE*_MODE\<2:0\>, which is captured on chip cold reset. It is not
14377 affected by any other reset. When set, the PEM is configured for a maximum of
14378 8-lanes, When clear, the PEM is configured for a maximum of 4-lanes. */
14379 uint64_t pilaneswap : 1; /**< [ 3: 3](RO/H) The value of PCIE_REV_LANES, which is captured on chip cold reset. It is not
14380 affected by any other reset. When set, lane swapping is performed to/from the
14381 SerDes. When clear, no lane swapping is performed. */
14382 uint64_t reserved_4_63 : 60;
14383 #endif /* Word 0 - End */
14384 } s;
14385 struct bdk_pemx_strap_cn8
14386 {
14387 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14388 uint64_t reserved_4_63 : 60;
14389 uint64_t pilaneswap : 1; /**< [ 3: 3](RO/H) The value of PCIE_REV_LANES, which is captured on chip cold reset. It is not
14390 affected by any other reset. When set, lane swapping is performed to/from the
14391 SerDes. When clear, no lane swapping is performed. */
14392 uint64_t pilanes8 : 1; /**< [ 2: 2](RO/H) The value of bit \<2\> of PCIE*_MODE\<2:0\>, which is captured on chip cold reset. It is not
14393 affected by any other reset. When set, the PEM is configured for a maximum of
14394 8-lanes, When clear, the PEM is configured for a maximum of 4-lanes. */
14395 uint64_t pimode : 2; /**< [ 1: 0](RO/H) The value of PCIE_MODE\<1:0\>, which are captured on chip cold reset. They are
14396 not affected by any other reset.
14397 0x0 = EP mode, Gen1 speed.
14398 0x1 = EP mode, Gen2 speed.
14399 0x2 = EP mode, Gen3 speed.
14400 0x3 = RC mode, defaults to Gen3 speed. */
14401 #else /* Word 0 - Little Endian */
14402 uint64_t pimode : 2; /**< [ 1: 0](RO/H) The value of PCIE_MODE\<1:0\>, which are captured on chip cold reset. They are
14403 not affected by any other reset.
14404 0x0 = EP mode, Gen1 speed.
14405 0x1 = EP mode, Gen2 speed.
14406 0x2 = EP mode, Gen3 speed.
14407 0x3 = RC mode, defaults to Gen3 speed. */
14408 uint64_t pilanes8 : 1; /**< [ 2: 2](RO/H) The value of bit \<2\> of PCIE*_MODE\<2:0\>, which is captured on chip cold reset. It is not
14409 affected by any other reset. When set, the PEM is configured for a maximum of
14410 8-lanes, When clear, the PEM is configured for a maximum of 4-lanes. */
14411 uint64_t pilaneswap : 1; /**< [ 3: 3](RO/H) The value of PCIE_REV_LANES, which is captured on chip cold reset. It is not
14412 affected by any other reset. When set, lane swapping is performed to/from the
14413 SerDes. When clear, no lane swapping is performed. */
14414 uint64_t reserved_4_63 : 60;
14415 #endif /* Word 0 - End */
14416 } cn8;
14417 struct bdk_pemx_strap_cn9
14418 {
14419 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14420 uint64_t reserved_1_63 : 63;
14421 uint64_t pirc : 1; /**< [ 0: 0](RO/H) The inverted value of the endpoint strap (GPIO_STRAP_PIN_E::PCIE0_EP_MODE,
14422 GPIO_STRAP_PIN_E::PCIE2_EP_MODE, 1 for other PEMs) which is captured on chip
14423 cold reset. It is not affected by any other reset. When set, PEM defaults to
14424 root complex mode. When clear, PEM defaults to endpoint mode. */
14425 #else /* Word 0 - Little Endian */
14426 uint64_t pirc : 1; /**< [ 0: 0](RO/H) The inverted value of the endpoint strap (GPIO_STRAP_PIN_E::PCIE0_EP_MODE,
14427 GPIO_STRAP_PIN_E::PCIE2_EP_MODE, 1 for other PEMs) which is captured on chip
14428 cold reset. It is not affected by any other reset. When set, PEM defaults to
14429 root complex mode. When clear, PEM defaults to endpoint mode. */
14430 uint64_t reserved_1_63 : 63;
14431 #endif /* Word 0 - End */
14432 } cn9;
14433 };
14434 typedef union bdk_pemx_strap bdk_pemx_strap_t;
14435
14436 static inline uint64_t BDK_PEMX_STRAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_STRAP(unsigned long a)14437 static inline uint64_t BDK_PEMX_STRAP(unsigned long a)
14438 {
14439 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
14440 return 0x87e0c0000408ll + 0x1000000ll * ((a) & 0x3);
14441 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
14442 return 0x8e00000000c0ll + 0x1000000000ll * ((a) & 0x3);
14443 __bdk_csr_fatal("PEMX_STRAP", 1, a, 0, 0, 0);
14444 }
14445
14446 #define typedef_BDK_PEMX_STRAP(a) bdk_pemx_strap_t
14447 #define bustype_BDK_PEMX_STRAP(a) BDK_CSR_TYPE_NCB
14448 #define basename_BDK_PEMX_STRAP(a) "PEMX_STRAP"
14449 #define device_bar_BDK_PEMX_STRAP(a) 0x0 /* PF_BAR0 */
14450 #define busnum_BDK_PEMX_STRAP(a) (a)
14451 #define arguments_BDK_PEMX_STRAP(a) (a),-1,-1,-1
14452
14453 /**
14454 * Register (RSL) pem#_tlp_credits
14455 *
14456 * PEM TLP Credits Register
14457 * This register specifies the number of credits for use in moving TLPs. When this register is
14458 * written, the credit values are reset to the register value. A write to this register should
14459 * take place before traffic flow starts.
14460 */
14461 union bdk_pemx_tlp_credits
14462 {
14463 uint64_t u;
14464 struct bdk_pemx_tlp_credits_s
14465 {
14466 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14467 uint64_t pem_cpl : 12; /**< [ 63: 52](R/W) TLP 16 B credits for completion TLPs in the peer. Legal values are 0x42 to 0x104. */
14468 uint64_t pem_np : 8; /**< [ 51: 44](R/W) TLP 16 B credits for nonposted TLPs in the peer. Legal values are 0x4 to 0x20. */
14469 uint64_t pem_p : 12; /**< [ 43: 32](R/W) TLP 16 B credits for posted TLPs in the peer. Legal values are 0x42 to 0x104. */
14470 uint64_t reserved_0_31 : 32;
14471 #else /* Word 0 - Little Endian */
14472 uint64_t reserved_0_31 : 32;
14473 uint64_t pem_p : 12; /**< [ 43: 32](R/W) TLP 16 B credits for posted TLPs in the peer. Legal values are 0x42 to 0x104. */
14474 uint64_t pem_np : 8; /**< [ 51: 44](R/W) TLP 16 B credits for nonposted TLPs in the peer. Legal values are 0x4 to 0x20. */
14475 uint64_t pem_cpl : 12; /**< [ 63: 52](R/W) TLP 16 B credits for completion TLPs in the peer. Legal values are 0x42 to 0x104. */
14476 #endif /* Word 0 - End */
14477 } s;
14478 struct bdk_pemx_tlp_credits_cn88xxp1
14479 {
14480 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14481 uint64_t reserved_24_63 : 40;
14482 uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0x80 and this
14483 value is not dependent of the number of PEMS wire-OR'd together. Software should
14484 reprogram this register for performance reasons. */
14485 uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x4 to 0x10 and this
14486 value is not dependent of the number of PEMS wire-OR'd together. Software should
14487 reprogram this register for performance reasons. */
14488 uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Posted TLPs in the SLI. Legal values are 0x24 to 0x80 and this value
14489 is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this
14490 register for performance reasons. */
14491 #else /* Word 0 - Little Endian */
14492 uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Posted TLPs in the SLI. Legal values are 0x24 to 0x80 and this value
14493 is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this
14494 register for performance reasons. */
14495 uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x4 to 0x10 and this
14496 value is not dependent of the number of PEMS wire-OR'd together. Software should
14497 reprogram this register for performance reasons. */
14498 uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0x80 and this
14499 value is not dependent of the number of PEMS wire-OR'd together. Software should
14500 reprogram this register for performance reasons. */
14501 uint64_t reserved_24_63 : 40;
14502 #endif /* Word 0 - End */
14503 } cn88xxp1;
14504 struct bdk_pemx_tlp_credits_cn81xx
14505 {
14506 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14507 uint64_t reserved_24_63 : 40;
14508 uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0x4F
14509 and this value is not dependent of the number of PEMS wire-OR'd
14510 together. Software should reprogram this register for performance reasons. */
14511 uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x8 to 0x17
14512 and this value is not dependent of the number of PEMS wire-OR'd
14513 together. Software should reprogram this register for performance reasons. */
14514 uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x24 to 0x4F
14515 and this value is not dependent of the number of PEMS wire-OR'd
14516 together. Software should reprogram this register for performance reasons. */
14517 #else /* Word 0 - Little Endian */
14518 uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x24 to 0x4F
14519 and this value is not dependent of the number of PEMS wire-OR'd
14520 together. Software should reprogram this register for performance reasons. */
14521 uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x8 to 0x17
14522 and this value is not dependent of the number of PEMS wire-OR'd
14523 together. Software should reprogram this register for performance reasons. */
14524 uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0x4F
14525 and this value is not dependent of the number of PEMS wire-OR'd
14526 together. Software should reprogram this register for performance reasons. */
14527 uint64_t reserved_24_63 : 40;
14528 #endif /* Word 0 - End */
14529 } cn81xx;
14530 struct bdk_pemx_tlp_credits_cn83xx
14531 {
14532 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14533 uint64_t pem_cpl : 12; /**< [ 63: 52](R/W) TLP 16 B credits for completion TLPs in the peer. Legal values are 0x42 to 0x104. */
14534 uint64_t pem_np : 8; /**< [ 51: 44](R/W) TLP 16 B credits for nonposted TLPs in the peer. Legal values are 0x4 to 0x20. */
14535 uint64_t pem_p : 12; /**< [ 43: 32](R/W) TLP 16 B credits for posted TLPs in the peer. Legal values are 0x42 to 0x104. */
14536 uint64_t sli_cpl : 12; /**< [ 31: 20](R/W) TLP 16 B credits for completion TLPs in the SLI. Legal values are 0x41 to 0x104
14537 and this value is not dependent of the number of PEMS wire-OR'd
14538 together. Software should reprogram this register for performance reasons. */
14539 uint64_t sli_np : 8; /**< [ 19: 12](R/W) TLP 16 B credits for non-posted TLPs in the SLI. Legal values are 0x3 to 0x20
14540 and this value is not dependent of the number of PEMS wire-OR'd
14541 together. Software should reprogram this register for performance reasons. */
14542 uint64_t sli_p : 12; /**< [ 11: 0](R/W) TLP 16 B credits for posted TLPs in the SLI. Legal values are 0x41 to 0x104 and this value
14543 is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this
14544 register for performance reasons. */
14545 #else /* Word 0 - Little Endian */
14546 uint64_t sli_p : 12; /**< [ 11: 0](R/W) TLP 16 B credits for posted TLPs in the SLI. Legal values are 0x41 to 0x104 and this value
14547 is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this
14548 register for performance reasons. */
14549 uint64_t sli_np : 8; /**< [ 19: 12](R/W) TLP 16 B credits for non-posted TLPs in the SLI. Legal values are 0x3 to 0x20
14550 and this value is not dependent of the number of PEMS wire-OR'd
14551 together. Software should reprogram this register for performance reasons. */
14552 uint64_t sli_cpl : 12; /**< [ 31: 20](R/W) TLP 16 B credits for completion TLPs in the SLI. Legal values are 0x41 to 0x104
14553 and this value is not dependent of the number of PEMS wire-OR'd
14554 together. Software should reprogram this register for performance reasons. */
14555 uint64_t pem_p : 12; /**< [ 43: 32](R/W) TLP 16 B credits for posted TLPs in the peer. Legal values are 0x42 to 0x104. */
14556 uint64_t pem_np : 8; /**< [ 51: 44](R/W) TLP 16 B credits for nonposted TLPs in the peer. Legal values are 0x4 to 0x20. */
14557 uint64_t pem_cpl : 12; /**< [ 63: 52](R/W) TLP 16 B credits for completion TLPs in the peer. Legal values are 0x42 to 0x104. */
14558 #endif /* Word 0 - End */
14559 } cn83xx;
14560 struct bdk_pemx_tlp_credits_cn88xxp2
14561 {
14562 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14563 uint64_t reserved_24_63 : 40;
14564 uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0xff
14565 and this value is not dependent of the number of PEMS wire-OR'd
14566 together. Software should reprogram this register for performance reasons. */
14567 uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16 B credits for non-posted TLPs in the SLI. Legal values are 0x4 to 0x20
14568 and this value is not dependent of the number of PEMS wire-OR'd
14569 together. Software should reprogram this register for performance reasons. */
14570 uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x24 to 0xff
14571 and this value is not dependent of the number of PEMS wire-OR'd
14572 together. Software should reprogram this register for performance reasons. */
14573 #else /* Word 0 - Little Endian */
14574 uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x24 to 0xff
14575 and this value is not dependent of the number of PEMS wire-OR'd
14576 together. Software should reprogram this register for performance reasons. */
14577 uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16 B credits for non-posted TLPs in the SLI. Legal values are 0x4 to 0x20
14578 and this value is not dependent of the number of PEMS wire-OR'd
14579 together. Software should reprogram this register for performance reasons. */
14580 uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0xff
14581 and this value is not dependent of the number of PEMS wire-OR'd
14582 together. Software should reprogram this register for performance reasons. */
14583 uint64_t reserved_24_63 : 40;
14584 #endif /* Word 0 - End */
14585 } cn88xxp2;
14586 };
14587 typedef union bdk_pemx_tlp_credits bdk_pemx_tlp_credits_t;
14588
14589 static inline uint64_t BDK_PEMX_TLP_CREDITS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_TLP_CREDITS(unsigned long a)14590 static inline uint64_t BDK_PEMX_TLP_CREDITS(unsigned long a)
14591 {
14592 if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
14593 return 0x87e0c0000038ll + 0x1000000ll * ((a) & 0x3);
14594 if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
14595 return 0x87e0c0000038ll + 0x1000000ll * ((a) & 0x3);
14596 if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
14597 return 0x87e0c0000038ll + 0x1000000ll * ((a) & 0x7);
14598 __bdk_csr_fatal("PEMX_TLP_CREDITS", 1, a, 0, 0, 0);
14599 }
14600
14601 #define typedef_BDK_PEMX_TLP_CREDITS(a) bdk_pemx_tlp_credits_t
14602 #define bustype_BDK_PEMX_TLP_CREDITS(a) BDK_CSR_TYPE_RSL
14603 #define basename_BDK_PEMX_TLP_CREDITS(a) "PEMX_TLP_CREDITS"
14604 #define device_bar_BDK_PEMX_TLP_CREDITS(a) 0x0 /* PF_BAR0 */
14605 #define busnum_BDK_PEMX_TLP_CREDITS(a) (a)
14606 #define arguments_BDK_PEMX_TLP_CREDITS(a) (a),-1,-1,-1
14607
14608 /**
14609 * Register (NCB) pem#_vf_clr_flr_req
14610 *
14611 * PEM FLR Request VF Clear Register
14612 * This register provides clear request for PCIe PF function level reset (FLR).
14613 *
14614 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
14615 *
14616 * This register is reset on MAC reset.
14617 */
14618 union bdk_pemx_vf_clr_flr_req
14619 {
14620 uint64_t u;
14621 struct bdk_pemx_vf_clr_flr_req_s
14622 {
14623 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14624 uint64_t reserved_8_63 : 56;
14625 uint64_t vf_num : 8; /**< [ 7: 0](R/W/H) When written, will cause hardware to clear one of the 240 VF FLR conditions
14626 indexed by [VF_NUM].
14627 This field always reads as zero. */
14628 #else /* Word 0 - Little Endian */
14629 uint64_t vf_num : 8; /**< [ 7: 0](R/W/H) When written, will cause hardware to clear one of the 240 VF FLR conditions
14630 indexed by [VF_NUM].
14631 This field always reads as zero. */
14632 uint64_t reserved_8_63 : 56;
14633 #endif /* Word 0 - End */
14634 } s;
14635 /* struct bdk_pemx_vf_clr_flr_req_s cn; */
14636 };
14637 typedef union bdk_pemx_vf_clr_flr_req bdk_pemx_vf_clr_flr_req_t;
14638
14639 static inline uint64_t BDK_PEMX_VF_CLR_FLR_REQ(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_VF_CLR_FLR_REQ(unsigned long a)14640 static inline uint64_t BDK_PEMX_VF_CLR_FLR_REQ(unsigned long a)
14641 {
14642 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
14643 return 0x8e0000000220ll + 0x1000000000ll * ((a) & 0x3);
14644 __bdk_csr_fatal("PEMX_VF_CLR_FLR_REQ", 1, a, 0, 0, 0);
14645 }
14646
14647 #define typedef_BDK_PEMX_VF_CLR_FLR_REQ(a) bdk_pemx_vf_clr_flr_req_t
14648 #define bustype_BDK_PEMX_VF_CLR_FLR_REQ(a) BDK_CSR_TYPE_NCB
14649 #define basename_BDK_PEMX_VF_CLR_FLR_REQ(a) "PEMX_VF_CLR_FLR_REQ"
14650 #define device_bar_BDK_PEMX_VF_CLR_FLR_REQ(a) 0x0 /* PF_BAR0 */
14651 #define busnum_BDK_PEMX_VF_CLR_FLR_REQ(a) (a)
14652 #define arguments_BDK_PEMX_VF_CLR_FLR_REQ(a) (a),-1,-1,-1
14653
14654 /**
14655 * Register (NCB) pem#_wmerge_merged_pc
14656 *
14657 * PEM Merge Writes Merged Performance Counter Register
14658 * This register reports how many writes merged within the outbound write merge unit.
14659 *
14660 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
14661 *
14662 * This register is reset on PEM domain reset.
14663 */
14664 union bdk_pemx_wmerge_merged_pc
14665 {
14666 uint64_t u;
14667 struct bdk_pemx_wmerge_merged_pc_s
14668 {
14669 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14670 uint64_t wmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO write operation mapped to MEM type by the ACC table that merges with a previous
14671 write will increment this count. */
14672 #else /* Word 0 - Little Endian */
14673 uint64_t wmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO write operation mapped to MEM type by the ACC table that merges with a previous
14674 write will increment this count. */
14675 #endif /* Word 0 - End */
14676 } s;
14677 /* struct bdk_pemx_wmerge_merged_pc_s cn; */
14678 };
14679 typedef union bdk_pemx_wmerge_merged_pc bdk_pemx_wmerge_merged_pc_t;
14680
14681 static inline uint64_t BDK_PEMX_WMERGE_MERGED_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_WMERGE_MERGED_PC(unsigned long a)14682 static inline uint64_t BDK_PEMX_WMERGE_MERGED_PC(unsigned long a)
14683 {
14684 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
14685 return 0x8e0000000188ll + 0x1000000000ll * ((a) & 0x3);
14686 __bdk_csr_fatal("PEMX_WMERGE_MERGED_PC", 1, a, 0, 0, 0);
14687 }
14688
14689 #define typedef_BDK_PEMX_WMERGE_MERGED_PC(a) bdk_pemx_wmerge_merged_pc_t
14690 #define bustype_BDK_PEMX_WMERGE_MERGED_PC(a) BDK_CSR_TYPE_NCB
14691 #define basename_BDK_PEMX_WMERGE_MERGED_PC(a) "PEMX_WMERGE_MERGED_PC"
14692 #define device_bar_BDK_PEMX_WMERGE_MERGED_PC(a) 0x0 /* PF_BAR0 */
14693 #define busnum_BDK_PEMX_WMERGE_MERGED_PC(a) (a)
14694 #define arguments_BDK_PEMX_WMERGE_MERGED_PC(a) (a),-1,-1,-1
14695
14696 /**
14697 * Register (NCB) pem#_wmerge_received_pc
14698 *
14699 * PEM Merge Writes Received Performance Counter Register
14700 * This register reports the number of writes that enter the outbound write merge unit.
14701 *
14702 * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
14703 *
14704 * This register is reset on PEM domain reset.
14705 */
14706 union bdk_pemx_wmerge_received_pc
14707 {
14708 uint64_t u;
14709 struct bdk_pemx_wmerge_received_pc_s
14710 {
14711 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14712 uint64_t wmerge_writes : 64; /**< [ 63: 0](R/W/H) Each NCBO write operation mapped to MEM type by the ACC table will increment this count. */
14713 #else /* Word 0 - Little Endian */
14714 uint64_t wmerge_writes : 64; /**< [ 63: 0](R/W/H) Each NCBO write operation mapped to MEM type by the ACC table will increment this count. */
14715 #endif /* Word 0 - End */
14716 } s;
14717 /* struct bdk_pemx_wmerge_received_pc_s cn; */
14718 };
14719 typedef union bdk_pemx_wmerge_received_pc bdk_pemx_wmerge_received_pc_t;
14720
14721 static inline uint64_t BDK_PEMX_WMERGE_RECEIVED_PC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PEMX_WMERGE_RECEIVED_PC(unsigned long a)14722 static inline uint64_t BDK_PEMX_WMERGE_RECEIVED_PC(unsigned long a)
14723 {
14724 if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
14725 return 0x8e0000000180ll + 0x1000000000ll * ((a) & 0x3);
14726 __bdk_csr_fatal("PEMX_WMERGE_RECEIVED_PC", 1, a, 0, 0, 0);
14727 }
14728
14729 #define typedef_BDK_PEMX_WMERGE_RECEIVED_PC(a) bdk_pemx_wmerge_received_pc_t
14730 #define bustype_BDK_PEMX_WMERGE_RECEIVED_PC(a) BDK_CSR_TYPE_NCB
14731 #define basename_BDK_PEMX_WMERGE_RECEIVED_PC(a) "PEMX_WMERGE_RECEIVED_PC"
14732 #define device_bar_BDK_PEMX_WMERGE_RECEIVED_PC(a) 0x0 /* PF_BAR0 */
14733 #define busnum_BDK_PEMX_WMERGE_RECEIVED_PC(a) (a)
14734 #define arguments_BDK_PEMX_WMERGE_RECEIVED_PC(a) (a),-1,-1,-1
14735
14736 #endif /* __BDK_CSRS_PEM_H__ */
14737