xref: /aosp_15_r20/external/coreboot/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-pem.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
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